diff --git a/source/app/task_game.c b/source/app/task_game.c index c7c6872..86a70cd 100644 --- a/source/app/task_game.c +++ b/source/app/task_game.c @@ -70,7 +70,7 @@ void L3_task_game_init(void) _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_timeout_seconds = 600; + _s_task_game.game_info[0].game_timeout_seconds = 60; _s_task_game.game_info[0].game_score = 0; _s_task_game.game_info[1].game_oid = GAME_OID_SHERT; @@ -103,7 +103,7 @@ void L3_task_game_init(void) _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_order = 1; - _s_task_game.game_info[1].game_timeout_seconds = 600; + _s_task_game.game_info[1].game_timeout_seconds = 60; _s_task_game.game_info[1].game_score = 0; _s_task_game.game_info[2].game_oid = GAME_OID_ZMG; @@ -117,7 +117,7 @@ void L3_task_game_init(void) _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_order = 1; - _s_task_game.game_info[2].game_timeout_seconds = 600; + _s_task_game.game_info[2].game_timeout_seconds = 60; _s_task_game.game_info[2].game_score = 0; @@ -130,16 +130,31 @@ void L3_task_game_init(void) #define D_task_READ_OID 0x50 #define D_task_GAME_SWITCH 0x51 #define D_task_GAME_PLAY 0x52 -#define D_task_GAME_COMPLETED 0x53 -#define D_task_GAME_NET_SUBMIT 0x54 +#define D_task_GAME_TIMEOUT 0x53 +#define D_task_GAME_COMPLETED 0x54 +#define D_task_GAME_NET_SUBMIT 0x55 + void L3_task_game_handler(S_TASK_GAME *s) { TTSS_Task_init() - L2_task_go(D_task_READ_OID); + L2_task_go(D_task_GAME_TIMEOUT); + TTSS_Task_step(D_task_GAME_TIMEOUT) + if (s->game_info_index != -1 && (s_nos_tick.t_1s - s->start_seconds > s->game_info[s->game_info_index].game_timeout_seconds)) + { + // 游戏超时 + s->timeover_flag = 1; + L0_uart0_sendstr("audio_game_overtime! "); + L2_WT2605B_Broadcast(&audio_game_overtime); + L2_task_go_Tdelay(D_task_GAME_NET_SUBMIT,D_Tdelay_300ms); + } + else + { + L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_100ms); + } TTSS_Task_step(D_task_READ_OID) L1_Oid_readoid(); @@ -152,6 +167,11 @@ void L3_task_game_handler(S_TASK_GAME *s) L2_task_go_Tdelay(D_task_GAME_SWITCH,D_Tdelay_100ms); } } + else + { + L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_100ms); + } + TTSS_Task_step(D_task_GAME_SWITCH) U8 i = 0; U8 j = 0; @@ -168,18 +188,19 @@ void L3_task_game_handler(S_TASK_GAME *s) s->game_info_index = i; s->eeror_times = 0; s->start_seconds = s_nos_tick.t_1s; + s->timeover_flag = 0; for (j = 0; j < game_supported_oid_max; j++) { s->game_info[s->game_info_index].game_supported_oid[j].handled = 0; } L2_WT2605B_Broadcast(s->game_info[i].game_audio); - L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_100ms); + L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_100ms); return; } } if (s->game_info_index == -1) { - L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_100ms); + L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_100ms); } else { @@ -233,13 +254,12 @@ void L3_task_game_handler(S_TASK_GAME *s) return; } } - L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_100ms); + L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_100ms); return; } } L0_uart0_sendstr("It's not supported oid, please try again."); - L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_100ms); - + L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_100ms); TTSS_Task_step(D_task_GAME_COMPLETED) U8 completed = 1; //假设已完成 U8 i = 0; @@ -268,7 +288,7 @@ void L3_task_game_handler(S_TASK_GAME *s) { L2_WT2605B_Broadcast(s->game_info[s->game_info_index].game_supported_oid[s->game_point_index].point_audio); } - L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_300ms); + L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_300ms); } TTSS_Task_step(D_task_GAME_NET_SUBMIT) U8 seconds = s_nos_tick.t_1s - s->start_seconds; @@ -281,13 +301,14 @@ void L3_task_game_handler(S_TASK_GAME *s) _s_task_w600_para.submittaskpkg.Second[1] = seconds >> 0 & 0xFF; _s_task_w600_para.submittaskpkg.Error_Time[0] = 0; _s_task_w600_para.submittaskpkg.Error_Time[1] = _s_task_game.eeror_times; + _s_task_w600_para.submittaskpkg.TimeOver_Flag = s->timeover_flag; _s_task_w600_para.submittaskpkg.Score[0] = 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_GAME_TIMEOUT,D_Tdelay_300ms); TTSS_Task_end(); diff --git a/source/app/task_game.h b/source/app/task_game.h index 4f98197..c65be0f 100644 --- a/source/app/task_game.h +++ b/source/app/task_game.h @@ -51,6 +51,7 @@ typedef struct _s_task_game S8 game_point_index; //当前正在处理的点 U32 start_seconds; //游戏开始时间 U8 eeror_times; //错误次数 + U8 timeover_flag; //超时标志 0未超时 1超时 }S_TASK_GAME; diff --git a/source/app/task_w600_ptc.c b/source/app/task_w600_ptc.c index 1d9a512..7dd0815 100644 --- a/source/app/task_w600_ptc.c +++ b/source/app/task_w600_ptc.c @@ -39,7 +39,7 @@ U8 constructor_SubmitTaskPkg() { _s_task_w600_para.submittaskpkg.filter[0] = 0xAA; _s_task_w600_para.submittaskpkg.filter[1] = 0xBB; - _s_task_w600_para.submittaskpkg.num = 0x11; + _s_task_w600_para.submittaskpkg.num = 0x12; _s_task_w600_para.submittaskpkg.cmd = 0xA3; _s_task_w600_para.submittaskpkg.did[0] = G.mcu_id[3]; _s_task_w600_para.submittaskpkg.did[1] = G.mcu_id[4]; diff --git a/source/app/task_w600_ptc.h b/source/app/task_w600_ptc.h index f4743e4..bd0c841 100644 --- a/source/app/task_w600_ptc.h +++ b/source/app/task_w600_ptc.h @@ -82,6 +82,8 @@ typedef struct { U8 Second[2]; //错误次数 U8 Error_Time[2]; + //超时标志 0未超时 1超时 + U8 TimeOver_Flag; //得分 U8 Score[2]; //校验