FindMy: Fix battery level edge cases (eg. at boot) and cleanup

- Generate config struct only when necessary
- Centralize last few things to use state values
- Uniform state apply and save process
- Simplify battery level handling
This commit is contained in:
Willy-JL
2024-05-02 06:46:06 +01:00
parent f3c1c09e39
commit ff2bb16492
9 changed files with 61 additions and 118 deletions

View File

@@ -26,21 +26,12 @@ typedef struct {
uint8_t mac[EXTRA_BEACON_MAC_ADDR_SIZE];
uint8_t data[EXTRA_BEACON_MAX_DATA_SIZE];
FindMyType tag_type;
// Generated from the other state values
GapExtraBeaconConfig config;
uint8_t battery_level;
} FindMyState;
bool findmy_state_load(FindMyState* out_state);
void findmy_state_apply(FindMyState* state);
void findmy_state_sync_config(FindMyState* state);
void findmy_state_save(FindMyState* state);
void findmy_update_payload_battery(uint8_t* data, uint8_t battery_level, FindMyType type);
void findmy_state_save_and_apply(FindMyState* state);
uint8_t findmy_state_data_size(FindMyType type);