1 /*------------------------------------------------------------------------------------------------*/
2 /* UNICENS Integration Helper Component */
3 /* Copyright 2017, Microchip Technology Inc. and its subsidiaries. */
5 /* Redistribution and use in source and binary forms, with or without */
6 /* modification, are permitted provided that the following conditions are met: */
8 /* 1. Redistributions of source code must retain the above copyright notice, this */
9 /* list of conditions and the following disclaimer. */
11 /* 2. Redistributions in binary form must reproduce the above copyright notice, */
12 /* this list of conditions and the following disclaimer in the documentation */
13 /* and/or other materials provided with the distribution. */
15 /* 3. Neither the name of the copyright holder nor the names of its */
16 /* contributors may be used to endorse or promote products derived from */
17 /* this software without specific prior written permission. */
19 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
20 /* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE */
21 /* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
22 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE */
23 /* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL */
24 /* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR */
25 /* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER */
26 /* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
27 /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */
28 /* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29 /*------------------------------------------------------------------------------------------------*/
30 #ifndef UNICENSINTEGRATION_H_
31 #define UNICENSINTEGRATION_H_
33 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
34 /* USER ADJUSTABLE VALUES */
35 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
37 #define ENABLE_INIC_WATCHDOG (true)
38 #define ENABLE_AMS_LIB (true)
40 #define BOARD_PMS_TX_SIZE (72)
41 #define CMD_QUEUE_LEN (40)
42 #define I2C_WRITE_MAX_LEN (32)
50 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
52 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
55 * \brief Internal enum for UNICENS Integration
59 /**Result is OK and the processing is finished. Safe to dequeue this command.*/
60 UniCmdResult_OK_ProcessFinished,
61 /**Result is OK but the processing is ongoing. Must wait for callback.*/
62 UniCmdResult_OK_NeedToWaitForCB,
63 /**Result is error and the processing is finished. Safe to dequeue this command.*/
64 UniCmdResult_ERROR_ProcessFinished
68 * \brief Asynchronous callback notifiying a command result
69 * \param result_ptr The asynchronous result of the command
70 * \param request_ptr User reference, typically points to the afb_req
73 typedef void (*Ucsi_ResultCb_t)(void *result_ptr, void *request_ptr);
76 * \brief Internal enum for UNICENS Integration
83 UnicensCmd_RmSetRoute,
85 UnicensCmd_GpioCreatePort,
86 UnicensCmd_GpioWritePort,
88 UnicensCmd_SendAmsMessage
92 * \brief Internal struct for UNICENS Integration
96 const Ucs_InitData_t *init_ptr;
100 * \brief Internal struct for UNICENS Integration
104 Ucs_Rm_Route_t *routePtr;
106 } UnicensCmdRmSetRoute_t;
109 * \brief Internal struct for UNICENS Integration
113 Ucs_Rm_Node_t * node_ptr;
117 * \brief Internal struct for UNICENS Integration
121 uint16_t destination;
122 uint16_t debounceTime;
123 } UnicensCmdGpioCreatePort_t;
126 * \brief Internal struct for UNICENS Integration
130 uint16_t destination;
133 } UnicensCmdGpioWritePort_t;
136 * \brief Internal struct for UNICENS Integration
140 uint16_t destination;
146 uint8_t data[I2C_WRITE_MAX_LEN];
148 Ucsi_ResultCb_t result_fptr;
151 } UnicensCmdI2CWrite_t;
154 * \brief Internal struct for UNICENS Integration
159 uint16_t targetAddress;
160 uint8_t pPayload[UCS_AMS_SIZE_TX_MSG];
162 } UnicensCmdSendAmsMessage_t;
165 * \brief Internal struct for UNICENS Integration
172 UnicensCmdInit_t Init;
173 UnicensCmdRmSetRoute_t RmSetRoute;
174 UnicensCmdNsRun_t NsRun;
175 UnicensCmdGpioCreatePort_t GpioCreatePort;
176 UnicensCmdGpioWritePort_t GpioWritePort;
177 UnicensCmdI2CWrite_t I2CWrite;
178 UnicensCmdSendAmsMessage_t SendAms;
183 * \brief Internal variables for one instance of UNICENS Integration
184 * \note Never touch any of this fields!
187 volatile uint8_t *dataQueue;
188 volatile uint8_t *pRx;
189 volatile uint8_t *pTx;
190 volatile uint32_t amountOfEntries;
191 volatile uint32_t sizeOfEntry;
192 volatile uint32_t rxPos;
193 volatile uint32_t txPos;
197 * \brief Internal variables for one instance of UNICENS Integration
198 * \note Allocate this structure for each instance (static or malloc)
199 * and pass it to UCSI_Init()
200 * \note Never touch any of this fields!
208 uint8_t rbBuf[(CMD_QUEUE_LEN * sizeof(UnicensCmdEntry_t))];
210 Ucs_InitData_t uniInitData;
212 Ucs_Lld_Api_t *uniLld;
214 UnicensCmdEntry_t *currentCmd;
217 #endif /* UNICENSINTEGRATION_H_ */