diff options
Diffstat (limited to 'ucs2-interface/ucs_config.h')
-rw-r--r-- | ucs2-interface/ucs_config.h | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/ucs2-interface/ucs_config.h b/ucs2-interface/ucs_config.h new file mode 100644 index 0000000..fdca515 --- /dev/null +++ b/ucs2-interface/ucs_config.h @@ -0,0 +1,145 @@ +/* + * Unicens Integration Helper Component + * + * Copyright (C) 2017 Microchip Technology Germany II GmbH & Co. KG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * You may also obtain this software under a propriety license from Microchip. + * Please contact Microchip for further information. + * + */ +#ifndef UNICENSINTEGRATION_H_ +#define UNICENSINTEGRATION_H_ + +/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ +/* USER ADJUSTABLE VALUES */ +/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ + +#define ENABLE_INIC_WATCHDOG (false) +#define ENABLE_AMS_LIB (true) +#define DEBUG_XRM +#define BOARD_PMS_TX_SIZE (72) +#define CMD_QUEUE_LEN (4) + +#include <string.h> +#include <stdarg.h> + +#include "ucs_cfg.h" +#include "ucs_api.h" + +/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ +/* PRIVATE SECTION */ +/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ + +/** + * \brief Internal enum for Unicens Integration + */ +typedef enum +{ + ///Result is OK and the processing is finished. Safe to dequeue this command. + UniCmdResult_OK_ProcessFinished, + ///Result is OK but the processing is ongoing. Must wait for callback. + UniCmdResult_OK_NeedToWaitForCB, + ///Result is error and the processing is finished. Safe to dequeue this command. + UniCmdResult_ERROR_ProcessFinished +} UnicensCmdResult_t; + +/** + * \brief Internal enum for Unicens Integration + */ +typedef enum +{ + UnicensCmd_Unknown, + UnicensCmd_Init, + UnicensCmd_Stop, + UnicensCmd_RmSetRoute, + UnicensCmd_NsRun +} UnicensCmd_t; + +/** + * \brief Internal struct for Unicens Integration + */ +typedef struct +{ + const Ucs_InitData_t *init_ptr; +} UnicensCmdInit_t; + +/** + * \brief Internal struct for Unicens Integration + */ +typedef struct +{ + Ucs_Rm_Route_t *routePtr; + bool isActive; +} UnicensCmdRmSetRoute_t; + +/** + * \brief Internal struct for Unicens Integration + */ +typedef struct +{ + Ucs_Rm_Node_t * node_ptr; +} UnicensCmdNsRun_t; + +/** + * \brief Internal struct for Unicens Integration + */ +typedef struct +{ + UnicensCmd_t cmd; + union + { + UnicensCmdInit_t Init; + UnicensCmdRmSetRoute_t RmSetRoute; + UnicensCmdNsRun_t NsRun; + } val; +} UnicensCmdEntry_t; + +/** + * \brief Internal variables for one instance of Unicens Integration + * \note Never touch any of this fields! + */ +typedef struct { + volatile uint8_t *dataQueue; + volatile uint8_t *pRx; + volatile uint8_t *pTx; + volatile uint32_t amountOfEntries; + volatile uint32_t sizeOfEntry; + volatile uint32_t rxPos; + volatile uint32_t txPos; +} RB_t; + +/** + * \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! + */ +typedef struct +{ + uint32_t magic; + void *tag; + bool initialized; + RB_t rb; + uint8_t rbBuf[(CMD_QUEUE_LEN * sizeof(UnicensCmdEntry_t))]; + Ucs_Inst_t *unicens; + Ucs_InitData_t uniInitData; + bool triggerService; + Ucs_Lld_Api_t *uniLld; + void *uniLldHPtr; + UnicensCmdEntry_t *currentCmd; +} UCSI_Data_t; + +#endif /* UNICENSINTEGRATION_H_ */
\ No newline at end of file |