34#ifndef __FLASH_STORAGE_H__
35#define __FLASH_STORAGE_H__
54#define FLASH_SECTOR_SIZE 0x1000
57#define FLASH_MAGIC_CALIBRATION 0x43414C49
60#define FLASH_VERSION_CALIBRATION 0x0001
63#define FLASH_NUM_CHANNELS 3
int flash_storage_init(void)
Initialize flash storage.
Definition flash_storage.c:94
bool flash_storage_is_initialized(void)
Check if flash storage is initialized.
Definition flash_storage.c:114
int flash_save_all_calibration(void)
Save all calibration data to flash.
Definition flash_storage.c:394
int flash_write_calibration(const FLASH_CALIBRATION_DATA *data)
Write calibration data to flash.
Definition flash_storage.c:153
int flash_save_calibration_channel(uint8_t channel)
Save current calibration context to flash for specified channel.
Definition flash_storage.c:349
int flash_erase_calibration(void)
Erase calibration data from flash.
Definition flash_storage.c:224
const char * flash_status_to_string(FLASH_STATUS status)
Get status string for flash status code.
Definition flash_storage.c:474
int flash_storage_remove(void)
De-initialize flash storage.
Definition flash_storage.c:108
FLASH_STATUS
Flash storage status.
Definition flash_storage.h:113
@ FLASH_STATUS_ERASE_FAILED
Definition flash_storage.h:119
@ FLASH_STATUS_INVALID_VERSION
Definition flash_storage.h:117
@ FLASH_STATUS_INIT_FAILED
Definition flash_storage.h:122
@ FLASH_STATUS_INVALID_CRC
Definition flash_storage.h:116
@ FLASH_STATUS_READ_FAILED
Definition flash_storage.h:121
@ FLASH_STATUS_NOT_INITIALIZED
Definition flash_storage.h:123
@ FLASH_STATUS_NO_DATA
Definition flash_storage.h:115
@ FLASH_STATUS_INVALID_MAGIC
Definition flash_storage.h:118
@ FLASH_STATUS_OK
Definition flash_storage.h:114
@ FLASH_STATUS_WRITE_FAILED
Definition flash_storage.h:120
int flash_read_calibration(FLASH_CALIBRATION_DATA *data)
Read calibration data from flash.
Definition flash_storage.c:119
uint32_t flash_calculate_crc32(const void *data, uint32_t len)
Calculate CRC32 for data.
Definition flash_storage.c:79
bool flash_has_valid_calibration(void)
Check if valid calibration data exists in flash.
Definition flash_storage.c:254
#define FLASH_NUM_CHANNELS
Definition flash_storage.h:63
int flash_load_and_apply_calibration(void)
Load calibration from flash and apply to AFE registers.
Definition flash_storage.c:260
Complete calibration data structure.
Definition flash_storage.h:92
float cal_nominal_voltage
Definition flash_storage.h:101
uint32_t crc32
Definition flash_storage.h:107
uint32_t timestamp
Definition flash_storage.h:105
FLASH_CHANNEL_CALIBRATION channel[FLASH_NUM_CHANNELS]
Definition flash_storage.h:98
uint32_t magic
Definition flash_storage.h:94
float cal_nominal_current
Definition flash_storage.h:100
float cal_offset_voltage
Definition flash_storage.h:103
uint16_t reserved_hdr
Definition flash_storage.h:96
uint16_t version
Definition flash_storage.h:95
float cal_offset_current
Definition flash_storage.h:102
Calibration coefficients for a single channel (phase)
Definition flash_storage.h:68
int32_t i_rmsos
Definition flash_storage.h:73
float gain_v_error
Definition flash_storage.h:82
bool gain_calibrated
Definition flash_storage.h:78
uint8_t reserved[16]
Definition flash_storage.h:86
int32_t v_gain
Definition flash_storage.h:71
int32_t v_rmsos
Definition flash_storage.h:74
float gain_i_error
Definition flash_storage.h:81
int32_t if_rmsos
Definition flash_storage.h:75
int32_t i_gain
Definition flash_storage.h:70
float offset_v_error
Definition flash_storage.h:84
int32_t vf_rmsos
Definition flash_storage.h:76
float offset_i_error
Definition flash_storage.h:83
bool offset_calibrated
Definition flash_storage.h:79