121 lines
8.6 KiB
C
121 lines
8.6 KiB
C
#ifndef __USERAPPx_H
|
||
#define __USERAPPx_H
|
||
|
||
#include <stdbool.h> //bool布尔类型变量定义
|
||
#include <stdint.h>
|
||
#include <stdlib.h>
|
||
#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
|