You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
495 lines
17 KiB
495 lines
17 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file bsp_drv.c
|
|
/// @brief bsp @ driver config
|
|
///-------------------------------------------------------------------------
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20180331
|
|
/// @note cc_AS_stc02
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "../app/task_game.h"
|
|
#include "../bsp/bsp_oid.h"
|
|
#include "../app/app_config.h"
|
|
#include "../bsp/bsp_config.h"
|
|
#include "../msp/uart0.h"
|
|
#include "../msp/uart3.h"
|
|
#include "../bsp/bsp_WT2605B.h"
|
|
#include "../app/task_w600.h"
|
|
|
|
|
|
// 系统不识别的码:无效码 0x3FFF,0x0000
|
|
// 支持码:本游戏支持的
|
|
// 正确码和错误码:单个游戏内的
|
|
|
|
|
|
// 游戏标识码
|
|
// 游戏内容码
|
|
|
|
S_TASK_GAME _s_task_game;
|
|
|
|
// 非点读类游戏
|
|
#define GAME_OID_ZLXS_4 0x2800
|
|
#define GAME_OID_HYJJ_3 0x2900
|
|
#define GAME_OID_HYJJ_4 0x2A00
|
|
#define GAME_OID_HYJJ_5 0x2B00
|
|
#define GAME_OID_CXDD_4 0x2C00
|
|
#define GAME_OID_MCQH_4 0x2D00
|
|
#define GAME_OID_MCQH_5 0x2E00
|
|
#define GAME_OID_JMZX_3 0x2F00
|
|
#define GAME_OID_JMZX_4 0x3000
|
|
#define GAME_OID_JMZX_5 0x3100
|
|
#define GAME_OID_HYZB_1 0x4000
|
|
#define GAME_OID_HYZB_2 0x4100
|
|
#define GAME_OID_SJGH_3 0x4200
|
|
#define GAME_OID_JSSJ_4 0x4300
|
|
#define GAME_OID_JSSJ_5 0x4400
|
|
|
|
// 点读类游戏
|
|
#define GAME_OID_ZBT_1 0xB000
|
|
#define GAME_OID_SHERT_1 0x2200
|
|
#define GAME_OID_ZMG_1 0xC000
|
|
|
|
// 无效码
|
|
#define EEROR_OID 0x3FFF
|
|
// 游戏最大时长
|
|
#define GAME_MAX_SECONDS 600
|
|
|
|
|
|
void L3_task_game_init(void)
|
|
{
|
|
U8 i = 0;
|
|
U8 j = 0;
|
|
L1_task_init(&_s_task_game.task);
|
|
L3_task_s_go(_s_task_game,D_task_init);
|
|
_s_task_game.read_oid = 0;
|
|
_s_task_game.error_oid = EEROR_OID;
|
|
_s_task_game.game_maxseconds = GAME_MAX_SECONDS;
|
|
|
|
for (i = 0; i < game_num_max; i++)
|
|
{
|
|
_s_task_game.game_info[i].game_oid = 0;
|
|
for (j = 0; j < game_supported_oid_max; j++)
|
|
{
|
|
_s_task_game.game_info[i].game_supported_oid[j].oid = 0;
|
|
_s_task_game.game_info[i].game_supported_oid[j].yes_or_no = 1;
|
|
_s_task_game.game_info[i].game_supported_oid[j].point_audio = NULL;
|
|
_s_task_game.game_info[i].game_supported_oid[j].handled = 0;
|
|
}
|
|
}
|
|
// 找不同1星
|
|
_s_task_game.game_info[0].game_oid = GAME_OID_ZBT_1;
|
|
_s_task_game.game_info[0].game_audio = &audio_game_different_1;
|
|
_s_task_game.game_info[0].game_supported_oid[0].oid = 0xB001;
|
|
_s_task_game.game_info[0].game_supported_oid[1].oid = 0xB002;
|
|
_s_task_game.game_info[0].game_supported_oid[2].oid = 0xB003;
|
|
// _s_task_game.game_info[0].game_supported_oid[3].oid = 0xB004;
|
|
_s_task_game.game_info[0].game_supported_oid[3].oid = 0xB0FF; //错误码
|
|
_s_task_game.game_info[0].game_supported_oid[3].yes_or_no = 0;
|
|
_s_task_game.game_info[0].game_order = 0;
|
|
_s_task_game.game_info[0].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[0].game_score = 0;
|
|
|
|
// 走迷宫1星
|
|
_s_task_game.game_info[2].game_oid = GAME_OID_ZMG_1;
|
|
_s_task_game.game_info[2].game_audio = &audio_game_maze_1;
|
|
_s_task_game.game_info[2].game_supported_oid[0].oid = 0xC001;
|
|
_s_task_game.game_info[2].game_supported_oid[1].oid = 0xC002;
|
|
_s_task_game.game_info[2].game_supported_oid[2].oid = 0xC003;
|
|
_s_task_game.game_info[2].game_supported_oid[3].oid = 0xC004;
|
|
_s_task_game.game_info[2].game_supported_oid[4].oid = 0xC005;
|
|
_s_task_game.game_info[2].game_supported_oid[5].oid = 0xC0FF; //错误码
|
|
_s_task_game.game_info[2].game_supported_oid[5].yes_or_no = 0;
|
|
_s_task_game.game_info[2].game_order = 1;
|
|
_s_task_game.game_info[2].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[2].game_score = 0;
|
|
|
|
// 舒尔特方格3星
|
|
_s_task_game.game_info[1].game_oid = GAME_OID_SHERT_1;
|
|
_s_task_game.game_info[1].game_audio = &audio_game_shulte_1;
|
|
_s_task_game.game_info[1].game_supported_oid[0].oid = 0x2201;
|
|
_s_task_game.game_info[1].game_supported_oid[1].oid = 0x2202;
|
|
_s_task_game.game_info[1].game_supported_oid[2].oid = 0x2203;
|
|
_s_task_game.game_info[1].game_supported_oid[3].oid = 0x2204;
|
|
_s_task_game.game_info[1].game_supported_oid[4].oid = 0x2205;
|
|
_s_task_game.game_info[1].game_supported_oid[5].oid = 0x2206;
|
|
_s_task_game.game_info[1].game_supported_oid[6].oid = 0x2207;
|
|
_s_task_game.game_info[1].game_supported_oid[7].oid = 0x2208;
|
|
_s_task_game.game_info[1].game_supported_oid[8].oid = 0x2209;
|
|
_s_task_game.game_info[1].game_supported_oid[9].oid = 0x220A;
|
|
_s_task_game.game_info[1].game_supported_oid[10].oid = 0x220B;
|
|
_s_task_game.game_info[1].game_supported_oid[11].oid = 0x220C;
|
|
_s_task_game.game_info[1].game_supported_oid[12].oid = 0x220D;
|
|
_s_task_game.game_info[1].game_supported_oid[13].oid = 0x220E;
|
|
_s_task_game.game_info[1].game_supported_oid[14].oid = 0x220F;
|
|
_s_task_game.game_info[1].game_supported_oid[15].oid = 0x2210;
|
|
_s_task_game.game_info[1].game_supported_oid[16].oid = 0x2211;
|
|
_s_task_game.game_info[1].game_supported_oid[17].oid = 0x2212;
|
|
_s_task_game.game_info[1].game_supported_oid[18].oid = 0x2213;
|
|
_s_task_game.game_info[1].game_supported_oid[19].oid = 0x2214;
|
|
_s_task_game.game_info[1].game_supported_oid[20].oid = 0x2215;
|
|
_s_task_game.game_info[1].game_supported_oid[21].oid = 0x2216;
|
|
_s_task_game.game_info[1].game_supported_oid[22].oid = 0x2217;
|
|
_s_task_game.game_info[1].game_supported_oid[23].oid = 0x2218;
|
|
_s_task_game.game_info[1].game_supported_oid[24].oid = 0x2219;
|
|
_s_task_game.game_info[1].game_supported_oid[25].oid = 0x22FF; //错误码
|
|
_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 = 120;
|
|
_s_task_game.game_info[1].game_score = 0;
|
|
|
|
// 众里寻三3星
|
|
_s_task_game.game_info[3].game_oid = GAME_OID_ZLXS_4;
|
|
_s_task_game.game_info[3].game_audio = &audio_game_zlxs_4;
|
|
_s_task_game.game_info[3].game_supported_oid[0].oid = 0x28EF;
|
|
_s_task_game.game_info[3].game_order = 0;
|
|
_s_task_game.game_info[3].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[3].game_score = 0;
|
|
// 火眼金晶3星
|
|
_s_task_game.game_info[4].game_oid = GAME_OID_HYJJ_3;
|
|
_s_task_game.game_info[4].game_audio = &audio_game_hyjj_3;
|
|
_s_task_game.game_info[4].game_supported_oid[0].oid = 0x29EF;
|
|
_s_task_game.game_info[4].game_order = 0;
|
|
_s_task_game.game_info[4].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[4].game_score = 0;
|
|
// 火眼金晶4星
|
|
_s_task_game.game_info[5].game_oid = GAME_OID_HYJJ_4;
|
|
_s_task_game.game_info[5].game_audio = &audio_game_hyjj_4;
|
|
_s_task_game.game_info[5].game_supported_oid[0].oid = 0x2AEF;
|
|
_s_task_game.game_info[5].game_order = 0;
|
|
_s_task_game.game_info[5].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[5].game_score = 0;
|
|
// 火眼金晶5星
|
|
_s_task_game.game_info[6].game_oid = GAME_OID_HYJJ_5;
|
|
_s_task_game.game_info[6].game_audio = &audio_game_hyjj_5;
|
|
_s_task_game.game_info[6].game_supported_oid[0].oid = 0x2BEF;
|
|
_s_task_game.game_info[6].game_order = 0;
|
|
_s_task_game.game_info[6].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[6].game_score = 0;
|
|
// 从小到大4星
|
|
_s_task_game.game_info[7].game_oid = GAME_OID_CXDD_4;
|
|
_s_task_game.game_info[7].game_audio = &audio_game_cxdd_4;
|
|
_s_task_game.game_info[7].game_supported_oid[0].oid = 0x2CEF;
|
|
_s_task_game.game_info[7].game_order = 0;
|
|
_s_task_game.game_info[7].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[7].game_score = 0;
|
|
// 明察秋毫4星
|
|
_s_task_game.game_info[8].game_oid = GAME_OID_MCQH_4;
|
|
_s_task_game.game_info[8].game_audio = &audio_game_mcqh_4;
|
|
_s_task_game.game_info[8].game_supported_oid[0].oid = 0x2DEF;
|
|
_s_task_game.game_info[8].game_order = 0;
|
|
_s_task_game.game_info[8].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[8].game_score = 0;
|
|
// 明察秋毫5星
|
|
_s_task_game.game_info[9].game_oid = GAME_OID_MCQH_5;
|
|
_s_task_game.game_info[9].game_audio = &audio_game_mcqh_5;
|
|
_s_task_game.game_info[9].game_supported_oid[0].oid = 0x2EEF;
|
|
_s_task_game.game_info[9].game_order = 0;
|
|
_s_task_game.game_info[9].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[9].game_score = 0;
|
|
// 积木再现3星
|
|
_s_task_game.game_info[10].game_oid = GAME_OID_JMZX_3;
|
|
_s_task_game.game_info[10].game_audio = &audio_game_jmzx_3;
|
|
_s_task_game.game_info[10].game_supported_oid[0].oid = 0x2FEF;
|
|
_s_task_game.game_info[10].game_order = 0;
|
|
_s_task_game.game_info[10].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[10].game_score = 0;
|
|
// 积木再现4星
|
|
_s_task_game.game_info[11].game_oid = GAME_OID_JMZX_4;
|
|
_s_task_game.game_info[11].game_audio = &audio_game_jmzx_4;
|
|
_s_task_game.game_info[11].game_supported_oid[0].oid = 0x30EF;
|
|
_s_task_game.game_info[11].game_order = 0;
|
|
_s_task_game.game_info[11].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[11].game_score = 0;
|
|
// 积木再现5星
|
|
_s_task_game.game_info[12].game_oid = GAME_OID_JMZX_5;
|
|
_s_task_game.game_info[12].game_audio = &audio_game_jmzx_5;
|
|
_s_task_game.game_info[12].game_supported_oid[0].oid = 0x31EF;
|
|
_s_task_game.game_info[12].game_order = 0;
|
|
_s_task_game.game_info[12].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[12].game_score = 0;
|
|
// 还原钟表1星
|
|
_s_task_game.game_info[13].game_oid = GAME_OID_HYZB_1;
|
|
_s_task_game.game_info[13].game_audio = &audio_game_hyzb_1;
|
|
_s_task_game.game_info[13].game_supported_oid[0].oid = 0x40EF;
|
|
_s_task_game.game_info[13].game_order = 0;
|
|
_s_task_game.game_info[13].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[13].game_score = 0;
|
|
// 还原钟表2星
|
|
_s_task_game.game_info[14].game_oid = GAME_OID_HYZB_2;
|
|
_s_task_game.game_info[14].game_audio = &audio_game_hyzb_2;
|
|
_s_task_game.game_info[14].game_supported_oid[0].oid = 0x41EF;
|
|
_s_task_game.game_info[14].game_order = 0;
|
|
_s_task_game.game_info[14].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[14].game_score = 0;
|
|
// 时间规划3星
|
|
_s_task_game.game_info[15].game_oid = GAME_OID_SJGH_3;
|
|
_s_task_game.game_info[15].game_audio = &audio_game_sjgh_3;
|
|
_s_task_game.game_info[15].game_supported_oid[0].oid = 0x42EF;
|
|
_s_task_game.game_info[15].game_order = 0;
|
|
_s_task_game.game_info[15].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[15].game_score = 0;
|
|
// 计算时间4星
|
|
_s_task_game.game_info[16].game_oid = GAME_OID_JSSJ_4;
|
|
_s_task_game.game_info[16].game_audio = &audio_game_jssj_4;
|
|
_s_task_game.game_info[16].game_supported_oid[0].oid = 0x43EF;
|
|
_s_task_game.game_info[16].game_order = 0;
|
|
_s_task_game.game_info[16].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[16].game_score = 0;
|
|
// 计算时间5星
|
|
_s_task_game.game_info[17].game_oid = GAME_OID_JSSJ_5;
|
|
_s_task_game.game_info[17].game_audio = &audio_game_jssj_5;
|
|
_s_task_game.game_info[17].game_supported_oid[0].oid = 0x44EF;
|
|
_s_task_game.game_info[17].game_order = 0;
|
|
_s_task_game.game_info[17].game_timeout_seconds = 60;
|
|
_s_task_game.game_info[17].game_score = 0;
|
|
|
|
|
|
_s_task_game.game_info_index = -1;
|
|
_s_task_game.game_point_index = -1;
|
|
_s_task_game.start_seconds = 0;
|
|
_s_task_game.eeror_times = 0;
|
|
}
|
|
|
|
#define D_task_READ_OID 0x50
|
|
#define D_task_GAME_SWITCH 0x51
|
|
#define D_task_GAME_PLAY 0x52
|
|
#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_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();
|
|
|
|
if (ts_oid.ok == 1)
|
|
{
|
|
ts_oid.ok = 0;
|
|
s->read_oid = ts_oid.rec.d16[3];
|
|
if (s->read_oid != EEROR_OID && s->read_oid != 0x0000)
|
|
{
|
|
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;
|
|
|
|
for (i = 0; i < game_num_max; i++)
|
|
{
|
|
//目前仅支持3个游戏,其余游戏均初始化为0
|
|
if (s->game_info[i].game_oid == 0)
|
|
{
|
|
break;
|
|
}
|
|
if (s->game_info[i].game_oid == s->read_oid)
|
|
{
|
|
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_GAME_TIMEOUT,D_Tdelay_100ms);
|
|
return;
|
|
}
|
|
}
|
|
if (s->game_info_index == -1)
|
|
{
|
|
L2_task_go_Tdelay(D_task_GAME_TIMEOUT,D_Tdelay_100ms);
|
|
}
|
|
else
|
|
{
|
|
L2_task_go_Tdelay(D_task_GAME_PLAY,D_Tdelay_100ms);
|
|
}
|
|
TTSS_Task_step(D_task_GAME_PLAY)
|
|
U8 i = 0,j = 0;
|
|
U8 has_unhandled_point = 0;
|
|
for (i = 0; i < game_supported_oid_max; i++)
|
|
{
|
|
GAME_INF* g = &s->game_info[_s_task_game.game_info_index];
|
|
POINT_INFO* p = &s->game_info[_s_task_game.game_info_index].game_supported_oid[i];
|
|
if (p->oid == 0)
|
|
{
|
|
break;
|
|
}
|
|
if (s->read_oid != p->oid && has_unhandled_point == 0 && g->game_order == 1)
|
|
{
|
|
if (p->yes_or_no == 1 && p->handled == 0)
|
|
{
|
|
has_unhandled_point = 1;
|
|
}
|
|
}
|
|
else if(s->read_oid == p->oid)
|
|
{
|
|
//错误码 或者 是正确码有序,但是存在未处理的点
|
|
if (p->yes_or_no == 0 || (p->yes_or_no == 1 && g->game_order == 1 && has_unhandled_point == 1))
|
|
{
|
|
s->eeror_times++;
|
|
L0_uart0_sendstr("eeror_times = ");
|
|
L0_uart0_uchex(s->eeror_times);
|
|
if (p->point_audio == NULL)
|
|
{
|
|
L2_WT2605B_Broadcast(&audio_game_error);
|
|
}
|
|
else
|
|
{
|
|
L2_WT2605B_Broadcast(p->point_audio);
|
|
}
|
|
}
|
|
//正确码 并且是(无序的 或者 是有序的没有未处理的点)
|
|
else
|
|
{
|
|
//未处理
|
|
if (p->handled == 0)
|
|
{
|
|
p->handled = 1;
|
|
s->game_point_index = i;
|
|
//正确提示声音放在判断是否完成中
|
|
L2_task_go_Tdelay(D_task_GAME_COMPLETED,D_Tdelay_100ms);
|
|
return;
|
|
}
|
|
}
|
|
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_GAME_TIMEOUT,D_Tdelay_100ms);
|
|
TTSS_Task_step(D_task_GAME_COMPLETED)
|
|
U8 completed = 1; //假设已完成
|
|
U8 i = 0;
|
|
for (i = 0; i < game_supported_oid_max; i++)
|
|
{
|
|
POINT_INFO* p = &_s_task_game.game_info[_s_task_game.game_info_index].game_supported_oid[i];
|
|
if (p->oid != 0 && p->yes_or_no == 1 && p->handled == 0)
|
|
{
|
|
completed = 0;
|
|
break;
|
|
}
|
|
}
|
|
if (completed == 1)
|
|
{
|
|
// 游戏完成
|
|
L2_WT2605B_Broadcast(&audio_game_complete);
|
|
L2_task_go_Tdelay(D_task_GAME_NET_SUBMIT,D_Tdelay_300ms);
|
|
}
|
|
else
|
|
{
|
|
if (s->game_info[s->game_info_index].game_supported_oid[s->game_point_index].point_audio == NULL)
|
|
{
|
|
L2_WT2605B_Broadcast(&audio_game_correct);
|
|
}
|
|
else
|
|
{
|
|
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_GAME_TIMEOUT,D_Tdelay_300ms);
|
|
}
|
|
TTSS_Task_step(D_task_GAME_NET_SUBMIT)
|
|
U8 seconds = s_nos_tick.t_1s - s->start_seconds;
|
|
_s_task_w600_para.Send_Submit_Flag = 1;
|
|
_s_task_w600_para.submittaskpkg.Plan_ID[0] = _s_task_w600_para.queryackpkg.Plan_ID[0];
|
|
_s_task_w600_para.submittaskpkg.Plan_ID[1] = _s_task_w600_para.queryackpkg.Plan_ID[1];
|
|
_s_task_w600_para.submittaskpkg.Game_ID[0] = s->game_info[s->game_info_index].game_oid >> 8 & 0xFF;
|
|
_s_task_w600_para.submittaskpkg.Game_ID[1] = s->game_info[s->game_info_index].game_oid >> 0 & 0xFF;
|
|
_s_task_w600_para.submittaskpkg.Second[0] = seconds >> 8 & 0xFF;
|
|
_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_GAME_TIMEOUT,D_Tdelay_300ms);
|
|
|
|
TTSS_Task_end();
|
|
|
|
}
|
|
|
|
#if 0
|
|
//NFC协议:60 20 00 07 10 02 04 00 99 83 33 4E 36
|
|
//起始帧:60
|
|
//设备ID:20
|
|
//数据长度:00 07
|
|
//命令:10
|
|
//数据:02 04 00 99 83 33 4E
|
|
//校验:36 从起始帧到数据字段 [60 20 00 07 10 02 04 00 99 83 33 4E] 的所有字节的依次异或值
|
|
void parse_nfc_pkg()
|
|
{
|
|
TPC_NFC *p = (TPC_NFC *) ts_uart[uNum3].r.buf;
|
|
p->ocr = p->buf[p->num[0] << 8 | p->num[1]];
|
|
if(p->head == 0x60 && 1 /*count_ocr() */)
|
|
{
|
|
U16 num = (U16)p->num[0] << 8 | p->num[1];
|
|
//只读取0x10的协议
|
|
if(p->cmd == 0x10 && num == 0x07){
|
|
//1.判定NFC卡号是否符合规则
|
|
//2.保存NFC卡号到寄存器
|
|
R.nfc.nfc_no[0] = p->buf[num-2];
|
|
R.nfc.nfc_no[1] = p->buf[num-1];
|
|
//3.设定授权标志
|
|
R.auth_flag |= 0x01;
|
|
//4.打印日志
|
|
print_nfc_pkg(p);
|
|
}
|
|
}
|
|
}
|
|
|
|
void print_nfc_pkg(TPC_NFC *p)
|
|
{
|
|
L0_uart0_sendstr("\r\n--------- Recv NFC --------\r\n");
|
|
L0_uart0_sendstr("id : ");
|
|
L0_uart0_uchex(p->slaveId);
|
|
L0_uart0_0d0a();
|
|
L0_uart0_sendstr("num: ");
|
|
L0_uart0_uchex(p->num[0]);
|
|
L0_uart0_uchex(p->num[1]);
|
|
L0_uart0_0d0a();
|
|
L0_uart0_sendstr("cmd: ");
|
|
L0_uart0_uchex(p->cmd);
|
|
L0_uart0_0d0a();
|
|
L0_uart0_sendstr("no : ");
|
|
L0_uart0_sendArrayHex(p->buf, (U16)p->num[0] << 8 | p->num[1]);
|
|
L0_uart0_0d0a();
|
|
L0_uart0_sendstr("ocr: ");
|
|
L0_uart0_uchex(p->buf[(U16)p->num[0] << 8 | p->num[1]]);
|
|
L0_uart0_0d0a();
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
|