mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 21:48:35 -07:00
Add edge case checks
This commit is contained in:
@@ -164,13 +164,16 @@ static void expansion_control_handler_module_connected(
|
|||||||
static void expansion_control_handler_module_disconnected(
|
static void expansion_control_handler_module_disconnected(
|
||||||
Expansion* instance,
|
Expansion* instance,
|
||||||
const ExpansionMessageData* data) {
|
const ExpansionMessageData* data) {
|
||||||
furi_check(instance->state == ExpansionStateRunning);
|
|
||||||
UNUSED(data);
|
UNUSED(data);
|
||||||
|
// This condition should be always true, but in some rare edge cases
|
||||||
instance->state = ExpansionStateEnabled;
|
// it is possible to change the settings while the module was being
|
||||||
expansion_worker_free(instance->worker);
|
// disconnected, hence the additional check.
|
||||||
furi_hal_serial_control_set_expansion_callback(
|
if(instance->state == ExpansionStateRunning) {
|
||||||
instance->serial_id, expansion_detect_callback, instance);
|
instance->state = ExpansionStateEnabled;
|
||||||
|
expansion_worker_free(instance->worker);
|
||||||
|
furi_hal_serial_control_set_expansion_callback(
|
||||||
|
instance->serial_id, expansion_detect_callback, instance);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef void (*ExpansionControlHandler)(Expansion*, const ExpansionMessageData*);
|
typedef void (*ExpansionControlHandler)(Expansion*, const ExpansionMessageData*);
|
||||||
@@ -220,8 +223,8 @@ void expansion_on_system_start(void* arg) {
|
|||||||
|
|
||||||
Expansion* instance = expansion_alloc();
|
Expansion* instance = expansion_alloc();
|
||||||
furi_record_create(RECORD_EXPANSION, instance);
|
furi_record_create(RECORD_EXPANSION, instance);
|
||||||
|
|
||||||
furi_thread_start(instance->thread);
|
furi_thread_start(instance->thread);
|
||||||
|
|
||||||
expansion_enable(instance);
|
expansion_enable(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user