Skip to content

Commit 1968a5b

Browse files
authored
Merge branch 'dev' into portasynthinca3/3332-autolock-fixes
2 parents ea9a5f4 + 0eaad8b commit 1968a5b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+4183
-901
lines changed

ReadMe.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,7 @@ Also, see `ReadMe.md` files inside those directories for further details.
120120
- Website: [flipperzero.one](https://flipperzero.one)
121121
- Forum: [forum.flipperzero.one](https://forum.flipperzero.one/)
122122
- Kickstarter: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers)
123+
124+
## SAST Tools
125+
126+
- [PVS-Studio](https://pvs-studio.com/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source) - static analyzer for C, C++, C#, and Java code.

applications/debug/direct_draw/direct_draw.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include <furi.h>
22
#include <gui/gui.h>
3-
#include <gui/canvas_i.h>
43
#include <input/input.h>
54

65
#define BUFFER_SIZE (32U)
@@ -42,10 +41,11 @@ static DirectDraw* direct_draw_alloc(void) {
4241
static void direct_draw_free(DirectDraw* instance) {
4342
furi_pubsub_unsubscribe(instance->input, instance->input_subscription);
4443

45-
instance->canvas = NULL;
4644
gui_direct_draw_release(instance->gui);
4745
furi_record_close(RECORD_GUI);
4846
furi_record_close(RECORD_INPUT_EVENTS);
47+
48+
free(instance);
4949
}
5050

5151
static void direct_draw_block(Canvas* canvas, uint32_t size, uint32_t counter) {

applications/main/bad_usb/application.fam

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ App(
77
icon="A_BadUsb_14",
88
order=70,
99
resources="resources",
10-
fap_libs=["assets", "ble_profile"],
10+
fap_libs=["assets"],
1111
fap_icon="icon.png",
1212
fap_category="USB",
1313
)

applications/main/bad_usb/bad_usb_app.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ static void bad_usb_load_settings(BadUsbApp* app) {
3535

3636
FuriString* temp_str = furi_string_alloc();
3737
uint32_t version = 0;
38-
uint32_t interface = 0;
3938

4039
if(flipper_format_file_open_existing(fff, BAD_USB_SETTINGS_PATH)) {
4140
do {
@@ -45,8 +44,6 @@ static void bad_usb_load_settings(BadUsbApp* app) {
4544
break;
4645

4746
if(!flipper_format_read_string(fff, "layout", temp_str)) break;
48-
if(!flipper_format_read_uint32(fff, "interface", &interface, 1)) break;
49-
if(interface > BadUsbHidInterfaceBle) break;
5047

5148
state = true;
5249
} while(0);
@@ -56,7 +53,6 @@ static void bad_usb_load_settings(BadUsbApp* app) {
5653

5754
if(state) {
5855
furi_string_set(app->keyboard_layout, temp_str);
59-
app->interface = interface;
6056

6157
Storage* fs_api = furi_record_open(RECORD_STORAGE);
6258
FileInfo layout_file_info;
@@ -68,7 +64,6 @@ static void bad_usb_load_settings(BadUsbApp* app) {
6864
}
6965
} else {
7066
furi_string_set(app->keyboard_layout, BAD_USB_SETTINGS_DEFAULT_LAYOUT);
71-
app->interface = BadUsbHidInterfaceUsb;
7267
}
7368

7469
furi_string_free(temp_str);
@@ -84,9 +79,6 @@ static void bad_usb_save_settings(BadUsbApp* app) {
8479
fff, BAD_USB_SETTINGS_FILE_TYPE, BAD_USB_SETTINGS_VERSION))
8580
break;
8681
if(!flipper_format_write_string(fff, "layout", app->keyboard_layout)) break;
87-
uint32_t interface_id = app->interface;
88-
if(!flipper_format_write_uint32(fff, "interface", (const uint32_t*)&interface_id, 1))
89-
break;
9082
} while(0);
9183
}
9284

applications/main/bad_usb/bad_usb_app_i.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ struct BadUsbApp {
4141
BadUsb* bad_usb_view;
4242
BadUsbScript* bad_usb_script;
4343

44-
BadUsbHidInterface interface;
4544
FuriHalUsbInterface* usb_if_prev;
4645
};
4746

Lines changed: 2 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
#include "bad_usb_hid.h"
22
#include <extra_profiles/hid_profile.h>
3-
#include <bt/bt_service/bt.h>
43
#include <storage/storage.h>
54

65
#define TAG "BadUSB HID"
76

8-
#define HID_BT_KEYS_STORAGE_NAME ".bt_hid.keys"
9-
107
void* hid_usb_init(FuriHalUsbHidConfig* hid_cfg) {
118
furi_check(furi_hal_usb_set_config(&usb_hid, hid_cfg));
129
return NULL;
@@ -72,155 +69,6 @@ static const BadUsbHidApi hid_api_usb = {
7269
.release_all = hid_usb_release_all,
7370
.get_led_state = hid_usb_get_led_state,
7471
};
75-
76-
typedef struct {
77-
Bt* bt;
78-
FuriHalBleProfileBase* profile;
79-
HidStateCallback state_callback;
80-
void* callback_context;
81-
bool is_connected;
82-
} BleHidInstance;
83-
84-
static const BleProfileHidParams ble_hid_params = {
85-
.device_name_prefix = "BadUSB",
86-
.mac_xor = 0x0002,
87-
};
88-
89-
static void hid_ble_connection_status_callback(BtStatus status, void* context) {
90-
furi_assert(context);
91-
BleHidInstance* ble_hid = context;
92-
ble_hid->is_connected = (status == BtStatusConnected);
93-
if(ble_hid->state_callback) {
94-
ble_hid->state_callback(ble_hid->is_connected, ble_hid->callback_context);
95-
}
96-
}
97-
98-
void* hid_ble_init(FuriHalUsbHidConfig* hid_cfg) {
99-
UNUSED(hid_cfg);
100-
BleHidInstance* ble_hid = malloc(sizeof(BleHidInstance));
101-
ble_hid->bt = furi_record_open(RECORD_BT);
102-
bt_disconnect(ble_hid->bt);
103-
104-
// Wait 2nd core to update nvm storage
105-
furi_delay_ms(200);
106-
107-
bt_keys_storage_set_storage_path(ble_hid->bt, APP_DATA_PATH(HID_BT_KEYS_STORAGE_NAME));
108-
109-
ble_hid->profile = bt_profile_start(ble_hid->bt, ble_profile_hid, (void*)&ble_hid_params);
110-
furi_check(ble_hid->profile);
111-
112-
furi_hal_bt_start_advertising();
113-
114-
bt_set_status_changed_callback(ble_hid->bt, hid_ble_connection_status_callback, ble_hid);
115-
116-
return ble_hid;
117-
}
118-
119-
void hid_ble_deinit(void* inst) {
120-
BleHidInstance* ble_hid = inst;
121-
furi_assert(ble_hid);
122-
123-
bt_set_status_changed_callback(ble_hid->bt, NULL, NULL);
124-
bt_disconnect(ble_hid->bt);
125-
126-
// Wait 2nd core to update nvm storage
127-
furi_delay_ms(200);
128-
bt_keys_storage_set_default_path(ble_hid->bt);
129-
130-
furi_check(bt_profile_restore_default(ble_hid->bt));
131-
furi_record_close(RECORD_BT);
132-
free(ble_hid);
133-
}
134-
135-
void hid_ble_set_state_callback(void* inst, HidStateCallback cb, void* context) {
136-
BleHidInstance* ble_hid = inst;
137-
furi_assert(ble_hid);
138-
ble_hid->state_callback = cb;
139-
ble_hid->callback_context = context;
140-
}
141-
142-
bool hid_ble_is_connected(void* inst) {
143-
BleHidInstance* ble_hid = inst;
144-
furi_assert(ble_hid);
145-
return ble_hid->is_connected;
146-
}
147-
148-
bool hid_ble_kb_press(void* inst, uint16_t button) {
149-
BleHidInstance* ble_hid = inst;
150-
furi_assert(ble_hid);
151-
return ble_profile_hid_kb_press(ble_hid->profile, button);
152-
}
153-
154-
bool hid_ble_kb_release(void* inst, uint16_t button) {
155-
BleHidInstance* ble_hid = inst;
156-
furi_assert(ble_hid);
157-
return ble_profile_hid_kb_release(ble_hid->profile, button);
158-
}
159-
160-
bool hid_ble_consumer_press(void* inst, uint16_t button) {
161-
BleHidInstance* ble_hid = inst;
162-
furi_assert(ble_hid);
163-
return ble_profile_hid_consumer_key_press(ble_hid->profile, button);
164-
}
165-
166-
bool hid_ble_consumer_release(void* inst, uint16_t button) {
167-
BleHidInstance* ble_hid = inst;
168-
furi_assert(ble_hid);
169-
return ble_profile_hid_consumer_key_release(ble_hid->profile, button);
170-
}
171-
172-
bool hid_ble_release_all(void* inst) {
173-
BleHidInstance* ble_hid = inst;
174-
furi_assert(ble_hid);
175-
bool state = ble_profile_hid_kb_release_all(ble_hid->profile);
176-
state &= ble_profile_hid_consumer_key_release_all(ble_hid->profile);
177-
return state;
178-
}
179-
180-
uint8_t hid_ble_get_led_state(void* inst) {
181-
UNUSED(inst);
182-
FURI_LOG_W(TAG, "hid_ble_get_led_state not implemented");
183-
return 0;
184-
}
185-
186-
static const BadUsbHidApi hid_api_ble = {
187-
.init = hid_ble_init,
188-
.deinit = hid_ble_deinit,
189-
.set_state_callback = hid_ble_set_state_callback,
190-
.is_connected = hid_ble_is_connected,
191-
192-
.kb_press = hid_ble_kb_press,
193-
.kb_release = hid_ble_kb_release,
194-
.consumer_press = hid_ble_consumer_press,
195-
.consumer_release = hid_ble_consumer_release,
196-
.release_all = hid_ble_release_all,
197-
.get_led_state = hid_ble_get_led_state,
198-
};
199-
200-
const BadUsbHidApi* bad_usb_hid_get_interface(BadUsbHidInterface interface) {
201-
if(interface == BadUsbHidInterfaceUsb) {
202-
return &hid_api_usb;
203-
} else {
204-
return &hid_api_ble;
205-
}
206-
}
207-
208-
void bad_usb_hid_ble_remove_pairing(void) {
209-
Bt* bt = furi_record_open(RECORD_BT);
210-
bt_disconnect(bt);
211-
212-
// Wait 2nd core to update nvm storage
213-
furi_delay_ms(200);
214-
215-
furi_hal_bt_stop_advertising();
216-
217-
bt_keys_storage_set_storage_path(bt, APP_DATA_PATH(HID_BT_KEYS_STORAGE_NAME));
218-
bt_forget_bonded_devices(bt);
219-
220-
// Wait 2nd core to update nvm storage
221-
furi_delay_ms(200);
222-
bt_keys_storage_set_default_path(bt);
223-
224-
furi_check(bt_profile_restore_default(bt));
225-
furi_record_close(RECORD_BT);
72+
const BadUsbHidApi* bad_usb_hid_get_interface() {
73+
return &hid_api_usb;
22674
}

applications/main/bad_usb/helpers/bad_usb_hid.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ extern "C" {
77
#include <furi.h>
88
#include <furi_hal.h>
99

10-
typedef enum {
11-
BadUsbHidInterfaceUsb,
12-
BadUsbHidInterfaceBle,
13-
} BadUsbHidInterface;
14-
1510
typedef struct {
1611
void* (*init)(FuriHalUsbHidConfig* hid_cfg);
1712
void (*deinit)(void* inst);
@@ -26,7 +21,7 @@ typedef struct {
2621
uint8_t (*get_led_state)(void* inst);
2722
} BadUsbHidApi;
2823

29-
const BadUsbHidApi* bad_usb_hid_get_interface(BadUsbHidInterface interface);
24+
const BadUsbHidApi* bad_usb_hid_get_interface();
3025

3126
void bad_usb_hid_ble_remove_pairing(void);
3227

applications/main/bad_usb/helpers/ducky_script.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ static void bad_usb_script_set_default_keyboard_layout(BadUsbScript* bad_usb) {
650650
memcpy(bad_usb->layout, hid_asciimap, MIN(sizeof(hid_asciimap), sizeof(bad_usb->layout)));
651651
}
652652

653-
BadUsbScript* bad_usb_script_open(FuriString* file_path, BadUsbHidInterface interface) {
653+
BadUsbScript* bad_usb_script_open(FuriString* file_path) {
654654
furi_assert(file_path);
655655

656656
BadUsbScript* bad_usb = malloc(sizeof(BadUsbScript));
@@ -660,7 +660,7 @@ BadUsbScript* bad_usb_script_open(FuriString* file_path, BadUsbHidInterface inte
660660

661661
bad_usb->st.state = BadUsbStateInit;
662662
bad_usb->st.error[0] = '\0';
663-
bad_usb->hid = bad_usb_hid_get_interface(interface);
663+
bad_usb->hid = bad_usb_hid_get_interface();
664664

665665
bad_usb->thread = furi_thread_alloc_ex("BadUsbWorker", 2048, bad_usb_worker, bad_usb);
666666
furi_thread_start(bad_usb->thread);

applications/main/bad_usb/helpers/ducky_script.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ typedef struct {
3434

3535
typedef struct BadUsbScript BadUsbScript;
3636

37-
BadUsbScript* bad_usb_script_open(FuriString* file_path, BadUsbHidInterface interface);
37+
BadUsbScript* bad_usb_script_open(FuriString* file_path);
3838

3939
void bad_usb_script_close(BadUsbScript* bad_usb);
4040

256 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)