#include "asp_task_WC.h" TS_WCapp_ ts_WCapp; #define D_task_WC_send 0x51 #define D_task_WC_rx 0x52 #define D_task_WC_wait 0x53 #define D_task_WC_ack 0x54 #define D_task_WC_listen 0x61 #define D_task_WC_REV 0x62 #define D_task_WC_send_over 0x63 #define D_task_WC_send_next 0x64 #define D_task_WC_REC_ACK 0x65 #define D_task_WC_rev_what 0x72 #define D_task_WC_END 0x74 void L2_task_WC_init(void) { L1_task_init(&ts_WCapp.task); L3_task_s_go(ts_WCapp,D_task_init); } ////对应文字版流程图 #ifdef doc909809 从机流程图: 文本版,将来甚至可以直接生成流程图及代码。20210409 step 1;进入接收模式 step 2 判断: 接收到数据进入解析step 3 未接收到一直等待 step 3:解析 如果是本机需要响应的命令 进入step4 step 4:应答发送 返回主机从机的信息 step 5;显示信息 测试步骤 1,验证流程的逻辑完整性 2,验证流程中每一步骤的时间合理性 3,验证流程中每一步骤的功能分配的合理性 4,验证流程和程序对应的正确性 5,检查handdle调用入口的有效性(是否会被执行,以及分配时间的合理性) 6,检查任务初始化init的调用有效性,确保在handle执行前被调用 7,检查init的打印是否正确 8,分步骤检查,及打印 9,模拟关键 #endif ///L3_task_WC_handle_NOACK(&ts_WCapp); ////目前使用的no ack 标准应用,发送和接收 void L3_task_WC_master_handle(TS_WCapp_ *s) { //---------------------------------------------------------------// TTSS_Task_init(): L0_uart0_sendstr("mC:init\r\n"); L2_SI24R1_init_config(); L2_task_2g4_init(); L2_task_go(D_task_WC_send); TTSS_Task_step(D_task_WC_send): L0_uart0_sendstr("\r\nmC:send "); L3_task_s_go(ts_2g4,D_task_2g4_send); TTSS_overtime_init(s->over,D_Tdelay_5s); L2_task_go(D_task_WC_send_over); TTSS_Task_step(D_task_WC_send_over): if (D_SI24R1_SENDOK == ts_2g4.ok) { L0_uart0_sendstr("mC:ok rec ack\r\n"); ts_2g4.ok = 0; L3_task_s_go(ts_2g4,D_task_2g4_REV_start); TTSS_overtime_init(s->over,D_Tdelay_10s); L2_task_go(D_task_WC_REC_ACK); }else { TTSS_overtime_get(s->over) L0_uart0_uc('v'); L2_task_go(D_task_WC_END); TTSS_overtime_end } TTSS_Task_step(D_task_WC_REC_ACK): if(D_SI24R1_RX_DR == ts_2g4.ok) { ts_2g4.ok = 0; L0_uart0_sendstr("mC:recok \r\n"); L0_uart0_sendArray(ts_2g4.Rbuf,ts_2g4.rx_fifo_num); L2_task_go(D_task_WC_END); }else { TTSS_overtime_get(s->over) ///L0_uart0_uc('r'); L0_uart0_sendstr("\r\nmC:!overtime \r\n"); L2_task_go(D_task_WC_END); L3_task_s_go(ts_2g4,D_task_close); TTSS_overtime_end } TTSS_Task_step(D_task_WC_END): L2_task_go(D_task_WC_send); L1_task_Tdelay(D_Tdelay_2s); TTSS_Task_end(); (*L3_task_2g4_handle)(&ts_2g4); }