优化5133底层驱动、协议、以及UI界面,添加产测马达测试 665/2 665/head 666/target/2 667/target/1
authorpenglei <1624952103@qq.com>
Fri, 9 Aug 2024 04:42:13 +0000 (12:42 +0800)
committerpenglei <1624952103@qq.com>
Fri, 9 Aug 2024 04:42:13 +0000 (12:42 +0800)
14 files changed:
code/sdk/application/wearable/fd230app/nativeui/obumessage/include/OBUMessageView.h
code/sdk/application/wearable/fd230app/nativeui/obumessage/src/OBUMessageView.cpp
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
code/sdk/drivers/peripheral/a5133/A5133Config.h
code/sdk/drivers/peripheral/a5133/A5133Main.c
code/sdk/drivers/peripheral/a5133/A5133Uti.c
code/sdk/drivers/peripheral/a5133/A5133main.h
code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp
code/sdk/drivers/peripheral/a5133/service/a5133_service.h
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c
code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp
code/sdk/drivers/peripheral/vibrator/service/vibrator_service.h

index 7677ee4..362de16 100644 (file)
@@ -1,9 +1,9 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-07-27 10:58:43
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-27 12:02:16
- * @FilePath: /xts_origin/FD230/code/sdk/application/wearable/fd230app/nativeui/obumessage/include/OBUMessageView..h
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-08-08 19:16:46
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/obumessage/include/OBUMessageView.h
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
 
@@ -41,7 +41,10 @@ namespace OHOS
         UIViewGroup *group = nullptr;
         UILabel *title = nullptr;
         UILabel *displayTimeLabel = nullptr;
-        UILabel *obuMessageLabel = nullptr;
+        UILabel *obuMessageLabel1 = nullptr;
+        UILabel *obuMessageLabel2 = nullptr;
+        UILabel *MessageNumLabel1 = nullptr;
+        UILabel *MessageNumLabel2 = nullptr;
         bool viewInitStatus{false};
     };
 }
index a9b27d2..c833ad7 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @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"
@@ -55,10 +55,25 @@ namespace OHOS
                         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;
@@ -137,25 +152,87 @@ namespace OHOS
         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;
     }
 
@@ -217,12 +294,13 @@ namespace OHOS
 
     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;
@@ -239,7 +317,19 @@ namespace OHOS
                 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
index ce0f475..77fec17 100755 (executable)
 #include "platform_types.h"
 
 #ifdef SUPPORT_CAT1_SERVICE
+//#include "service/a5133_service.h"
 #include "cat1_ctl.h"
 #endif
 
+#ifdef SUPPORT_A5133_SERVICE
+//#include "service/a5133_service.h"
+#endif
+
 #ifdef ENABLE_CYWEE
 extern void cywee_int_callback(pin_t pin, uintptr_t param);
 #endif
@@ -194,7 +199,11 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L25  //////////// audio pa reset
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L26 心率复位 PPG reset
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L27    LCM reset
+#ifdef SUPPORT_A5133_SERVICE
+    //{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
+#else
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
+#endif
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L29    charge done info 检测是否充满电
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L30   KP_MKIN1 唤醒 CAT1 ,输出
 #ifdef SUPPORT_A5133_SERVICE
@@ -316,6 +325,10 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
     /**cat1 ring input key*/
     // {   S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE,  cat1_ring_isr_callback},
     {   S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE,  cat1_ring_isr_callback},
+
+#endif
+#ifdef SUPPORT_A5133_SERVICE
+    //{   S_AGPIO_L28, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE,  a5133_cko_isr_callback},
 #endif
 };
 /**
index c5e54d2..e1516b4 100644 (file)
@@ -62,7 +62,7 @@ const Uint8 A5133_RFConfigTab_Main[]=
        0xFF, //VCO Modulation delay register,  \r
        0x40, //BATTERY register,        \r
        0xA7, //TXTEST register,\r
-       0x57, //RXDEM1 register,\r
+       0x37, //RXDEM1 register,\r
        0x74, //RXDEM2 register,\r
        0xF3, //CPC1 register,\r
        0x33, //CPC2 register,  \r
@@ -101,7 +101,7 @@ const Uint8  A5133_RFConfigTab_Addr0x20[]=
 \r
 const Uint8  A5133_RFConfigTab_Addr0x21[]=\r
 {\r
-       0x09, //page0, \r
+       0x00, //page0, \r
        0x00, //page1,  \r
        0x00, //Page2,\r
        0x00, //page3,\r
@@ -528,7 +528,7 @@ const Uint8  A5133_RFConfigTab_Main[]=
        0x40, //VCO Modulation delay register,  \r
        0x40, //BATTERY register,        \r
        0xE7, //TXTEST register,\r
-       0x57, //RXDEM1 register,\r
+       0x37, //RXDEM1 register,\r
        0x74, //RXDEM2 register,\r
        0xF3, //CPC1 register,\r
        0x33, //CPC2 register,   \r
@@ -550,7 +550,7 @@ const Uint8  A5133_RFConfigTab_Main[]=
 \r
 const Uint8 A5133_RFConfigTab_Addr0x20[]=\r
 {\r
-       0x0E, //page0,\r
+       0x0C, //page0,\r
        0x00, //page1,  \r
        0x00, //Page2,\r
        0x00, //page3,\r
@@ -567,7 +567,7 @@ const Uint8 A5133_RFConfigTab_Addr0x20[]=
 \r
 const Uint8 A5133_RFConfigTab_Addr0x21[]=\r
 {\r
-       0x09, //page0,\r
+       0x00, //page0,\r
        0x00, //page1,  \r
        0x00, //Page2,\r
        0x00, //page3,\r
index eb988cd..678c872 100644 (file)
@@ -56,12 +56,25 @@ Uint16               RxCnt;
 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
@@ -70,9 +83,10 @@ Uint8       Mem_RL;
 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
@@ -94,46 +108,85 @@ const Uint8  PN9_Tab[]=
 \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(&current_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,&current_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,&current_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,&current_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,&current_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
@@ -141,10 +194,31 @@ errcode_t a5133_set_send_data(uint8_t *senddata,uint8_t datalen)
        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
@@ -152,19 +226,28 @@ void a5133_main(Uint8 Flag_MASTER,uint8_t channel)
                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
@@ -180,9 +263,72 @@ void a5133_main(Uint8 Flag_MASTER,uint8_t channel)
                        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
@@ -216,19 +362,24 @@ void a5133_main(Uint8 Flag_MASTER,uint8_t channel)
                                        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
@@ -240,9 +391,80 @@ void a5133_main(Uint8 Flag_MASTER,uint8_t channel)
                        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
@@ -266,9 +488,10 @@ void a5133_main(Uint8 Flag_MASTER,uint8_t channel)
                                        //sleep\r
                                        LOS_Msleep(10);\r
                                };   \r
-               }\r
-       }\r
-       }\r
+#endif\r
+      }\r
+    }\r
+  }\r
 }\r
 \r
 /************************************************************************\r
@@ -512,30 +735,32 @@ void RF_StrobeCmd(Uint8 cmd)
 }\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
@@ -544,18 +769,48 @@ void a5133_get_rxdata_timestamp(uint32_t *timestamp)
 }\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
@@ -568,37 +823,54 @@ void RxPacket(void)
                // }\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
@@ -928,7 +1200,7 @@ void RF_WOR_En(void)
        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
@@ -1014,11 +1286,11 @@ void main_prog_ACK(Uint8 Flag_MASTER)
                                        // 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
@@ -1062,12 +1334,12 @@ void main_prog_ACK(Uint8 Flag_MASTER)
                                        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
index d52c7a6..a11c871 100644 (file)
@@ -187,12 +187,18 @@ uint8_t a5133_gpio_get_value(pin_t pin)
 #define SCK_OUT        S_MGPIO8  //spi SCK
 #define SDIO_IN_OUT S_MGPIO6  //spi SDIO
 #define GIO1_IN        S_MGPIO7  //GPIO1
+#define CKO_IN         S_AGPIO_L28 
 
 uint8_t a5133_gpio_get_gio1_value(void)
 {
        return a5133_gpio_get_value(GIO1_IN);
 }
 
+uint8_t a5133_gpio_get_cko_value(void)
+{
+       return a5133_gpio_get_value(CKO_IN);
+}
+
 errcode_t a5133_gpio_scs_set_value(uint8_t value)
 {
        if(value)
@@ -246,12 +252,16 @@ errcode_t a5133_gpio_init(void)
         return ERRCODE_FAIL;
     }
 
+       // ret = uapi_pin_set_mode(CKO_IN, HAL_PIO_FUNC_GPIO);
+    // if (ret != ERRCODE_SUCC) {
+    //     return ERRCODE_FAIL;
+    // }
+
        ret = a5133_gpio_set_direction(SCS_OUT,1);
        if (ret != ERRCODE_SUCC) {
         return ERRCODE_FAIL;
     }
 
-
        ret = a5133_gpio_set_direction(SCK_OUT,1);
        if (ret != ERRCODE_SUCC) {
         return ERRCODE_FAIL;
@@ -264,6 +274,11 @@ errcode_t a5133_gpio_init(void)
        if (ret != ERRCODE_SUCC) {
         return ERRCODE_FAIL;
     }
+
+       // ret = a5133_gpio_set_direction(CKO_IN,0);
+       // if (ret != ERRCODE_SUCC) {
+    //     return ERRCODE_FAIL;
+    // }
 #endif
        return ret;
 }
index 1674ee2..4fffdde 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2024-07-20 10:36:21\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-07-27 13:07:06\r
+ * @LastEditTime: 2024-08-08 20:11:46\r
  * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/A5133main.h\r
  * @Description: \r
  * \r
@@ -75,6 +75,7 @@ void RF_TXPower(Uint8 tbf, Uint8 tpa);
 void a5133_main(Uint8 Flag_MASTER,uint8_t channel);\r
 void a5133_get_rxdata(uint8_t *databuf,uint8_t len);\r
 errcode_t a5133_set_send_data(uint8_t *senddata,uint8_t datalen);\r
-bool a5133_get_update_state(void);\r
+Uint8 a5133_get_update_state(void);\r
 void a5133_get_rxdata_timestamp(uint32_t *timestamp);\r
+void a5133_cko_state_update(void);\r
 #endif
\ No newline at end of file
index d0e1162..47d251b 100644 (file)
@@ -189,7 +189,7 @@ errcode_t uapi_a5133_service_init(void)
     app_task_definition_t taskcfg={0};
     taskcfg.create_queue_handle = create_a5133_queue;
     taskcfg.attr.name="a5133_service";
-    taskcfg.attr.priority = osPriorityBelowNormal;
+    taskcfg.attr.priority = osPriorityHigh;
     taskcfg.attr.stack_size = A5133_SERVICE_TASK_SIZE;
     taskcfg.func = a5133_service_check_task;
     taskcfg.use_mem = USE_EXTEND_MEM;
@@ -204,6 +204,15 @@ errcode_t uapi_a5133_service_init(void)
     return ERRCODE_SUCC;
 }
 
+void a5133_cko_isr_callback(pin_t pin, uintptr_t param)
+{
+    // WEARABLE_LOGW(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1_ring_isr_callback %d 0x%X\n",pin,param);
+    uapi_gpio_clear_interrupt(pin);
+    //send_a5133_cmd_msg(A5133_SERVICE_CMD_TYPE_CKO_UPDATE);
+    a5133_cko_state_update();
+    //printf("A5133_SERVICE_CMD_TYPE_CKO_UPDATE \n");
+}
+
 
 #ifdef __cplusplus
 #if __cplusplus
index 9eea443..26854a6 100644 (file)
@@ -1,9 +1,9 @@
 /*
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-27 09:07:00
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-07-20 08:16:02
- * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/service/a5133_service.h
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-08-08 11:25:15
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/service/a5133_service.h
  * @Description: 
  * 
  * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
@@ -34,6 +34,7 @@ typedef uint32_t A5133_CMD_TYPE_T ;
 #define A5133_SERVICE_CMD_TYPE_TIMER_CHECK 0X0B
 errcode_t uapi_a5133_service_init(void);
 void uapi_a5133_service_deinit(void);
+void a5133_cko_isr_callback(pin_t pin, uintptr_t param);
 /**
  * 测试指令 参数cmd 选项: A5133_SERVICE_CMD_START_CHECK,A5133_SERVICE_CMD_STOP_CHECK
 */
index b1247b5..c7564cd 100644 (file)
@@ -306,9 +306,12 @@ bool stop_alipay_ble_service(void)
 }
 
 uint8_t a5133_demo_msg_send[2][64]={
-    "前方路段发生塌方,请紧急制动!",
-    "前方道路拥堵,请减速慢行!"
+    // "前方路段发生塌方,请紧急制动!",
+    // "前方道路拥堵,请减速慢行!"
+    "您已进入北斗收费路段",
+    "您已超速,请减速慢行!"
 };
+
 static uint8_t a5133_demo_msg_send_index=0;
 void a5133_demo_msg_unbind_callback(void)
 {
@@ -2520,7 +2523,7 @@ void uapi_aging_test(uint32_t test_time)
         
         for(cmd = 0; cmd < 6 ; cmd++)
         {
-            // uapi_vibrationModeSet(3);
+            // ui_api_vibrate_once_func(3);
             ui_api_vibrate_once_func();
             LOS_Msleep(1000);
         }
@@ -2572,6 +2575,26 @@ void uapi_aging_test(uint32_t test_time)
     }
 }
 
+void uapi_vibrator_test(uint32_t test_time)
+{
+    uint32_t total_time = test_time;
+    uint32_t enter_time = 0;
+    uint32_t age_time = 0;
+    while(total_time)
+    {
+        uapi_get_timestampe_ss(&enter_time);
+        custom_VibratorFunc_int(4);
+        LOS_Msleep(4000);
+        uapi_get_timestampe_ss(&age_time);
+        total_time -= (age_time - enter_time);
+        PRINT("total_time[%d]\n",total_time);
+        if(total_time <= 0)
+            return;
+    }
+}
+
+
+
 uint8_t uapi_get_cywee_static_state(void)
 {
     return cywee_get_static_state();
@@ -2602,6 +2625,48 @@ uint16_t CRC16_XMODEM(uint8_t *bytes,uint16_t length)
     return crc;
 }
 
+uint16_t CRC16_X25(uint8_t *di, uint32_t len)
+{
+       uint16_t crc_poly = 0x1021;  //X^16+X^12+X^5+1 total 16 effective bits without X^16. Computed total data shall be compensated 16-bit '0' before CRC computing.
+
+       uint32_t clen = len+2;
+       uint8_t cdata[clen] ;
+       for(uint32_t j=0;j<len;j++)
+       {
+               cdata[j] = 0;
+
+               for(uint8_t m=0; m<=7; m++)
+               {
+                       cdata[j] |= ( ( di[j]>>(7-m) ) & 1 ) << m;
+               }
+       }
+       cdata[len]=0; cdata[len+1]=0;
+
+       cdata[0] ^= 0xff; cdata[1] ^= 0xff;
+
+       uint16_t data_t = (((uint16_t)cdata[0]) << 8) + cdata[1]; //CRC register
+
+    for (uint32_t i = 2; i < clen; i++)
+    {
+        for (uint8_t j = 0; j <= 7; j++)
+        {
+            if(data_t&0x8000)
+               data_t = ( (data_t<<1) | ( (cdata[i]>>(7-j))&0x01) ) ^ crc_poly;
+            else
+               data_t = ( (data_t<<1) | ( (cdata[i]>>(7-j))&0x01) ) ;
+        }
+    }
+
+    uint16_t i_data_t = 0;
+
+    for(uint8_t n=0; n<=15; n++)
+    {
+        i_data_t |=  ( ( data_t>>(15-n) ) & 1 ) << n;
+    }
+
+    return i_data_t ^ 0xFFFF;
+}
+
 errcode_t uapi_a5133_set_send_data(uint8_t *senddata,uint8_t datalen)
 {
 #ifdef SUPPORT_A5133_SERVICE
@@ -2611,7 +2676,7 @@ errcode_t uapi_a5133_set_send_data(uint8_t *senddata,uint8_t datalen)
 #endif
 }
 
-bool uapi_get_a5133_update_state(void)
+uint8_t uapi_get_a5133_update_state(void)
 {
 #ifdef SUPPORT_A5133_SERVICE
     return a5133_get_update_state();
index 1cab1bb..31d557a 100644 (file)
@@ -240,10 +240,11 @@ void uapi_save_file_data(char *path,uint8_t *data,uint8_t len);
 uint8_t uapi_get_cywee_static_state(void);
 void uapi_get_a5133_rxdata(uint8_t *databuf,uint8_t len);
 uint16_t CRC16_XMODEM(uint8_t *bytes,uint16_t length);
+uint16_t CRC16_X25(uint8_t *di, uint32_t len);
 errcode_t uapi_a5133_set_send_data(uint8_t *senddata,uint8_t datalen);
 void a5133_demo_msg_change_callback(void);
 void uapi_get_a5133_rxdata_timestamp(uint32_t *timestamp);
-bool uapi_get_a5133_update_state(void);
+uint8_t uapi_get_a5133_update_state(void);
 
 #include "custom_utilscpp.h"
 
index 9753f74..e6baaf9 100644 (file)
@@ -877,6 +877,29 @@ static uint32_t custom_aging_test(uint8_t *para, uint32_t paraLen, char *strComm
     return ERRCODE_SUCC;
 }
 
+static uint32_t custom_vibrator_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    UNUSED(strCommonCmd);
+
+    uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
+    uint32_t argc = 0;
+
+    int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+    if (ret != CUSTOM_UTILS_SUCCESS) {
+        wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+        return ERRCODE_FAIL;
+    }
+
+    if (argc != 1) {
+        wstp_print("CUSTOM_UTILSTEST power_test ATCMD Set Parameter Failed argc %d\r\n");
+        return ERRCODE_FAIL;
+    }
+    uint8_t test_time = atol((char*)argv[0]);
+
+    uapi_vibrator_test(test_time * 60 * 60);
+    return ERRCODE_SUCC;
+}
+
 static uint32_t custom_get_aging_data(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
 {
     UNUSED(strCommonCmd);
@@ -987,6 +1010,7 @@ static const at_cmd_table_t g_custom_utils_cmd[] = {
     {(char *)"AT^GETCYWEEACTIVE", custom_get_cywee_active_state, (char *)" "},
     {(char *)"AT^AGINGTEST", custom_aging_test, (char *)" "},
     {(char *)"AT^GETAGING", custom_get_aging_data, (char *)" "},
+    {(char *)"AT^VIBTEST", custom_vibrator_test, (char *)" "},
 #ifdef SUPPORT_A5133_SERVICE
     {(char *)"AT^A5133SENDDATA", custom_a5133_send_msg, (char *)" "},
     {(char *)"AT^A5133RSSI", custom_a5133_rssi, (char *)" "},
index 8e425ab..d569326 100644 (file)
@@ -1,3 +1,13 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-08-08 16:33:23
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-08-08 16:43:33
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp
+ * @Description: 
+ * 
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
+ */
 /**
  * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
  *
@@ -56,8 +66,15 @@ void custom_VibratorFunc_int(int vibratorType)
     //忽略系统调用参数,只按照configmodel里保存的值来震动
     uint8_t vibmod=uapi_dev_runtime_get_vibmod();
     vibrator_cmd_t mail = {0};
+    if(vibratorType == 4)
+        vibmod = 4;
     switch (vibmod)
     {
+    case 4:
+        mail.cycle_time_ms = 235;
+        mail.duty = 65;
+        mail.duration_time_ms = 2000;
+        break;
     case 3:
         mail.cycle_time_ms = 235;
         mail.duty = 65;
index f23339c..d9612bf 100644 (file)
@@ -33,6 +33,7 @@ extern void do_vibrator_cmd(vibrator_cmd_t cmd);
 
 // UI 界面震动一次接口
 void ui_api_vibrate_once_func(void);
+void custom_VibratorFunc_int(int vibratorType);
 
 #ifdef __cplusplus
 #if __cplusplus