Browse Source

feature:1.tcp服务添加心跳

pcb_v2
Zhangwen 4 months ago
parent
commit
a291edf9d8
  1. 3
      .vscode/settings.json
  2. 4
      source/app/app_config.c
  3. 35
      source/app/main.c
  4. 13
      source/app/task_game.c
  5. 83
      source/app/task_w600.c
  6. 19
      source/app/task_w600.h
  7. 30
      source/app/task_w600_ptc.c
  8. 20
      source/app/task_w600_ptc.h
  9. 59
      source/bsp/bsp_WT2605B.c
  10. 7
      source/bsp/bsp_WT2605B.h

3
.vscode/settings.json

@ -84,6 +84,7 @@
"time.h": "c", "time.h": "c",
"task_pen_head.h": "c", "task_pen_head.h": "c",
"setjmp.h": "c", "setjmp.h": "c",
"algorithm": "c" "algorithm": "c",
"task_w600_ptc.h": "c"
} }
} }

4
source/app/app_config.c

@ -24,10 +24,10 @@ void L3_param_init(void)
//station模式状态 //station模式状态
G.st_status = 0; //0:none 1:wifi_ok 2:tcp_connect_ok G.st_status = 0; //0:none 1:wifi_ok 2:tcp_connect_ok
//station模式sid //station模式sid
Lc_strcpy(G.st_sid,"sdf"); Lc_strcpy(G.st_sid,"YFRS");
// Lc_strcpy(G.st_sid,"iPhone11"); // Lc_strcpy(G.st_sid,"iPhone11");
//station模式pwd //station模式pwd
Lc_strcpy(G.st_pwd,"dfasgg"); Lc_strcpy(G.st_pwd,"99999999");
// Lc_strcpy(G.st_pwd,"12345678"); // Lc_strcpy(G.st_pwd,"12345678");
//ap模式状态 //ap模式状态
G.ap_status = 0;//0: none 1: ap_ok 2:tcp_server_ok G.ap_status = 0;//0: none 1: ap_ok 2:tcp_server_ok

35
source/app/main.c

@ -98,14 +98,13 @@ void main(void)
{ {
// OID数据采集 // OID数据采集
// L1_Oid_readoid(); // L1_Oid_readoid();
if(1 == s_nos_tick.t1s_heartbeat)//1s if(1 == s_nos_tick.t1s_heartbeat)//1s
{ {
s_nos_tick.t1s_heartbeat = 0;//置0清空 s_nos_tick.t1s_heartbeat = 0;//置0清空
L0_uart0_uc('.'); L0_uart0_uc('.');
// L0_uart0_sendstr("ADC = "); // L0_uart0_sendstr("ADC = ");
// L0_uart0_us(L1_ADC_Read(12)); // L0_uart0_us(L1_ADC_Read(12));
// L2_WT2605B_Broadcast(&audio_game_complete); // L2_WT2605B_Broadcast(&audio_tcp_noplan);
} }
// 游戏任务 // 游戏任务
L3_task_game_handler(&_s_task_game); L3_task_game_handler(&_s_task_game);
@ -127,21 +126,23 @@ void main(void)
// L0_uart0_0d0a(); // L0_uart0_0d0a();
// L0_uart0_sendstr("oid_p"); // L0_uart0_sendstr("oid_p");
// } // }
// // 系统状态任务 // 系统状态任务
// L3_task_appstatus_handler(&_s_task_appstatus); L3_task_appstatus_handler(&_s_task_appstatus);
// // 系统状态测试任务 // 系统状态测试任务
// // L3_task_AppTest_handler(&_s_task_apptest); // L3_task_AppTest_handler(&_s_task_apptest);
// // 按键状态任务 // 按键状态任务
// L3_task_keystatus_handler(&_s_task_keystatus); L3_task_keystatus_handler(&_s_task_keystatus);
// // OID和WIFI任务 // OID和WIFI任务
// if (R.app_status != POW_OFF) if (R.app_status != POW_OFF)
// { {
// // OID数据采集 // OID数据采集
// L1_Oid_readoid(); L1_Oid_readoid();
// // WIFI数据解析 // WIFI数据解析
// L3_uart2_wifi_parse(); L3_uart2_wifi_parse();
// L2_task_W600_flow_handle(&_s_task_w600_para); L2_task_W600_flow_handle(&_s_task_w600_para);
// } }
#if 0 #if 0
if(s_uart0_rec.ok) if(s_uart0_rec.ok)
{ {

13
source/app/task_game.c

@ -66,7 +66,7 @@ void L3_task_game_init(void)
_s_task_game.game_info[0].game_supported_oid[1].oid = 0x3136; _s_task_game.game_info[0].game_supported_oid[1].oid = 0x3136;
_s_task_game.game_info[0].game_supported_oid[2].oid = 0x3137; _s_task_game.game_info[0].game_supported_oid[2].oid = 0x3137;
_s_task_game.game_info[0].game_supported_oid[3].oid = 0x3138; _s_task_game.game_info[0].game_supported_oid[3].oid = 0x3138;
_s_task_game.game_info[0].game_supported_oid[4].oid = 0x3178; // _s_task_game.game_info[0].game_supported_oid[4].oid = 0x3178; //错误码
_s_task_game.game_info[0].game_supported_oid[4].yes_or_no = 0; _s_task_game.game_info[0].game_supported_oid[4].yes_or_no = 0;
_s_task_game.game_info[0].game_order = 0; _s_task_game.game_info[0].game_order = 0;
@ -100,7 +100,7 @@ void L3_task_game_init(void)
_s_task_game.game_info[1].game_supported_oid[22].oid = 0x3175; _s_task_game.game_info[1].game_supported_oid[22].oid = 0x3175;
_s_task_game.game_info[1].game_supported_oid[23].oid = 0x3176; _s_task_game.game_info[1].game_supported_oid[23].oid = 0x3176;
_s_task_game.game_info[1].game_supported_oid[24].oid = 0x3177; _s_task_game.game_info[1].game_supported_oid[24].oid = 0x3177;
_s_task_game.game_info[1].game_supported_oid[25].oid = 0x3179; // _s_task_game.game_info[1].game_supported_oid[25].oid = 0x3179; //错误码
_s_task_game.game_info[1].game_supported_oid[25].yes_or_no = 0; _s_task_game.game_info[1].game_supported_oid[25].yes_or_no = 0;
_s_task_game.game_info[1].game_order = 1; _s_task_game.game_info[1].game_order = 1;
_s_task_game.game_info[1].game_timeout_seconds = 600; _s_task_game.game_info[1].game_timeout_seconds = 600;
@ -114,7 +114,7 @@ void L3_task_game_init(void)
_s_task_game.game_info[2].game_supported_oid[3].oid = 0x4E88; _s_task_game.game_info[2].game_supported_oid[3].oid = 0x4E88;
_s_task_game.game_info[2].game_supported_oid[4].oid = 0x4E89; _s_task_game.game_info[2].game_supported_oid[4].oid = 0x4E89;
_s_task_game.game_info[2].game_supported_oid[5].oid = 0x4E8A; _s_task_game.game_info[2].game_supported_oid[5].oid = 0x4E8A;
_s_task_game.game_info[2].game_supported_oid[6].oid = 0x317A; // _s_task_game.game_info[2].game_supported_oid[6].oid = 0x317A; //错误码
_s_task_game.game_info[2].game_supported_oid[6].yes_or_no = 0; _s_task_game.game_info[2].game_supported_oid[6].yes_or_no = 0;
_s_task_game.game_info[2].game_order = 1; _s_task_game.game_info[2].game_order = 1;
_s_task_game.game_info[2].game_timeout_seconds = 600; _s_task_game.game_info[2].game_timeout_seconds = 600;
@ -254,9 +254,6 @@ void L3_task_game_handler(S_TASK_GAME *s)
} }
if (completed == 1) if (completed == 1)
{ {
// 游戏结束,没有要进行的游戏
s->game_info_index = -1;
L0_uart0_sendstr("It's completed.");
// 游戏完成 // 游戏完成
L2_WT2605B_Broadcast(&audio_game_complete); L2_WT2605B_Broadcast(&audio_game_complete);
L2_task_go_Tdelay(D_task_GAME_NET_SUBMIT,D_Tdelay_300ms); L2_task_go_Tdelay(D_task_GAME_NET_SUBMIT,D_Tdelay_300ms);
@ -286,6 +283,10 @@ void L3_task_game_handler(S_TASK_GAME *s)
_s_task_w600_para.submittaskpkg.Error_Time[1] = _s_task_game.eeror_times; _s_task_w600_para.submittaskpkg.Error_Time[1] = _s_task_game.eeror_times;
_s_task_w600_para.submittaskpkg.Score[0] = 0; _s_task_w600_para.submittaskpkg.Score[0] = 0;
_s_task_w600_para.submittaskpkg.Score[1] = 0; _s_task_w600_para.submittaskpkg.Score[1] = 0;
// 游戏结束,没有要进行的游戏
s->game_info_index = -1;
L0_uart0_sendstr("It's completed.");
L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_300ms); L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_300ms);
TTSS_Task_end(); TTSS_Task_end();

83
source/app/task_w600.c

@ -10,13 +10,14 @@
/// @note cc_AS_stc02 /// @note cc_AS_stc02
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
#include "task_w600.h" #include "../app/task_w600.h"
#include "../app/task_w600_ptc.h"
#include "app_config.h" #include "app_config.h"
#include "../msp/uart0.h" #include "../msp/uart0.h"
#include "../msp/uart2.h" #include "../msp/uart2.h"
#include "../asp/asp_oid.h" #include "../asp/asp_oid.h"
#include "../bsp/bsp_config.h" #include "../bsp/bsp_config.h"
#include "../bsp/bsp_WT2605B.h"
struct _s_task_W600_Para _s_task_w600_para; struct _s_task_W600_Para _s_task_w600_para;
@ -41,19 +42,24 @@ char *GET_WIFI_INS()
return wifi_ins; return wifi_ins;
} }
U8 wifi_rev_buf[128], wifi_tmp[64]; // U8 wifi_rev_buf[128], wifi_tmp[64];
U8 *wifi_rev_buf, wifi_tmp[64];
U8 tmp_num = 0; U8 tmp_num = 0;
void L3_uart2_wifi_parse(void) void L3_uart2_wifi_parse(void)
{ {
if (ts_uart[uNum2].r.ok == 1) if (ts_uart[uNum2].r.ok == 1)
{ {
U8 *ptr = wifi_rev_buf; U8 *ptr = wifi_rev_buf = ts_uart[uNum2].r.buf;
ts_uart[uNum2].r.ok = 0; ts_uart[uNum2].r.ok = 0;
Lc_buf_copy_uc(wifi_rev_buf, ts_uart[uNum2].r.buf, ts_uart[uNum2].r.num); // Lc_buf_copy_uc(wifi_rev_buf, ts_uart[uNum2].r.buf, ts_uart[uNum2].r.num);
wifi_rev_buf[ts_uart[uNum2].r.num] = 0; wifi_rev_buf[ts_uart[uNum2].r.num] = 0;
if (_s_task_w600_para.st_cip_ok == 1) if (_s_task_w600_para.st_cip_ok == 1)
{ {
if (wifi_rev_buf,ts_uart[uNum2].r.num) // L0_uart0_uc('$');
// L0_uart0_sendArrayHex(wifi_rev_buf,ts_uart[uNum2].r.num);
// L0_uart0_0d0a();
// 获取今日训练内容
if (1 == parse_QueryAckPkg(wifi_rev_buf,ts_uart[uNum2].r.num))
{ {
_s_task_w600_para.Recieve_QueryAck_Flag = 1; _s_task_w600_para.Recieve_QueryAck_Flag = 1;
} }
@ -126,12 +132,14 @@ void L3_task_W600_flow_init(U8 mode)
_s_task_w600_para.mode = mode; _s_task_w600_para.mode = mode;
_s_task_w600_para.send = 0; _s_task_w600_para.send = 0;
_s_task_w600_para.conn_ok = 0; _s_task_w600_para.conn_ok = 0;
_s_task_w600_para.Send_Query_Flag = 1; _s_task_w600_para.last_send_seconds = 0;
_s_task_w600_para.Recieve_QueryAck_Flag = 0;
_s_task_w600_para.Send_Submit_Flag = 0; // 放到TCP连接成功是初始化
_s_task_w600_para.queryackpkg.Plan_ID[0] = 0; // _s_task_w600_para.Send_Query_Flag = 1;
_s_task_w600_para.queryackpkg.Plan_ID[1] = 0; // _s_task_w600_para.Recieve_QueryAck_Flag = 0;
// _s_task_w600_para.Send_Submit_Flag = 0;
// _s_task_w600_para.queryackpkg.Plan_ID[0] = 0;
// _s_task_w600_para.queryackpkg.Plan_ID[1] = 0;
} }
//------------------------ GM35 Flow Handle ----------------------------------- //------------------------ GM35 Flow Handle -----------------------------------
@ -169,7 +177,8 @@ void L3_task_W600_flow_init(U8 mode)
#define TTSS_TASK_GM35_FLOW_ST_SAMRTCSTOP 0x34 #define TTSS_TASK_GM35_FLOW_ST_SAMRTCSTOP 0x34
#define TTSS_TASK_GM35_FLOW_ST_SAMRTCSTOPPED 0x35 #define TTSS_TASK_GM35_FLOW_ST_SAMRTCSTOPPED 0x35
#define TTSS_TASK_GM35_SEND_TPC 0x35 #define TTSS_TASK_GM35_SEND_TPC 0x36
#define TTSS_TASK_GM35_SEND_HEARTBEAT 0x37
#define INS_TIMEOUT 5 #define INS_TIMEOUT 5
@ -296,6 +305,14 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
{ {
s->send = 0; s->send = 0;
R.app_status = TCP_CONNECTED; R.app_status = TCP_CONNECTED;
// 记录时间
_s_task_w600_para.Send_Query_Flag = 1;
_s_task_w600_para.Recieve_QueryAck_Flag = 0;
_s_task_w600_para.Send_Submit_Flag = 0;
_s_task_w600_para.queryackpkg.Plan_ID[0] = 0;
_s_task_w600_para.queryackpkg.Plan_ID[1] = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_1s); L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_1s);
} }
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@ -346,21 +363,53 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
{ {
U8 num = constructor_QueryTaskPkg(); U8 num = constructor_QueryTaskPkg();
s->Send_Query_Flag = 0; s->Send_Query_Flag = 0;
_s_task_w600_para.last_send_seconds = s_nos_tick.t_1s;
L0_uart2_sendArray(&_s_task_w600_para.querytaskpkg,num); L0_uart2_sendArray(&_s_task_w600_para.querytaskpkg,num);
// L0_uart0_uc('Q');
// L0_uart0_sendArray(&_s_task_w600_para.querytaskpkg,num);
} }
else if (s->Send_Submit_Flag == 1) else if (s->Send_Submit_Flag == 1)
{ {
U8 num = constructor_SubmitTaskPkg(); U8 num = constructor_SubmitTaskPkg();
s->Send_Submit_Flag = 0; s->Send_Submit_Flag = 0;
_s_task_w600_para.last_send_seconds = s_nos_tick.t_1s;
L0_uart2_sendArray(&_s_task_w600_para.submittaskpkg,num); L0_uart2_sendArray(&_s_task_w600_para.submittaskpkg,num);
// L0_uart0_uc('S');
// L0_uart0_sendArray(&_s_task_w600_para.submittaskpkg,num);
} }
else if (s->Recieve_QueryAck_Flag == 1) else if (s->Recieve_QueryAck_Flag == 1)
{ {
s->Recieve_QueryAck_Flag = 0; s->Recieve_QueryAck_Flag = 0;
// 根据_s_task_w600_para.queryackpkg.Game_ID[2] 找见响应音频 // 正常训练
// L2_WT2605B_Broadcast(s->game_info[i].game_audio); if (_s_task_w600_para.queryackpkg.Tranning_Status == 0)
{
L2_WT2605B_Broadcast_TPC(&s->queryackpkg.Game_ID);
L0_uart0_uchex('A');
L0_uart0_sendArray(&_s_task_w600_para.queryackpkg,15);
}
// 训练完成
else if (_s_task_w600_para.queryackpkg.Tranning_Status == 1)
{
L2_WT2605B_Broadcast(&audio_tcp_complete);
L0_uart0_uchex('A');
L0_uart0_sendArray(&_s_task_w600_para.queryackpkg,15);
}
// 无训练任务
else if (_s_task_w600_para.queryackpkg.Tranning_Status == 2)
{
L2_WT2605B_Broadcast(&audio_tcp_noplan);
L0_uart0_uchex('A');
L0_uart0_sendArray(&_s_task_w600_para.queryackpkg,15);
}
}
L2_task_go_Tdelay(TTSS_TASK_GM35_SEND_HEARTBEAT,D_Tdelay_100ms);
TTSS_Task_step(TTSS_TASK_GM35_SEND_HEARTBEAT)
if (s_nos_tick.t_1s - _s_task_w600_para.last_send_seconds > 60)
{
U8 num = constructor_HeartBeatPkg();
L0_uart2_sendArray(&_s_task_w600_para.heartbeatpkg,num);
// L0_uart0_sendArray(&_s_task_w600_para.heartbeatpkg,num);
_s_task_w600_para.last_send_seconds = s_nos_tick.t_1s;
} }
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_100ms); L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_100ms);

19
source/app/task_w600.h

@ -20,7 +20,7 @@
#include "../tpc/at0d0a.h" #include "../tpc/at0d0a.h"
#include "../tpc/ccmodbus.h" #include "../tpc/ccmodbus.h"
#include "../msp/msp_eeprom.h" #include "../msp/msp_eeprom.h"
#include "../app/task_w600_tpc.h" #include "../app/task_w600_ptc.h"
////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<< ////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<<
@ -31,7 +31,7 @@
#define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式 1-2 #define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式 1-2
// #define AT_INS_ST_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" // 1-3 // #define AT_INS_ST_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" // 1-3
#define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" // 单连接模式 1-4 #define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" // 单连接模式 1-4
#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.1.2\",777\r\n" //连接服务器 1-5 #define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.1.141\",777\r\n" //连接服务器 1-5
//#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.0.81\",4001\r\n" //连接服务器 //#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.0.81\",4001\r\n" //连接服务器
#define AT_INS_ST_CIPMODE1 "AT+CIPMODE=1\r\n" //设置传输模式 0普通传输模式 1透传模式 1-6 #define AT_INS_ST_CIPMODE1 "AT+CIPMODE=1\r\n" //设置传输模式 0普通传输模式 1透传模式 1-6
#define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //发送数据 1-7 #define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //发送数据 1-7
@ -85,11 +85,10 @@ struct _s_task_W600_Para
vU32 ins_stmp; //指令时间戳 vU32 ins_stmp; //指令时间戳
vU32 gprs_last_recv_stmp; //上次接收指令时间戳 vU32 gprs_last_recv_stmp; //上次接收指令时间戳
vU32 tcp_last_recv_stmp; //上次接收数据时间戳 vU32 tcp_last_recv_stmp; //上次接收数据时间戳
vU32 tcp_conn_stmp; //断开连接时间戳 vU32 tcp_conn_stmp; //断开连接时间戳
vU32 tcp_close_stmp; //断开连接时间戳 vU32 tcp_close_stmp; //断开连接时间戳
vU32 heart_stmp; //连接成功后,等待发送时间 vU32 last_send_seconds; //最后一次发送数据时间
vU32 data_stmp;//数据发送时间记录
vU8 sign_flag; //发送登录数据标志 vU8 sign_flag; //发送登录数据标志
vU8 ack_flag;//下行数据ack vU8 ack_flag;//下行数据ack
@ -97,11 +96,13 @@ struct _s_task_W600_Para
vU8 smartc_ok; //smartconfig是否成功 vU8 smartc_ok; //smartconfig是否成功
//任务请求 //心跳数据包
HeartBeatPkg heartbeatpkg;
//任务请求数据包
QueryTaskPkg querytaskpkg; QueryTaskPkg querytaskpkg;
//请求响应 //请求响应数据包
QueryAckPkg queryackpkg; QueryAckPkg queryackpkg;
//成绩提交 //成绩提交数据包
SubmitTaskPkg submittaskpkg; SubmitTaskPkg submittaskpkg;
// 发送请求标志位 1发送请求 0不发送请求 // 发送请求标志位 1发送请求 0不发送请求
U8 Send_Query_Flag; U8 Send_Query_Flag;

30
source/app/task_w600_ptc.c

@ -1,7 +1,24 @@
#include "../app/task_w600_ptc.h" #include "../app/task_w600_ptc.h"
#include "../app/task_w600.h" #include "../app/task_w600.h"
#include "../app/app_config.h"
U8 constructor_HeartBeatPkg()
{
_s_task_w600_para.heartbeatpkg.filter[0] = 0xAA;
_s_task_w600_para.heartbeatpkg.filter[1] = 0xBB;
_s_task_w600_para.heartbeatpkg.num = 0x07;
_s_task_w600_para.heartbeatpkg.cmd = 0xA0;
_s_task_w600_para.heartbeatpkg.did[0] = G.mcu_id[3];
_s_task_w600_para.heartbeatpkg.did[1] = G.mcu_id[4];
_s_task_w600_para.heartbeatpkg.did[2] = G.mcu_id[5];
_s_task_w600_para.heartbeatpkg.did[3] = G.mcu_id[6];
_s_task_w600_para.heartbeatpkg.crc[0] = 0xCC;
_s_task_w600_para.heartbeatpkg.crc[1] = 0xDD;
return _s_task_w600_para.heartbeatpkg.num + 3;
}
U8 constructor_QueryTaskPkg() U8 constructor_QueryTaskPkg()
{ {
_s_task_w600_para.querytaskpkg.filter[0] = 0xAA; _s_task_w600_para.querytaskpkg.filter[0] = 0xAA;
@ -15,8 +32,6 @@ U8 constructor_QueryTaskPkg()
_s_task_w600_para.querytaskpkg.crc[0] = 0xCC; _s_task_w600_para.querytaskpkg.crc[0] = 0xCC;
_s_task_w600_para.querytaskpkg.crc[1] = 0xDD; _s_task_w600_para.querytaskpkg.crc[1] = 0xDD;
//CRC
// crc16(_s_task_w600_para.crc, &_s_task_w600_para.cmder, num - 2);
return _s_task_w600_para.querytaskpkg.num + 3; return _s_task_w600_para.querytaskpkg.num + 3;
} }
@ -31,11 +46,9 @@ U8 constructor_SubmitTaskPkg()
_s_task_w600_para.submittaskpkg.did[2] = G.mcu_id[5]; _s_task_w600_para.submittaskpkg.did[2] = G.mcu_id[5];
_s_task_w600_para.submittaskpkg.did[3] = G.mcu_id[6]; _s_task_w600_para.submittaskpkg.did[3] = G.mcu_id[6];
// 其他属性在游戏完成时赋值 // 其他属性在游戏完成时赋值
_s_task_w600_para.submittaskpkg.cmd[0] = 0xCC; _s_task_w600_para.submittaskpkg.crc[0] = 0xCC;
_s_task_w600_para.submittaskpkg.crc[1] = 0xDD; _s_task_w600_para.submittaskpkg.crc[1] = 0xDD;
//CRC
// crc16(_s_task_w600_para.crc, &_s_task_w600_para.cmder, num - 2);
return _s_task_w600_para.submittaskpkg.num + 3; return _s_task_w600_para.submittaskpkg.num + 3;
} }
@ -65,7 +78,6 @@ U8 parse_QueryAckPkg(U8* d,U8 num)
_s_task_w600_para.queryackpkg.Game_ID[0] = d[10]; _s_task_w600_para.queryackpkg.Game_ID[0] = d[10];
_s_task_w600_para.queryackpkg.Game_ID[1] = d[11]; _s_task_w600_para.queryackpkg.Game_ID[1] = d[11];
_s_task_w600_para.queryackpkg.Tranning_Status = d[12]; _s_task_w600_para.queryackpkg.Tranning_Status = d[12];
// 其他属性在游戏完成时赋值
_s_task_w600_para.queryackpkg.crc[0] = d[13]; _s_task_w600_para.queryackpkg.crc[0] = d[13];
_s_task_w600_para.queryackpkg.crc[1] = d[14]; _s_task_w600_para.queryackpkg.crc[1] = d[14];
@ -74,13 +86,7 @@ U8 parse_QueryAckPkg(U8* d,U8 num)
{ {
return 0; return 0;
} }
//CRC
// crc16(_s_task_w600_para.crc, &_s_task_w600_para.cmder, num - 2);
return 1; return 1;
} }

20
source/app/task_w600_ptc.h

@ -16,6 +16,21 @@
#include "../clib/type.h" #include "../clib/type.h"
//心跳数据包
typedef struct {
//起始码
U8 filter[2];
//长度
U8 num;
//Cmd
U8 cmd;
//设备ID
U8 did[4];
//校验
U8 crc[2];
}HeartBeatPkg;
//任务请求数据包
typedef struct { typedef struct {
//起始码 //起始码
U8 filter[2]; U8 filter[2];
@ -29,6 +44,7 @@ typedef struct {
U8 crc[2]; U8 crc[2];
}QueryTaskPkg; }QueryTaskPkg;
//请求响应数据包
typedef struct { typedef struct {
//起始码 //起始码
U8 filter[2]; U8 filter[2];
@ -48,6 +64,7 @@ typedef struct {
U8 crc[2]; U8 crc[2];
}QueryAckPkg; }QueryAckPkg;
//成绩提交数据包
typedef struct { typedef struct {
//起始码 //起始码
U8 filter[2]; U8 filter[2];
@ -72,9 +89,10 @@ typedef struct {
}SubmitTaskPkg; }SubmitTaskPkg;
extern U8 constructor_HeartBeatPkg(void);
extern U8 constructor_QueryTaskPkg(void); extern U8 constructor_QueryTaskPkg(void);
extern U8 constructor_SubmitTaskPkg(void); extern U8 constructor_SubmitTaskPkg(void);
extern U8 parse_QueryAckPkg(void); extern U8 parse_QueryAckPkg(U8* d,U8 num);

59
source/bsp/bsp_WT2605B.c

@ -5,23 +5,30 @@
#include "../msp/msp_eeprom.h" #include "../msp/msp_eeprom.h"
TS_SPEECH_AUDIO audio_powerdown = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x31,0x8F,0xEF}; //电源关闭 TS_SPEECH_AUDIO audio_powerdown = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x31,0x8F,0xEF}; //T001电源关闭
TS_SPEECH_AUDIO audio_poweron = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x32,0x90,0xEF}; //电源开启 TS_SPEECH_AUDIO audio_poweron = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x32,0x90,0xEF}; //T002电源开启
TS_SPEECH_AUDIO audio_wifi_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x33,0x91,0xEF}; //WIFI连接成功 TS_SPEECH_AUDIO audio_wifi_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x33,0x91,0xEF}; //T003WIFI连接成功
TS_SPEECH_AUDIO audio_TCP_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x34,0x92,0xEF}; //TCP连接成功 TS_SPEECH_AUDIO audio_TCP_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x34,0x92,0xEF}; //T004TCP连接成功
TS_SPEECH_AUDIO audio_config_mode = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x35,0x93,0xEF}; //配置模式 TS_SPEECH_AUDIO audio_config_mode = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x35,0x93,0xEF}; //T005配置模式
TS_SPEECH_AUDIO audio_config_complete = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x36,0x94,0xEF}; //配置完成 TS_SPEECH_AUDIO audio_config_complete = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x36,0x94,0xEF}; //T006配置完成
TS_SPEECH_AUDIO audio_config_phone = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x37,0x95,0xEF}; //手机APP配置 TS_SPEECH_AUDIO audio_config_phone = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x37,0x95,0xEF}; //T007手机APP配置
TS_SPEECH_AUDIO audio_volume_up = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x38,0x96,0xEF}; //音量增加 TS_SPEECH_AUDIO audio_volume_up = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x38,0x96,0xEF}; //T008音量增加
TS_SPEECH_AUDIO audio_volume_down = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x39,0x97,0xEF}; //音量减少 TS_SPEECH_AUDIO audio_volume_down = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x39,0x97,0xEF}; //T009音量减少
TS_SPEECH_AUDIO audio_game_maze = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x30,0x8F,0xEF}; //迷宫 TS_SPEECH_AUDIO audio_game_maze = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x30,0x8F,0xEF}; //T010迷宫
TS_SPEECH_AUDIO audio_game_different = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x31,0x90,0xEF}; //找不同 TS_SPEECH_AUDIO audio_game_different = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x31,0x90,0xEF}; //T011找不同
TS_SPEECH_AUDIO audio_game_shulte = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x32,0x91,0xEF}; //舒尔特方格 TS_SPEECH_AUDIO audio_game_shulte = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x32,0x91,0xEF}; //T012舒尔特方格
TS_SPEECH_AUDIO audio_game_error = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x33,0x92,0xEF}; //错误 TS_SPEECH_AUDIO audio_game_error = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x33,0x92,0xEF}; //T013错误
TS_SPEECH_AUDIO audio_game_correct = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x34,0x93,0xEF}; //正确提示音 TS_SPEECH_AUDIO audio_game_correct = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x34,0x93,0xEF}; //T014正确提示音
TS_SPEECH_AUDIO audio_game_overtime = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x35,0x94,0xEF}; //训练时间到 TS_SPEECH_AUDIO audio_game_overtime = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x35,0x94,0xEF}; //T015训练时间到
TS_SPEECH_AUDIO audio_game_complete = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x36,0x95,0xEF}; //训练完成 TS_SPEECH_AUDIO audio_game_complete = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x36,0x95,0xEF}; //T016训练完成
TS_SPEECH_AUDIO audio_tcp_maze = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x37,0x96,0xEF}; //T017请进行走迷宫游戏训练
TS_SPEECH_AUDIO audio_tcp_different = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x38,0x97,0xEF}; //T018请进行找不同游戏训练
TS_SPEECH_AUDIO audio_tcp_shulte = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x39,0x98,0xEF}; //T019请进行舒尔特方格游戏训练
TS_SPEECH_AUDIO audio_tcp_complete = {0x7E,0x07,0xA3,0x54,0x30,0x32,0x30,0x90,0xEF}; //T020恭喜你,今天所有训练任务已完成
TS_SPEECH_AUDIO audio_tcp_noplan = {0x7E,0x07,0xA3,0x54,0x30,0x32,0x31,0x91,0xEF}; //T021今天暂无训练任务,可以进行自由训练哦
TS_SPEECH_VOLUME volume_control = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF}; //音量控制 TS_SPEECH_VOLUME volume_control = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF}; //音量控制
@ -51,6 +58,24 @@ void L2_WT2605B_Broadcast(TS_SPEECH_AUDIO *music)
L0_uart3_sendArray((U8 *)music,9); L0_uart3_sendArray((U8 *)music,9);
} }
void L2_WT2605B_Broadcast_TPC(U8* GameID)
{
if (GameID[0] == 0x31 && GameID[1] == 0x52)
{
L2_WT2605B_Broadcast(&audio_tcp_maze);
}
else if (GameID[0] == 0x31 && GameID[1] == 0x33)
{
L2_WT2605B_Broadcast(&audio_tcp_different);
}
else if (GameID[0] == 0x31 && GameID[1] == 0x42)
{
L2_WT2605B_Broadcast(&audio_tcp_shulte);
}
}
void L2_WT2605B_VolumeControl(U8 grade) void L2_WT2605B_VolumeControl(U8 grade)
{ {
volume_control.grade = grade; volume_control.grade = grade;

7
source/bsp/bsp_WT2605B.h

@ -43,12 +43,19 @@ extern TS_SPEECH_AUDIO audio_game_correct; //正确
extern TS_SPEECH_AUDIO audio_game_overtime; //训练时间到 extern TS_SPEECH_AUDIO audio_game_overtime; //训练时间到
extern TS_SPEECH_AUDIO audio_game_complete; //训练完成 extern TS_SPEECH_AUDIO audio_game_complete; //训练完成
extern TS_SPEECH_AUDIO audio_tcp_maze;
extern TS_SPEECH_AUDIO audio_tcp_different;
extern TS_SPEECH_AUDIO audio_tcp_shulte;
extern TS_SPEECH_AUDIO audio_tcp_complete;
extern TS_SPEECH_AUDIO audio_tcp_noplan;
extern TS_SPEECH_VOLUME volume_control; extern TS_SPEECH_VOLUME volume_control;
extern void L2_WT2605B_init(); extern void L2_WT2605B_init();
extern void L2_WT2605B_PWRON(); extern void L2_WT2605B_PWRON();
extern void L2_WT2605B_PWROFF(); extern void L2_WT2605B_PWROFF();
extern void L2_WT2605B_Broadcast(TS_SPEECH_AUDIO *music); extern void L2_WT2605B_Broadcast(TS_SPEECH_AUDIO *music);
extern void L2_WT2605B_Broadcast_TPC(U8* GameID);
extern void L2_WT2605B_VolumeControl(U8 grade); extern void L2_WT2605B_VolumeControl(U8 grade);
extern void L2_WT2605B_VioceUp(); extern void L2_WT2605B_VioceUp();
extern void L2_WT2605B_VioceDown(); extern void L2_WT2605B_VioceDown();

Loading…
Cancel
Save