* If there is no parameter saved, ReadPara() should return -1, else return 1;\r
* If there is no para saved, pass the default value to the algorithm library\r
*/\r
- if(ReadPara(saveData)==1){ \r
- for(i=0;i<4;i++){\r
+ // if(ReadPara(saveData)==1){ \r
+ // for(i=0;i<4;i++){\r
+ // mag_hmm[i] = saveData[i]; \r
+ // }\r
+ // } \r
+ \r
+ if(ReadPara_infile(saveData,4)==1)\r
+ { \r
+ for(i=0;i<4;i++)\r
+ {\r
mag_hmm[i] = saveData[i]; \r
}\r
- } \r
- \r
+ }\r
/* Initial the acc, mag, and calibrated parameters \r
* if already saved the calibrated offset and radius last time, read it out and init the magOffset and magRadius\r
*/\r
return 1;\r
}\r
\r
+#define MMC_DATA_PATH "/user/userdata/mmc_para"\r
+\r
+int SavePara_infile(float *p,uint32_t len)\r
+{ \r
+ FILE * fp = fopen(MMC_DATA_PATH,"wb");\r
+ int 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
+ {\r
+ PRINT("fwrite failed %d\n",ret);\r
+ return -1;\r
+ }\r
+\r
+ fclose(fp);\r
+ return 1;\r
+}\r
+\r
+int ReadPara_infile(float *p,uint32_t len)\r
+{\r
+ FILE * fp = fopen(MMC_DATA_PATH,"rb");\r
+ if(fp==NULL)\r
+ {\r
+ PRINT("open %s failed\n",MMC_DATA_PATH);\r
+\r
+ return -1;\r
+ }\r
+ int ret =fread(p,1,len,fp);\r
+ if(ret==0)\r
+ {\r
+ PRINT("fread failed %d\n",ret);\r
+ return -1;\r
+ }\r
+ fclose(fp);\r
+ return 1;\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
\r
int mmc5603_stop(void)\r
{\r
+ SavePara_infile(saveData,4);\r
MMC5603_Disable();\r
return 0;\r
}\r