diff --git a/applications/debug/ccid_test/ccid_test_app.c b/applications/debug/ccid_test/ccid_test_app.c index a02fd1596..4158c1a60 100644 --- a/applications/debug/ccid_test/ccid_test_app.c +++ b/applications/debug/ccid_test/ccid_test_app.c @@ -117,7 +117,7 @@ int32_t ccid_test_app(void* p) { //setup view CcidTestApp* app = ccid_test_app_alloc(); - const FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); + FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); furi_hal_usb_unlock(); furi_check(furi_hal_usb_set_config(&usb_ccid, &app->ccid_cfg) == true); diff --git a/applications/debug/usb_mouse/usb_mouse.c b/applications/debug/usb_mouse/usb_mouse.c index 7d5ee27e8..e322a58ae 100644 --- a/applications/debug/usb_mouse/usb_mouse.c +++ b/applications/debug/usb_mouse/usb_mouse.c @@ -42,7 +42,7 @@ int32_t usb_mouse_app(void* p) { FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(UsbMouseEvent)); ViewPort* view_port = view_port_alloc(); - const FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); + FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); furi_hal_usb_unlock(); furi_check(furi_hal_usb_set_config(&usb_hid, NULL) == true); diff --git a/applications/main/bad_usb/bad_usb_app_i.h b/applications/main/bad_usb/bad_usb_app_i.h index 93c24ea8c..b34bd5de6 100644 --- a/applications/main/bad_usb/bad_usb_app_i.h +++ b/applications/main/bad_usb/bad_usb_app_i.h @@ -44,7 +44,7 @@ struct BadUsbApp { BadUsbScript* bad_usb_script; BadUsbHidInterface interface; - const FuriHalUsbInterface* usb_if_prev; + FuriHalUsbInterface* usb_if_prev; }; typedef enum { diff --git a/applications/main/u2f/u2f_hid.c b/applications/main/u2f/u2f_hid.c index a1b614b19..76d3d7cec 100644 --- a/applications/main/u2f/u2f_hid.c +++ b/applications/main/u2f/u2f_hid.c @@ -189,7 +189,7 @@ static int32_t u2f_hid_worker(void* context) { FURI_LOG_D(WORKER_TAG, "Init"); - const FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); + FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); furi_check(furi_hal_usb_set_config(&usb_hid_u2f, NULL) == true); u2f_hid->lock_timer = diff --git a/applications/services/cli/cli_vcp.c b/applications/services/cli/cli_vcp.c index bc4ea592a..39802bd79 100644 --- a/applications/services/cli/cli_vcp.c +++ b/applications/services/cli/cli_vcp.c @@ -40,7 +40,7 @@ typedef struct { volatile bool connected; volatile bool running; - const FuriHalUsbInterface* usb_if_prev; + FuriHalUsbInterface* usb_if_prev; uint8_t data_buffer[USB_CDC_PKT_LEN]; } CliVcp; diff --git a/applications/system/hid_app/hid.c b/applications/system/hid_app/hid.c index 9f3a246ef..15c49e3b0 100644 --- a/applications/system/hid_app/hid.c +++ b/applications/system/hid_app/hid.c @@ -174,7 +174,7 @@ int32_t hid_usb_app(void* p) { FURI_LOG_D("HID", "Starting as USB app"); - const FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); + FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config(); furi_hal_usb_unlock(); furi_check(furi_hal_usb_set_config(&usb_hid, NULL) == true); diff --git a/applications/system/js_app/modules/js_badusb.c b/applications/system/js_app/modules/js_badusb.c index 880bbdc48..27f38cbda 100644 --- a/applications/system/js_app/modules/js_badusb.c +++ b/applications/system/js_app/modules/js_badusb.c @@ -7,7 +7,7 @@ typedef struct { FuriHalUsbHidConfig* hid_cfg; uint16_t layout[128]; - const FuriHalUsbInterface* usb_if_prev; + FuriHalUsbInterface* usb_if_prev; uint8_t key_hold_cnt; } JsBadusbInst; diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index 9ada44f75..6dbf4a035 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1489,13 +1489,13 @@ Function,+,furi_hal_usb_ccid_remove_smartcard,void, Function,+,furi_hal_usb_ccid_set_callbacks,void,"CcidCallbacks*, void*" Function,+,furi_hal_usb_disable,void, Function,+,furi_hal_usb_enable,void, -Function,+,furi_hal_usb_get_config,const FuriHalUsbInterface*, +Function,+,furi_hal_usb_get_config,FuriHalUsbInterface*, Function,-,furi_hal_usb_init,void, Function,+,furi_hal_usb_is_locked,_Bool, Function,+,furi_hal_usb_lock,void, Function,+,furi_hal_usb_reinit,void, -Function,+,furi_hal_usb_set_config,_Bool,"const FuriHalUsbInterface*, void*" -Function,-,furi_hal_usb_set_state_callback,void,"FuriHalUsbStateCallback, void*" +Function,+,furi_hal_usb_set_config,_Bool,"FuriHalUsbInterface*, void*" +Function,+,furi_hal_usb_set_state_callback,void,"FuriHalUsbStateCallback, void*" Function,+,furi_hal_usb_unlock,void, Function,+,furi_hal_version_do_i_belong_here,_Bool, Function,+,furi_hal_version_get_ble_local_device_name_ptr,const char*, @@ -3208,5 +3208,5 @@ Variable,+,usb_ccid,FuriHalUsbInterface, Variable,+,usb_cdc_dual,FuriHalUsbInterface, Variable,+,usb_cdc_single,FuriHalUsbInterface, Variable,+,usb_hid,FuriHalUsbInterface, -Variable,+,usb_hid_u2f,const FuriHalUsbInterface, +Variable,+,usb_hid_u2f,FuriHalUsbInterface, Variable,+,usbd_devfs,const usbd_driver, diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 187440104..01a83d853 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1709,13 +1709,13 @@ Function,+,furi_hal_usb_ccid_remove_smartcard,void, Function,+,furi_hal_usb_ccid_set_callbacks,void,"CcidCallbacks*, void*" Function,+,furi_hal_usb_disable,void, Function,+,furi_hal_usb_enable,void, -Function,+,furi_hal_usb_get_config,const FuriHalUsbInterface*, +Function,+,furi_hal_usb_get_config,FuriHalUsbInterface*, Function,-,furi_hal_usb_init,void, Function,+,furi_hal_usb_is_locked,_Bool, Function,+,furi_hal_usb_lock,void, Function,+,furi_hal_usb_reinit,void, -Function,+,furi_hal_usb_set_config,_Bool,"const FuriHalUsbInterface*, void*" -Function,-,furi_hal_usb_set_state_callback,void,"FuriHalUsbStateCallback, void*" +Function,+,furi_hal_usb_set_config,_Bool,"FuriHalUsbInterface*, void*" +Function,+,furi_hal_usb_set_state_callback,void,"FuriHalUsbStateCallback, void*" Function,+,furi_hal_usb_unlock,void, Function,+,furi_hal_version_do_i_belong_here,_Bool, Function,+,furi_hal_version_get_ble_local_device_name_ptr,const char*, @@ -3793,8 +3793,6 @@ Variable,+,firmware_api_interface,const ElfApiInterface* const, Variable,+,furi_hal_i2c_bus_external,FuriHalI2cBus, Variable,+,furi_hal_i2c_bus_power,FuriHalI2cBus, Variable,+,furi_hal_i2c_handle_external,const FuriHalI2cBusHandle, -Variable,+,furi_hal_i2c_handle_external,const FuriHalI2cBusHandle, -Variable,+,furi_hal_i2c_handle_power,const FuriHalI2cBusHandle, Variable,+,furi_hal_i2c_handle_power,const FuriHalI2cBusHandle, Variable,+,furi_hal_spi_bus_d,FuriHalSpiBus, Variable,+,furi_hal_spi_bus_handle_display,const FuriHalSpiBusHandle, @@ -4081,5 +4079,5 @@ Variable,+,usb_ccid,FuriHalUsbInterface, Variable,+,usb_cdc_dual,FuriHalUsbInterface, Variable,+,usb_cdc_single,FuriHalUsbInterface, Variable,+,usb_hid,FuriHalUsbInterface, -Variable,+,usb_hid_u2f,const FuriHalUsbInterface, +Variable,+,usb_hid_u2f,FuriHalUsbInterface, Variable,+,usbd_devfs,const usbd_driver, diff --git a/targets/f7/fatfs/user_diskio.h b/targets/f7/fatfs/user_diskio.h index 2505de704..a0fcb9d57 100644 --- a/targets/f7/fatfs/user_diskio.h +++ b/targets/f7/fatfs/user_diskio.h @@ -10,4 +10,4 @@ extern const Diskio_drvTypeDef sd_fatfs_driver; #ifdef __cplusplus } -#endif +#endif \ No newline at end of file diff --git a/targets/f7/furi_hal/furi_hal_usb.c b/targets/f7/furi_hal/furi_hal_usb.c index 03e92cc16..22d1523b6 100644 --- a/targets/f7/furi_hal/furi_hal_usb.c +++ b/targets/f7/furi_hal/furi_hal_usb.c @@ -32,7 +32,7 @@ typedef struct { } UsbApiEventDataStateCallback; typedef struct { - const FuriHalUsbInterface* interface; + FuriHalUsbInterface* interface; void* context; } UsbApiEventDataInterface; @@ -43,7 +43,7 @@ typedef union { typedef union { bool bool_value; - const void* void_value; + void* void_value; } UsbApiEventReturnData; typedef struct { @@ -60,7 +60,7 @@ typedef struct { bool connected; bool mode_lock; bool request_pending; - const FuriHalUsbInterface* interface; + FuriHalUsbInterface* interface; void* interface_context; FuriHalUsbStateCallback callback; void* callback_context; @@ -132,7 +132,7 @@ static void furi_hal_usb_send_message(UsbApiEventMessage* message) { api_lock_wait_unlock_and_free(message->lock); } -bool furi_hal_usb_set_config(const FuriHalUsbInterface* new_if, void* ctx) { +bool furi_hal_usb_set_config(FuriHalUsbInterface* new_if, void* ctx) { UsbApiEventReturnData return_data = { .bool_value = false, }; @@ -152,7 +152,7 @@ bool furi_hal_usb_set_config(const FuriHalUsbInterface* new_if, void* ctx) { return return_data.bool_value; } -const FuriHalUsbInterface* furi_hal_usb_get_config(void) { +FuriHalUsbInterface* furi_hal_usb_get_config(void) { UsbApiEventReturnData return_data = { .void_value = NULL, }; @@ -326,7 +326,7 @@ static void wkup_evt(usbd_device* dev, uint8_t event, uint8_t ep) { } } -static void usb_process_mode_start(const FuriHalUsbInterface* interface, void* context) { +static void usb_process_mode_start(FuriHalUsbInterface* interface, void* context) { if(usb.interface != NULL) { usb.interface->deinit(&udev); } @@ -344,7 +344,7 @@ static void usb_process_mode_start(const FuriHalUsbInterface* interface, void* c } } -static void usb_process_mode_change(const FuriHalUsbInterface* interface, void* context) { +static void usb_process_mode_change(FuriHalUsbInterface* interface, void* context) { if((interface != usb.interface) || (context != usb.interface_context)) { if(usb.enabled) { // Disable current interface @@ -374,7 +374,7 @@ static void usb_process_mode_reinit(void) { usb_process_mode_start(usb.interface, usb.interface_context); } -static bool usb_process_set_config(const FuriHalUsbInterface* interface, void* context) { +static bool usb_process_set_config(FuriHalUsbInterface* interface, void* context) { if(usb.mode_lock) { return false; } else { diff --git a/targets/f7/furi_hal/furi_hal_usb_ccid.c b/targets/f7/furi_hal/furi_hal_usb_ccid.c index 5725c70cf..a2c1a0583 100644 --- a/targets/f7/furi_hal/furi_hal_usb_ccid.c +++ b/targets/f7/furi_hal/furi_hal_usb_ccid.c @@ -170,7 +170,7 @@ static const struct CcidConfigDescriptor ccid_cfg_desc = { }, }; -static void ccid_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx); +static void ccid_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx); static void ccid_deinit(usbd_device* dev); static void ccid_on_wakeup(usbd_device* dev); static void ccid_on_suspend(usbd_device* dev); @@ -223,7 +223,7 @@ static void* ccid_set_string_descr(char* str) { return dev_str_desc; } -static void ccid_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx) { +static void ccid_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx) { UNUSED(intf); FuriHalUsbCcidConfig* cfg = (FuriHalUsbCcidConfig*)ctx; diff --git a/targets/f7/furi_hal/furi_hal_usb_cdc.c b/targets/f7/furi_hal/furi_hal_usb_cdc.c index 62c43ea64..f734ef1a4 100644 --- a/targets/f7/furi_hal/furi_hal_usb_cdc.c +++ b/targets/f7/furi_hal/furi_hal_usb_cdc.c @@ -385,7 +385,7 @@ static const struct CdcConfigDescriptorDual static struct usb_cdc_line_coding cdc_config[IF_NUM_MAX] = {}; static uint8_t cdc_ctrl_line_state[IF_NUM_MAX]; -static void cdc_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx); +static void cdc_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx); static void cdc_deinit(usbd_device* dev); static void cdc_on_wakeup(usbd_device* dev); static void cdc_on_suspend(usbd_device* dev); @@ -429,11 +429,11 @@ FuriHalUsbInterface usb_cdc_dual = { .cfg_descr = (void*)&cdc_cfg_desc_dual, }; -static void cdc_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx) { +static void cdc_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx) { UNUSED(ctx); usb_dev = dev; - cdc_if_cur = malloc(sizeof(FuriHalUsbInterface)); - memcpy((void*)cdc_if_cur, intf, sizeof(FuriHalUsbInterface)); + + cdc_if_cur = intf; char* name = (char*)furi_hal_version_get_device_name_ptr(); uint8_t len = (name == NULL) ? (0) : (strlen(name)); @@ -470,7 +470,6 @@ static void cdc_deinit(usbd_device* dev) { free(cdc_if_cur->str_prod_descr); free(cdc_if_cur->str_serial_descr); - free((void*)cdc_if_cur); cdc_if_cur = NULL; } diff --git a/targets/f7/furi_hal/furi_hal_usb_hid.c b/targets/f7/furi_hal/furi_hal_usb_hid.c index cad8f040b..c83261226 100644 --- a/targets/f7/furi_hal/furi_hal_usb_hid.c +++ b/targets/f7/furi_hal/furi_hal_usb_hid.c @@ -226,7 +226,7 @@ static struct HidReport { struct HidReportConsumer consumer; } FURI_PACKED hid_report; -static void hid_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx); +static void hid_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx); static void hid_deinit(usbd_device* dev); static void hid_on_wakeup(usbd_device* dev); static void hid_on_suspend(usbd_device* dev); @@ -374,7 +374,7 @@ static void* hid_set_string_descr(char* str) { return dev_str_desc; } -static void hid_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx) { +static void hid_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx) { UNUSED(intf); FuriHalUsbHidConfig* cfg = (FuriHalUsbHidConfig*)ctx; if(hid_semaphore == NULL) hid_semaphore = furi_semaphore_alloc(1, 1); diff --git a/targets/f7/furi_hal/furi_hal_usb_u2f.c b/targets/f7/furi_hal/furi_hal_usb_u2f.c index 2c0ad7694..05f498376 100644 --- a/targets/f7/furi_hal/furi_hal_usb_u2f.c +++ b/targets/f7/furi_hal/furi_hal_usb_u2f.c @@ -137,7 +137,7 @@ static const struct HidConfigDescriptor hid_u2f_cfg_desc = { }, }; -static void hid_u2f_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx); +static void hid_u2f_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx); static void hid_u2f_deinit(usbd_device* dev); static void hid_u2f_on_wakeup(usbd_device* dev); static void hid_u2f_on_suspend(usbd_device* dev); @@ -174,7 +174,7 @@ void furi_hal_hid_u2f_set_callback(HidU2fCallback cb, void* ctx) { } } -const FuriHalUsbInterface usb_hid_u2f = { +FuriHalUsbInterface usb_hid_u2f = { .init = hid_u2f_init, .deinit = hid_u2f_deinit, .wakeup = hid_u2f_on_wakeup, @@ -189,7 +189,7 @@ const FuriHalUsbInterface usb_hid_u2f = { .cfg_descr = (void*)&hid_u2f_cfg_desc, }; -static void hid_u2f_init(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx) { +static void hid_u2f_init(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx) { UNUSED(intf); UNUSED(ctx); if(hid_u2f_semaphore == NULL) { diff --git a/targets/furi_hal_include/furi_hal_usb.h b/targets/furi_hal_include/furi_hal_usb.h index 03c5247c5..213e8d56f 100644 --- a/targets/furi_hal_include/furi_hal_usb.h +++ b/targets/furi_hal_include/furi_hal_usb.h @@ -9,7 +9,7 @@ extern "C" { typedef struct FuriHalUsbInterface FuriHalUsbInterface; struct FuriHalUsbInterface { - void (*init)(usbd_device* dev, const FuriHalUsbInterface* intf, void* ctx); + void (*init)(usbd_device* dev, FuriHalUsbInterface* intf, void* ctx); void (*deinit)(usbd_device* dev); void (*wakeup)(usbd_device* dev); void (*suspend)(usbd_device* dev); @@ -27,7 +27,7 @@ struct FuriHalUsbInterface { extern FuriHalUsbInterface usb_cdc_single; extern FuriHalUsbInterface usb_cdc_dual; extern FuriHalUsbInterface usb_hid; -extern const FuriHalUsbInterface usb_hid_u2f; +extern FuriHalUsbInterface usb_hid_u2f; extern FuriHalUsbInterface usb_ccid; typedef enum { @@ -49,13 +49,13 @@ void furi_hal_usb_init(void); * @param ctx context passed to device mode init function * @return true - mode switch started, false - mode switch is locked */ -bool furi_hal_usb_set_config(const FuriHalUsbInterface* new_if, void* ctx); +bool furi_hal_usb_set_config(FuriHalUsbInterface* new_if, void* ctx); /** Get USB device configuration * * @return current USB device mode */ -const FuriHalUsbInterface* furi_hal_usb_get_config(void); +FuriHalUsbInterface* furi_hal_usb_get_config(void); /** Lock USB device mode switch */