diff --git a/applications/services/bt/bt_service/bt.c b/applications/services/bt/bt_service/bt.c index d04490502..d2e5ce2a0 100644 --- a/applications/services/bt/bt_service/bt.c +++ b/applications/services/bt/bt_service/bt.c @@ -527,19 +527,6 @@ static void bt_init_keys_settings(Bt* bt) { bt_handle_reload_keys_settings(bt); } -bool bt_remote_rssi(Bt* bt, uint8_t* rssi) { - furi_assert(bt); - - uint8_t rssi_val; - uint32_t since = furi_hal_bt_get_conn_rssi(&rssi_val); - - if(since == 0) return false; - - *rssi = rssi_val; - - return true; -} - int32_t bt_srv(void* p) { UNUSED(p); Bt* bt = bt_alloc(); diff --git a/applications/services/bt/bt_service/bt.h b/applications/services/bt/bt_service/bt.h index d49b0b3ba..403f4eb88 100644 --- a/applications/services/bt/bt_service/bt.h +++ b/applications/services/bt/bt_service/bt.h @@ -84,21 +84,6 @@ void bt_keys_storage_set_storage_path(Bt* bt, const char* keys_storage_path); */ void bt_keys_storage_set_default_path(Bt* bt); -bool bt_remote_rssi(Bt* bt, uint8_t* rssi); - -/** - * - * (Probably bad) way of opening the RPC connection, everywhereTM -*/ - -void bt_open_rpc_connection(Bt* bt); - -/** - * - * Closing the RPC connection, everywhereTM -*/ -void bt_close_rpc_connection(Bt* bt); - #ifdef __cplusplus } #endif diff --git a/applications/services/bt/bt_service/bt_i.h b/applications/services/bt/bt_service/bt_i.h index 58a60e275..fa2a0740d 100644 --- a/applications/services/bt/bt_service/bt_i.h +++ b/applications/services/bt/bt_service/bt_i.h @@ -91,3 +91,15 @@ struct Bt { uint32_t pin; bool suppress_pin_screen; }; + +/** Open a new RPC connection + * + * @param bt Bt instance + */ +void bt_open_rpc_connection(Bt* bt); + +/** Close the active RPC connection + * + * @param bt Bt instance + */ +void bt_close_rpc_connection(Bt* bt); diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index a5f56bf41..5cd3c1276 100755 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -782,7 +782,6 @@ Function,+,ble_svc_serial_start,BleServiceSerial*, Function,+,ble_svc_serial_stop,void,BleServiceSerial* Function,+,ble_svc_serial_update_tx,_Bool,"BleServiceSerial*, uint8_t*, uint16_t" Function,-,bsearch,void*,"const void*, const void*, size_t, size_t, __compar_fn_t" -Function,-,bt_close_rpc_connection,void,Bt* Function,+,bt_disconnect,void,Bt* Function,+,bt_forget_bonded_devices,void,Bt* Function,+,bt_keys_storage_alloc,BtKeysStorage*,const char* @@ -795,10 +794,8 @@ Function,+,bt_keys_storage_set_file_path,void,"BtKeysStorage*, const char*" Function,+,bt_keys_storage_set_ram_params,void,"BtKeysStorage*, uint8_t*, uint16_t" Function,+,bt_keys_storage_set_storage_path,void,"Bt*, const char*" Function,+,bt_keys_storage_update,_Bool,"BtKeysStorage*, uint8_t*, uint32_t" -Function,-,bt_open_rpc_connection,void,Bt* Function,+,bt_profile_restore_default,_Bool,Bt* Function,+,bt_profile_start,FuriHalBleProfileBase*,"Bt*, const FuriHalBleProfileTemplate*, FuriHalBleProfileParams" -Function,+,bt_remote_rssi,_Bool,"Bt*, uint8_t*" Function,+,bt_set_status_changed_callback,void,"Bt*, BtStatusChangedCallback, void*" Function,+,buffered_file_stream_alloc,Stream*,Storage* Function,+,buffered_file_stream_close,_Bool,Stream* @@ -1331,7 +1328,6 @@ Function,+,furi_hal_bt_extra_beacon_set_config,_Bool,const GapExtraBeaconConfig* Function,+,furi_hal_bt_extra_beacon_set_data,_Bool,"const uint8_t*, uint8_t" Function,+,furi_hal_bt_extra_beacon_start,_Bool, Function,+,furi_hal_bt_extra_beacon_stop,_Bool, -Function,-,furi_hal_bt_get_conn_rssi,uint32_t,uint8_t* Function,+,furi_hal_bt_get_key_storage_buff,void,"uint8_t**, uint16_t*" Function,+,furi_hal_bt_get_radio_stack,FuriHalBtStack, Function,+,furi_hal_bt_get_rssi,float, @@ -1339,14 +1335,12 @@ Function,+,furi_hal_bt_get_transmitted_packets,uint32_t, Function,-,furi_hal_bt_init,void, Function,+,furi_hal_bt_is_active,_Bool, Function,+,furi_hal_bt_is_alive,_Bool, -Function,+,furi_hal_bt_is_connected,_Bool, Function,+,furi_hal_bt_is_gatt_gap_supported,_Bool, Function,+,furi_hal_bt_is_testing_supported,_Bool, Function,+,furi_hal_bt_lock_core2,void, Function,+,furi_hal_bt_nvm_sram_sem_acquire,void, Function,+,furi_hal_bt_nvm_sram_sem_release,void, Function,+,furi_hal_bt_reinit,void, -Function,+,furi_hal_bt_reverse_mac_addr,void,uint8_t[( 6 )] Function,+,furi_hal_bt_set_key_storage_change_callback,void,"BleGlueKeyStorageChangedCallback, void*" Function,+,furi_hal_bt_start_advertising,void, Function,+,furi_hal_bt_start_app,FuriHalBleProfileBase*,"const FuriHalBleProfileTemplate*, FuriHalBleProfileParams, GapEventCallback, void*" @@ -2008,7 +2002,6 @@ Function,-,gap_extra_beacon_set_config,_Bool,const GapExtraBeaconConfig* Function,-,gap_extra_beacon_set_data,_Bool,"const uint8_t*, uint8_t" Function,-,gap_extra_beacon_start,_Bool, Function,-,gap_extra_beacon_stop,_Bool, -Function,-,gap_get_remote_conn_rssi,uint32_t,int8_t* Function,-,gap_get_state,GapState, Function,-,gap_init,_Bool,"GapConfig*, GapEventCallback, void*" Function,-,gap_start_advertising,void, @@ -3558,9 +3551,9 @@ Function,+,subghz_keystore_get_data,SubGhzKeyArray_t*,SubGhzKeystore* Function,+,subghz_keystore_load,_Bool,"SubGhzKeystore*, const char*" Function,+,subghz_keystore_raw_encrypted_save,_Bool,"const char*, const char*, uint8_t*" Function,+,subghz_keystore_raw_get_data,_Bool,"const char*, size_t, uint8_t*, size_t" +Function,+,subghz_keystore_reset_kl,void,SubGhzKeystore* Function,+,subghz_keystore_save,_Bool,"SubGhzKeystore*, const char*, uint8_t*" Function,+,subghz_protocol_alutech_at_4n_create_data,_Bool,"void*, FlipperFormat*, uint32_t, uint8_t, uint16_t, SubGhzRadioPreset*" -Function,+,subghz_keystore_reset_kl,void,SubGhzKeystore* Function,+,subghz_protocol_blocks_add_bit,void,"SubGhzBlockDecoder*, uint8_t" Function,+,subghz_protocol_blocks_add_bytes,uint8_t,"const uint8_t[], size_t" Function,+,subghz_protocol_blocks_add_to_128_bit,void,"SubGhzBlockDecoder*, uint8_t, uint64_t*" diff --git a/targets/f7/ble_glue/gap.c b/targets/f7/ble_glue/gap.c index 538f033f4..2f4e661b9 100644 --- a/targets/f7/ble_glue/gap.c +++ b/targets/f7/ble_glue/gap.c @@ -33,8 +33,6 @@ typedef struct { GapConfig* config; GapConnectionParams connection_params; GapState state; - int8_t conn_rssi; - uint32_t time_rssi_sample; FuriMutex* state_mutex; GapEventCallback on_event_cb; void* context; @@ -65,19 +63,6 @@ static Gap* gap = NULL; static void gap_advertise_start(GapState new_state); static int32_t gap_app(void* context); -/** function for updating rssi informations in global Gap object - * -*/ -static inline void fetch_rssi(void) { - uint8_t ret_rssi = 127; - if(hci_read_rssi(gap->service.connection_handle, &ret_rssi) == BLE_STATUS_SUCCESS) { - gap->conn_rssi = (int8_t)ret_rssi; - gap->time_rssi_sample = furi_get_tick(); - return; - } - FURI_LOG_D(TAG, "Failed to read RSSI"); -} - static void gap_verify_connection_parameters(Gap* gap) { furi_check(gap); @@ -182,8 +167,6 @@ BleEventFlowStatus ble_event_app_notification(void* pckt) { FURI_LOG_I(TAG, "Connection parameters event complete"); gap_verify_connection_parameters(gap); - // Save rssi for current connection - fetch_rssi(); break; } @@ -218,8 +201,7 @@ BleEventFlowStatus ble_event_app_notification(void* pckt) { gap->service.connection_handle = event->Connection_Handle; gap_verify_connection_parameters(gap); - // Save rssi for current connection - fetch_rssi(); + if(gap->config->pairing_method != GapPairingNone) { // Start pairing by sending security request aci_gap_slave_security_req(event->Connection_Handle); @@ -303,9 +285,6 @@ BleEventFlowStatus ble_event_app_notification(void* pckt) { pairing_complete->Status); aci_gap_terminate(gap->service.connection_handle, 5); } else { - // Save RSSI - fetch_rssi(); - FURI_LOG_I(TAG, "Pairing complete"); GapEvent event = {.type = GapEventTypeConnected}; gap->on_event_cb(event, gap->context); //-V595 @@ -579,9 +558,6 @@ bool gap_init(GapConfig* config, GapEventCallback on_event_cb, void* context) { gap->service.connection_handle = 0xFFFF; gap->enable_adv = true; - gap->conn_rssi = 127; - gap->time_rssi_sample = 0; - // Command queue allocation gap->command_queue = furi_message_queue_alloc(8, sizeof(GapCommand)); @@ -621,17 +597,6 @@ bool gap_init(GapConfig* config, GapEventCallback on_event_cb, void* context) { return true; } -// Get RSSI -uint32_t gap_get_remote_conn_rssi(int8_t* rssi) { - if(gap && gap->state == GapStateConnected) { - fetch_rssi(); - *rssi = gap->conn_rssi; - - if(gap->time_rssi_sample) return furi_get_tick() - gap->time_rssi_sample; - } - return 0; -} - GapState gap_get_state(void) { GapState state; if(gap) { diff --git a/targets/f7/ble_glue/gap.h b/targets/f7/ble_glue/gap.h index 096dcb46a..2f0b097e4 100644 --- a/targets/f7/ble_glue/gap.h +++ b/targets/f7/ble_glue/gap.h @@ -96,8 +96,6 @@ void gap_thread_stop(void); void gap_emit_ble_beacon_status_event(bool active); -uint32_t gap_get_remote_conn_rssi(int8_t* rssi); - #ifdef __cplusplus } #endif diff --git a/targets/f7/furi_hal/furi_hal_bt.c b/targets/f7/furi_hal/furi_hal_bt.c index 05a066630..2d4984746 100644 --- a/targets/f7/furi_hal/furi_hal_bt.c +++ b/targets/f7/furi_hal/furi_hal_bt.c @@ -251,10 +251,6 @@ bool furi_hal_bt_is_active(void) { return gap_get_state() > GapStateIdle; } -bool furi_hal_bt_is_connected() { - return gap_get_state() == GapStateConnected; -} - void furi_hal_bt_start_advertising(void) { if(gap_get_state() == GapStateIdle) { gap_start_advertising(); @@ -367,54 +363,6 @@ void furi_hal_bt_start_rx(uint8_t channel) { aci_hal_rx_start(channel); } -float furi_hal_bt_get_rssi(void) { - float val; - uint8_t rssi_raw[3]; - - if(aci_hal_read_raw_rssi(rssi_raw) != BLE_STATUS_SUCCESS) { - return 0.0f; - } - - // Some ST magic with rssi - uint8_t agc = rssi_raw[2] & 0xFF; - int rssi = (((int)rssi_raw[1] << 8) & 0xFF00) + (rssi_raw[0] & 0xFF); - if(rssi == 0 || agc > 11) { - val = -127.0; - } else { - val = agc * 6.0f - 127.0f; - while(rssi > 30) { - val += 6.0; - rssi >>= 1; - } - val += (float)((417 * rssi + 18080) >> 10); - } - return val; -} - -/** fill the RSSI of the remote host of the bt connection and returns the last - * time the RSSI was updated - * -*/ -uint32_t furi_hal_bt_get_conn_rssi(uint8_t* rssi) { - int8_t ret_rssi = 0; - uint32_t since = gap_get_remote_conn_rssi(&ret_rssi); - - if(ret_rssi == 127 || since == 0) return 0; - - *rssi = (uint8_t)abs(ret_rssi); - - return since; -} - -void furi_hal_bt_reverse_mac_addr(uint8_t mac_addr[GAP_MAC_ADDR_SIZE]) { - uint8_t tmp; - for(size_t i = 0; i < GAP_MAC_ADDR_SIZE / 2; i++) { - tmp = mac_addr[i]; - mac_addr[i] = mac_addr[GAP_MAC_ADDR_SIZE - 1 - i]; - mac_addr[GAP_MAC_ADDR_SIZE - 1 - i] = tmp; - } -} - uint32_t furi_hal_bt_get_transmitted_packets(void) { uint32_t packets = 0; aci_hal_le_tx_test_packet_number(&packets); diff --git a/targets/f7/furi_hal/furi_hal_flash.c b/targets/f7/furi_hal/furi_hal_flash.c index 28aa45173..c28f6b520 100644 --- a/targets/f7/furi_hal/furi_hal_flash.c +++ b/targets/f7/furi_hal/furi_hal_flash.c @@ -51,7 +51,8 @@ // Changing furi_assert() to furi_check() brought timeout crashes // Internal storage is very slow, and "big" files will often cause a "timeout" with 3 seconds // 10 seconds seems fine, the file operations complete successfully, albeit slowly -#define FURI_HAL_FLASH_C2_LOCK_TIMEOUT_MS (10000U) /* 10 seconds */ +//#define FURI_HAL_FLASH_C2_LOCK_TIMEOUT_MS (10000U) /* 10 seconds */ +#define FURI_HAL_FLASH_C2_LOCK_TIMEOUT_MS (3000U) /* 3 seconds */ #define IS_ADDR_ALIGNED_64BITS(__VALUE__) (((__VALUE__) & 0x7U) == (0x00UL)) #define IS_FLASH_PROGRAM_ADDRESS(__VALUE__) \ diff --git a/targets/furi_hal_include/furi_hal_bt.h b/targets/furi_hal_include/furi_hal_bt.h index 14c2975ac..6da723311 100644 --- a/targets/furi_hal_include/furi_hal_bt.h +++ b/targets/furi_hal_include/furi_hal_bt.h @@ -231,15 +231,6 @@ float furi_hal_bt_get_rssi(void); */ uint32_t furi_hal_bt_get_transmitted_packets(void); -/** Reverse a MAC address byte order in-place - * @param[in] mac mac address to reverse -*/ -void furi_hal_bt_reverse_mac_addr(uint8_t mac_addr[GAP_MAC_ADDR_SIZE]); - -uint32_t furi_hal_bt_get_conn_rssi(uint8_t* rssi); - -bool furi_hal_bt_is_connected(void); - /** Check & switch C2 to given mode * * @param[in] mode mode to switch into