|
@@ -108,6 +108,7 @@ static void nv_save_soc_task(shark_timer_t *timer){
|
|
|
soc_write_backup_index ++;
|
|
soc_write_backup_index ++;
|
|
|
if (soc_write_backup_index == 2){
|
|
if (soc_write_backup_index == 2){
|
|
|
soc_write_pending = 0;
|
|
soc_write_pending = 0;
|
|
|
|
|
+ soc_write_backup_index = 0;
|
|
|
sys_debug("write soc to nv OK\n");
|
|
sys_debug("write soc to nv OK\n");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -130,13 +131,21 @@ static void nv_save_soc_by_backup(int index){
|
|
|
AT24CXX_Write(nv_addr + sizeof(soc_t),(uint8_t *)&crc16, sizeof(crc16));
|
|
AT24CXX_Write(nv_addr + sizeof(soc_t),(uint8_t *)&crc16, sizeof(crc16));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static void stop_writer(void) {
|
|
|
|
|
+ shark_timer_cancel(&_save_backup_timer);
|
|
|
|
|
+ soc_write_index = 0;
|
|
|
|
|
+ soc_write_backup_index = 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void nv_save_all_soc(void){
|
|
void nv_save_all_soc(void){
|
|
|
|
|
+ stop_writer();
|
|
|
nv_save_soc_by_backup(0);
|
|
nv_save_soc_by_backup(0);
|
|
|
nv_save_soc_by_backup(1);
|
|
nv_save_soc_by_backup(1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void nv_erase_soc(int index){
|
|
void nv_erase_soc(int index){
|
|
|
uint8_t data = 0xFF;
|
|
uint8_t data = 0xFF;
|
|
|
|
|
+ stop_writer();
|
|
|
for (int i = 0; i < sizeof(soc_t) + sizeof(uint16_t); i++){
|
|
for (int i = 0; i < sizeof(soc_t) + sizeof(uint16_t); i++){
|
|
|
AT24CXX_Write(SOC_ADDR + SOC_SIZE * index + i, &data, 1);
|
|
AT24CXX_Write(SOC_ADDR + SOC_SIZE * index + i, &data, 1);
|
|
|
}
|
|
}
|