/*
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-05-07 11:25:58
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-27 14:06:08
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-08-09 10:25:01
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/obumessage/src/OBUMessageView.cpp
*/
#include "obumessage/include/OBUMessagePresenter.h"
delete displayTimeLabel;
displayTimeLabel = nullptr;
}
- if (obuMessageLabel != nullptr)
+ if (obuMessageLabel1 != nullptr)
{
- delete obuMessageLabel;
- obuMessageLabel = nullptr;
+ delete obuMessageLabel1;
+ obuMessageLabel1 = nullptr;
+ }
+ if (obuMessageLabel2 != nullptr)
+ {
+ delete obuMessageLabel2;
+ obuMessageLabel2 = nullptr;
+ }
+ if (MessageNumLabel1 != nullptr)
+ {
+ delete MessageNumLabel1;
+ MessageNumLabel1 = nullptr;
+ }
+ if (MessageNumLabel2 != nullptr)
+ {
+ delete MessageNumLabel2;
+ MessageNumLabel2 = nullptr;
}
delete group;
group = nullptr;
displayTimeLabel->SetRollSpeed(70);
displayTimeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
group->Add(displayTimeLabel);
- /* ----------------------------- obuMessageLabel ---------------------------- */
- if (obuMessageLabel == nullptr)
+ /* ----------------------------- obuMessageLabel1 ---------------------------- */
+ if (obuMessageLabel1 == nullptr)
{
- obuMessageLabel = new UILabel();
- if (obuMessageLabel == nullptr)
+ obuMessageLabel1 = new UILabel();
+ if (obuMessageLabel1 == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "obuMessageLabel fail!!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "obuMessageLabel1 fail!!");
return;
}
}
- obuMessageLabel->SetPosition(53, 30, 360, 250);
- obuMessageLabel->SetStyle(STYLE_BORDER_RADIUS, 33);
- obuMessageLabel->SetStyle(STYLE_TEXT_FONT, 40);
- obuMessageLabel->SetStyle(STYLE_LINE_HEIGHT, 45);
- obuMessageLabel->SetText("");
- obuMessageLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
- obuMessageLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- obuMessageLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40);
- group->Add(obuMessageLabel);
+ obuMessageLabel1->SetPosition(68, 10, 360, 250);
+ obuMessageLabel1->SetStyle(STYLE_BORDER_RADIUS, 33);
+ obuMessageLabel1->SetStyle(STYLE_TEXT_FONT, 40);
+ obuMessageLabel1->SetStyle(STYLE_LINE_HEIGHT, 45);
+ obuMessageLabel1->SetText("");
+ obuMessageLabel1->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ obuMessageLabel1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ obuMessageLabel1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ group->Add(obuMessageLabel1);
+
+ /* ----------------------------- obuMessageLabel2 ---------------------------- */
+ if (obuMessageLabel2 == nullptr)
+ {
+ obuMessageLabel2 = new UILabel();
+ if (obuMessageLabel2 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "obuMessageLabel2 fail!!");
+ return;
+ }
+ }
+ obuMessageLabel2->SetPosition(53, 70, 360, 250);
+ obuMessageLabel2->SetStyle(STYLE_BORDER_RADIUS, 33);
+ obuMessageLabel2->SetStyle(STYLE_TEXT_FONT, 40);
+ obuMessageLabel2->SetStyle(STYLE_LINE_HEIGHT, 45);
+ obuMessageLabel2->SetText("");
+ obuMessageLabel2->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ obuMessageLabel2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ obuMessageLabel2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ group->Add(obuMessageLabel2);
+
+ /* ----------------------------- MessageNumLabel1 ---------------------------- */
+ if (MessageNumLabel1 == nullptr)
+ {
+ MessageNumLabel1 = new UILabel();
+ if (MessageNumLabel1 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageNumLabel1 fail!!");
+ return;
+ }
+ }
+ MessageNumLabel1->SetPosition(28, 10, 360, 250);
+ MessageNumLabel1->SetStyle(STYLE_BORDER_RADIUS, 33);
+ MessageNumLabel1->SetStyle(STYLE_TEXT_FONT, 40);
+ MessageNumLabel1->SetStyle(STYLE_LINE_HEIGHT, 45);
+ MessageNumLabel1->SetText("");
+ MessageNumLabel1->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ MessageNumLabel1->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
+ MessageNumLabel1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ group->Add(MessageNumLabel1);
+
+
+ /* ----------------------------- MessageNumLabel2 ---------------------------- */
+ if (MessageNumLabel2 == nullptr)
+ {
+ MessageNumLabel2 = new UILabel();
+ if (MessageNumLabel2 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageNumLabel2 fail!!");
+ return;
+ }
+ }
+ MessageNumLabel2->SetPosition(28, 70, 360, 250);
+ MessageNumLabel2->SetStyle(STYLE_BORDER_RADIUS, 33);
+ MessageNumLabel2->SetStyle(STYLE_TEXT_FONT, 40);
+ MessageNumLabel2->SetStyle(STYLE_LINE_HEIGHT, 45);
+ MessageNumLabel2->SetText("");
+ MessageNumLabel2->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ MessageNumLabel2->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
+ MessageNumLabel2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ group->Add(MessageNumLabel2);
+
viewInitStatus = true;
}
static std::string labelTimeStr;
static std::string rxdataStr;
-
+ static int num1 = 0;
+ static int num2 = 0;
void OBUMessageView::UpdateOBUMessageViewDisplayData(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OBUMessageView::UpdateOBUMessageViewDisplayDate");
-
- if (uapi_get_a5133_update_state())
+ int flag = uapi_get_a5133_update_state();
+ if (flag)
{
uint8_t rxdata[80] = {0};
uint32_t rxdata_timestamp = 0;
labelTimeStr = std::string(labelTime);
}
}
+ if(flag == 1)
+ {
+ num1++;
+ obuMessageLabel1->SetText(rxdataStr.c_str()); /*数据更新*/
+ MessageNumLabel1->SetText(std::to_string(num1).c_str());
+ }
+ else if(flag == 2)
+ {
+ num2++;
+ obuMessageLabel2->SetText(rxdataStr.c_str());
+ MessageNumLabel2->SetText(std::to_string(num2).c_str());
+ }
displayTimeLabel->SetText(labelTimeStr.c_str()); /*时间更新:时:分:秒*/
- obuMessageLabel->SetText(rxdataStr.c_str()); /*数据更新*/
+
}
}
\ No newline at end of file
Uint8 *Uartptr;\r
\r
Uint8 CmdBuf[25];\r
+//#define A5133_FIFO_EXT_MODE\r
+#ifdef A5133_FIFO_EXT_MODE\r
+#define HEXSTR_LEN 600\r
+#define FIFO_LEN 256\r
+Uint8 tmpbuf[256];\r
+Uint8 tmpbuf_rx1[256];\r
+#else\r
+#define HEXSTR_LEN 256\r
+#define FIFO_LEN 64\r
Uint8 tmpbuf[80];\r
-Uint8 tmpbuf_rx[80];\r
+Uint8 tmpbuf_rx1[80];\r
+Uint8 tmpbuf_rx2[80];\r
+#endif\r
+\r
uint8_t tmpbuf_len=0;\r
uint32_t tmpbuf_rx_timestamp = 0;\r
Uint16 Err_Loss;\r
-Uint16 Err_Frame;\r
+Uint16 Err_Frame;\r
+Uint16 SUCC_Frame = 0;\r
Uint32 Err_BitCnt;\r
\r
Uint8 Mem_RH;\r
const Uint8 BitCount_Tab[16] = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4};\r
// const Uint8 code ID_Tab[8]={0xC3,0x3C,0x95,0x6A,0x36,0x75,0xC5,0x2A};//ID code\r
// const Uint8 code ID_Tab[8]={0xAA,0xAA,0xAA,0xAA,0xCC,0xCC,0xAA,0xAA};\r
-const Uint8 ID_Tab[8]={0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55};\r
+ const Uint8 ID_Tab[8]={0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55};\r
+//const Uint8 ID_Tab[8]={0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xAB};\r
//const Uint8 //code ID_Tab[8]={0x34,0x75,0xC5,0x2A,0xC7,0x33,0x45,0xEA};//ID code\r
-//const Uint8 code ID_Tab[8]={0x55,0x55,0x55,0x55,0x34,0x75,0xC5,0x6A}; //ID2 code\r
+//const Uint8 code ID_Tab[8]={0x55,0x55,0x55,0x55,0x34,0x75,0xC5,0x6A}; //ID2 codec\r
//const Uint8 code ID_Tab[8]={0xFF,0xFF,0xFF,0xFF,0x36,0x75,0xC5,0xBA}; //ID2 code\r
//const Uint8 code ID_Tab[8]={0x34,0x75,0xC5,0x2A,0x34,0x75,0xC5,0x2A}; //ID2 code\r
const Uint8 KeyData_Tab[16]={0x00,0x00,0x00,0x00,0x00,0x0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //keyData code\r
\r
static uint8_t send_data[2][64] = {0};\r
static uint8_t send_data_index = 0;\r
-static bool update_flag = false;\r
+static uint8_t update_flag = 0;\r
static uint32_t history_timestamp = 0;\r
+\r
errcode_t a5133_set_send_data(uint8_t *senddata,uint8_t datalen)\r
{ \r
// total(64) , header(4), timestamp(4), len(1), data(n-11) , crc(2)\r
+ // total(64) , header(1), len(2), 目标地址(4), 设备地址(4),MAC 控制域(4), 帧序号(2),data(n) , crc(4)\r
if ( datalen == 0 || senddata == NULL)\r
{\r
PRINT("a5133_set_send_data data error!\n");\r
return ERRCODE_FAIL;\r
}\r
- if (datalen > (64 - 1 - 4 - 4 - 2 ))\r
+ //if (datalen > (64 - 1 - 4 - 4 - 2 ))\r
+ if (datalen > (64-1-2-4-4-4-2-4))\r
{\r
- datalen = 64 - 1- 4-4-2 ;\r
+ //datalen = 64 - 1- 4-4-2 ;\r
+ datalen = 64-1-2-4-4-4-2-4;\r
senddata[datalen -1 ]= 0;\r
PRINT("datalen is too large cut to %d!\n",datalen);\r
}\r
- uint32_t current_time = 0;\r
- uapi_get_timestampe_ss(¤t_time);\r
+ uint8_t frame_header = 0xAB;\r
+ uint16_t frame_len = 4 + 4 + 4 + 2 + 4 + datalen;\r
+ uint32_t frame_target_addr = 0XFFFFFFFF;\r
+ uint32_t frame_device_addr = 0XA1A81E3F;\r
+ uint32_t frame_mac_field = 0X10800200;\r
+ uint16_t frame_number = 0XEFDC;\r
+ uint32_t farme_timestampe = 0;\r
+ uapi_get_timestampe_ss(&farme_timestampe);\r
if (send_data_index == 0)\r
{\r
+ // uint8_t* p_senddata=send_data[1];\r
+ // memset(p_senddata,0,sizeof(send_data[0]));\r
+ // memcpy(p_senddata,¤t_time,sizeof(current_time));\r
+ // p_senddata[4]=datalen;\r
+ // memcpy(p_senddata+1+4,senddata,datalen);\r
+ // uint16_t crc = CRC16_XMODEM(p_senddata+1+4,datalen); \r
+ // p_senddata[datalen+1+4] = ((uint8_t*)&crc)[0];\r
+ // p_senddata[datalen+1+1+4] = ((uint8_t*)&crc)[1];\r
+ // send_data_index = 1;\r
+ // PRINT("send_data_index 1 datalen %d , crc %X\n",datalen,crc);\r
uint8_t* p_senddata=send_data[1];\r
memset(p_senddata,0,sizeof(send_data[0]));\r
- memcpy(p_senddata,¤t_time,sizeof(current_time));\r
- p_senddata[4]=datalen;\r
- memcpy(p_senddata+1+4,senddata,datalen);\r
- uint16_t crc = CRC16_XMODEM(p_senddata+1+4,datalen); \r
- p_senddata[datalen+1+4] = ((uint8_t*)&crc)[0];\r
- p_senddata[datalen+1+1+4] = ((uint8_t*)&crc)[1];\r
+ memcpy(p_senddata,&frame_header,sizeof(frame_header));\r
+ memcpy(p_senddata+1,&frame_len,sizeof(frame_len));\r
+ memcpy(p_senddata+1+2,&frame_target_addr,sizeof(frame_target_addr));\r
+ memcpy(p_senddata+1+2+4,&frame_device_addr,sizeof(frame_device_addr));\r
+ memcpy(p_senddata+1+2+4+4,&frame_mac_field,sizeof(frame_mac_field));\r
+ memcpy(p_senddata+1+2+4+4+4,&frame_number,sizeof(frame_number));\r
+ memcpy(p_senddata+1+2+4+4+4+2,&farme_timestampe,sizeof(farme_timestampe));\r
+ memcpy(p_senddata+1+2+4+4+4+2+4,senddata,datalen);\r
+ uint16_t crc = CRC16_X25(p_senddata+1+2,frame_len); \r
+ p_senddata[frame_len+1+2] = ((uint8_t*)&crc)[0];\r
+ p_senddata[frame_len+1+1+2] = ((uint8_t*)&crc)[1];\r
send_data_index = 1;\r
PRINT("send_data_index 1 datalen %d , crc %X\n",datalen,crc);\r
}else{\r
- uint8_t * p_senddata=send_data[0];\r
+ uint8_t* p_senddata=send_data[0];\r
memset(p_senddata,0,sizeof(send_data[0]));\r
- memcpy(p_senddata,¤t_time,sizeof(current_time));\r
- p_senddata[4]=datalen;\r
- memcpy(p_senddata+1+4,senddata,datalen);\r
- uint16_t crc = CRC16_XMODEM(p_senddata+1+4,datalen); \r
- p_senddata[datalen+1+4] = ((uint8_t*)&crc)[0];\r
- p_senddata[datalen+1+1+4] = ((uint8_t*)&crc)[1];\r
+ memcpy(p_senddata,&frame_header,sizeof(frame_header));\r
+ memcpy(p_senddata+1,&frame_len,sizeof(frame_len));\r
+ memcpy(p_senddata+1+2,&frame_target_addr,sizeof(frame_target_addr));\r
+ memcpy(p_senddata+1+2+4,&frame_device_addr,sizeof(frame_device_addr));\r
+ memcpy(p_senddata+1+2+4+4,&frame_mac_field,sizeof(frame_mac_field));\r
+ memcpy(p_senddata+1+2+4+4+4,&frame_number,sizeof(frame_number));\r
+ memcpy(p_senddata+1+2+4+4+4+2,&farme_timestampe,sizeof(farme_timestampe));\r
+ memcpy(p_senddata+1+2+4+4+4+2+4,senddata,datalen);\r
+ uint16_t crc = CRC16_X25(p_senddata+1+2,frame_len); \r
+ p_senddata[frame_len+1+2] = ((uint8_t*)&crc)[0];\r
+ p_senddata[frame_len+1+1+2] = ((uint8_t*)&crc)[1];\r
send_data_index = 0;\r
+ // uint8_t * p_senddata=send_data[0];\r
+ // memset(p_senddata,0,sizeof(send_data[0]));\r
+ // memcpy(p_senddata,¤t_time,sizeof(current_time));\r
+ // p_senddata[4]=datalen;\r
+ // memcpy(p_senddata+1+4,senddata,datalen);\r
+ // uint16_t crc = CRC16_XMODEM(p_senddata+1+4,datalen); \r
+ // p_senddata[datalen+1+4] = ((uint8_t*)&crc)[0];\r
+ // p_senddata[datalen+1+1+4] = ((uint8_t*)&crc)[1];\r
+ // send_data_index = 0;\r
PRINT("send_data_index 0 datalen %d , crc %X\n",datalen,crc);\r
}\r
\r
return ERRCODE_SUCC;\r
\r
}\r
+\r
+static int cko_flag = 0;\r
+static int cko_irq_count = 0; \r
+void a5133_cko_state_update(void)\r
+{\r
+ cko_flag = 1;\r
+ cko_irq_count++;\r
+}\r
+uint8_t get_cko_flag(void)\r
+{\r
+ uint8_t ret = cko_flag;\r
+ if(cko_flag)\r
+ cko_flag = 0;\r
+ return ret;\r
+}\r
+// F2F6FAFF03070B0F13171B1F23272B2F32363A3E42464A4E52565A5E62666A6E72767A7E82868A8E92969A9EA2A6AAAEB2B6BABEC2C6CACED2D6DADEE2E6EAEE\r
+// F2F6FAFF03070B0F13171B1F23272B2F32363A3E42464A4E52565A5E62666A6E72767A7E82868A8E92969A9EA2A6AAAEB2B6BABEC2C6CACED2D6DADEE2E6EAEE\r
+// F2F6FAFF03070B0F13171B1F23272B2F32363A3E42464A4E52565A5E62666A6E72767A7E82868A8E92969A9EA2A6AAAEB2B6BABEC2C6CACED2D6DADEE2E6EAEE\r
+// F2F6FAFF03070B0F13171B1F23272B2F32363A3E42464A4E52565A5E62666A6E72767A7E82868A8E92969A9EA2A6AAAEB2B6BABEC2C6CACED2D6DADEE2E6EAEE\r
+// Err_Frame:175\r
+// SUCC_Frame:0 \r
void a5133_main(Uint8 Flag_MASTER,uint8_t channel)\r
{\r
-\r
a5133_power_on();\r
+\r
LOS_Msleep(10);\r
while(RF_Init())/* init RF */\r
{\r
PRINT("RF_Init Failed retry!\n");\r
\r
LOS_Msleep(1000);\r
- } \r
-\r
-\r
- if (Flag_MASTER) \r
+ }\r
+#ifdef A5133_FIFO_EXT_MODE\r
+ Uint8 i,j,n,data;\r
+ //RF_WriteReg(DATARATECLOCK, 9);/* 100kbps */\r
+ RF_WriteReg(FIFO2_REG, 0xC0);/* FPM=16/48 Bytes */\r
+ RF_FIFOLength(256-1);/* fifo length 256 bytes */\r
+#endif\r
+\r
+ if (Flag_MASTER) //发送\r
{ \r
PRINT("Flag_MASTER\n");\r
while(1)\r
{\r
RF_WriteReg(GIO1_REG,0x01);/* gio1-wtr */\r
RF_WriteReg(GIO2_REG,0x1D);/* gio2-trxd */\r
+#ifdef A5133_FIFO_EXT_MODE\r
+ RF_WriteReg(CKO_REG,0x16);/* cko-fpf */\r
+#else\r
RF_WriteReg(CKO_REG,0x02);/* cko-dck */\r
-\r
RF_FIFOLength(64-1);/* fifo length 64 bytes */ \r
+#endif\r
+\r
RF_StrobeCmd(CMD_PLL);\r
RF_SetCH(channel);/* ch=80, freq=5805.001MHz */\r
/* To set RF channel */\r
timer=0;\r
// TR0=1; \r
// EA=1; \r
- \r
+ int timeout = 0;\r
while(1)\r
{ \r
+#ifdef A5133_FIFO_EXT_MODE\r
+ printf("111cko_irq_count : %d \n",cko_irq_count);\r
+ RF_StrobeCmd(CMD_TFR);/* TX FIFO address pointer reset */\r
+ \r
+ n=0;\r
+ int cko_flag_tmp = cko_flag;\r
+ a5133_gpio_scs_set_value(0);/* Write 64Bytes data */\r
+ ByteSend(FIFO_REG); \r
+ for(i=0; i<64; i++)\r
+ ByteSend(i++);\r
+ RF_StrobeCmd(CMD_TX);/* entry TX mode */\r
+ //a5133_gpio_scs_set_value(1);\r
+ //LOS_Msleep(1000);\r
+ \r
+ //printf("111a5133_gpio_get_cko_value : %d \n",a5133_gpio_get_cko_value());\r
+ //Delay10us(1);\r
+ //printf("111cko_flag : %d \n",cko_flag);\r
+\r
+ for(j=0; j<4; j++)/* Write 48 Byte x 4 */\r
+ {\r
+ //printf("444a5133_gpio_get_cko_value : %d \n",a5133_gpio_get_cko_value());\r
+ //while(a5133_gpio_get_cko_value() == 0)/* wait FPF go high */\r
+ timeout = 0xFFFFFFFF;\r
+\r
+ // data = RF_ReadReg(FIFO1_REG);\r
+ // printf("FIFO1_REG : 0x%X \n",data);\r
+ // data = RF_ReadReg(FIFO2_REG);\r
+ // printf("FIFO2_REG : 0x%X \n",data);\r
+ while(get_cko_flag()==0)\r
+ {\r
+ //printf("222a5133_gpio_get_cko_value : %d \n",a5133_gpio_get_cko_value());\r
+ //LOS_Msleep(1);\r
+ timeout--;\r
+ if(timeout <= 0)\r
+ {\r
+ printf("timeout !!!!\n");\r
+ break;\r
+ }\r
+ }\r
+ printf("timeout : %d \n",timeout);\r
+ //printf("333a5133_gpio_get_cko_value : %d \n",a5133_gpio_get_cko_value());\r
+\r
+ //a5133_gpio_scs_set_value(0);/* Write 48 Bytes */\r
+ ByteSend(FIFO_REG);\r
+ for(i=0; i<48; i++)\r
+ ByteSend(i++);\r
+ RF_StrobeCmd(CMD_TX);/* entry TX mode */\r
+ //LOS_Msleep(2);\r
+\r
+ \r
+ }\r
+ //printf("cko_flag_tmp 222cko_flag : %d - %d \n",cko_flag_tmp,cko_flag); \r
+ while(a5133_gpio_get_gio1_value())/* wait transmit completed */\r
+ {\r
+ LOS_Msleep(1);\r
+ }\r
+ a5133_gpio_scs_set_value(1);\r
+ printf("222cko_irq_count : %d \n",cko_irq_count);\r
+ //printf("666a5133_gpio_get_cko_value : %d \n",a5133_gpio_get_cko_value());\r
+ // Delay10ms(200);\r
+ // Delay10ms(200);\r
+ LOS_Msleep(4000);\r
+#else\r
RF_FIFOWrite(send_data[send_data_index],64);/* write data to tx fifo */\r
if(RF_LVR_Check())/* check if BOD reset has occurred */\r
break;/* exit loop & re-RF init */\r
RxPacket();\r
Delay10ms(1);\r
}\r
+#endif\r
}\r
- }\r
+ }\r
}\r
- else\r
+ else//接收\r
{ \r
PRINT("Flag_Slave\n");\r
+\r
while(1)\r
{\r
RF_WriteReg(GIO1_REG,0x01);/* gio1-wtr */\r
RF_WriteReg(GIO2_REG,0x1D);/* gio2-trxd */\r
+#ifdef A5133_FIFO_EXT_MODE\r
+ RF_WriteReg(CKO_REG,0x12);/* cko-fpf */\r
+#else\r
RF_WriteReg(CKO_REG,0x02);/* cko-dck */\r
-\r
RF_FIFOLength(64-1);/* write data to tx fifo */ \r
+#endif\r
RF_StrobeCmd(CMD_PLL);\r
RF_SetCH(channel);/* ch=80, freq=5805.001MHz */\r
printf("slave channel %d , freq %d\n",channel,5725+channel);\r
timer=0;\r
// TR0=1;\r
// EA=1;\r
-\r
+ //memset(tmpbuf, 0, 256);/* clear tmpbuf */\r
+ //printf("111cko_irq_count : %d \n",cko_irq_count);\r
while(1)\r
{\r
+#ifdef A5133_FIFO_EXT_MODE\r
+ n=0;\r
+ //cko_flag = 0;\r
+ RF_StrobeCmd(CMD_RX);/* entry RX mode */\r
+ //printf("111a5133_gpio_get_cko_value : %d \n",a5133_gpio_get_cko_value());\r
+ Delay10us(1);\r
+ // while(get_cko_flag() ==0 )/* wait FPF go high */\r
+ // {\r
+ // LOS_Msleep(1);\r
+ // }\r
+\r
+ //int read_timeout = 0xFFFFFFFF;\r
+ while(get_cko_flag() == 0)\r
+ {\r
+ // // read_timeout--;\r
+ // // if(read_timeout <= 0)\r
+ // // break;\r
+ //LOS_Msleep(1);\r
+ }\r
+ for(j=0; j<5; j++)/* Read 48 Byte x 5 */\r
+ { \r
+ \r
+ //while(get_cko_flag() ==0);/* wait FPF go high */\r
+ \r
+ \r
+ \r
+ // printf("888a5133_gpio_get_cko_value \n");\r
+ a5133_gpio_scs_set_value(0);\r
+ ByteSend(FIFO_REG | 0x40);\r
+ for(i=0; i<48; i++)/* Read 48 Bytes */\r
+ tmpbuf[n++]=ByteRead(); \r
+ //RF_StrobeCmd(CMD_RX);\r
+ a5133_gpio_scs_set_value(1);\r
+ \r
+ //read_timeout = 0xFFFFFFFF;\r
+ // while(a5133_gpio_get_cko_value())/* wait receive completed */\r
+ // {\r
+ // //LOS_Msleep(1);\r
+ // }\r
+ //printf("888a5133_gpio_get_cko_value \n");\r
+ // while(get_cko_flag() == 0)\r
+ // {\r
+ // read_timeout--;\r
+ // if(read_timeout <= 0)\r
+ // {\r
+ // printf("read_timeout !!!\n");\r
+ // break;\r
+ // }\r
+ \r
+ // //LOS_Msleep(1);\r
+ // }\r
+ //RF_StrobeCmd(CMD_RX);\r
+ }\r
+ \r
+ while(a5133_gpio_get_gio1_value())/* wait receive completed */\r
+ {\r
+ //LOS_Msleep(1);\r
+ }\r
+ //printf("read_timeout : %d \n",read_timeout);\r
+ //printf("888a5133_gpio_get_cko_value \n");\r
+ a5133_gpio_scs_set_value(0);/* Read 16 Bytes */\r
+ ByteSend(FIFO_REG | 0x40);\r
+ for(i=0; i<16; i++)\r
+ tmpbuf[n++]=ByteRead();\r
+ a5133_gpio_scs_set_value(1);\r
+ RxPacket();/* check data */\r
+ LOS_Msleep(300);\r
+ //Delay10ms(30); \r
+ printf("222cko_irq_count : %d \n",cko_irq_count);\r
+#else\r
if(RF_LVR_Check())/* check if BOD reset has occurred */\r
break;/* exit loop & re-RF init */\r
else\r
//sleep\r
LOS_Msleep(10);\r
}; \r
- }\r
- }\r
- }\r
+#endif\r
+ }\r
+ }\r
+ }\r
}\r
\r
/************************************************************************\r
}\r
\r
#include "wearable_log.h"\r
+static uint8_t hexstr[HEXSTR_LEN]={0};\r
static void dump_tmpbuf(void)\r
{\r
- uint8_t hexstr[256]={0};\r
- for (int i=0 ;i < 64;i++)\r
+\r
+ \r
+ for (int i=0 ;i < FIFO_LEN;i++)\r
{\r
sprintf( (char*)&hexstr[i*2],"%02X",tmpbuf[i]);\r
}\r
// printf((char*)&hexstr[0]);\r
// printf("\n");\r
- printf("rx %s\n",(char*)&hexstr[0]);\r
+ printf("rx %s\n Err_Frame:%d\n SUCC_Frame:%d \n",(char*)&hexstr[0],Err_Frame,SUCC_Frame);\r
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rx %s\n",hexstr);\r
\r
\r
}\r
\r
-bool a5133_get_update_state(void)\r
+Uint8 a5133_get_update_state(void)\r
{\r
return update_flag;\r
}\r
\r
void a5133_get_rxdata(uint8_t *databuf,uint8_t len)\r
{\r
- memcpy_s(databuf,len,tmpbuf_rx,sizeof(tmpbuf_rx));\r
- update_flag = false;\r
+ memcpy_s(databuf,len,tmpbuf_rx1,sizeof(tmpbuf_rx1));\r
+ update_flag = 0;\r
}\r
\r
void a5133_get_rxdata_timestamp(uint32_t *timestamp)\r
}\r
\r
/*********************************************************************\r
-** RxPacket\r
+** RxPacket(控制帧示例)\r
*********************************************************************/\r
+Uint8 tmp_data[64]={\r
+ 0xab,0x00,0x24,0xff,0xff,0xff,0xff,0xa1,\r
+ 0xa8,0x1f,0x3f,0x10,0x80,0x02,0x00,0x4a,\r
+ 0x8f,0x64,0xe0,0x6b,0xfa,0x01,0x12,0xff,\r
+ 0xff,0xff,0xff,0x03,0xf2,0x04,0x00,0xff,\r
+ 0xff,0xff,0xff,0x70,0xf6,0x1d,0x0a,0x8b,\r
+ 0x9e\r
+ //0x0a,0x00,0x24,0xff,0xff,0xff\r
+};\r
+\r
void RxPacket(void)\r
{\r
- Uint8 i,recv,tmp,err;\r
-\r
- RxCnt++;\r
+ Uint16 i;\r
+ Uint8 recv,tmp,err;\r
err=0;\r
+ RxCnt++;\r
+\r
+#ifdef A5133_FIFO_EXT_MODE\r
\r
+ for(i=0; i < 256; i++)\r
+ {\r
+ if(tmpbuf[i] != i)\r
+ {\r
+ err=1;\r
+ tmp = tmpbuf[i] ^ i;\r
+ Err_BitCnt += (BitCount_Tab[tmp>>4] + BitCount_Tab[tmp & 0x0F]);\r
+ }\r
+ }\r
+ \r
+ if(err)\r
+ Err_Frame++;\r
+#else\r
RF_StrobeCmd(CMD_RFR);//RX fifo pointer reset\r
a5133_gpio_scs_set_value(0);\r
ByteSend(FIFO_REG | 0x40);//address 0x05, bit7 cmd=0, bit6 r/w=1\r
+ // tmpbuf[0] = 0x55;\r
+ // tmpbuf[1] = 0x55;\r
+ // tmpbuf[2] = 0x55;\r
+ // tmpbuf[3] = 0x55;\r
+ // tmpbuf[4] = 0xAB;\r
for(i=0; i <64; i++)\r
{\r
recv = ByteRead();\r
// }\r
}\r
//crccheck\r
-\r
+ //memcpy(tmpbuf,&tmp_data[1],63);\r
a5133_gpio_scs_set_value(1);\r
- uint32_t msg_timestamp = *(uint32_t*)&tmpbuf[4];\r
- uint8_t datalen = tmpbuf[4+4];\r
- // total(64) , header(4), timestamp(4), len(1), data(n-11) , crc(2)\r
- if (datalen >0 && datalen <= (64-4 -4 -1 -2 ))\r
+\r
+#endif\r
+ if(tmpbuf[0] == 0XAB)\r
{\r
- uint16_t crc = CRC16_XMODEM(&tmpbuf[1+4+4],datalen);\r
- uint16_t recv_crc = *(uint16_t*)&tmpbuf[1+4+datalen+4];\r
- PRINT("crc[%X] , recv_crc %X\n",crc,recv_crc);\r
- if (crc != recv_crc)\r
- {\r
- err = 1;\r
- }\r
- else\r
+ uint8_t msg_type = *(uint8_t*)&tmpbuf[1+2+4+4+2];\r
+ //1 控制帧,2 数据帧\r
+ // if(msg_type != 2)\r
+ // {\r
+ // return;\r
+ // }\r
+ uint32_t msg_timestamp = *(uint32_t*)&tmpbuf[1+2+4+4+4+2];\r
+ uint16_t datalen = *(uint16_t*)&tmpbuf[1];\r
+ // total(64) , header(4), timestamp(4), len(1), data(n-11) , crc(2)\r
+ // frame_start_flag(1),len(2)\r
+ if (datalen >0 && datalen <= (FIFO_LEN-1-2))\r
{\r
- tmpbuf_len = datalen;\r
- tmpbuf_rx_timestamp = msg_timestamp;\r
- if(history_timestamp != tmpbuf_rx_timestamp)\r
+ uint16_t crc = CRC16_X25(&tmpbuf[3],datalen);\r
+ uint16_t recv_crc = *(uint16_t*)&tmpbuf[datalen+2+1];\r
+ PRINT("datalen:%d crc[%X] , recv_crc %X\n",datalen,crc,recv_crc);\r
+ SUCC_Frame++;\r
+ if (crc != recv_crc)\r
+ {\r
+ err = 1;\r
+ }\r
+ else\r
{\r
- history_timestamp = tmpbuf_rx_timestamp;\r
- update_flag = true;\r
+ tmpbuf_len = datalen-4-4-4-2-4;\r
+ tmpbuf_rx_timestamp = msg_timestamp;\r
+ if(history_timestamp != tmpbuf_rx_timestamp)\r
+ {\r
+ history_timestamp = tmpbuf_rx_timestamp;\r
+ if(datalen == 0X33)\r
+ update_flag = 1;\r
+ else\r
+ update_flag = 2;\r
+ }\r
+ memset(tmpbuf_rx1, 0 ,sizeof(tmpbuf_rx1));\r
+ //帧起始(1)、帧长度(2)、目标地址(4)、设备地址(4)、MAC控制域(4)、帧序号、(2)\r
+ memcpy(tmpbuf_rx1, &tmpbuf[1+2+4+4+4+2+4],tmpbuf_len);\r
}\r
- memset(tmpbuf_rx, 0 ,sizeof(tmpbuf_rx));\r
- memcpy(tmpbuf_rx, &tmpbuf[1+4+4],datalen);\r
+ printf("=====RxPacket timestamp %d ,tmpbuf_rx1:%s\n",tmpbuf_rx_timestamp,tmpbuf_rx1);\r
+ \r
+ }else{\r
+ err = 1 ;\r
+ printf("=====RxPacket failed datalen[%d]\n",datalen);\r
}\r
- printf("=====RxPacket timestamp %d , %s\n",tmpbuf_rx_timestamp,tmpbuf_rx);\r
- \r
- }else{\r
- err = 1 ;\r
- printf("=====RxPacket failed datalen[%d]\n",datalen);\r
}\r
dump_tmpbuf();\r
if (err)//packet error\r
while(1)\r
{ \r
RF_WriteReg(MODECTRL_REG, A5133_RFConfigTab_Main[1] | (1<<3)); //WOR enable\r
- // while(~GIO2);//waitting to wakeup until packet is received \r
+ while(~a5133_gpio_get_gio2_value());//waitting to wakeup until packet is received \r
\r
RF_StrobeCmd(CMD_PLL);\r
//Wakeup process...\r
// P3 = P3 ^ 0x04;/* transmit completed, toggle I/O */\r
PRINT("transmit complete!\n");\r
else\r
- nop();/* resend fail */\r
+ _nop_();/* resend fail */\r
\r
Delay10ms(5);\r
}\r
- }\r
+ }\r
}\r
else\r
{ \r
RxPacket();\r
}\r
else\r
- nop();/* invalid packet */\r
+ _nop_();/* invalid packet */\r
\r
Delay10ms(4);\r
- }\r
- }\r
- }\r
+ }\r
+ }\r
+ } \r
}\r
\r
/*********************************************************************\r