@@ -128,7 +128,7 @@ static data_frame_tx_t *cmd_processor_reset_settings(uint16_t cmd, uint16_t stat
128128}
129129
130130static data_frame_tx_t * cmd_processor_get_device_settings (uint16_t cmd , uint16_t status , uint16_t length , uint8_t * data ) {
131- uint8_t settings [7 + BLE_PAIRING_KEY_LEN ] = {};
131+ uint8_t settings [8 + BLE_PAIRING_KEY_LEN ] = {};
132132 settings [0 ] = SETTINGS_CURRENT_VERSION ; // current version
133133 settings [1 ] = settings_get_animation_config (); // animation mode
134134 settings [2 ] = settings_get_button_press_config ('A' ); // short A button press mode
@@ -137,7 +137,8 @@ static data_frame_tx_t *cmd_processor_get_device_settings(uint16_t cmd, uint16_t
137137 settings [5 ] = settings_get_long_button_press_config ('B' ); // long B button press mode
138138 settings [6 ] = settings_get_ble_pairing_enable (); // is device require pairing
139139 memcpy (settings + 7 , settings_get_ble_connect_key (), BLE_PAIRING_KEY_LEN );
140- return data_frame_make (cmd , STATUS_SUCCESS , 7 + BLE_PAIRING_KEY_LEN , settings );
140+ settings [7 + BLE_PAIRING_KEY_LEN ] = settings_get_sleep_timeout () / 1000U ; // wake timeout in seconds
141+ return data_frame_make (cmd , STATUS_SUCCESS , 8 + BLE_PAIRING_KEY_LEN , settings );
141142}
142143
143144static data_frame_tx_t * cmd_processor_set_animation_mode (uint16_t cmd , uint16_t status , uint16_t length , uint8_t * data ) {
@@ -195,6 +196,19 @@ static data_frame_tx_t *cmd_processor_set_long_button_press_config(uint16_t cmd,
195196 return data_frame_make (cmd , STATUS_SUCCESS , 0 , NULL );
196197}
197198
199+ static data_frame_tx_t * cmd_processor_get_sleep_timeout (uint16_t cmd , uint16_t status , uint16_t length , uint8_t * data ) {
200+ uint8_t seconds = settings_get_sleep_timeout () / 1000U ;
201+ return data_frame_make (cmd , STATUS_SUCCESS , 1 , & seconds );
202+ }
203+
204+ static data_frame_tx_t * cmd_processor_set_sleep_timeout (uint16_t cmd , uint16_t status , uint16_t length , uint8_t * data ) {
205+ if (length != 1 || data [0 ] < SETTINGS_SLEEP_TIMEOUT_MIN_S || data [0 ] > SETTINGS_SLEEP_TIMEOUT_MAX_S ) {
206+ return data_frame_make (cmd , STATUS_PAR_ERR , 0 , NULL );
207+ }
208+ settings_set_sleep_timeout (data [0 ]);
209+ return data_frame_make (cmd , STATUS_SUCCESS , 0 , NULL );
210+ }
211+
198212static data_frame_tx_t * cmd_processor_get_ble_pairing_enable (uint16_t cmd , uint16_t status , uint16_t length , uint8_t * data ) {
199213 uint8_t is_enable = settings_get_ble_pairing_enable ();
200214 return data_frame_make (cmd , STATUS_SUCCESS , 1 , & is_enable );
@@ -1767,6 +1781,8 @@ static cmd_data_map_t m_data_cmd_map[] = {
17671781 { DATA_CMD_GET_DEVICE_CAPABILITIES , NULL , cmd_processor_get_device_capabilities , NULL },
17681782 { DATA_CMD_GET_BLE_PAIRING_ENABLE , NULL , cmd_processor_get_ble_pairing_enable , NULL },
17691783 { DATA_CMD_SET_BLE_PAIRING_ENABLE , NULL , cmd_processor_set_ble_pairing_enable , NULL },
1784+ { DATA_CMD_GET_SLEEP_TIMEOUT , NULL , cmd_processor_get_sleep_timeout , NULL },
1785+ { DATA_CMD_SET_SLEEP_TIMEOUT , NULL , cmd_processor_set_sleep_timeout , NULL },
17701786 { DATA_CMD_GET_ALL_SLOT_NICKS , NULL , cmd_processor_get_all_slot_nicks , NULL },
17711787
17721788#if defined(PROJECT_CHAMELEON_ULTRA )
0 commit comments