优化指南针校准数据保存 322/1 322/head
authorpenglei <1624952103@qq.com>
Wed, 19 Jun 2024 03:44:03 +0000 (11:44 +0800)
committerpenglei <1624952103@qq.com>
Wed, 19 Jun 2024 03:44:03 +0000 (11:44 +0800)
code/sdk/drivers/peripheral/mag/mmc5603/MMC5603.h
code/sdk/drivers/peripheral/mag/mmc5603/mmc5603_main.c
code/sdk/drivers/peripheral/mag/service/mag_service.c
code/sdk/drivers/peripheral/mag/service/mag_service.h
code/sdk/drivers/peripheral/utils/custom_utils.c

index 9a751ac..4ce9511 100644 (file)
@@ -125,5 +125,7 @@ void MMC5603_GetData(float *mag_out);
 \r
 void MMC5603_GETID(unsigned char *id);\r
 \r
+int SavePara_infile(void);\r
+\r
 #endif\r
 \r
index 55846fa..187b615 100644 (file)
@@ -272,25 +272,24 @@ int SavePara(float *p)
 \r
 #define MMC_DATA_PATH "/user/userdata/mmc_para"\r
 \r
-int SavePara_infile(float *p,uint32_t len)\r
+int SavePara_infile(void)\r
 {      \r
-       for(int i = 0; i < len ; i++)\r
-               PRINT("p[%d] : %f \r\n",i,p[i]);\r
        FILE * fp = fopen(MMC_DATA_PATH,"wb");\r
-       int ret = 0;\r
+       size_t ret = 0;\r
     if(fp==NULL)\r
     {\r
         PRINT("open %s failed\n",MMC_DATA_PATH);\r
         return -1;\r
     }\r
 \r
-       ret = fwrite(p,1,len,fp);\r
-       if(ret==0)\r
+       ret = fwrite(g_MagPara,sizeof(float),4,fp);\r
+       if(ret != 4)\r
        {\r
                PRINT("fwrite failed %d\n",ret);\r
                return -1;\r
        }\r
-\r
+       for(int i = 0; i < 4 ; i++)\r
+               PRINT("write p[%d] : %f \r\n",i,g_MagPara[i]);\r
     fclose(fp);\r
        return 1;\r
 }\r
@@ -304,15 +303,18 @@ int ReadPara_infile(float *p,uint32_t len)
 \r
         return -1;\r
     }\r
-    int ret =fread(p,1,len,fp);\r
-    if(ret==0)\r
+    size_t ret =fread(p,sizeof(float),len,fp);\r
+    if(ret != len)\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
     fclose(fp);\r
        return 1;\r
 }\r
+\r
 /* Convert the sensor coordinate to right-front-up coordinate system;\r
  */\r
 void acc_coordinate_raw_to_real(int layout, float *in, float *out)\r
@@ -439,7 +441,6 @@ int mag_service_get_iAccuracy(void)
 \r
 int mmc5603_stop(void)\r
 {\r
-       SavePara_infile(g_MagPara,4);\r
        MMC5603_Disable();\r
        return 0;\r
 }\r
index eb74952..1d3dcf6 100644 (file)
@@ -173,7 +173,12 @@ static void mag_service_check_task(void const *arg)
             LOS_Mdelay(20);
 
             // uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
+        }else if (mail.comm.app == MAG_SERVICE_CMD_SAVE_CHECK){
+            if(SavePara_infile() != 1)
+                PRINT("mag save data failed !!! \r\n");
         }
+
+
     }
 }
 void create_mag_queue(void)
index 62bbe0e..04ccfe3 100644 (file)
@@ -22,6 +22,7 @@ extern "C" {
 
 #define MAG_SERVICE_CMD_START_CHECK 0x12
 #define MAG_SERVICE_CMD_STOP_CHECK 0x13
+#define MAG_SERVICE_CMD_SAVE_CHECK 0x14
 
 errcode_t uapi_mag_service_init(void);
 void uapi_mag_service_deinit(void);
index 81f6dc7..291f3a6 100644 (file)
@@ -48,6 +48,7 @@
 #include "custom_utils.h"
 #include "cywee_service.h"
 #include "microtar.h"
+#include "mag_service.h"
 
 errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg)
 {
@@ -147,6 +148,9 @@ void shutdown_reboot_prejobs_task(void)
     //保存步数
     do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL);
 
+    //保存磁力计数据
+    do_mag_service_check_msg(MAG_SERVICE_CMD_SAVE_CHECK);
+
     addressbookTowrite();
     
     dial_file_save();