stm32_ota/ABM开发板(APP源码)/FreeRTOS版本/APPV3.0/USER/USERAPP/userapp.h
2024-12-17 20:03:43 +08:00

121 lines
8.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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) //设置“标志位1LTE串口接收任务 状态STATE_OK"
#define SETCAMERATASKOK xEventGroupSetBits(osSafeEventHandler, CAMERABIT_2) //设置“标志位2摄像头数据处理任务 状态STATE_OK"
#define SETTCPUPTASKOK xEventGroupSetBits(osSafeEventHandler, TCPUPBIT_3) //设置“标志位3TCP上传任务 状态STATE_OK"
#define SETTCPHEARTTASKOK xEventGroupSetBits(osSafeEventHandler, TCPHEARTBIT_4) //设置“标志位4TCP心跳任务 状态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) //获取“标志位0EC20 moudle初始化状态"
#define GETNETREGSTATE ((NETREGBIT_1 & xEventGroupGetBits(netEventHandler)) == NETREGBIT_1) //获取”标志位1EC20 EC20_Net_Reg初始化状态“
#define GETTCPSTATE ((TCPBIT_2 & xEventGroupGetBits(netEventHandler)) == TCPBIT_2) //获取”标志位2EC20 TCP状态“
#define GETHTTPSTATE ((HTTPBIT_3 & xEventGroupGetBits(netEventHandler)) == HTTPBIT_3) //获取”标志位3EC20 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) //设置“标志位0EC20 moudle初始化状态 STATE_OK"
#define SETNETREGOK xEventGroupSetBits(netEventHandler, NETREGBIT_1) //设置”标志位1EC20 EC20_Net_Reg初始化状态 STATE_OK“
#define SETTCPOK xEventGroupSetBits(netEventHandler, TCPBIT_2) //设置”标志位2EC20 TCP状态 STATE_OK““
#define SETHTTPOK xEventGroupSetBits(netEventHandler, HTTPBIT_3) //设置”标志位3EC20 HTTP请求状态 STATE_OK“““
#define SETTCPERR xEventGroupClearBits(netEventHandler, TCPBIT_2) //设置“标志位2EC20 TCP状态 STATE_ERR"
#define SETHTTPERR xEventGroupClearBits(netEventHandler, HTTPBIT_3) //设置”标志位3EC20 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