#ifndef __USERAPPx_H #define __USERAPPx_H #include //bool布尔类型变量定义 #include #include #include "mac.h" #include "rs232.h" #include "rs485.h" #include "FreeRTOS.h" #include "event_groups.h" #include "semphr.h" #include "osPort.h" /*********应用层外部调用文件*******************************************************/ //#include "stm32Temp.h" //#include "gate_timer.h" /**********************************************************************************/ /********************************************************************************** **GateApp配置选项 *********************************************************************************/ /********************************************************************************** **自定义变量类型 *********************************************************************************/ typedef struct { char macId[MAC_BYTES_LEN+1] ; //存放 硬件mac地址字符串 的数组 char appVers[VERSION_LEN+1] ; //存放 软件版本号字符串 的数组 char bootVers[VERSION_LEN+1] ; //存放 boot软件版本号 的数组 char rstReason[VERSION_LEN+1] ; //存放 上次设备重启原因 的数组 }Application ; //存放 应用程序一写参数的结构体变量类型 /********************************************************************************** *常变量声明 *********************************************************************************/ extern Application gateApp ; //gateApp存放应用参数 #define STATE_OK 1 //表示标志位反映的状态正常 #define STATE_ERR 0 //表示标志位反映的状态异常 /*OS任务状态事件标志位相关常变量*/ extern EventGroupHandle_t osSafeEventHandler ; //OS任务状态事件标志组(标志位OS每个任务的运行情况) #define CHECKTASKINTERVAL 180 //180秒(3mins)检测各个任务是否正常被运行 #define NETBIT_0 (EventBits_t)(1 << 0) //标志位0:反映"网络维护任务"状态 #define LTEBIT_1 (EventBits_t)(1 << 1) //标志位1:反映"LTE串口接收任务"状态 #define CAMERABIT_2 (EventBits_t)(1 << 2) //标志位2:反映"摄像头数据处理任务"状态 #define TCPUPBIT_3 (EventBits_t)(1 << 3) //标志位3:反映"TCP上传任务"状态 #define TCPHEARTBIT_4 (EventBits_t)(1 << 4) //标志位4:反映"TCP心跳任务"状态 #define UCMDBIT_5 (EventBits_t)(1 << 5) //标志位5:反映"用户命令任务"状态 #define READOSSAFEEVENT xEventGroupGetBits(osSafeEventHandler) //获取标志组osSafeEventHandler的值 #define GETTASKOSSAFE (((NETBIT_0|LTEBIT_1|CAMERABIT_2|TCPUPBIT_3|TCPHEARTBIT_4|UCMDBIT_5) & xEventGroupGetBits(osSafeEventHandler))\ == (NETBIT_0|LTEBIT_1|CAMERABIT_2|TCPUPBIT_3|TCPHEARTBIT_4|UCMDBIT_5)) //获取”标志位0&标志位1&标志位2&标志位3&标志位4&标志位5的状态“ #define SETNETTASKOK xEventGroupSetBits(osSafeEventHandler, NETBIT_0) //设置“标志位0:网络维护任务 状态STATE_OK" #define SETLTETASKOK xEventGroupSetBits(osSafeEventHandler, LTEBIT_1) //设置“标志位1:LTE串口接收任务 状态STATE_OK" #define SETCAMERATASKOK xEventGroupSetBits(osSafeEventHandler, CAMERABIT_2) //设置“标志位2:摄像头数据处理任务 状态STATE_OK" #define SETTCPUPTASKOK xEventGroupSetBits(osSafeEventHandler, TCPUPBIT_3) //设置“标志位3:TCP上传任务 状态STATE_OK" #define SETTCPHEARTTASKOK xEventGroupSetBits(osSafeEventHandler, TCPHEARTBIT_4) //设置“标志位4:TCP心跳任务 状态STATE_OK" #define SETUCMDTASKOK xEventGroupSetBits(osSafeEventHandler, UCMDBIT_5) //设置“标志位5:用户命令任务 状态STATE_OK" #define RESETOSSAFEEVENT xEventGroupClearBits(osSafeEventHandler, NETBIT_0|LTEBIT_1|CAMERABIT_2|TCPUPBIT_3|TCPHEARTBIT_4|UCMDBIT_5) //清除所有任务的正常运行标志位 /*网络状态事件标志位相关常变量*/ extern EventGroupHandle_t netEventHandler ; //网络状态事件标志组(标志位反馈网络状态) #define MODULEBIT_0 (EventBits_t)(1 << 0) //标志位0:反映EC20 moudle初始化状态 #define NETREGBIT_1 (EventBits_t)(1 << 1) //标志位1:反映EC20 EC20_Net_Reg初始化状态 #define TCPBIT_2 (EventBits_t)(1 << 2) //标志位2:反映EC20 TCP状态 #define HTTPBIT_3 (EventBits_t)(1 << 3) //标志位3:反映EC20 HTTP请求状态 #define GETMODULESTATE ((MODULEBIT_0 & xEventGroupGetBits(netEventHandler)) == MODULEBIT_0) //获取“标志位0:EC20 moudle初始化状态" #define GETNETREGSTATE ((NETREGBIT_1 & xEventGroupGetBits(netEventHandler)) == NETREGBIT_1) //获取”标志位1:EC20 EC20_Net_Reg初始化状态“ #define GETTCPSTATE ((TCPBIT_2 & xEventGroupGetBits(netEventHandler)) == TCPBIT_2) //获取”标志位2:EC20 TCP状态“ #define GETHTTPSTATE ((HTTPBIT_3 & xEventGroupGetBits(netEventHandler)) == HTTPBIT_3) //获取”标志位3:EC20 HTTP请求状态“ #define GETUSERNETSTATE (((MODULEBIT_0|NETREGBIT_1|TCPBIT_2|HTTPBIT_3) & xEventGroupGetBits(netEventHandler)) == (MODULEBIT_0|NETREGBIT_1|TCPBIT_2|HTTPBIT_3)) //获取”标志位0&标志位1&标志位2&标志位3的状态“ #define SETMODULEOK xEventGroupSetBits(netEventHandler, MODULEBIT_0) //设置“标志位0:EC20 moudle初始化状态 STATE_OK" #define SETNETREGOK xEventGroupSetBits(netEventHandler, NETREGBIT_1) //设置”标志位1:EC20 EC20_Net_Reg初始化状态 STATE_OK“ #define SETTCPOK xEventGroupSetBits(netEventHandler, TCPBIT_2) //设置”标志位2:EC20 TCP状态 STATE_OK““ #define SETHTTPOK xEventGroupSetBits(netEventHandler, HTTPBIT_3) //设置”标志位3:EC20 HTTP请求状态 STATE_OK“““ #define SETTCPERR xEventGroupClearBits(netEventHandler, TCPBIT_2) //设置“标志位2:EC20 TCP状态 STATE_ERR" #define SETHTTPERR xEventGroupClearBits(netEventHandler, HTTPBIT_3) //设置”标志位3:EC20 HTTP请求状态 STATE_ERR“ #define SETNETREGERR xEventGroupClearBits(netEventHandler, NETREGBIT_1|TCPBIT_2|HTTPBIT_3) //设置”标志位1、标志位2、标志位3的状态 STATE_ERR“ #define SETMODULEERR xEventGroupClearBits(netEventHandler, MODULEBIT_0|NETREGBIT_1|TCPBIT_2|HTTPBIT_3) //设置”标志位0、标志位1、标志位2、标志位3的状态 STATE_ERR“ /*EC20资源抢占互斥信号量相关*/ extern SemaphoreHandle_t ec20MutexSemaphore ; //互斥信号量句柄(EC20资源抢占及释放) extern char lastOccupyEc20[30] ; //全局数组 记录上一次占用EC20资源的__FILE__, __LINE__ extern char lastReleseEc20[30] ; //全局数组 记录上一次释放EC20资源的__FILE__, __LINE__ //#define OCCUPY_EC20(t) xSemaphoreTake(ec20MutexSemaphore, t); memset(lastOccupyEc20, 0, 25);\\ // snprintf( lastOccupyEc20, 25, "\r\n%s %d 占用EC20资源!", __FILE__, __LINE__) ; // UARTx_SendData(UART_DEBUG, lastOccupyEc20, strlen(lastOccupyEc20)) portMAX_DELAY //等待占用EC20资源 一直等待:t = portMAX_DELAY #define RELESE_EC20(void) xSemaphoreGive(ec20MutexSemaphore); memset(lastReleseEc20, 0, 25);\ snprintf( lastReleseEc20, 25, "%s %d 释放EC20!", __FILE__, __LINE__) ;\ AppLogPrintf(lastReleseEc20) ; // UARTx_SendData(UART_DEBUG, lastReleseEc20, strlen(lastReleseEc20)) //释放EC20资源 /********************************************************************************** *内部函数声明 ***********************************************************************************/ /******************************************************************************** *对外接口函数声明 *********************************************************************************/ extern void OccpyEc20(TickType_t timeout, char* file, int line) ; //获取EC20资源, 如果超过timeout没有获取到资源则写入LOG然后重启系统 extern void Board_Init(void) ; //驱动及功能块初始化 extern void PrintfDeviceInfo(void) ; //DEBUG口输出设备信息 extern void DeviceRstReason(uint8_t *reason, uint8_t maxLen) ; //获取硬件上次重启原因 extern void TcpUpFlashLog(void) ; //通过TCP上传本地FLASH存储的LOG extern void Rtc_Alr_Callback(void) ; //RTC闹钟中断回调函数,中断内先重设闹钟时间为第二天,同时重启设备 extern void InitApplictationState(Application *appPointer); //初始化Application结构体变量 extern void SetAppVersion(Application *appPointer, char *version) ; //设置Application结构体变量中的APP软件版本 extern void SetBootVersion(Application *appPointer, char *version) ;//设置Application结构体变量中的boot软件版本 extern void SetMacId(Application *appPointer, char *macId) ; //设置Application结构体变量中的macid extern void RefreshOledTime(void) ; //刷新显示屏第3行、4行显示时间 #endif