#include "app.h" const configa_t configa = { .light1 = 70, .light0 = 5, .time = 3, .uidx = 10, .didx = 12, .ctemp = 50, .weight = 3500, .color1 = {255, 255, 255, 255, 255}, .color0 = {255, 255, 255, 255, 255}, }; const configb_t configb = { .a = 50, .b = 100, }; const configc_t configc = { .a = 30, .b = 720, .c = 24, .d = 0, .e = 1, .f = 100, .g = 0x1D, .h = 10, }; const configd_t configd = { .a = 20000, .b = 3, .c = 16, .d = 8, .e = 10, .f = 25, .g1 = 12, .g2 = 0, }; const confige_t confige = { .a = 200, .b = 100, .c = 3, .d = 1, .e = 60, .f = 60, }; const roles_t init_aa = { ROLE_A, }; const status_t init_bb = { STAT_1, }; param_t param; setting_t settinga = {0}; setting_t settingb = {0}; setting_t settingc = {0}; cfga_t cfga = {0}; cfgb_t cfgb = {0}; cfgc_t cfgc = {0}; uint16_t save_mask = 0; uint16_t save_count = 0; uint16_t wmap_wait = 0; void store_init(void) { api_flash_read(ID_MAP2, (uint8_t *)¶m, sizeof(param)); api_flash_read(ID_MAP3, (uint8_t *)&settinga.list, sizeof(settinga.list)); api_flash_read(ID_MAP4, (uint8_t *)&settingb.list, sizeof(settingb.list)); api_flash_read(ID_MAP5, (uint8_t *)&settingc.list, sizeof(settingc.list)); if(param.aa != LAMPTYPE) { api_flash_erase(ID_MAP2); store_clear_map(ID_MAP3); store_clear_map(ID_MAP4); store_clear_map(ID_MAP5); f_memset((uint8_t *)¶m, 0xFF, sizeof(param)); param.aa = LAMPTYPE; param.bb = init_bb; param.cc = init_aa; param.ca = configa; param.cb = configb; param.cd = configc; param.ce = configd; param.cf = confige; api_flash_write(ID_MAP2, (uint8_t *)¶m, sizeof(param)); } for(uint8_t i = 0; i < NUM_DEVICES; i++) { if(settinga.list[i].aa > 0 && settinga.list[i].aa < param.ce.a) { settinga.number++; } if(settingb.list[i].aa > 0 && settingb.list[i].aa < param.ce.a) { settingb.number++; } if(!f_chrcmp(settingc.list[i].addr, 0xFF, 4) && !f_chrcmp(settingc.list[i].addr, 0x00, 4)) { settingc.number++; } } f_memset((uint8_t *)&cfga.list, 0xFF, sizeof(cfga.list)); f_memset((uint8_t *)&cfgb.list, 0xFF, sizeof(cfgb.list)); f_memset((uint8_t *)&cfgc.list, 0xFF, sizeof(cfgc.list)); } void store_process_100ms(void) { if(save_mask & (1< 0 && --wmap_wait == 0) { api_flash_write(ID_MAP5, (uint8_t *)&settingc.list, sizeof(settingc.list)); } if(++save_count >= 6000) { save_count = 0; if(save_mask & (1<= 8) { f_memset((uint8_t *)¶m.cg, 0xFF, sizeof(param.cg)); save_mask |= (1<> 8; data[10] = cfga.list[data[0]].e & 0xFF; data[11] = cfga.list[data[0]].e >> 8; } break; case ID_MAP7: if(data[0] < NUM_cfgb) { f_memcpy(data+1, (uint8_t *)&cfgb.list[data[0]], 8); } break; case ID_MAP8: if(data[0] < NUM_cfgc) { f_memcpy(data+1, (uint8_t *)&cfgc.list[data[0]], 5); } break; } } void store_setfl(uint8_t number) { store_clear_map(ID_MAP4); param.cb.a = 65535; param.cb.b = 65535; f_memset((uint8_t *)¶m.cg, 0xFF, sizeof(param.cg)); for(uint8_t i = 0; i < number && number <= 8; i++) { f_memcpy(param.cg[i], settinga.list[i].addr, 4); } api_flash_write(ID_MAP2, (uint8_t *)¶m, sizeof(param)); }