void config_init(void) { uint8_t buf[5]; ext_ram_read_data(EXT_RAM_CONFIG + OFFSET_MAGIC, buf, 5); bool force_reset; app_button_is_pushed(3, &force_reset); // force reset if back button is pressed if (force_reset || buf[0] != buf[2] || buf[0] != 0x05 || buf[1] != buf[3] || buf[1] != 0x5E) { // set up clear config buf[0] = 0x05; buf[1] = 0x5E; buf[2] = 0x05; buf[3] = 0x5E; buf[4] = 0x0; ext_ram_write_data(EXT_RAM_CONFIG + OFFSET_MAGIC, buf, 5); ext_ram_fill(EXT_RAM_CONFIG + OFFSET_DEFAULT_WATCH_FACE, 0, 1); for (int i=0; i<CUSTOM_WATCHSET_NUMBER; i++) { ext_ram_fill(EXT_RAM_CONFIG + OFFSET_CUSTOM_WATCHSET+(SPIFFS_OBJ_NAME_LEN*i), 0, 1); } config_reset_global_actions(); config_reset_watchface_actions(); } else { config_load_global_actions(); config_load_watchface_actions(); } }
spiffs_file config_get_default_watch_face_fd(void) { char buf[32]; ext_ram_read_data(EXT_RAM_CONFIG + OFFSET_DEFAULT_WATCH_FACE, (uint8_t*)buf, SPIFFS_OBJ_NAME_LEN); if (buf[0] == 0) { return -1; } return SPIFFS_open(&fs, buf, SPIFFS_RDONLY, 0); }
static uint32_t stopwatch_get_n_lap_start(uint32_t read_lap_no) { if (current_lap_no-read_lap_no >= STOPWATCH_RECALL_SIZE) { return 0; } uint32_t slot_no = (read_lap_no - 2)%STOPWATCH_RECALL_SIZE; uint32_t read_lap_start; ext_ram_read_data(EXT_RAM_DATA_STOPWATCH_RECALL + slot_no * 4, (uint8_t *)&read_lap_start, 4); return read_lap_start; }
static void config_load_watchface_actions(void) { ext_ram_read_data(EXT_RAM_CONFIG + OFFSET_WATCH_FACE_ACTION_HANLDERS, (uint8_t*)default_watchface_actions, sizeof(default_watchface_actions)); }
static void config_load_global_actions(void) { ext_ram_read_data(EXT_RAM_CONFIG + OFFSET_GLOBAL_ACTION_HANLDERS, (uint8_t*)default_global_actions, sizeof(default_global_actions)); }
void config_get_default_watch_face(char* file_name) { ext_ram_read_data(EXT_RAM_CONFIG + OFFSET_DEFAULT_WATCH_FACE, (uint8_t*)file_name, SPIFFS_OBJ_NAME_LEN); }
static uint16_t get_next_short(uint32_t *ptr) { uint8_t data[2]; ext_ram_read_data(*ptr, data, 2); (*ptr)+=2; return data[0] << 8 | data[1]; }
static uint8_t get_next_byte(uint32_t *ptr) { uint8_t data; ext_ram_read_data(*ptr, &data, 1); (*ptr)++; return data; }