修改指南针文件存储,改为消息队列实现。 1178/1
authorpenglei <1624952103@qq.com>
Mon, 14 Oct 2024 03:09:59 +0000 (11:09 +0800)
committerpenglei <1624952103@qq.com>
Mon, 14 Oct 2024 03:09:59 +0000 (11:09 +0800)
code/sdk/drivers/peripheral/mag/mmc5603/mmc5603_hal.h
code/sdk/drivers/peripheral/mag/mmc5603/mmc5603_main.c
code/sdk/drivers/peripheral/mag/service/mag_service.c
code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index 8f769a5..9f72a3e 100644 (file)
@@ -25,6 +25,9 @@ int mmc5603_stop(void);
 int mmc5603_check(void);
 int mmc5603_start(void);
 
+int mmc5603_savePara_infile(void);
+int mmc5603_readPara_infile(void);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 44e3cf1..e1fafe8 100644 (file)
@@ -92,7 +92,9 @@ int mmc5603_start(void)
        //      }\r
        // }    \r
        \r
-       if(ReadPara_infile(saveData,4)==1)\r
+       // if(ReadPara_infile(saveData,4)==1)\r
+\r
+       // if(mmc5603_readPara_infile()==1)\r
        {       \r
                for(i=0;i<4;i++)\r
                {\r
@@ -271,7 +273,7 @@ int SavePara(float *p)
 \r
 #define MMC_DATA_PATH "/user/userdata/mmc_para.bin"\r
 \r
-int SavePara_infile(void)\r
+int mmc5603_savePara_infile(void)\r
 {      \r
        FILE * fp = fopen(MMC_DATA_PATH,"wb");\r
        size_t ret = 0;\r
@@ -293,7 +295,7 @@ int SavePara_infile(void)
        return 1;\r
 }\r
 \r
-int ReadPara_infile(float *p,uint32_t len)\r
+int mmc5603_readPara_infile(void)\r
 {\r
        FILE * fp = fopen(MMC_DATA_PATH,"rb");\r
     if(fp==NULL)\r
@@ -302,14 +304,14 @@ int ReadPara_infile(float *p,uint32_t len)
 \r
         return -1;\r
     }\r
-    size_t ret =fread(p,sizeof(float),len,fp);\r
-    if(ret != len)\r
+    size_t ret =fread(saveData,sizeof(float),4,fp);\r
+    if(ret != 4)\r
     {\r
         PRINT("fread failed %d\n",ret);\r
                return -1;\r
     }\r
-       for(int i = 0; i < len ; i++)\r
-               PRINT("read p[%d] : %f \r\n",i,p[i]);\r
+       for(int i = 0; i < 4 ; i++)\r
+               PRINT("read p[%d] : %f \r\n",i,saveData[i]);\r
     fclose(fp);\r
        return 1;\r
 }\r
index 1730b9a..e542d3b 100644 (file)
@@ -163,6 +163,7 @@ static void mag_service_check_task(void const *arg)
             mmc5603_check();
         }else if (mail.comm.app == MAG_SERVICE_CMD_START_CHECK){
             uapi_dev_runtime_set_mmc_status(1);
+            do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_READ, NULL, 0);
             mmc5603_start();
             LOS_Mdelay(20);
             mag_service_running_stat = true;
@@ -170,7 +171,8 @@ static void mag_service_check_task(void const *arg)
             mag_service_timer_start_check(MAG_CHECK_MS);
         }else if (mail.comm.app == MAG_SERVICE_CMD_STOP_CHECK){
             uapi_dev_runtime_set_mmc_status(0);
-            SavePara_infile();
+            // SavePara_infile();
+            do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_SAVE, NULL, 0);
             mag_service_running_stat = false;
             osTimerStop(g_mag_service_timer);
             mmc5603_stop();
index 6727198..9c81cc6 100644 (file)
@@ -43,6 +43,7 @@
 
 #include "sleep/include/SleepModelC.h"
 
+#include "mmc5603_hal.h"
 typedef struct
 {
     uint8_t cmd;
@@ -129,6 +130,12 @@ static void custom_fileoperate_service_check_task(void const *arg)
         case CUSTOM_FILEOPERATE_MSG_TYPE_NAPDATA_READ:
             custom_read_nap_data();
             break;
+        case CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_SAVE:
+            mmc5603_savePara_infile();
+            break;
+        case CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_READ:
+            mmc5603_readPara_infile();
+            break;
         default:
             PRINT("Unknown CUSTOM_FILE_OPERATE_MSG cmd 0x%02X \r\n", mail.cmd);
             break;
index 99a43ed..67d3e1e 100644 (file)
@@ -243,6 +243,9 @@ errcode_t do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen);
 #define CUSTOM_FILEOPERATE_MSG_TYPE_SLEEPDATA_READ 0x07 //读取睡眠时间
 #define CUSTOM_FILEOPERATE_MSG_TYPE_NAPDATA_READ 0x08  //读取小睡数据
 
+#define CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_SAVE 0x09 //存储指南针数据
+#define CUSTOM_FILEOPERATE_MSG_TYPE_MMCDATA_READ 0x0A  //读取指南针数据
+
 errcode_t uapi_custom_fileoperate_service_init(void);
 errcode_t do_custom_fileoperate_service_check_msg(int cmd, void *params, int paramlen);