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 (6)
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 Internal enum for Unicens Integration
75 UnicensCmd_RmSetRoute,
77 UnicensCmd_GpioCreatePort,
78 UnicensCmd_GpioWritePort,
83 * \brief Internal struct for Unicens Integration
87 const Ucs_InitData_t *init_ptr;
91 * \brief Internal struct for Unicens Integration
95 Ucs_Rm_Route_t *routePtr;
97 } UnicensCmdRmSetRoute_t;
100 * \brief Internal struct for Unicens Integration
104 Ucs_Rm_Node_t * node_ptr;
108 * \brief Internal struct for Unicens Integration
112 uint16_t destination;
113 uint16_t debounceTime;
114 } UnicensCmdGpioCreatePort_t;
117 * \brief Internal struct for Unicens Integration
121 uint16_t destination;
124 } UnicensCmdGpioWritePort_t;
127 * \brief Internal struct for Unicens Integration
131 uint16_t destination;
137 uint8_t data[I2C_WRITE_MAX_LEN];
138 } UnicensCmdI2CWrite_t;
141 * \brief Internal struct for Unicens Integration
148 UnicensCmdInit_t Init;
149 UnicensCmdRmSetRoute_t RmSetRoute;
150 UnicensCmdNsRun_t NsRun;
151 UnicensCmdGpioCreatePort_t GpioCreatePort;
152 UnicensCmdGpioWritePort_t GpioWritePort;
153 UnicensCmdI2CWrite_t I2CWrite;
158 * \brief Internal variables for one instance of Unicens Integration
159 * \note Never touch any of this fields!
162 volatile uint8_t *dataQueue;
163 volatile uint8_t *pRx;
164 volatile uint8_t *pTx;
165 volatile uint32_t amountOfEntries;
166 volatile uint32_t sizeOfEntry;
167 volatile uint32_t rxPos;
168 volatile uint32_t txPos;
172 * \brief Internal variables for one instance of Unicens Integration
173 * \note Allocate this structure for each instance (static or malloc)
174 * and pass it to UCSI_Init()
175 * \note Never touch any of this fields!
183 uint8_t rbBuf[(CMD_QUEUE_LEN * sizeof(UnicensCmdEntry_t))];
185 Ucs_InitData_t uniInitData;
187 Ucs_Lld_Api_t *uniLld;
189 UnicensCmdEntry_t *currentCmd;
192 #endif /* UNICENSINTEGRATION_H_ */