#include "cywee_service.h"
+#define BAT_FILE_COUNT 180
bool batteryservice_get_voltage_by_channel(float *voltage, uint8_t channel);
battery_info_t *get_current_battery_info(void);
void battery_file_check(BATTERY_DATA_T newStruct, const char *filename)
{
FILE *fp;
- BATTERY_DATA_T data[200];
- uint8_t count = 0;
+ uint16_t count = 0;
// uint8_t oldest = 0;
fp = fopen(filename, "r+b");
if(!fp)
+ {
fp = fopen(filename, "wb");
+ }
fseek(fp, 0, SEEK_END);
count = ftell(fp) / sizeof(BATTERY_DATA_T);
fseek(fp, 0, SEEK_SET);
- // PRINT("battery data count %d \n",count);
- if (count >= 180)
+
+ if (count >= BAT_FILE_COUNT)
{
- fread(data, sizeof(BATTERY_DATA_T), count, fp);
+ BATTERY_DATA_T data[BAT_FILE_COUNT] = {0};
- for (int i = 0; i < count - 1; i++)
+ fseek(fp,(count - BAT_FILE_COUNT + 1) * sizeof(BATTERY_DATA_T), SEEK_SET);
+ fread(data, sizeof(BATTERY_DATA_T), BAT_FILE_COUNT - 1, fp);
+ data[BAT_FILE_COUNT - 1] = newStruct;
+
+ if(count > BAT_FILE_COUNT)
{
- // if (data[i].tm < data[oldest].tm)
- // {
- // oldest = i;
- // }
- data[i] = data[i + 1];
+ fp = freopen(filename, "wb", fp);
}
- data[count - 1] = newStruct;
-
fseek(fp, 0, SEEK_SET);
- fwrite(data, sizeof(BATTERY_DATA_T), count, fp);
+ fwrite(data, sizeof(BATTERY_DATA_T), BAT_FILE_COUNT, fp);
}
else
{
fseek(fp, 0, SEEK_END);
fwrite(&newStruct, sizeof(BATTERY_DATA_T), 1, fp);
}
-
fclose(fp);
}
return;
*length = len;
*data = (BATTERY_DATA_T *)malloc(len);
+
+ if(*data == NULL)
+ return;
+
memcpy_s(*data,len,bat_t,len);
free(bat_t);
}
return;
bat_t = (BATTERY_DATA_T *)malloc(len);
+ if(bat_t == NULL)
+ return;
+
FILE *fp;
fp = fopen("/user/userdata/bat_data.bin", "rb");
#define SLEEP_STATUS_LENGTH 50
+#define WEAR_FILE_COUNT 50
+
static gsenson_t gxyz_t;
static uint8_t gsenson_falg=0;
void wear_file_check(SLEEP_STAT_T newStruct, const char *filename)
{
FILE *fp;
- SLEEP_STAT_T data[50];
- uint8_t count = 0;
- // uint8_t oldest = 0;
+ uint16_t count = 0;
fp = fopen(filename, "r+b");
if(!fp)
fp = fopen(filename, "wb");
fseek(fp, 0, SEEK_END);
count = ftell(fp) / sizeof(SLEEP_STAT_T);
fseek(fp, 0, SEEK_SET);
- // PRINT("battery data count %d \n",count);
- if (count >= 50)
+
+ if (count >= WEAR_FILE_COUNT)
{
- fread(data, sizeof(SLEEP_STAT_T), count, fp);
+ SLEEP_STAT_T data[WEAR_FILE_COUNT] = {0};
+
+ fseek(fp,(count - WEAR_FILE_COUNT + 1) * sizeof(SLEEP_STAT_T), SEEK_SET);
+ fread(data, sizeof(SLEEP_STAT_T), WEAR_FILE_COUNT - 1, fp);
- for (int i = 0; i < count - 1; i++)
+ data[WEAR_FILE_COUNT - 1] = newStruct;
+
+ if(count > WEAR_FILE_COUNT)
{
- // if (data[i].tm < data[oldest].tm)
- // {
- // oldest = i;
- // }
- data[i] = data[i + 1];
+ fp = freopen(filename, "wb", fp);
}
- data[count - 1] = newStruct;
-
fseek(fp, 0, SEEK_SET);
- fwrite(data, sizeof(SLEEP_STAT_T), count, fp);
+
+ fwrite(data, sizeof(SLEEP_STAT_T), WEAR_FILE_COUNT, fp);
}
else
{