diff --git a/source/Core/BSP/Pinecilv2/ble_characteristics.h b/source/Core/BSP/Pinecilv2/ble_characteristics.h index a782e6c8..abba04c0 100644 --- a/source/Core/BSP/Pinecilv2/ble_characteristics.h +++ b/source/Core/BSP/Pinecilv2/ble_characteristics.h @@ -88,6 +88,6 @@ #define BT_UUID_CHAR_BLE_SETTINGS_VALUE_35 BT_UUID_DECLARE_16(35) #define BT_UUID_CHAR_BLE_SETTINGS_VALUE_36 BT_UUID_DECLARE_16(36) #define BT_UUID_CHAR_BLE_SETTINGS_VALUE_37 BT_UUID_DECLARE_16(37) -#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_38 BT_UUID_DECLARE_16(37) +#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_38 BT_UUID_DECLARE_16(38) #endif diff --git a/source/Core/BSP/Pinecilv2/ble_handlers.cpp b/source/Core/BSP/Pinecilv2/ble_handlers.cpp index bc89da98..ad2c3fe8 100644 --- a/source/Core/BSP/Pinecilv2/ble_handlers.cpp +++ b/source/Core/BSP/Pinecilv2/ble_handlers.cpp @@ -21,6 +21,7 @@ #include "uuid.h" #include "OperatingModes.h" +#include "OLED.hpp" #include "USBPD.h" #include "ble_characteristics.h" #include "ble_handlers.h" @@ -242,6 +243,16 @@ int ble_char_write_setting_value_callback(struct bt_conn *conn, const struct bt_ } } else if (uuid_value < SettingsOptions::SettingsOptionsLength) { setSettingValue((SettingsOptions)(uuid_value), new_value); + // @TODO refactor to make this more usable + if (uuid_value == SettingsOptions::OLEDInversion) { + OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion)); + } + if (uuid_value == SettingsOptions::OLEDBrightness){ + OLED::setBrightness(getSettingValue(SettingsOptions::OLEDBrightness)); + } + if (uuid_value == SettingsOptions::OrientationMode){ + OLED::setRotation(getSettingValue(SettingsOptions::OrientationMode) & 1); + } return len; } } diff --git a/source/Core/Src/Settings.cpp b/source/Core/Src/Settings.cpp index 9d393d23..542a60fb 100644 --- a/source/Core/Src/Settings.cpp +++ b/source/Core/Src/Settings.cpp @@ -140,15 +140,16 @@ void resetSettings() { void setSettingValue(const enum SettingsOptions option, const uint16_t newValue) { const auto constants = settingsConstants[(int)option]; - systemSettings.settingsValues[(int)option] = newValue; - // If less than min, constrain - if (systemSettings.settingsValues[(int)option] < constants.min) { - systemSettings.settingsValues[(int)option] = constants.min; + uint16_t constrainedValue = newValue; + if (constrainedValue < constants.min) { + // If less than min, constrain + constrainedValue = constants.min; } - // If hit max, constrain - if (systemSettings.settingsValues[(int)option] > constants.max) { - systemSettings.settingsValues[(int)option] = constants.max; + else if (constrainedValue > constants.max) { + // If hit max, constrain + constrainedValue = constants.max; } + systemSettings.settingsValues[(int)option] = constrainedValue; } // Lookup wrapper for ease of use (with typing) uint16_t getSettingValue(const enum SettingsOptions option) { return systemSettings.settingsValues[(int)option]; }