|
|
|
|
|
#include "mes.h"
|
|
|
|
|
|
static uint8_t comm_package_sequence = 0;
|
|
|
|
|
|
DEVICE_WORK_STATUS_T device_working_status_buff;
|
|
|
|
|
|
/*********************************************/
|
|
|
//打印标志位 20S 观察
|
|
|
void debug_flag(void)
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//打印温湿度等数据 20S
|
|
|
|
|
|
void debug_status(void)
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/****************MCU****************/
|
|
|
//封装MUC数据包
|
|
|
int send_mcu_package(char * data , char length)
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//拆解MCU数据包
|
|
|
int recev_mcu_package()
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
// 面板变量变化 及时发送通知mcu(与mcu同步)
|
|
|
|
|
|
|
|
|
|
|
|
//用串口1发送数据包给mcu
|
|
|
int send_mes_mcu(char* mes_buf , char mes_length)
|
|
|
{
|
|
|
char mes_number = 0;
|
|
|
|
|
|
for(mes_number=0; mes_number < mes_length ; mes_length++)
|
|
|
{
|
|
|
SendData_SCI1(mes_buf[mes_number]);
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
/****************模组****************/
|
|
|
|
|
|
//封装模组数据包 返回长度 用于发送传参
|
|
|
//*buf : 缓存地址 length : 数据的长度 (字节)
|
|
|
int send_wifi_package(uint8_t * buf ,uint8_t type, uint8_t cmd, uint8_t subCmd , char length , uint8_t *data)
|
|
|
{
|
|
|
|
|
|
WIFI_PACKAGE * wifi_package;
|
|
|
uint8_t total_msg_len = sizeof(WIFI_PACKAGE)+length+1;
|
|
|
memset(wifi_package,0,total_msg_len);
|
|
|
wifi_package = (WIFI_PACKAGE *)buf;
|
|
|
wifi_package->package_head[0]=SEND_WIFI_PACKAGE_HEAD_FIRST;
|
|
|
wifi_package->package_head[1]=SEND_WIFI_PACKAGE_HEAD_SECOND;
|
|
|
wifi_package->package_version=SEND_WIFI_PACKAGE_VERSION;
|
|
|
wifi_package->package_sequence = comm_package_sequence++;
|
|
|
wifi_package->package_type = type;
|
|
|
wifi_package->data_length= length + 2;
|
|
|
wifi_package->command = cmd;
|
|
|
wifi_package->sub_command = subCmd;
|
|
|
|
|
|
for(uint8_t data_number=0 ; data_number<length; data_number++)
|
|
|
{
|
|
|
//wifi_package[sizeof(WIFI_PACKAGE)+data_number]=*(WIFI_PACKAGE*)data[data_number];
|
|
|
buf[sizeof(WIFI_PACKAGE)+data_number] = data[data_number];
|
|
|
}
|
|
|
|
|
|
buf[total_msg_len-1]=comm_message_checksum(buf, total_msg_len);
|
|
|
|
|
|
return total_msg_len;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
//拆解模组数据包
|
|
|
|
|
|
int receive_wifi_analysis(uint8_t * receive_wifi_buf,uint8_t length)
|
|
|
{
|
|
|
|
|
|
uint8_t pkg_seq = receive_wifi_buf[3];
|
|
|
uint8_t msg_type = receive_wifi_buf[4];
|
|
|
uint8_t data_length = receive_wifi_buf[5];
|
|
|
uint8_t cmd = receive_wifi_buf[6];
|
|
|
uint8_t sub_cmd = receive_wifi_buf[7];
|
|
|
//判断是否合法
|
|
|
if( (receive_wifi_buf[0] == RECEIVE_WIFI_PACKAGE_HEAD_FIRST) && (receive_wifi_buf[1] == RECEIVE_WIFI_PACKAGE_HEAD_SECOND) &&(receive_wifi_buf[2]) ==RECEIVE_WIFI_PACKAGE_VERSION)
|
|
|
{
|
|
|
//打印收到!!
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//接受错误!!
|
|
|
|
|
|
//清空缓存!!
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
//判断校验
|
|
|
if(comm_message_checksum(receive_wifi_buf,length)!=receive_wifi_buf[length-1])
|
|
|
{
|
|
|
//校验码错误!!
|
|
|
return -2;
|
|
|
}
|
|
|
|
|
|
// 打印 方便观察 hlt_os_printf("type=%d,cmd=%d,sub_cmd=%d.\n", msg_type, cmd, sub_cmd);
|
|
|
|
|
|
//*********回应包 0x03*********
|
|
|
if(msg_type == PACKAGE_ACK)
|
|
|
{
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//*******配置包 0x01*******
|
|
|
|
|
|
if(msg_type==RECEIVE_WIFI_PACKAGE_CONFIGURATION)
|
|
|
{
|
|
|
|
|
|
// 心跳包
|
|
|
if(cmd==WIFI_HEARTBEAT_COMMAND )
|
|
|
{
|
|
|
if(sub_cmd==WIFI_HEARTBEAT_SUB_COMMAND)
|
|
|
{
|
|
|
//查看数据区{****状态字****};
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//非法数据包
|
|
|
// 清空缓存 {******}
|
|
|
return -3;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 控制包
|
|
|
|
|
|
if(cmd==REVEIVE_WIFI_COMMAND)
|
|
|
{
|
|
|
//开关
|
|
|
if(sub_cmd==SWITH_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//模式
|
|
|
else if(sub_cmd==MODE_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//童锁
|
|
|
else if(sub_cmd==CHILD_LOCK_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//除菌 uv
|
|
|
else if(sub_cmd==UV_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//负离子
|
|
|
else if(sub_cmd==NEGATIVE_ION_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//熄屏
|
|
|
else if(sub_cmd==SCREEN_OFF_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//按键音
|
|
|
else if(sub_cmd==KEY_TONE_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//按滤芯状态
|
|
|
else if(sub_cmd==FILTER_STATUS)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//蜂鸣器
|
|
|
else if(sub_cmd==BUZZER_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
//档位
|
|
|
else if(sub_cmd==GEAR_SUB_COMMAND)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//打印失败!!
|
|
|
//清空缓存{********}
|
|
|
return -3;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//*******请求包 0x02 *******
|
|
|
if(msg_type==RECEIVE_WIFI_PACKAGE_REQUEST)
|
|
|
{
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 面板变量变化 及时发送通知模组(与模组同步)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//用串口3发送数据包给模组
|
|
|
int send_mes_wifi(char* mes_buf , char mes_length)
|
|
|
{
|
|
|
char mes_number = 0;
|
|
|
|
|
|
for(mes_number=0; mes_number < mes_length ; mes_length++)
|
|
|
{
|
|
|
SendData_SCI3(mes_buf[mes_number]);
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
//校验码
|
|
|
|
|
|
uint8_t comm_message_checksum(uint8_t * data, uint16_t len)
|
|
|
{
|
|
|
int16_t checkSum = 0;
|
|
|
char *pBuf = (char *)data;
|
|
|
uint16_t bufLen = len;
|
|
|
|
|
|
for (int i = 0; i < bufLen; i++){
|
|
|
checkSum += pBuf[i];
|
|
|
}
|
|
|
|
|
|
checkSum = checkSum % (0x100);
|
|
|
|
|
|
return checkSum;
|
|
|
}
|
|
|
|