mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-10 05:59:08 -07:00
Lockscreen: Separate 'Allow RPC While Locked' for USB/BLE (#343)
* Lockscreen: Separate 'Allow RPC While Locked' for USB/Bluetooth (BLE) - #330, split of the `allow_locked_rpc_commands` bool into `allow_locked_rpc_usb` and `allow_locked_rpc_ble` to allow the connections separately. * Shorter wording * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
This commit is contained in:
@@ -33,11 +33,20 @@ static void momentum_app_scene_interface_lockscreen_bad_pins_format_changed(Vari
|
||||
}
|
||||
|
||||
static void
|
||||
momentum_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed(VariableItem* item) {
|
||||
momentum_app_scene_interface_lockscreen_allow_locked_rpc_usb_changed(VariableItem* item) {
|
||||
MomentumApp* app = variable_item_get_context(item);
|
||||
bool value = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
|
||||
momentum_settings.allow_locked_rpc_commands = value;
|
||||
momentum_settings.allow_locked_rpc_usb = value;
|
||||
app->save_settings = true;
|
||||
}
|
||||
|
||||
static void
|
||||
momentum_app_scene_interface_lockscreen_allow_locked_rpc_ble_changed(VariableItem* item) {
|
||||
MomentumApp* app = variable_item_get_context(item);
|
||||
bool value = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
|
||||
momentum_settings.allow_locked_rpc_ble = value;
|
||||
app->save_settings = true;
|
||||
}
|
||||
|
||||
@@ -126,13 +135,23 @@ void momentum_app_scene_interface_lockscreen_on_enter(void* context) {
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list,
|
||||
"Allow RPC While Locked",
|
||||
"Allow USB RPC While Locked",
|
||||
2,
|
||||
momentum_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed,
|
||||
momentum_app_scene_interface_lockscreen_allow_locked_rpc_usb_changed,
|
||||
app);
|
||||
variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_commands);
|
||||
variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_usb);
|
||||
variable_item_set_current_value_text(
|
||||
item, momentum_settings.allow_locked_rpc_commands ? "ON" : "OFF");
|
||||
item, momentum_settings.allow_locked_rpc_usb ? "ON" : "OFF");
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list,
|
||||
"Allow BLE RPC While Locked",
|
||||
2,
|
||||
momentum_app_scene_interface_lockscreen_allow_locked_rpc_ble_changed,
|
||||
app);
|
||||
variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_ble);
|
||||
variable_item_set_current_value_text(
|
||||
item, momentum_settings.allow_locked_rpc_ble ? "ON" : "OFF");
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list,
|
||||
|
||||
@@ -391,13 +391,17 @@ void desktop_lock(Desktop* desktop, bool with_pin) {
|
||||
furi_hal_rtc_set_pin_fails(0);
|
||||
}
|
||||
|
||||
if(with_pin && !momentum_settings.allow_locked_rpc_commands) {
|
||||
Cli* cli = furi_record_open(RECORD_CLI);
|
||||
cli_session_close(cli);
|
||||
furi_record_close(RECORD_CLI);
|
||||
Bt* bt = furi_record_open(RECORD_BT);
|
||||
bt_close_rpc_connection(bt);
|
||||
furi_record_close(RECORD_BT);
|
||||
if(with_pin) {
|
||||
if(!momentum_settings.allow_locked_rpc_usb) {
|
||||
Cli* cli = furi_record_open(RECORD_CLI);
|
||||
cli_session_close(cli);
|
||||
furi_record_close(RECORD_CLI);
|
||||
}
|
||||
if(!momentum_settings.allow_locked_rpc_ble) {
|
||||
Bt* bt = furi_record_open(RECORD_BT);
|
||||
bt_close_rpc_connection(bt);
|
||||
furi_record_close(RECORD_BT);
|
||||
}
|
||||
}
|
||||
|
||||
desktop_auto_lock_inhibit(desktop);
|
||||
@@ -426,12 +430,16 @@ void desktop_unlock(Desktop* desktop) {
|
||||
furi_hal_rtc_set_pin_fails(0);
|
||||
|
||||
if(with_pin) {
|
||||
Cli* cli = furi_record_open(RECORD_CLI);
|
||||
cli_session_open(cli, &cli_vcp);
|
||||
furi_record_close(RECORD_CLI);
|
||||
Bt* bt = furi_record_open(RECORD_BT);
|
||||
bt_open_rpc_connection(bt);
|
||||
furi_record_close(RECORD_BT);
|
||||
if(!momentum_settings.allow_locked_rpc_usb) {
|
||||
Cli* cli = furi_record_open(RECORD_CLI);
|
||||
cli_session_open(cli, &cli_vcp);
|
||||
furi_record_close(RECORD_CLI);
|
||||
}
|
||||
if(!momentum_settings.allow_locked_rpc_ble) {
|
||||
Bt* bt = furi_record_open(RECORD_BT);
|
||||
bt_open_rpc_connection(bt);
|
||||
furi_record_close(RECORD_BT);
|
||||
}
|
||||
}
|
||||
|
||||
DesktopStatus status = {.locked = false};
|
||||
|
||||
@@ -385,9 +385,10 @@ static void
|
||||
}
|
||||
|
||||
RpcSession* rpc_session_open(Rpc* rpc, RpcOwner owner) {
|
||||
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) &&
|
||||
!momentum_settings.allow_locked_rpc_commands)
|
||||
return NULL;
|
||||
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock)) {
|
||||
if(owner == RpcOwnerUsb && !momentum_settings.allow_locked_rpc_usb) return NULL;
|
||||
if(owner == RpcOwnerBle && !momentum_settings.allow_locked_rpc_ble) return NULL;
|
||||
}
|
||||
|
||||
furi_check(rpc);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user