/*------------------------------------------------------------------------------------------------*/
-/* Unicens Integration Helper Component */
+/* UNICENS Integration Helper Component */
/* Copyright 2017, Microchip Technology Inc. and its subsidiaries. */
/* */
/* Redistribution and use in source and binary forms, with or without */
#define ENABLE_AMS_LIB (true)
#define DEBUG_XRM
#define BOARD_PMS_TX_SIZE (72)
-#define CMD_QUEUE_LEN (6)
+#define CMD_QUEUE_LEN (40)
+#define I2C_WRITE_MAX_LEN (32)
#include <string.h>
#include <stdarg.h>
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/**
- * \brief Internal enum for Unicens Integration
+ * \brief Internal enum for UNICENS Integration
*/
typedef enum
{
} UnicensCmdResult_t;
/**
- * \brief Internal enum for Unicens Integration
+ * \brief Asynchronous callback notifiying a command result
+ * \param result_ptr The asynchronous result of the command
+ * \param request_ptr User reference, typically points to the afb_req
+ * object.
+ */
+typedef void (*Ucsi_ResultCb_t)(void *result_ptr, void *request_ptr);
+
+/**
+ * \brief Internal enum for UNICENS Integration
*/
typedef enum
{
UnicensCmd_Init,
UnicensCmd_Stop,
UnicensCmd_RmSetRoute,
- UnicensCmd_NsRun
+ UnicensCmd_NsRun,
+ UnicensCmd_GpioCreatePort,
+ UnicensCmd_GpioWritePort,
+ UnicensCmd_I2CWrite,
+ UnicensCmd_SendAmsMessage
} UnicensCmd_t;
/**
- * \brief Internal struct for Unicens Integration
+ * \brief Internal struct for UNICENS Integration
*/
typedef struct
{
} UnicensCmdInit_t;
/**
- * \brief Internal struct for Unicens Integration
+ * \brief Internal struct for UNICENS Integration
*/
typedef struct
{
} UnicensCmdRmSetRoute_t;
/**
- * \brief Internal struct for Unicens Integration
+ * \brief Internal struct for UNICENS Integration
*/
typedef struct
{
} UnicensCmdNsRun_t;
/**
- * \brief Internal struct for Unicens Integration
+ * \brief Internal struct for UNICENS Integration
+ */
+typedef struct
+{
+ uint16_t destination;
+ uint16_t debounceTime;
+} UnicensCmdGpioCreatePort_t;
+
+/**
+ * \brief Internal struct for UNICENS Integration
+ */
+typedef struct
+{
+ uint16_t destination;
+ uint16_t mask;
+ uint16_t data;
+} UnicensCmdGpioWritePort_t;
+
+/**
+ * \brief Internal struct for UNICENS Integration
+ */
+typedef struct
+{
+ uint16_t destination;
+ bool isBurst;
+ uint8_t blockCount;
+ uint8_t slaveAddr;
+ uint16_t timeout;
+ uint8_t dataLen;
+ uint8_t data[I2C_WRITE_MAX_LEN];
+
+ Ucsi_ResultCb_t result_fptr;
+ void *request_ptr;
+
+} UnicensCmdI2CWrite_t;
+
+/**
+ * \brief Internal struct for UNICENS Integration
+ */
+typedef struct
+{
+ uint16_t msgId;
+ uint16_t targetAddress;
+ uint8_t pPayload[UCS_AMS_SIZE_TX_MSG];
+ uint32_t payloadLen;
+} UnicensCmdSendAmsMessage_t;
+
+/**
+ * \brief Internal struct for UNICENS Integration
*/
typedef struct
{
UnicensCmdInit_t Init;
UnicensCmdRmSetRoute_t RmSetRoute;
UnicensCmdNsRun_t NsRun;
+ UnicensCmdGpioCreatePort_t GpioCreatePort;
+ UnicensCmdGpioWritePort_t GpioWritePort;
+ UnicensCmdI2CWrite_t I2CWrite;
+ UnicensCmdSendAmsMessage_t SendAms;
} val;
} UnicensCmdEntry_t;
/**
- * \brief Internal variables for one instance of Unicens Integration
+ * \brief Internal variables for one instance of UNICENS Integration
* \note Never touch any of this fields!
*/
typedef struct {
} RB_t;
/**
- * \brief Internal variables for one instance of Unicens Integration
+ * \brief Internal variables for one instance of UNICENS Integration
* \note Allocate this structure for each instance (static or malloc)
* and pass it to UCSI_Init()
* \note Never touch any of this fields!