diff --git a/lib/pbio/include/pbsys/storage_settings.h b/lib/pbio/include/pbsys/storage_settings.h index 75450559d..47eff958c 100644 --- a/lib/pbio/include/pbsys/storage_settings.h +++ b/lib/pbio/include/pbsys/storage_settings.h @@ -19,15 +19,20 @@ #include /** - * System settings. All data types are little-endian. + * System setting flags */ -typedef struct _pbsys_storage_settings_t { - #if PBSYS_CONFIG_BLUETOOTH_TOGGLE +typedef enum { /** - * User has enabled Bluetooth Low Energy. + * Bluetooth is enabled by the user (defaults to true). */ - bool bluetooth_ble_user_enabled : 1; - #endif // PBSYS_CONFIG_BLUETOOTH_TOGGLE + PBSYS_STORAGE_SETTINGS_FLAGS_BLUETOOTH_ENABLED = (1 << 0), +} pbsys_storage_settings_flags_t; + +/** + * System settings. All data types are little-endian. + */ +typedef struct _pbsys_storage_settings_t { + uint32_t flags; } pbsys_storage_settings_t; #if PBSYS_CONFIG_STORAGE diff --git a/lib/pbio/sys/storage_settings.c b/lib/pbio/sys/storage_settings.c index 551c3dba7..15cc1cfca 100644 --- a/lib/pbio/sys/storage_settings.c +++ b/lib/pbio/sys/storage_settings.c @@ -25,7 +25,7 @@ */ void pbsys_storage_set_default_settings(pbsys_storage_settings_t *settings) { #if PBSYS_CONFIG_BLUETOOTH_TOGGLE - settings->bluetooth_ble_user_enabled = true; + settings->flags |= PBSYS_STORAGE_SETTINGS_FLAGS_BLUETOOTH_ENABLED; #endif } @@ -35,7 +35,7 @@ bool pbsys_storage_settings_bluetooth_enabled(void) { if (!settings) { return true; } - return settings->bluetooth_ble_user_enabled; + return settings->flags & PBSYS_STORAGE_SETTINGS_FLAGS_BLUETOOTH_ENABLED; #else return true; #endif // PBSYS_CONFIG_BLUETOOTH_TOGGLE @@ -55,13 +55,13 @@ void pbsys_storage_settings_bluetooth_enabled_request_toggle(void) { || pbdrv_bluetooth_is_connected(PBDRV_BLUETOOTH_CONNECTION_LE) || pbdrv_bluetooth_is_connected(PBDRV_BLUETOOTH_CONNECTION_PERIPHERAL) // Ignore if last request not yet finished processing. - || settings->bluetooth_ble_user_enabled != pbdrv_bluetooth_is_ready() + || pbsys_storage_settings_bluetooth_enabled() != pbdrv_bluetooth_is_ready() ) { return; } // Toggle the user enabled state and poll process to take action. - settings->bluetooth_ble_user_enabled = !settings->bluetooth_ble_user_enabled; + settings->flags ^= PBSYS_STORAGE_SETTINGS_FLAGS_BLUETOOTH_ENABLED; pbsys_storage_request_write(); pbsys_bluetooth_process_poll(); #endif