\r
Uint8 CmdBuf[25];\r
Uint8 tmpbuf[80];\r
+Uint8 tmpbuf_rx[80];\r
+uint8_t tmpbuf_len=0;\r
Uint16 Err_Loss;\r
Uint16 Err_Frame;\r
Uint32 Err_BitCnt;\r
\r
errcode_t a5133_set_send_data(uint8_t *senddata,uint8_t datalen)\r
{\r
- if ( datalen > 62 || datalen == 0 || senddata == NULL)\r
+ if ( datalen > (64-1-8) || datalen == 0 || senddata == NULL)\r
return ERRCODE_FAIL;\r
\r
if (send_data_index == 0)\r
{\r
- memset(send_data[1],0,64);\r
- memcpy(send_data,senddata,datalen);\r
- uint16_t crc = CRC16_XMODEM(send_data[1],62); \r
- send_data[1][62] = ((uint8_t*)&crc)[0];\r
- send_data[1][63] = ((uint8_t*)&crc)[1];\r
+ uint8_t* p_senddata=send_data[1];\r
+ memset(p_senddata,0,sizeof(send_data[0]));\r
+ p_senddata[0]=datalen;\r
+ memcpy(p_senddata+1,senddata,datalen);\r
+ uint16_t crc = CRC16_XMODEM(p_senddata,datalen); \r
+ p_senddata[datalen+1] = ((uint8_t*)&crc)[0];\r
+ p_senddata[datalen+1+1] = ((uint8_t*)&crc)[1];\r
send_data_index = 1;\r
}else{\r
- memset(send_data[0],0,64);\r
- memcpy(send_data,senddata,datalen);\r
- uint16_t crc = CRC16_XMODEM(send_data[0],62); \r
- send_data[0][62] = ((uint8_t*)&crc)[0];\r
- send_data[0][63] = ((uint8_t*)&crc)[1];\r
+ uint8_t * p_senddata=send_data[0];\r
+ memset(p_senddata,0,sizeof(send_data[0]));\r
+ p_senddata[0]=datalen;\r
+ memcpy(p_senddata+1,senddata,datalen);\r
+ uint16_t crc = CRC16_XMODEM(p_senddata,datalen); \r
+ p_senddata[datalen+1] = ((uint8_t*)&crc)[0];\r
+ p_senddata[datalen+1+1] = ((uint8_t*)&crc)[1];\r
send_data_index = 0;\r
}\r
\r
\r
a5133_power_on();\r
LOS_Msleep(10);\r
- if(RF_Init())/* init RF */\r
+ while(RF_Init())/* init RF */\r
{\r
// Err_State();\r
- PRINT("RF_Init Failed\n");\r
+ PRINT("RF_Init Failed retry!\n");\r
\r
- return;\r
+ LOS_Msleep(1000);\r
} \r
\r
\r
\r
void a5133_get_rxdata(uint8_t *databuf,uint8_t len)\r
{\r
- memcpy_s(databuf,len,tmpbuf,strlen((const char*)tmpbuf));\r
+ memcpy_s(databuf,len,tmpbuf_rx,sizeof(tmpbuf_rx));\r
}\r
\r
/*********************************************************************\r
//crccheck\r
\r
a5133_gpio_scs_set_value(1);\r
- uint16_t crc = CRC16_XMODEM(tmpbuf,62);\r
- uint16_t recv_crc = *(uint16_t*)&tmpbuf[62];\r
- PRINT("crc[%X] , recv_crc %X\n",crc,recv_crc);\r
- if (crc != recv_crc)\r
+ uint8_t datalen = tmpbuf[8];\r
+ if (datalen >0 && datalen <= (64-8-1))\r
{\r
- err = 1;\r
+ uint16_t crc = CRC16_XMODEM(&tmpbuf[1+8],datalen);\r
+ uint16_t recv_crc = *(uint16_t*)&tmpbuf[1+datalen+8];\r
+ PRINT("crc[%X] , recv_crc %X\n",crc,recv_crc);\r
+ if (crc != recv_crc)\r
+ {\r
+ err = 1;\r
+ }else{\r
+ tmpbuf_len = datalen;\r
+ memset(tmpbuf_rx, 0 ,sizeof(tmpbuf_rx));\r
+ memcpy(tmpbuf_rx, &tmpbuf[1+8],datalen);\r
+ }\r
+ printf("=====RxPacket \n");\r
+ \r
+ }else{\r
+ err = 1 ;\r
+ printf("=====RxPacket failed \n");\r
}\r
- printf("=====RxPacket \n");\r
dump_tmpbuf();\r
if (err)//packet error\r
Err_Frame++;\r
}
}
-
static void a5133_service_check_task(void *arg)
{
unused(arg);
int32_t ret;
uint32_t mail;
uint32_t msgsize = (uint32_t)sizeof(A5133_CMD_TYPE_T);
- a5133_service_running_stat = true;
a5133_gpio_init();
PRINT("a5133_service_check_task !\r\n");
if (mail == A5133_SERVICE_CMD_TYPE_RUN_MASTER)
{
- PRINT("A5133_SERVICE_CMD_TYPE_RUN_MASTER \n");
- a5133_service_timer_start_check(50);
- a5133_main(MASTER,80);
+ if (a5133_service_running_stat == false)
+ {
+ a5133_service_running_stat = true;
+ a5133_service_timer_start_check(50);
+ a5133_main(MASTER,80);
+ PRINT("A5133_SERVICE_CMD_TYPE_RUN_MASTER \n");
+ }else{
+ PRINT("A5133_SERVICE_CMD_TYPE_RUN_MASTER already Started \n");
+ }
+
}else if (mail == A5133_SERVICE_CMD_TYPE_RUN_SLAVE)
{
-
- PRINT("A5133_SERVICE_CMD_TYPE_RUN_SLAVE \n");
- a5133_service_timer_start_check(50);
- a5133_main(SLAVE,80);
+ if (a5133_service_running_stat == false)
+ {
+ a5133_service_running_stat = true;
+ a5133_service_timer_start_check(50);
+ a5133_main(SLAVE,80);
+ PRINT("A5133_SERVICE_CMD_TYPE_RUN_SLAVE \n");
+ }else{
+ PRINT("A5133_SERVICE_CMD_TYPE_RUN_SLAVE already Started \n");
+ }
}else if (mail == A5133_SERVICE_CMD_TYPE_TIMER_CHECK)
{
}
}
a5133_server_break_flag = 0;
- a5133_service_running_stat = false;
}
void create_a5133_queue(void)
{