Add BT Inspector: BLE scanner and GATT explorer for Flipper Zero

Built-in firmware app (needs the full ST BLE stack) with live RSSI-sorted
scan list, advertisement decoding (Apple Continuity, Microsoft CDP, Fast
Pair, Eddystone), connect/discover/read/write/notify, device-info summary,
value history and a timestamped session log. build.sh produces a firmware
update package with COPRO_STACK_TYPE=ble_full and the app compiled in.
This commit is contained in:
2026-09-11 08:39:51 +01:00
commit e863616f82
9 changed files with 2531 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
#pragma once
#include <furi.h>
#include <stdint.h>
// Lookup tables and decoders. All return static strings or NULL when unknown.
const char* ble_company_name(uint16_t id);
const char* ble_uuid_name(const uint8_t* uuid, uint8_t len); // len 2 or 16, little-endian
const char* ble_appearance_name(uint16_t appearance);
const char* ble_adv_type_name(uint8_t evt_type);
const char* ble_att_error_name(uint8_t code);
void ble_hex(FuriString* out, const uint8_t* data, size_t len);
void ble_uuid_str(FuriString* out, const uint8_t* uuid, uint8_t len);
void ble_addr_str(FuriString* out, const uint8_t* addr);
// Manufacturer-specific data decoders (Apple Continuity, Microsoft CDP, ...)
void ble_decode_mfg(FuriString* out, uint16_t company, const uint8_t* d, uint8_t len);
// Service data decoders (Fast Pair, Eddystone, Exposure Notification, ...)
void ble_decode_svc_data(FuriString* out, uint16_t uuid, const uint8_t* d, uint8_t len);
// Characteristic value decoder: appends "decoded" representation(s) of a value.
void ble_decode_value(FuriString* out, const uint8_t* uuid, uint8_t uuid_len, const uint8_t* d, size_t len);