Rename api-hal to furi-hal (#629)
This commit is contained in:
		
							parent
							
								
									7907cb232b
								
							
						
					
					
						commit
						0a97d6913c
					
				
							
								
								
									
										64
									
								
								ReadMe.md
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								ReadMe.md
									
									
									
									
									
								
							| @ -66,3 +66,67 @@ One liner: `./flash_core1_main.sh` | |||||||
| * Project website: [flipperzero.one](https://flipperzero.one) | * Project website: [flipperzero.one](https://flipperzero.one) | ||||||
| * Kickstarter page: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers) | * Kickstarter page: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers) | ||||||
| * Forum: [forum.flipperzero.one](https://forum.flipperzero.one/) | * Forum: [forum.flipperzero.one](https://forum.flipperzero.one/) | ||||||
|  | 
 | ||||||
|  | # Folders structure | ||||||
|  | 
 | ||||||
|  | - applications - application and services | ||||||
|  |  * accessor - Wiegand server | ||||||
|  |  * archive - Archive and file manager  | ||||||
|  |  * bt - BLE service and application | ||||||
|  |  * cli - Console service | ||||||
|  |  * debug_tools - different tools that we use on factory and for debug | ||||||
|  |  * dialogs - service for showing GUI dialogs | ||||||
|  |  * dolphin - dolphin service and supplientary apps | ||||||
|  |  * gpio-tester - GPIO control application | ||||||
|  |  * gui - GUI service | ||||||
|  |  * ibutton - ibutton application, onewire keys and more | ||||||
|  |  * input - input service | ||||||
|  |  * irda - irda application, controls your IR devices  | ||||||
|  |  * irda_monitor - irda debug tool  | ||||||
|  |  * lfrfid - LF RFID application | ||||||
|  |  * lfrfid-debug - LF RFID debug tool | ||||||
|  |  * loader - application loader service | ||||||
|  |  * menu - main menu service | ||||||
|  |  * music-player - music player app (demo) | ||||||
|  |  * nfc - NFC application, HF rfid, EMV and etc | ||||||
|  |  * notification - notification service  | ||||||
|  |  * power - power service | ||||||
|  |  * power-observer - power debug tool | ||||||
|  |  * scened-app-example - c++ application example  | ||||||
|  |  * storage - storage service, internal + sdcard | ||||||
|  |  * storage-settings - storage settings app | ||||||
|  |  * subghz - subghz application, 433 fobs and etc | ||||||
|  |  * tests - unit tests and etc | ||||||
|  | - assets - assets used by applications and services | ||||||
|  |  * compiled - compilation results | ||||||
|  |  * icons - source icons images | ||||||
|  | - bootloader - bootloader for flipper | ||||||
|  |  * src - bootloader sources | ||||||
|  |  * targets - targets' hal and implementation | ||||||
|  | - core - core libraries: home for furi | ||||||
|  | - debug - debug helpers, plugins and tools | ||||||
|  | - docker - docker image sources (used for automated firmware build) | ||||||
|  | - firmware - firmware for flipper | ||||||
|  |  * targets - targets' hal and implementation | ||||||
|  | - lib - different libraries and drivers that apps and firmware uses | ||||||
|  |  * ST25RFAL002 - ST253916 driver and NFC hal | ||||||
|  |  * STM32CubeWB - STM32WB hal | ||||||
|  |  * app-scened-template - scened template app library | ||||||
|  |  * app-template - template app library | ||||||
|  |  * callback-connector - callback connector library | ||||||
|  |  * common-api - common api delaration library | ||||||
|  |  * cyfral - cyfral library | ||||||
|  |  * drivers - drivers that we wrote | ||||||
|  |  * fatfs - external storage file system | ||||||
|  |  * fnv1a-hash - fnv1a hash library  | ||||||
|  |  * irda - irda library | ||||||
|  |  * littlefs - internal storage file system | ||||||
|  |  * mlib - algorithms and containers  | ||||||
|  |  * nfc_protocols - nfc protocols library | ||||||
|  |  * onewire - one wire library  | ||||||
|  |  * qrcode - qr code generator library | ||||||
|  |  * subghz - subghz library | ||||||
|  |  * toolbox - toolbox of things that we are using but don't place in core | ||||||
|  |  * u8g2 - graphics library that we use to draw GUI | ||||||
|  | - make - make helpers | ||||||
|  | - scripts - supplimentary scripts | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "accessor-app.h" | #include "accessor-app.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <stdarg.h> | #include <stdarg.h> | ||||||
| 
 | 
 | ||||||
| void AccessorApp::run(void) { | void AccessorApp::run(void) { | ||||||
| @ -33,16 +33,16 @@ void AccessorApp::run(void) { | |||||||
| 
 | 
 | ||||||
| AccessorApp::AccessorApp() | AccessorApp::AccessorApp() | ||||||
|     : onewire_master{&ibutton_gpio} { |     : onewire_master{&ibutton_gpio} { | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     notification = static_cast<NotificationApp*>(furi_record_open("notification")); |     notification = static_cast<NotificationApp*>(furi_record_open("notification")); | ||||||
|     notify_init(); |     notify_init(); | ||||||
|     api_hal_power_enable_otg(); |     furi_hal_power_enable_otg(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AccessorApp::~AccessorApp() { | AccessorApp::~AccessorApp() { | ||||||
|     api_hal_power_disable_otg(); |     furi_hal_power_disable_otg(); | ||||||
|     furi_record_close("notification"); |     furi_record_close("notification"); | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AccessorAppViewManager* AccessorApp::get_view_manager() { | AccessorAppViewManager* AccessorApp::get_view_manager() { | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "wiegand.h" | #include "wiegand.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| volatile unsigned long WIEGAND::_cardTempHigh = 0; | volatile unsigned long WIEGAND::_cardTempHigh = 0; | ||||||
| volatile unsigned long WIEGAND::_cardTemp = 0; | volatile unsigned long WIEGAND::_cardTemp = 0; | ||||||
|  | |||||||
| @ -153,24 +153,24 @@ int32_t bt_srv() { | |||||||
| 
 | 
 | ||||||
|     furi_record_create("bt", bt); |     furi_record_create("bt", bt); | ||||||
| 
 | 
 | ||||||
|     api_hal_bt_init(); |     furi_hal_bt_init(); | ||||||
|     BtMessage message; |     BtMessage message; | ||||||
|     while(1) { |     while(1) { | ||||||
|         furi_check(osMessageQueueGet(bt->message_queue, &message, NULL, osWaitForever) == osOK); |         furi_check(osMessageQueueGet(bt->message_queue, &message, NULL, osWaitForever) == osOK); | ||||||
|         if(message.type == BtMessageTypeStartTestCarrier) { |         if(message.type == BtMessageTypeStartTestCarrier) { | ||||||
|             // Start carrier test
 |             // Start carrier test
 | ||||||
|             api_hal_bt_stop_tone_tx(); |             furi_hal_bt_stop_tone_tx(); | ||||||
|             if(bt->state.type == BtStateCarrierTx) { |             if(bt->state.type == BtStateCarrierTx) { | ||||||
|                 api_hal_bt_start_tone_tx(message.param.channel, message.param.power); |                 furi_hal_bt_start_tone_tx(message.param.channel, message.param.power); | ||||||
|             } else if(bt->state.type == BtStateHoppingTx) { |             } else if(bt->state.type == BtStateHoppingTx) { | ||||||
|                 bt->state.param.channel = |                 bt->state.param.channel = | ||||||
|                     bt_switch_channel(InputKeyRight, bt->state.param.channel); |                     bt_switch_channel(InputKeyRight, bt->state.param.channel); | ||||||
|                 api_hal_bt_start_tone_tx(bt->state.param.channel, bt->state.param.power); |                 furi_hal_bt_start_tone_tx(bt->state.param.channel, bt->state.param.power); | ||||||
|             } else if(bt->state.type == BtStateCarrierRxStart) { |             } else if(bt->state.type == BtStateCarrierRxStart) { | ||||||
|                 api_hal_bt_start_packet_rx(bt->state.param.channel, bt->state.param.datarate); |                 furi_hal_bt_start_packet_rx(bt->state.param.channel, bt->state.param.datarate); | ||||||
|                 bt->state.type = BtStateCarrierRxRunning; |                 bt->state.type = BtStateCarrierRxRunning; | ||||||
|             } else if(bt->state.type == BtStateCarrierRxRunning) { |             } else if(bt->state.type == BtStateCarrierRxRunning) { | ||||||
|                 bt->state.param.rssi = api_hal_bt_get_rssi(); |                 bt->state.param.rssi = furi_hal_bt_get_rssi(); | ||||||
|             } |             } | ||||||
|             with_view_model( |             with_view_model( | ||||||
|                 bt->view_test_carrier, (BtViewTestCarrierModel * model) { |                 bt->view_test_carrier, (BtViewTestCarrierModel * model) { | ||||||
| @ -183,14 +183,14 @@ int32_t bt_srv() { | |||||||
|             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewTestCarrier); |             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewTestCarrier); | ||||||
|         } else if(message.type == BtMessageTypeStopTestCarrier) { |         } else if(message.type == BtMessageTypeStopTestCarrier) { | ||||||
|             if(bt->state.type == BtStateCarrierRxRunning) { |             if(bt->state.type == BtStateCarrierRxRunning) { | ||||||
|                 api_hal_bt_stop_packet_test(); |                 furi_hal_bt_stop_packet_test(); | ||||||
|             } else { |             } else { | ||||||
|                 api_hal_bt_stop_tone_tx(); |                 furi_hal_bt_stop_tone_tx(); | ||||||
|             } |             } | ||||||
|             bt->state.type = BtStateReady; |             bt->state.type = BtStateReady; | ||||||
|         } else if(message.type == BtMessageTypeSetupTestPacketTx) { |         } else if(message.type == BtMessageTypeSetupTestPacketTx) { | ||||||
|             // Update packet test setup
 |             // Update packet test setup
 | ||||||
|             api_hal_bt_stop_packet_test(); |             furi_hal_bt_stop_packet_test(); | ||||||
|             with_view_model( |             with_view_model( | ||||||
|                 bt->view_test_packet_tx, (BtViewTestPacketTxModel * model) { |                 bt->view_test_packet_tx, (BtViewTestPacketTxModel * model) { | ||||||
|                     model->type = bt->state.type; |                     model->type = bt->state.type; | ||||||
| @ -202,10 +202,10 @@ int32_t bt_srv() { | |||||||
|         } else if(message.type == BtMessageTypeStartTestPacketTx) { |         } else if(message.type == BtMessageTypeStartTestPacketTx) { | ||||||
|             // Start sending packets
 |             // Start sending packets
 | ||||||
|             if(bt->state.type == BtStatePacketStart) { |             if(bt->state.type == BtStatePacketStart) { | ||||||
|                 api_hal_bt_start_packet_tx(message.param.channel, 1, message.param.datarate); |                 furi_hal_bt_start_packet_tx(message.param.channel, 1, message.param.datarate); | ||||||
|             } else if(bt->state.type == BtStatePacketSetup) { |             } else if(bt->state.type == BtStatePacketSetup) { | ||||||
|                 api_hal_bt_stop_packet_test(); |                 furi_hal_bt_stop_packet_test(); | ||||||
|                 bt->state.param.packets_sent = api_hal_bt_get_transmitted_packets(); |                 bt->state.param.packets_sent = furi_hal_bt_get_transmitted_packets(); | ||||||
|             } |             } | ||||||
|             with_view_model( |             with_view_model( | ||||||
|                 bt->view_test_packet_tx, (BtViewTestPacketTxModel * model) { |                 bt->view_test_packet_tx, (BtViewTestPacketTxModel * model) { | ||||||
| @ -218,7 +218,7 @@ int32_t bt_srv() { | |||||||
|             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewTestPacketTx); |             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewTestPacketTx); | ||||||
|         } else if(message.type == BtMessageTypeSetupTestPacketRx) { |         } else if(message.type == BtMessageTypeSetupTestPacketRx) { | ||||||
|             // Update packet test setup
 |             // Update packet test setup
 | ||||||
|             api_hal_bt_stop_packet_test(); |             furi_hal_bt_stop_packet_test(); | ||||||
|             with_view_model( |             with_view_model( | ||||||
|                 bt->view_test_packet_rx, (BtViewTestPacketRxModel * model) { |                 bt->view_test_packet_rx, (BtViewTestPacketRxModel * model) { | ||||||
|                     model->type = bt->state.type; |                     model->type = bt->state.type; | ||||||
| @ -230,12 +230,12 @@ int32_t bt_srv() { | |||||||
|         } else if(message.type == BtMessageTypeStartTestPacketRx) { |         } else if(message.type == BtMessageTypeStartTestPacketRx) { | ||||||
|             // Start test rx
 |             // Start test rx
 | ||||||
|             if(bt->state.type == BtStatePacketStart) { |             if(bt->state.type == BtStatePacketStart) { | ||||||
|                 api_hal_bt_start_packet_rx(message.param.channel, message.param.datarate); |                 furi_hal_bt_start_packet_rx(message.param.channel, message.param.datarate); | ||||||
|                 bt->state.type = BtStatePacketRunning; |                 bt->state.type = BtStatePacketRunning; | ||||||
|             } else if(bt->state.type == BtStatePacketRunning) { |             } else if(bt->state.type == BtStatePacketRunning) { | ||||||
|                 bt->state.param.rssi = api_hal_bt_get_rssi(); |                 bt->state.param.rssi = furi_hal_bt_get_rssi(); | ||||||
|             } else if(bt->state.type == BtStatePacketSetup) { |             } else if(bt->state.type == BtStatePacketSetup) { | ||||||
|                 bt->state.param.packets_received = api_hal_bt_stop_packet_test(); |                 bt->state.param.packets_received = furi_hal_bt_stop_packet_test(); | ||||||
|             } |             } | ||||||
|             with_view_model( |             with_view_model( | ||||||
|                 bt->view_test_packet_rx, (BtViewTestPacketRxModel * model) { |                 bt->view_test_packet_rx, (BtViewTestPacketRxModel * model) { | ||||||
| @ -249,17 +249,17 @@ int32_t bt_srv() { | |||||||
|             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewTestPacketRx); |             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewTestPacketRx); | ||||||
|         } else if(message.type == BtMessageTypeStopTestPacket) { |         } else if(message.type == BtMessageTypeStopTestPacket) { | ||||||
|             // Stop test packet tx
 |             // Stop test packet tx
 | ||||||
|             api_hal_bt_stop_packet_test(); |             furi_hal_bt_stop_packet_test(); | ||||||
|             bt->state.type = BtStateReady; |             bt->state.type = BtStateReady; | ||||||
|         } else if(message.type == BtMessageTypeStartApp) { |         } else if(message.type == BtMessageTypeStartApp) { | ||||||
|             // Start app
 |             // Start app
 | ||||||
|             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewStartApp); |             view_dispatcher_switch_to_view(bt->view_dispatcher, BtViewStartApp); | ||||||
|             if(api_hal_bt_start_app()) { |             if(furi_hal_bt_start_app()) { | ||||||
|                 bt->state.type = BtStateStartedApp; |                 bt->state.type = BtStateStartedApp; | ||||||
|             } |             } | ||||||
|         } else if(message.type == BtMessageTypeUpdateStatusbar) { |         } else if(message.type == BtMessageTypeUpdateStatusbar) { | ||||||
|             // Update statusbar
 |             // Update statusbar
 | ||||||
|             view_port_enabled_set(bt->statusbar_view_port, api_hal_bt_is_alive()); |             view_port_enabled_set(bt->statusbar_view_port, furi_hal_bt_is_alive()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return 0; |     return 0; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "bt_cli.h" | #include "bt_cli.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| void bt_cli_init() { | void bt_cli_init() { | ||||||
|     Cli* cli = furi_record_open("cli"); |     Cli* cli = furi_record_open("cli"); | ||||||
| @ -17,7 +17,7 @@ void bt_cli_init() { | |||||||
| void bt_cli_command_info(Cli* cli, string_t args, void* context) { | void bt_cli_command_info(Cli* cli, string_t args, void* context) { | ||||||
|     string_t buffer; |     string_t buffer; | ||||||
|     string_init(buffer); |     string_init(buffer); | ||||||
|     api_hal_bt_dump_state(buffer); |     furi_hal_bt_dump_state(buffer); | ||||||
|     printf(string_get_cstr(buffer)); |     printf(string_get_cstr(buffer)); | ||||||
|     string_clear(buffer); |     string_clear(buffer); | ||||||
| } | } | ||||||
| @ -41,12 +41,12 @@ void bt_cli_command_carrier_tx(Cli* cli, string_t args, void* context) { | |||||||
|     } |     } | ||||||
|     printf("Transmitting carrier at %hu channel at %hu dB power\r\n", channel, power); |     printf("Transmitting carrier at %hu channel at %hu dB power\r\n", channel, power); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
|     api_hal_bt_start_tone_tx(channel, 0x19 + power); |     furi_hal_bt_start_tone_tx(channel, 0x19 + power); | ||||||
| 
 | 
 | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         osDelay(250); |         osDelay(250); | ||||||
|     } |     } | ||||||
|     api_hal_bt_stop_tone_tx(); |     furi_hal_bt_stop_tone_tx(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void bt_cli_command_carrier_rx(Cli* cli, string_t args, void* context) { | void bt_cli_command_carrier_rx(Cli* cli, string_t args, void* context) { | ||||||
| @ -64,15 +64,15 @@ void bt_cli_command_carrier_rx(Cli* cli, string_t args, void* context) { | |||||||
|     printf("Receiving carrier at %hu channel\r\n", channel); |     printf("Receiving carrier at %hu channel\r\n", channel); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
| 
 | 
 | ||||||
|     api_hal_bt_start_packet_rx(channel, 1); |     furi_hal_bt_start_packet_rx(channel, 1); | ||||||
| 
 | 
 | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         osDelay(1024 / 4); |         osDelay(1024 / 4); | ||||||
|         printf("RSSI: %6.1f dB\r", api_hal_bt_get_rssi()); |         printf("RSSI: %6.1f dB\r", furi_hal_bt_get_rssi()); | ||||||
|         fflush(stdout); |         fflush(stdout); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     api_hal_bt_stop_packet_test(); |     furi_hal_bt_stop_packet_test(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void bt_cli_command_packet_tx(Cli* cli, string_t args, void* context) { | void bt_cli_command_packet_tx(Cli* cli, string_t args, void* context) { | ||||||
| @ -111,13 +111,13 @@ void bt_cli_command_packet_tx(Cli* cli, string_t args, void* context) { | |||||||
|         channel, |         channel, | ||||||
|         datarate); |         datarate); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
|     api_hal_bt_start_packet_tx(channel, pattern, datarate); |     furi_hal_bt_start_packet_tx(channel, pattern, datarate); | ||||||
| 
 | 
 | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         osDelay(250); |         osDelay(250); | ||||||
|     } |     } | ||||||
|     api_hal_bt_stop_packet_test(); |     furi_hal_bt_stop_packet_test(); | ||||||
|     printf("Transmitted %lu packets", api_hal_bt_get_transmitted_packets()); |     printf("Transmitted %lu packets", furi_hal_bt_get_transmitted_packets()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void bt_cli_command_packet_rx(Cli* cli, string_t args, void* context) { | void bt_cli_command_packet_rx(Cli* cli, string_t args, void* context) { | ||||||
| @ -139,15 +139,15 @@ void bt_cli_command_packet_rx(Cli* cli, string_t args, void* context) { | |||||||
|     } |     } | ||||||
|     printf("Receiving packets at %hu channel at %hu M datarate\r\n", channel, datarate); |     printf("Receiving packets at %hu channel at %hu M datarate\r\n", channel, datarate); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
|     api_hal_bt_start_packet_rx(channel, datarate); |     furi_hal_bt_start_packet_rx(channel, datarate); | ||||||
| 
 | 
 | ||||||
|     float rssi_raw = 0; |     float rssi_raw = 0; | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         osDelay(250); |         osDelay(250); | ||||||
|         rssi_raw = api_hal_bt_get_rssi(); |         rssi_raw = furi_hal_bt_get_rssi(); | ||||||
|         printf("RSSI: %03.1f dB\r", rssi_raw); |         printf("RSSI: %03.1f dB\r", rssi_raw); | ||||||
|         fflush(stdout); |         fflush(stdout); | ||||||
|     } |     } | ||||||
|     uint16_t packets_received = api_hal_bt_stop_packet_test(); |     uint16_t packets_received = furi_hal_bt_stop_packet_test(); | ||||||
|     printf("Received %hu packets", packets_received); |     printf("Received %hu packets", packets_received); | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ | |||||||
| #include "bt_types.h" | #include "bt_types.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <cli/cli.h> | #include <cli/cli.h> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "cli_i.h" | #include "cli_i.h" | ||||||
| #include "cli_commands.h" | #include "cli_commands.h" | ||||||
| 
 | 
 | ||||||
| #include <api-hal-version.h> | #include <furi-hal-version.h> | ||||||
| #include <loader/loader.h> | #include <loader/loader.h> | ||||||
| 
 | 
 | ||||||
| Cli* cli_alloc() { | Cli* cli_alloc() { | ||||||
| @ -30,33 +30,33 @@ void cli_free(Cli* cli) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void cli_putc(char c) { | void cli_putc(char c) { | ||||||
|     api_hal_vcp_tx((uint8_t*)&c, 1); |     furi_hal_vcp_tx((uint8_t*)&c, 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char cli_getc(Cli* cli) { | char cli_getc(Cli* cli) { | ||||||
|     furi_assert(cli); |     furi_assert(cli); | ||||||
|     char c; |     char c; | ||||||
|     if(api_hal_vcp_rx((uint8_t*)&c, 1) == 0) { |     if(furi_hal_vcp_rx((uint8_t*)&c, 1) == 0) { | ||||||
|         cli_reset(cli); |         cli_reset(cli); | ||||||
|     } |     } | ||||||
|     return c; |     return c; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void cli_stdout_callback(void* _cookie, const char* data, size_t size) { | void cli_stdout_callback(void* _cookie, const char* data, size_t size) { | ||||||
|     api_hal_vcp_tx((const uint8_t*)data, size); |     furi_hal_vcp_tx((const uint8_t*)data, size); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void cli_write(Cli* cli, uint8_t* buffer, size_t size) { | void cli_write(Cli* cli, uint8_t* buffer, size_t size) { | ||||||
|     return api_hal_vcp_tx(buffer, size); |     return furi_hal_vcp_tx(buffer, size); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| size_t cli_read(Cli* cli, uint8_t* buffer, size_t size) { | size_t cli_read(Cli* cli, uint8_t* buffer, size_t size) { | ||||||
|     return api_hal_vcp_rx(buffer, size); |     return furi_hal_vcp_rx(buffer, size); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool cli_cmd_interrupt_received(Cli* cli) { | bool cli_cmd_interrupt_received(Cli* cli) { | ||||||
|     char c = '\0'; |     char c = '\0'; | ||||||
|     if(api_hal_vcp_rx_with_timeout((uint8_t*)&c, 1, 0) == 1) { |     if(furi_hal_vcp_rx_with_timeout((uint8_t*)&c, 1, 0) == 1) { | ||||||
|         return c == CliSymbolAsciiETX; |         return c == CliSymbolAsciiETX; | ||||||
|     } else { |     } else { | ||||||
|         return false; |         return false; | ||||||
| @ -92,7 +92,7 @@ void cli_motd() { | |||||||
|            "Read Manual https://docs.flipperzero.one\r\n" |            "Read Manual https://docs.flipperzero.one\r\n" | ||||||
|            "\r\n"); |            "\r\n"); | ||||||
| 
 | 
 | ||||||
|     const Version* firmware_version = api_hal_version_get_firmware_version(); |     const Version* firmware_version = furi_hal_version_get_firmware_version(); | ||||||
|     if(firmware_version) { |     if(firmware_version) { | ||||||
|         printf( |         printf( | ||||||
|             "Firmware version: %s %s (%s built on %s)\r\n", |             "Firmware version: %s %s (%s built on %s)\r\n", | ||||||
| @ -143,7 +143,7 @@ static void cli_normalize_line(Cli* cli) { | |||||||
| 
 | 
 | ||||||
| static void cli_execute_command(Cli* cli, CliCommand* command, string_t args) { | static void cli_execute_command(Cli* cli, CliCommand* command, string_t args) { | ||||||
|     if(!(command->flags & CliCommandFlagInsomniaSafe)) { |     if(!(command->flags & CliCommandFlagInsomniaSafe)) { | ||||||
|         api_hal_power_insomnia_enter(); |         furi_hal_power_insomnia_enter(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Ensure that we running alone
 |     // Ensure that we running alone
 | ||||||
| @ -164,7 +164,7 @@ static void cli_execute_command(Cli* cli, CliCommand* command, string_t args) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if(!(command->flags & CliCommandFlagInsomniaSafe)) { |     if(!(command->flags & CliCommandFlagInsomniaSafe)) { | ||||||
|         api_hal_power_insomnia_exit(); |         furi_hal_power_insomnia_exit(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -305,9 +305,9 @@ void cli_process_input(Cli* cli) { | |||||||
|     } else if(c == CliSymbolAsciiEOT) { |     } else if(c == CliSymbolAsciiEOT) { | ||||||
|         cli_reset(cli); |         cli_reset(cli); | ||||||
|     } else if(c == CliSymbolAsciiEsc) { |     } else if(c == CliSymbolAsciiEsc) { | ||||||
|         r = api_hal_vcp_rx((uint8_t*)&c, 1); |         r = furi_hal_vcp_rx((uint8_t*)&c, 1); | ||||||
|         if(r && c == '[') { |         if(r && c == '[') { | ||||||
|             api_hal_vcp_rx((uint8_t*)&c, 1); |             furi_hal_vcp_rx((uint8_t*)&c, 1); | ||||||
|             cli_handle_escape(cli, c); |             cli_handle_escape(cli, c); | ||||||
|         } else { |         } else { | ||||||
|             cli_putc(CliSymbolAsciiBell); |             cli_putc(CliSymbolAsciiBell); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "cli_commands.h" | #include "cli_commands.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <api-hal-gpio.h> | #include <furi-hal-gpio.h> | ||||||
| #include <rtc.h> | #include <rtc.h> | ||||||
| #include <task-control-block.h> | #include <task-control-block.h> | ||||||
| #include <time.h> | #include <time.h> | ||||||
| @ -14,33 +14,33 @@ | |||||||
|  */ |  */ | ||||||
| void cli_command_device_info(Cli* cli, string_t args, void* context) { | void cli_command_device_info(Cli* cli, string_t args, void* context) { | ||||||
|     // Model name
 |     // Model name
 | ||||||
|     printf("hardware_model      : %s\r\n", api_hal_version_get_model_name()); |     printf("hardware_model      : %s\r\n", furi_hal_version_get_model_name()); | ||||||
|     const char* name = api_hal_version_get_name_ptr(); |     const char* name = furi_hal_version_get_name_ptr(); | ||||||
|     if(name) { |     if(name) { | ||||||
|         printf("hardware_name       : %s\r\n", name); |         printf("hardware_name       : %s\r\n", name); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Unique ID
 |     // Unique ID
 | ||||||
|     printf("hardware_uid        : "); |     printf("hardware_uid        : "); | ||||||
|     const uint8_t* uid = api_hal_version_uid(); |     const uint8_t* uid = furi_hal_version_uid(); | ||||||
|     for(size_t i = 0; i < api_hal_version_uid_size(); i++) { |     for(size_t i = 0; i < furi_hal_version_uid_size(); i++) { | ||||||
|         printf("%02X", uid[i]); |         printf("%02X", uid[i]); | ||||||
|     } |     } | ||||||
|     printf("\r\n"); |     printf("\r\n"); | ||||||
| 
 | 
 | ||||||
|     // Board Revision
 |     // Board Revision
 | ||||||
|     printf("hardware_ver        : %d\r\n", api_hal_version_get_hw_version()); |     printf("hardware_ver        : %d\r\n", furi_hal_version_get_hw_version()); | ||||||
|     printf("hardware_target     : %d\r\n", api_hal_version_get_hw_target()); |     printf("hardware_target     : %d\r\n", furi_hal_version_get_hw_target()); | ||||||
|     printf("hardware_body       : %d\r\n", api_hal_version_get_hw_body()); |     printf("hardware_body       : %d\r\n", furi_hal_version_get_hw_body()); | ||||||
|     printf("hardware_connect    : %d\r\n", api_hal_version_get_hw_connect()); |     printf("hardware_connect    : %d\r\n", furi_hal_version_get_hw_connect()); | ||||||
|     printf("hardware_timestamp  : %lu\r\n", api_hal_version_get_hw_timestamp()); |     printf("hardware_timestamp  : %lu\r\n", furi_hal_version_get_hw_timestamp()); | ||||||
| 
 | 
 | ||||||
|     // Color and Region
 |     // Color and Region
 | ||||||
|     printf("hardware_color      : %d\r\n", api_hal_version_get_hw_color()); |     printf("hardware_color      : %d\r\n", furi_hal_version_get_hw_color()); | ||||||
|     printf("hardware_region     : %d\r\n", api_hal_version_get_hw_region()); |     printf("hardware_region     : %d\r\n", furi_hal_version_get_hw_region()); | ||||||
| 
 | 
 | ||||||
|     // Bootloader Version
 |     // Bootloader Version
 | ||||||
|     const Version* boot_version = api_hal_version_get_boot_version(); |     const Version* boot_version = furi_hal_version_get_boot_version(); | ||||||
|     if(boot_version) { |     if(boot_version) { | ||||||
|         printf("boot_version        : %s\r\n", version_get_version(boot_version)); |         printf("boot_version        : %s\r\n", version_get_version(boot_version)); | ||||||
|         printf("boot_commit         : %s\r\n", version_get_githash(boot_version)); |         printf("boot_commit         : %s\r\n", version_get_githash(boot_version)); | ||||||
| @ -49,7 +49,7 @@ void cli_command_device_info(Cli* cli, string_t args, void* context) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Firmware version
 |     // Firmware version
 | ||||||
|     const Version* firmware_version = api_hal_version_get_firmware_version(); |     const Version* firmware_version = furi_hal_version_get_firmware_version(); | ||||||
|     if(firmware_version) { |     if(firmware_version) { | ||||||
|         printf("firmware_version    : %s\r\n", version_get_version(firmware_version)); |         printf("firmware_version    : %s\r\n", version_get_version(firmware_version)); | ||||||
|         printf("firmware_commit     : %s\r\n", version_get_githash(firmware_version)); |         printf("firmware_commit     : %s\r\n", version_get_githash(firmware_version)); | ||||||
| @ -58,7 +58,7 @@ void cli_command_device_info(Cli* cli, string_t args, void* context) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     WirelessFwInfo_t pWirelessInfo; |     WirelessFwInfo_t pWirelessInfo; | ||||||
|     if(api_hal_bt_is_alive() && SHCI_GetWirelessFwInfo(&pWirelessInfo) == SHCI_Success) { |     if(furi_hal_bt_is_alive() && SHCI_GetWirelessFwInfo(&pWirelessInfo) == SHCI_Success) { | ||||||
|         printf("radio_alive         : true\r\n"); |         printf("radio_alive         : true\r\n"); | ||||||
|         // FUS Info
 |         // FUS Info
 | ||||||
|         printf("radio_fus_major     : %d\r\n", pWirelessInfo.FusVersionMajor); |         printf("radio_fus_major     : %d\r\n", pWirelessInfo.FusVersionMajor); | ||||||
| @ -80,7 +80,7 @@ void cli_command_device_info(Cli* cli, string_t args, void* context) { | |||||||
|         printf("radio_stack_flash   : %dK\r\n", pWirelessInfo.MemorySizeFlash * 4); |         printf("radio_stack_flash   : %dK\r\n", pWirelessInfo.MemorySizeFlash * 4); | ||||||
|         // Mac address
 |         // Mac address
 | ||||||
|         printf("radio_ble_mac       : "); |         printf("radio_ble_mac       : "); | ||||||
|         const uint8_t* ble_mac = api_hal_version_get_ble_mac(); |         const uint8_t* ble_mac = furi_hal_version_get_ble_mac(); | ||||||
|         for(size_t i = 0; i < 6; i++) { |         for(size_t i = 0; i < 6; i++) { | ||||||
|             printf("%02X", ble_mac[i]); |             printf("%02X", ble_mac[i]); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| #include "cli.h" | #include "cli.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <m-dict.h> | #include <m-dict.h> | ||||||
| #include <m-bptree.h> | #include <m-bptree.h> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
|  | |||||||
| @ -411,7 +411,7 @@ int32_t dolphin_srv() { | |||||||
| 
 | 
 | ||||||
|     furi_record_create("dolphin", dolphin); |     furi_record_create("dolphin", dolphin); | ||||||
| 
 | 
 | ||||||
|     if(!api_hal_version_do_i_belong_here()) { |     if(!furi_hal_version_do_i_belong_here()) { | ||||||
|         view_dispatcher_switch_to_view(dolphin->idle_view_dispatcher, DolphinViewHwMismatch); |         view_dispatcher_switch_to_view(dolphin->idle_view_dispatcher, DolphinViewHwMismatch); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ | |||||||
| #include "dolphin_views.h" | #include "dolphin_views.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <gui/view_dispatcher.h> | #include <gui/view_dispatcher.h> | ||||||
| #include <gui/canvas.h> | #include <gui/canvas.h> | ||||||
|  | |||||||
| @ -2,8 +2,8 @@ | |||||||
| #include <gui/view.h> | #include <gui/view.h> | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <gui/elements.h> | #include <gui/elements.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <api-hal-version.h> | #include <furi-hal-version.h> | ||||||
| 
 | 
 | ||||||
| static char* Lockmenu_Items[3] = {"Lock", "Set PIN", "DUMB mode"}; | static char* Lockmenu_Items[3] = {"Lock", "Set PIN", "DUMB mode"}; | ||||||
| 
 | 
 | ||||||
| @ -14,7 +14,7 @@ void dolphin_view_first_start_draw(Canvas* canvas, void* model) { | |||||||
|     canvas_set_font(canvas, FontSecondary); |     canvas_set_font(canvas, FontSecondary); | ||||||
|     uint8_t width = canvas_width(canvas); |     uint8_t width = canvas_width(canvas); | ||||||
|     uint8_t height = canvas_height(canvas); |     uint8_t height = canvas_height(canvas); | ||||||
|     const char* my_name = api_hal_version_get_name_ptr(); |     const char* my_name = furi_hal_version_get_name_ptr(); | ||||||
|     if(m->page == 0) { |     if(m->page == 0) { | ||||||
|         canvas_draw_icon(canvas, 0, height - 48, &I_DolphinFirstStart0_70x53); |         canvas_draw_icon(canvas, 0, height - 48, &I_DolphinFirstStart0_70x53); | ||||||
|         elements_multiline_text_framed(canvas, 75, 20, "Hey m8,\npress > to\ncontinue"); |         elements_multiline_text_framed(canvas, 75, 20, "Hey m8,\npress > to\ncontinue"); | ||||||
| @ -119,20 +119,20 @@ void dolphin_view_idle_down_draw(Canvas* canvas, void* model) { | |||||||
| 
 | 
 | ||||||
|     if(m->screen != DolphinViewStatsMeta) { |     if(m->screen != DolphinViewStatsMeta) { | ||||||
|         // Hardware version
 |         // Hardware version
 | ||||||
|         const char* my_name = api_hal_version_get_name_ptr(); |         const char* my_name = furi_hal_version_get_name_ptr(); | ||||||
|         snprintf( |         snprintf( | ||||||
|             buffer, |             buffer, | ||||||
|             sizeof(buffer), |             sizeof(buffer), | ||||||
|             "HW: %d.F%dB%dC%d %s", |             "HW: %d.F%dB%dC%d %s", | ||||||
|             api_hal_version_get_hw_version(), |             furi_hal_version_get_hw_version(), | ||||||
|             api_hal_version_get_hw_target(), |             furi_hal_version_get_hw_target(), | ||||||
|             api_hal_version_get_hw_body(), |             furi_hal_version_get_hw_body(), | ||||||
|             api_hal_version_get_hw_connect(), |             furi_hal_version_get_hw_connect(), | ||||||
|             my_name ? my_name : "Unknown"); |             my_name ? my_name : "Unknown"); | ||||||
|         canvas_draw_str(canvas, 5, 23, buffer); |         canvas_draw_str(canvas, 5, 23, buffer); | ||||||
| 
 | 
 | ||||||
|         ver = m->screen == DolphinViewStatsBoot ? api_hal_version_get_boot_version() : |         ver = m->screen == DolphinViewStatsBoot ? furi_hal_version_get_boot_version() : | ||||||
|                                                   api_hal_version_get_firmware_version(); |                                                   furi_hal_version_get_firmware_version(); | ||||||
| 
 | 
 | ||||||
|         if(!ver) { |         if(!ver) { | ||||||
|             canvas_draw_str(canvas, 5, 33, "No info"); |             canvas_draw_str(canvas, 5, 33, "No info"); | ||||||
| @ -178,7 +178,7 @@ void dolphin_view_hw_mismatch_draw(Canvas* canvas, void* model) { | |||||||
| 
 | 
 | ||||||
|     char buffer[64]; |     char buffer[64]; | ||||||
|     canvas_set_font(canvas, FontSecondary); |     canvas_set_font(canvas, FontSecondary); | ||||||
|     snprintf(buffer, 64, "HW target: F%d", api_hal_version_get_hw_target()); |     snprintf(buffer, 64, "HW target: F%d", furi_hal_version_get_hw_target()); | ||||||
|     canvas_draw_str(canvas, 5, 27, buffer); |     canvas_draw_str(canvas, 5, 27, buffer); | ||||||
|     canvas_draw_str(canvas, 5, 38, "FW target: " TARGET); |     canvas_draw_str(canvas, 5, 38, "FW target: " TARGET); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <api-hal-version.h> | #include <furi-hal-version.h> | ||||||
| #include "dolphin/dolphin.h" | #include "dolphin/dolphin.h" | ||||||
| #include "dolphin/dolphin_state.h" | #include "dolphin/dolphin_state.h" | ||||||
| #include "math.h" | #include "math.h" | ||||||
| @ -80,7 +80,7 @@ static void render_callback(Canvas* canvas, void* ctx) { | |||||||
|     canvas_draw_line(canvas, 59, 31, 124, 31); |     canvas_draw_line(canvas, 59, 31, 124, 31); | ||||||
|     canvas_draw_line(canvas, 59, 44, 124, 44); |     canvas_draw_line(canvas, 59, 44, 124, 44); | ||||||
| 
 | 
 | ||||||
|     const char* my_name = api_hal_version_get_name_ptr(); |     const char* my_name = furi_hal_version_get_name_ptr(); | ||||||
|     canvas_draw_str(canvas, 59, 15, my_name ? my_name : "Unknown"); |     canvas_draw_str(canvas, 59, 15, my_name ? my_name : "Unknown"); | ||||||
| 
 | 
 | ||||||
|     snprintf(level, 20, "Level: %ld", current_level); |     snprintf(level, 20, "Level: %ld", current_level); | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "scene.h" | #include "scene.h" | ||||||
| 
 | 
 | ||||||
| static SceneAppGui* scene_app_gui = NULL; | static SceneAppGui* scene_app_gui = NULL; | ||||||
| @ -109,7 +109,7 @@ void scene_free() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int32_t scene_app(void* p) { | int32_t scene_app(void* p) { | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     scene_alloc(); |     scene_alloc(); | ||||||
| 
 | 
 | ||||||
|     osTimerStart(scene_app_gui->timer, 40); |     osTimerStart(scene_app_gui->timer, 40); | ||||||
| @ -146,6 +146,6 @@ int32_t scene_app(void* p) { | |||||||
|     osDelay(15); |     osDelay(15); | ||||||
| 
 | 
 | ||||||
|     scene_free(); |     scene_free(); | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| #include "icon_animation_i.h" | #include "icon_animation_i.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| uint8_t u8g2_gpio_and_delay_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr); | uint8_t u8g2_gpio_and_delay_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr); | ||||||
| uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr); | uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr); | ||||||
| @ -11,7 +11,7 @@ uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ | |||||||
| Canvas* canvas_init() { | Canvas* canvas_init() { | ||||||
|     Canvas* canvas = furi_alloc(sizeof(Canvas)); |     Canvas* canvas = furi_alloc(sizeof(Canvas)); | ||||||
| 
 | 
 | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
| 
 | 
 | ||||||
|     canvas->orientation = CanvasOrientationHorizontal; |     canvas->orientation = CanvasOrientationHorizontal; | ||||||
|     u8g2_Setup_st7565_erc12864_alt_f( |     u8g2_Setup_st7565_erc12864_alt_f( | ||||||
| @ -24,7 +24,7 @@ Canvas* canvas_init() { | |||||||
|     u8g2_SetPowerSave(&canvas->fb, 0); |     u8g2_SetPowerSave(&canvas->fb, 0); | ||||||
|     u8g2_SendBuffer(&canvas->fb); |     u8g2_SendBuffer(&canvas->fb); | ||||||
| 
 | 
 | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
| 
 | 
 | ||||||
|     return canvas; |     return canvas; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "button_panel.h" | #include "button_panel.h" | ||||||
| #include "api-hal-resources.h" | #include "furi-hal-resources.h" | ||||||
| #include "gui/canvas.h" | #include "gui/canvas.h" | ||||||
| #include <m-array.h> | #include <m-array.h> | ||||||
| #include <m-i-list.h> | #include <m-i-list.h> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| #include "u8g2/u8g2.h" | #include "u8g2/u8g2.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| 
 | 
 | ||||||
| static ApiHalSpiDevice* u8g2_periphery_display = NULL; | static FuriHalSpiDevice* u8g2_periphery_display = NULL; | ||||||
| 
 | 
 | ||||||
| uint8_t u8g2_gpio_and_delay_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr) { | uint8_t u8g2_gpio_and_delay_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr) { | ||||||
|     switch(msg) { |     switch(msg) { | ||||||
| @ -36,7 +36,7 @@ uint8_t u8g2_gpio_and_delay_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, vo | |||||||
| uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr) { | uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ptr) { | ||||||
|     switch(msg) { |     switch(msg) { | ||||||
|     case U8X8_MSG_BYTE_SEND: |     case U8X8_MSG_BYTE_SEND: | ||||||
|         api_hal_spi_bus_tx(u8g2_periphery_display->bus, (uint8_t*)arg_ptr, arg_int, 10000); |         furi_hal_spi_bus_tx(u8g2_periphery_display->bus, (uint8_t*)arg_ptr, arg_int, 10000); | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|     case U8X8_MSG_BYTE_SET_DC: |     case U8X8_MSG_BYTE_SET_DC: | ||||||
| @ -49,14 +49,14 @@ uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ | |||||||
|     case U8X8_MSG_BYTE_START_TRANSFER: |     case U8X8_MSG_BYTE_START_TRANSFER: | ||||||
|         furi_assert(u8g2_periphery_display == NULL); |         furi_assert(u8g2_periphery_display == NULL); | ||||||
|         u8g2_periphery_display = |         u8g2_periphery_display = | ||||||
|             (ApiHalSpiDevice*)api_hal_spi_device_get(ApiHalSpiDeviceIdDisplay); |             (FuriHalSpiDevice*)furi_hal_spi_device_get(FuriHalSpiDeviceIdDisplay); | ||||||
|         hal_gpio_write(u8g2_periphery_display->chip_select, false); |         hal_gpio_write(u8g2_periphery_display->chip_select, false); | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|     case U8X8_MSG_BYTE_END_TRANSFER: |     case U8X8_MSG_BYTE_END_TRANSFER: | ||||||
|         furi_assert(u8g2_periphery_display); |         furi_assert(u8g2_periphery_display); | ||||||
|         hal_gpio_write(u8g2_periphery_display->chip_select, true); |         hal_gpio_write(u8g2_periphery_display->chip_select, true); | ||||||
|         api_hal_spi_device_return(u8g2_periphery_display); |         furi_hal_spi_device_return(u8g2_periphery_display); | ||||||
|         u8g2_periphery_display = NULL; |         u8g2_periphery_display = NULL; | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -183,12 +183,12 @@ void KeyReader::switch_mode_if_needed() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void KeyReader::start() { | void KeyReader::start() { | ||||||
|     api_hal_power_enable_otg(); |     furi_hal_power_enable_otg(); | ||||||
|     switch_to(ReadMode::CYFRAL_METAKOM); |     switch_to(ReadMode::CYFRAL_METAKOM); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void KeyReader::stop() { | void KeyReader::stop() { | ||||||
|     api_hal_power_disable_otg(); |     furi_hal_power_disable_otg(); | ||||||
|     onewire_master->stop(); |     onewire_master->stop(); | ||||||
|     stop_comaparator(); |     stop_comaparator(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,12 +14,12 @@ KeyWriter::Error KeyWriter::write(iButtonKey* key) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void KeyWriter::start() { | void KeyWriter::start() { | ||||||
|     api_hal_power_enable_otg(); |     furi_hal_power_enable_otg(); | ||||||
|     onewire_master->start(); |     onewire_master->start(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void KeyWriter::stop() { | void KeyWriter::stop() { | ||||||
|     api_hal_power_disable_otg(); |     furi_hal_power_disable_otg(); | ||||||
|     onewire_master->stop(); |     onewire_master->stop(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "pulse-sequencer.h" | #include "pulse-sequencer.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <callback-connector.h> | #include <callback-connector.h> | ||||||
| #include <api-hal-resources.h> | #include <furi-hal-resources.h> | ||||||
| 
 | 
 | ||||||
| void PulseSequencer::set_periods( | void PulseSequencer::set_periods( | ||||||
|     uint32_t* _periods, |     uint32_t* _periods, | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ void iButtonApp::run(void* args) { | |||||||
| 
 | 
 | ||||||
| iButtonApp::iButtonApp() | iButtonApp::iButtonApp() | ||||||
|     : notification{"notification"} { |     : notification{"notification"} { | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     key_worker = new KeyWorker(&ibutton_gpio); |     key_worker = new KeyWorker(&ibutton_gpio); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -49,7 +49,7 @@ iButtonApp::~iButtonApp() { | |||||||
|     } |     } | ||||||
|     delete key_worker; |     delete key_worker; | ||||||
| 
 | 
 | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| iButtonAppViewManager* iButtonApp::get_view_manager() { | iButtonAppViewManager* iButtonApp::get_view_manager() { | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <stdarg.h> | #include <stdarg.h> | ||||||
| #include <cli/cli.h> | #include <cli/cli.h> | ||||||
| #include <lib/toolbox/args.h> | #include <lib/toolbox/args.h> | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <api-hal-resources.h> | #include <furi-hal-resources.h> | ||||||
| 
 | 
 | ||||||
| /* Input Types
 | /* Input Types
 | ||||||
|  * Some of them are physical events and some logical |  * Some of them are physical events and some logical | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <cli/cli.h> | #include <cli/cli.h> | ||||||
| #include <m-string.h> | #include <m-string.h> | ||||||
| #include <api-hal-gpio.h> | #include <furi-hal-gpio.h> | ||||||
| 
 | 
 | ||||||
| #define INPUT_DEBOUNCE_TICKS_HALF (INPUT_DEBOUNCE_TICKS / 2) | #define INPUT_DEBOUNCE_TICKS_HALF (INPUT_DEBOUNCE_TICKS / 2) | ||||||
| #define INPUT_PRESS_TICKS 150 | #define INPUT_PRESS_TICKS 150 | ||||||
|  | |||||||
| @ -1,11 +1,11 @@ | |||||||
| #include <api-hal-delay.h> | #include <furi-hal-delay.h> | ||||||
| #include <irda.h> | #include <irda.h> | ||||||
| #include <app-template.h> | #include <app-template.h> | ||||||
| #include <cli/cli.h> | #include <cli/cli.h> | ||||||
| #include <cmsis_os2.h> | #include <cmsis_os2.h> | ||||||
| #include <irda_worker.h> | #include <irda_worker.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal-irda.h> | #include <furi-hal-irda.h> | ||||||
| #include <sstream> | #include <sstream> | ||||||
| #include <string> | #include <string> | ||||||
| #include <m-string.h> | #include <m-string.h> | ||||||
| @ -48,7 +48,7 @@ static void signal_received_callback(void* context, IrdaWorkerSignal* received_s | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void irda_cli_start_ir_rx(Cli* cli, string_t args, void* context) { | static void irda_cli_start_ir_rx(Cli* cli, string_t args, void* context) { | ||||||
|     if(api_hal_irda_is_busy()) { |     if(furi_hal_irda_is_busy()) { | ||||||
|         printf("IRDA is busy. Exit."); |         printf("IRDA is busy. Exit."); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| @ -142,7 +142,7 @@ static bool parse_signal_raw( | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void irda_cli_start_ir_tx(Cli* cli, string_t args, void* context) { | static void irda_cli_start_ir_tx(Cli* cli, string_t args, void* context) { | ||||||
|     if(api_hal_irda_is_busy()) { |     if(furi_hal_irda_is_busy()) { | ||||||
|         printf("IRDA is busy. Exit."); |         printf("IRDA is busy. Exit."); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
| #include "../irda-app-event.hpp" | #include "../irda-app-event.hpp" | ||||||
| #include <api-hal-irda.h> | #include <furi-hal-irda.h> | ||||||
| #include "irda.h" | #include "irda.h" | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <string> | #include <string> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #include "api-hal-resources.h" | #include "furi-hal-resources.h" | ||||||
| #include "assets_icons.h" | #include "assets_icons.h" | ||||||
| #include "gui/canvas.h" | #include "gui/canvas.h" | ||||||
| #include "gui/view.h" | #include "gui/view.h" | ||||||
|  | |||||||
| @ -4,8 +4,8 @@ | |||||||
| #include <irda_worker.h> | #include <irda_worker.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal-irda.h> | #include <furi-hal-irda.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <gui/view_port.h> | #include <gui/view_port.h> | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <gui/elements.h> | #include <gui/elements.h> | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <generic-scene.hpp> | #include <generic-scene.hpp> | ||||||
| #include <scene-controller.hpp> | #include <scene-controller.hpp> | ||||||
|  | |||||||
| @ -3,9 +3,9 @@ | |||||||
| void LfRfidDebugAppSceneTune::on_enter(LfRfidDebugApp* app, bool need_restore) { | void LfRfidDebugAppSceneTune::on_enter(LfRfidDebugApp* app, bool need_restore) { | ||||||
|     app->view_controller.switch_to<LfRfidViewTuneVM>(); |     app->view_controller.switch_to<LfRfidViewTuneVM>(); | ||||||
| 
 | 
 | ||||||
|     api_hal_rfid_pins_read(); |     furi_hal_rfid_pins_read(); | ||||||
|     api_hal_rfid_tim_read(125000, 0.5); |     furi_hal_rfid_tim_read(125000, 0.5); | ||||||
|     api_hal_rfid_tim_read_start(); |     furi_hal_rfid_tim_read_start(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool LfRfidDebugAppSceneTune::on_event(LfRfidDebugApp* app, LfRfidDebugApp::Event* event) { | bool LfRfidDebugAppSceneTune::on_event(LfRfidDebugApp* app, LfRfidDebugApp::Event* event) { | ||||||
| @ -14,15 +14,15 @@ bool LfRfidDebugAppSceneTune::on_event(LfRfidDebugApp* app, LfRfidDebugApp::Even | |||||||
|     LfRfidViewTuneVM* tune = app->view_controller; |     LfRfidViewTuneVM* tune = app->view_controller; | ||||||
| 
 | 
 | ||||||
|     if(tune->is_dirty()) { |     if(tune->is_dirty()) { | ||||||
|         api_hal_rfid_set_read_period(tune->get_ARR()); |         furi_hal_rfid_set_read_period(tune->get_ARR()); | ||||||
|         api_hal_rfid_set_read_pulse(tune->get_CCR()); |         furi_hal_rfid_set_read_pulse(tune->get_CCR()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return consumed; |     return consumed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void LfRfidDebugAppSceneTune::on_exit(LfRfidDebugApp* app) { | void LfRfidDebugAppSceneTune::on_exit(LfRfidDebugApp* app) { | ||||||
|     api_hal_rfid_tim_read_stop(); |     furi_hal_rfid_tim_read_stop(); | ||||||
|     api_hal_rfid_tim_reset(); |     furi_hal_rfid_tim_reset(); | ||||||
|     api_hal_rfid_pins_reset(); |     furi_hal_rfid_pins_reset(); | ||||||
| } | } | ||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "decoder-analyzer.h" | #include "decoder-analyzer.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| bool DecoderAnalyzer::read(uint8_t* _data, uint8_t _data_size) { | bool DecoderAnalyzer::read(uint8_t* _data, uint8_t _data_size) { | ||||||
|     bool result = false; |     bool result = false; | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "emmarine.h" | #include "emmarine.h" | ||||||
| #include "decoder-emmarine.h" | #include "decoder-emmarine.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| constexpr uint32_t clocks_in_us = 64; | constexpr uint32_t clocks_in_us = 64; | ||||||
| constexpr uint32_t short_time = 255 * clocks_in_us; | constexpr uint32_t short_time = 255 * clocks_in_us; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "decoder-gpio-out.h" | #include "decoder-gpio-out.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| void DecoderGpioOut::process_front(bool polarity, uint32_t time) { | void DecoderGpioOut::process_front(bool polarity, uint32_t time) { | ||||||
|     hal_gpio_write(&gpio_ext_pa7, polarity); |     hal_gpio_write(&gpio_ext_pa7, polarity); | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "decoder-hid26.h" | #include "decoder-hid26.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| constexpr uint32_t clocks_in_us = 64; | constexpr uint32_t clocks_in_us = 64; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "decoder-indala.h" | #include "decoder-indala.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| constexpr uint32_t clocks_in_us = 64; | constexpr uint32_t clocks_in_us = 64; | ||||||
| constexpr uint32_t us_per_bit = 255; | constexpr uint32_t us_per_bit = 255; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "rfid-reader.h" | #include "rfid-reader.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <stm32wbxx_ll_cortex.h> | #include <stm32wbxx_ll_cortex.h> | ||||||
| #include <tim.h> | #include <tim.h> | ||||||
| 
 | 
 | ||||||
| @ -49,11 +49,11 @@ void RfidReader::switch_mode() { | |||||||
|     switch(type) { |     switch(type) { | ||||||
|     case Type::Normal: |     case Type::Normal: | ||||||
|         type = Type::Indala; |         type = Type::Indala; | ||||||
|         api_hal_rfid_change_read_config(62500.0f, 0.25f); |         furi_hal_rfid_change_read_config(62500.0f, 0.25f); | ||||||
|         break; |         break; | ||||||
|     case Type::Indala: |     case Type::Indala: | ||||||
|         type = Type::Normal; |         type = Type::Normal; | ||||||
|         api_hal_rfid_change_read_config(125000.0f, 0.5f); |         furi_hal_rfid_change_read_config(125000.0f, 0.5f); | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -76,9 +76,9 @@ RfidReader::RfidReader() { | |||||||
| void RfidReader::start() { | void RfidReader::start() { | ||||||
|     type = Type::Normal; |     type = Type::Normal; | ||||||
| 
 | 
 | ||||||
|     api_hal_rfid_pins_read(); |     furi_hal_rfid_pins_read(); | ||||||
|     api_hal_rfid_tim_read(125000, 0.5); |     furi_hal_rfid_tim_read(125000, 0.5); | ||||||
|     api_hal_rfid_tim_read_start(); |     furi_hal_rfid_tim_read_start(); | ||||||
|     start_comparator(); |     start_comparator(); | ||||||
| 
 | 
 | ||||||
|     switch_timer_reset(); |     switch_timer_reset(); | ||||||
| @ -92,9 +92,9 @@ void RfidReader::start_forced(RfidReader::Type _type) { | |||||||
|         start(); |         start(); | ||||||
|         break; |         break; | ||||||
|     case Type::Indala: |     case Type::Indala: | ||||||
|         api_hal_rfid_pins_read(); |         furi_hal_rfid_pins_read(); | ||||||
|         api_hal_rfid_tim_read(62500.0f, 0.25f); |         furi_hal_rfid_tim_read(62500.0f, 0.25f); | ||||||
|         api_hal_rfid_tim_read_start(); |         furi_hal_rfid_tim_read_start(); | ||||||
|         start_comparator(); |         start_comparator(); | ||||||
| 
 | 
 | ||||||
|         switch_timer_reset(); |         switch_timer_reset(); | ||||||
| @ -104,9 +104,9 @@ void RfidReader::start_forced(RfidReader::Type _type) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidReader::stop() { | void RfidReader::stop() { | ||||||
|     api_hal_rfid_pins_reset(); |     furi_hal_rfid_pins_reset(); | ||||||
|     api_hal_rfid_tim_read_stop(); |     furi_hal_rfid_tim_read_stop(); | ||||||
|     api_hal_rfid_tim_reset(); |     furi_hal_rfid_tim_reset(); | ||||||
|     stop_comparator(); |     stop_comparator(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -21,12 +21,12 @@ void RfidTimerEmulator::start(LfrfidKeyType type, const uint8_t* data, uint8_t d | |||||||
|         if(data_size >= lfrfid_key_get_type_data_count(type)) { |         if(data_size >= lfrfid_key_get_type_data_count(type)) { | ||||||
|             current_encoder->init(data, data_size); |             current_encoder->init(data, data_size); | ||||||
| 
 | 
 | ||||||
|             api_hal_rfid_tim_emulate(125000); |             furi_hal_rfid_tim_emulate(125000); | ||||||
|             api_hal_rfid_pins_emulate(); |             furi_hal_rfid_pins_emulate(); | ||||||
| 
 | 
 | ||||||
|             api_interrupt_add(timer_update_callback, InterruptTypeTimerUpdate, this); |             api_interrupt_add(timer_update_callback, InterruptTypeTimerUpdate, this); | ||||||
| 
 | 
 | ||||||
|             api_hal_rfid_tim_emulate_start(); |             furi_hal_rfid_tim_emulate_start(); | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         // not found
 |         // not found
 | ||||||
| @ -34,18 +34,18 @@ void RfidTimerEmulator::start(LfrfidKeyType type, const uint8_t* data, uint8_t d | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidTimerEmulator::stop() { | void RfidTimerEmulator::stop() { | ||||||
|     api_hal_rfid_tim_emulate_stop(); |     furi_hal_rfid_tim_emulate_stop(); | ||||||
|     api_interrupt_remove(timer_update_callback, InterruptTypeTimerUpdate); |     api_interrupt_remove(timer_update_callback, InterruptTypeTimerUpdate); | ||||||
| 
 | 
 | ||||||
|     api_hal_rfid_tim_reset(); |     furi_hal_rfid_tim_reset(); | ||||||
|     api_hal_rfid_pins_reset(); |     furi_hal_rfid_pins_reset(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidTimerEmulator::timer_update_callback(void* _hw, void* ctx) { | void RfidTimerEmulator::timer_update_callback(void* _hw, void* ctx) { | ||||||
|     RfidTimerEmulator* _this = static_cast<RfidTimerEmulator*>(ctx); |     RfidTimerEmulator* _this = static_cast<RfidTimerEmulator*>(ctx); | ||||||
|     TIM_HandleTypeDef* hw = static_cast<TIM_HandleTypeDef*>(_hw); |     TIM_HandleTypeDef* hw = static_cast<TIM_HandleTypeDef*>(_hw); | ||||||
| 
 | 
 | ||||||
|     if(api_hal_rfid_is_tim_emulate(hw)) { |     if(furi_hal_rfid_is_tim_emulate(hw)) { | ||||||
|         bool result; |         bool result; | ||||||
|         bool polarity; |         bool polarity; | ||||||
|         uint16_t period; |         uint16_t period; | ||||||
| @ -58,7 +58,7 @@ void RfidTimerEmulator::timer_update_callback(void* _hw, void* ctx) { | |||||||
| 
 | 
 | ||||||
|         _this->pulse_joiner.pop_pulse(&period, &pulse); |         _this->pulse_joiner.pop_pulse(&period, &pulse); | ||||||
| 
 | 
 | ||||||
|         api_hal_rfid_set_emulate_period(period - 1); |         furi_hal_rfid_set_emulate_period(period - 1); | ||||||
|         api_hal_rfid_set_emulate_pulse(pulse); |         furi_hal_rfid_set_emulate_pulse(pulse); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #pragma once | #pragma once | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "key-info.h" | #include "key-info.h" | ||||||
| #include "encoder-generic.h" | #include "encoder-generic.h" | ||||||
| #include "encoder-emmarine.h" | #include "encoder-emmarine.h" | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "rfid-writer.h" | #include "rfid-writer.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "protocols/protocol-emmarin.h" | #include "protocols/protocol-emmarin.h" | ||||||
| #include "protocols/protocol-hid-h10301.h" | #include "protocols/protocol-hid-h10301.h" | ||||||
| #include "protocols/protocol-indala-40134.h" | #include "protocols/protocol-indala-40134.h" | ||||||
| @ -34,21 +34,21 @@ RfidWriter::~RfidWriter() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidWriter::start() { | void RfidWriter::start() { | ||||||
|     api_hal_rfid_tim_read(125000, 0.5); |     furi_hal_rfid_tim_read(125000, 0.5); | ||||||
|     api_hal_rfid_pins_read(); |     furi_hal_rfid_pins_read(); | ||||||
|     api_hal_rfid_tim_read_start(); |     furi_hal_rfid_tim_read_start(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidWriter::stop() { | void RfidWriter::stop() { | ||||||
|     api_hal_rfid_tim_read_stop(); |     furi_hal_rfid_tim_read_stop(); | ||||||
|     api_hal_rfid_tim_reset(); |     furi_hal_rfid_tim_reset(); | ||||||
|     api_hal_rfid_pins_reset(); |     furi_hal_rfid_pins_reset(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidWriter::write_gap(uint32_t gap_time) { | void RfidWriter::write_gap(uint32_t gap_time) { | ||||||
|     api_hal_rfid_tim_read_stop(); |     furi_hal_rfid_tim_read_stop(); | ||||||
|     delay_us(gap_time * 8); |     delay_us(gap_time * 8); | ||||||
|     api_hal_rfid_tim_read_start(); |     furi_hal_rfid_tim_read_start(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RfidWriter::write_bit(bool value) { | void RfidWriter::write_bit(bool value) { | ||||||
|  | |||||||
| @ -26,11 +26,11 @@ LfRfidApp::LfRfidApp() | |||||||
|     : scene_controller{this} |     : scene_controller{this} | ||||||
|     , notification{"notification"} |     , notification{"notification"} | ||||||
|     , text_store(40) { |     , text_store(40) { | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| LfRfidApp::~LfRfidApp() { | LfRfidApp::~LfRfidApp() { | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void LfRfidApp::run(void* _args) { | void LfRfidApp::run(void* _args) { | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <generic-scene.hpp> | #include <generic-scene.hpp> | ||||||
| #include <scene-controller.hpp> | #include <scene-controller.hpp> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <stdarg.h> | #include <stdarg.h> | ||||||
| #include <cli/cli.h> | #include <cli/cli.h> | ||||||
| #include <lib/toolbox/args.h> | #include <lib/toolbox/args.h> | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ static void loader_menu_callback(void* _ctx) { | |||||||
|             LOADER_LOG_TAG, "Can't start app. %s is running", loader_instance->current_app->name); |             LOADER_LOG_TAG, "Can't start app. %s is running", loader_instance->current_app->name); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     loader_instance->current_app = flipper_app; |     loader_instance->current_app = flipper_app; | ||||||
| 
 | 
 | ||||||
|     FURI_LOG_I( |     FURI_LOG_I( | ||||||
| @ -39,7 +39,7 @@ static void loader_cli_callback(Cli* cli, string_t args, void* _ctx) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     loader_instance->lock_semaphore++; |     loader_instance->lock_semaphore++; | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     loader_instance->current_app = flipper_app; |     loader_instance->current_app = flipper_app; | ||||||
|     printf("Starting furi application %s", loader_instance->current_app->name); |     printf("Starting furi application %s", loader_instance->current_app->name); | ||||||
|     furi_thread_set_name(loader_instance->thread, flipper_app->name); |     furi_thread_set_name(loader_instance->thread, flipper_app->name); | ||||||
| @ -133,7 +133,7 @@ static void loader_thread_state_callback(FuriThreadState thread_state, void* con | |||||||
|             "Application thread stopped. Heap allocation balance: %d. Thread allocation balance: %d.", |             "Application thread stopped. Heap allocation balance: %d. Thread allocation balance: %d.", | ||||||
|             heap_diff, |             heap_diff, | ||||||
|             furi_thread_get_heap_size(instance->thread)); |             furi_thread_get_heap_size(instance->thread)); | ||||||
|         api_hal_power_insomnia_exit(); |         furi_hal_power_insomnia_exit(); | ||||||
|         loader_unlock(instance); |         loader_unlock(instance); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "loader.h" | #include "loader.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <cli/cli.h> | #include <cli/cli.h> | ||||||
| #include <menu/menu.h> | #include <menu/menu.h> | ||||||
| #include <menu/menu_item.h> | #include <menu/menu_item.h> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "nfc_i.h" | #include "nfc_i.h" | ||||||
| #include "api-hal-nfc.h" | #include "furi-hal-nfc.h" | ||||||
| 
 | 
 | ||||||
| bool nfc_custom_event_callback(void* context, uint32_t event) { | bool nfc_custom_event_callback(void* context, uint32_t event) { | ||||||
|     furi_assert(context); |     furi_assert(context); | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "nfc_cli.h" | #include "nfc_cli.h" | ||||||
| #include "nfc_types.h" | #include "nfc_types.h" | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| void nfc_cli_init() { | void nfc_cli_init() { | ||||||
|     Cli* cli = furi_record_open("cli"); |     Cli* cli = furi_record_open("cli"); | ||||||
| @ -12,18 +12,18 @@ void nfc_cli_init() { | |||||||
| 
 | 
 | ||||||
| void nfc_cli_detect(Cli* cli, string_t args, void* context) { | void nfc_cli_detect(Cli* cli, string_t args, void* context) { | ||||||
|     // Check if nfc worker is not busy
 |     // Check if nfc worker is not busy
 | ||||||
|     if(api_hal_nfc_is_busy()) { |     if(furi_hal_nfc_is_busy()) { | ||||||
|         printf("Nfc is busy"); |         printf("Nfc is busy"); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     rfalNfcDevice* dev_list; |     rfalNfcDevice* dev_list; | ||||||
|     uint8_t dev_cnt = 0; |     uint8_t dev_cnt = 0; | ||||||
|     bool cmd_exit = false; |     bool cmd_exit = false; | ||||||
|     api_hal_nfc_exit_sleep(); |     furi_hal_nfc_exit_sleep(); | ||||||
|     printf("Detecting nfc...\r\nPress Ctrl+C to abort\r\n"); |     printf("Detecting nfc...\r\nPress Ctrl+C to abort\r\n"); | ||||||
|     while(!cmd_exit) { |     while(!cmd_exit) { | ||||||
|         cmd_exit |= cli_cmd_interrupt_received(cli); |         cmd_exit |= cli_cmd_interrupt_received(cli); | ||||||
|         cmd_exit |= api_hal_nfc_detect(&dev_list, &dev_cnt, 400, true); |         cmd_exit |= furi_hal_nfc_detect(&dev_list, &dev_cnt, 400, true); | ||||||
|         if(dev_cnt > 0) { |         if(dev_cnt > 0) { | ||||||
|             printf("Found %d devices\r\n", dev_cnt); |             printf("Found %d devices\r\n", dev_cnt); | ||||||
|             for(uint8_t i = 0; i < dev_cnt; i++) { |             for(uint8_t i = 0; i < dev_cnt; i++) { | ||||||
| @ -40,17 +40,17 @@ void nfc_cli_detect(Cli* cli, string_t args, void* context) { | |||||||
|         } |         } | ||||||
|         osDelay(50); |         osDelay(50); | ||||||
|     } |     } | ||||||
|     api_hal_nfc_deactivate(); |     furi_hal_nfc_deactivate(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void nfc_cli_emulate(Cli* cli, string_t args, void* context) { | void nfc_cli_emulate(Cli* cli, string_t args, void* context) { | ||||||
|     // Check if nfc worker is not busy
 |     // Check if nfc worker is not busy
 | ||||||
|     if(api_hal_nfc_is_busy()) { |     if(furi_hal_nfc_is_busy()) { | ||||||
|         printf("Nfc is busy"); |         printf("Nfc is busy"); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     api_hal_nfc_exit_sleep(); |     furi_hal_nfc_exit_sleep(); | ||||||
|     printf("Emulating NFC-A Type: T2T UID: CF72D440 SAK: 20 ATQA: 00/04\r\n"); |     printf("Emulating NFC-A Type: T2T UID: CF72D440 SAK: 20 ATQA: 00/04\r\n"); | ||||||
|     printf("Press Ctrl+C to abort\r\n"); |     printf("Press Ctrl+C to abort\r\n"); | ||||||
| 
 | 
 | ||||||
| @ -64,11 +64,11 @@ void nfc_cli_emulate(Cli* cli, string_t args, void* context) { | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         if(api_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, 100)) { |         if(furi_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, 100)) { | ||||||
|             printf("Reader detected\r\n"); |             printf("Reader detected\r\n"); | ||||||
|             api_hal_nfc_deactivate(); |             furi_hal_nfc_deactivate(); | ||||||
|         } |         } | ||||||
|         osDelay(50); |         osDelay(50); | ||||||
|     } |     } | ||||||
|     api_hal_nfc_deactivate(); |     furi_hal_nfc_deactivate(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "nfc_worker_i.h" | #include "nfc_worker_i.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "nfc_protocols/emv_decoder.h" | #include "nfc_protocols/emv_decoder.h" | ||||||
| #include "nfc_protocols/mifare_ultralight.h" | #include "nfc_protocols/mifare_ultralight.h" | ||||||
| 
 | 
 | ||||||
| @ -15,7 +15,7 @@ NfcWorker* nfc_worker_alloc() { | |||||||
|     nfc_worker->callback = NULL; |     nfc_worker->callback = NULL; | ||||||
|     nfc_worker->context = NULL; |     nfc_worker->context = NULL; | ||||||
|     // Initialize rfal
 |     // Initialize rfal
 | ||||||
|     if(!api_hal_nfc_is_busy()) { |     if(!furi_hal_nfc_is_busy()) { | ||||||
|         nfc_worker_change_state(nfc_worker, NfcWorkerStateReady); |         nfc_worker_change_state(nfc_worker, NfcWorkerStateReady); | ||||||
|     } else { |     } else { | ||||||
|         nfc_worker_change_state(nfc_worker, NfcWorkerStateBroken); |         nfc_worker_change_state(nfc_worker, NfcWorkerStateBroken); | ||||||
| @ -70,8 +70,8 @@ void nfc_worker_change_state(NfcWorker* nfc_worker, NfcWorkerState state) { | |||||||
| void nfc_worker_task(void* context) { | void nfc_worker_task(void* context) { | ||||||
|     NfcWorker* nfc_worker = context; |     NfcWorker* nfc_worker = context; | ||||||
| 
 | 
 | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     api_hal_nfc_exit_sleep(); |     furi_hal_nfc_exit_sleep(); | ||||||
| 
 | 
 | ||||||
|     if(nfc_worker->state == NfcWorkerStateDetect) { |     if(nfc_worker->state == NfcWorkerStateDetect) { | ||||||
|         nfc_worker_detect(nfc_worker); |         nfc_worker_detect(nfc_worker); | ||||||
| @ -90,9 +90,9 @@ void nfc_worker_task(void* context) { | |||||||
|     } else if(nfc_worker->state == NfcWorkerStateField) { |     } else if(nfc_worker->state == NfcWorkerStateField) { | ||||||
|         nfc_worker_field(nfc_worker); |         nfc_worker_field(nfc_worker); | ||||||
|     } |     } | ||||||
|     api_hal_nfc_deactivate(); |     furi_hal_nfc_deactivate(); | ||||||
|     nfc_worker_change_state(nfc_worker, NfcWorkerStateReady); |     nfc_worker_change_state(nfc_worker, NfcWorkerStateReady); | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
|     osThreadExit(); |     osThreadExit(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -103,7 +103,7 @@ void nfc_worker_detect(NfcWorker* nfc_worker) { | |||||||
|     NfcDeviceCommomData* result = &nfc_worker->dev_data->nfc_data; |     NfcDeviceCommomData* result = &nfc_worker->dev_data->nfc_data; | ||||||
| 
 | 
 | ||||||
|     while(nfc_worker->state == NfcWorkerStateDetect) { |     while(nfc_worker->state == NfcWorkerStateDetect) { | ||||||
|         if(api_hal_nfc_detect(&dev_list, &dev_cnt, 1000, true)) { |         if(furi_hal_nfc_detect(&dev_list, &dev_cnt, 1000, true)) { | ||||||
|             // Process first found device
 |             // Process first found device
 | ||||||
|             dev = &dev_list[0]; |             dev = &dev_list[0]; | ||||||
|             result->uid_len = dev->nfcidLen; |             result->uid_len = dev->nfcidLen; | ||||||
| @ -143,7 +143,7 @@ void nfc_worker_detect(NfcWorker* nfc_worker) { | |||||||
| void nfc_worker_emulate(NfcWorker* nfc_worker) { | void nfc_worker_emulate(NfcWorker* nfc_worker) { | ||||||
|     NfcDeviceCommomData* data = &nfc_worker->dev_data->nfc_data; |     NfcDeviceCommomData* data = &nfc_worker->dev_data->nfc_data; | ||||||
|     while(nfc_worker->state == NfcWorkerStateEmulate) { |     while(nfc_worker->state == NfcWorkerStateEmulate) { | ||||||
|         if(api_hal_nfc_listen(data->uid, data->uid_len, data->atqa, data->sak, 100)) { |         if(furi_hal_nfc_listen(data->uid, data->uid_len, data->atqa, data->sak, 100)) { | ||||||
|             FURI_LOG_I(NFC_WORKER_TAG, "Reader detected"); |             FURI_LOG_I(NFC_WORKER_TAG, "Reader detected"); | ||||||
|         } |         } | ||||||
|         osDelay(10); |         osDelay(10); | ||||||
| @ -163,7 +163,7 @@ void nfc_worker_read_emv_app(NfcWorker* nfc_worker) { | |||||||
| 
 | 
 | ||||||
|     while(nfc_worker->state == NfcWorkerStateReadEMVApp) { |     while(nfc_worker->state == NfcWorkerStateReadEMVApp) { | ||||||
|         memset(&emv_app, 0, sizeof(emv_app)); |         memset(&emv_app, 0, sizeof(emv_app)); | ||||||
|         if(api_hal_nfc_detect(&dev_list, &dev_cnt, 1000, false)) { |         if(furi_hal_nfc_detect(&dev_list, &dev_cnt, 1000, false)) { | ||||||
|             // Card was found. Check that it supports EMV
 |             // Card was found. Check that it supports EMV
 | ||||||
|             if(dev_list[0].rfInterface == RFAL_NFC_INTERFACE_ISODEP) { |             if(dev_list[0].rfInterface == RFAL_NFC_INTERFACE_ISODEP) { | ||||||
|                 result->nfc_data.uid_len = dev_list[0].dev.nfca.nfcId1Len; |                 result->nfc_data.uid_len = dev_list[0].dev.nfca.nfcId1Len; | ||||||
| @ -176,10 +176,10 @@ void nfc_worker_read_emv_app(NfcWorker* nfc_worker) { | |||||||
| 
 | 
 | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Send select PPSE command"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Send select PPSE command"); | ||||||
|                 tx_len = emv_prepare_select_ppse(tx_buff); |                 tx_len = emv_prepare_select_ppse(tx_buff); | ||||||
|                 err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |                 err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|                 if(err != ERR_NONE) { |                 if(err != ERR_NONE) { | ||||||
|                     FURI_LOG_E(NFC_WORKER_TAG, "Error during selection PPSE request: %d", err); |                     FURI_LOG_E(NFC_WORKER_TAG, "Error during selection PPSE request: %d", err); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|                 FURI_LOG_I( |                 FURI_LOG_I( | ||||||
| @ -195,18 +195,18 @@ void nfc_worker_read_emv_app(NfcWorker* nfc_worker) { | |||||||
|                     break; |                     break; | ||||||
|                 } else { |                 } else { | ||||||
|                     FURI_LOG_E(NFC_WORKER_TAG, "Can't find pay application"); |                     FURI_LOG_E(NFC_WORKER_TAG, "Can't find pay application"); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 // Can't find EMV card
 |                 // Can't find EMV card
 | ||||||
|                 FURI_LOG_W(NFC_WORKER_TAG, "Card doesn't support EMV"); |                 FURI_LOG_W(NFC_WORKER_TAG, "Card doesn't support EMV"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|             // Can't find EMV card
 |             // Can't find EMV card
 | ||||||
|             FURI_LOG_W(NFC_WORKER_TAG, "Can't find any cards"); |             FURI_LOG_W(NFC_WORKER_TAG, "Can't find any cards"); | ||||||
|             api_hal_nfc_deactivate(); |             furi_hal_nfc_deactivate(); | ||||||
|         } |         } | ||||||
|         osDelay(20); |         osDelay(20); | ||||||
|     } |     } | ||||||
| @ -225,7 +225,7 @@ void nfc_worker_read_emv(NfcWorker* nfc_worker) { | |||||||
| 
 | 
 | ||||||
|     while(nfc_worker->state == NfcWorkerStateReadEMV) { |     while(nfc_worker->state == NfcWorkerStateReadEMV) { | ||||||
|         memset(&emv_app, 0, sizeof(emv_app)); |         memset(&emv_app, 0, sizeof(emv_app)); | ||||||
|         if(api_hal_nfc_detect(&dev_list, &dev_cnt, 1000, false)) { |         if(furi_hal_nfc_detect(&dev_list, &dev_cnt, 1000, false)) { | ||||||
|             // Card was found. Check that it supports EMV
 |             // Card was found. Check that it supports EMV
 | ||||||
|             if(dev_list[0].rfInterface == RFAL_NFC_INTERFACE_ISODEP) { |             if(dev_list[0].rfInterface == RFAL_NFC_INTERFACE_ISODEP) { | ||||||
|                 result->nfc_data.uid_len = dev_list[0].dev.nfca.nfcId1Len; |                 result->nfc_data.uid_len = dev_list[0].dev.nfca.nfcId1Len; | ||||||
| @ -238,10 +238,10 @@ void nfc_worker_read_emv(NfcWorker* nfc_worker) { | |||||||
| 
 | 
 | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Send select PPSE command"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Send select PPSE command"); | ||||||
|                 tx_len = emv_prepare_select_ppse(tx_buff); |                 tx_len = emv_prepare_select_ppse(tx_buff); | ||||||
|                 err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |                 err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|                 if(err != ERR_NONE) { |                 if(err != ERR_NONE) { | ||||||
|                     FURI_LOG_E(NFC_WORKER_TAG, "Error during selection PPSE request: %d", err); |                     FURI_LOG_E(NFC_WORKER_TAG, "Error during selection PPSE request: %d", err); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|                 FURI_LOG_I( |                 FURI_LOG_I( | ||||||
| @ -250,16 +250,16 @@ void nfc_worker_read_emv(NfcWorker* nfc_worker) { | |||||||
|                     FURI_LOG_I(NFC_WORKER_TAG, "Select PPSE responce parced"); |                     FURI_LOG_I(NFC_WORKER_TAG, "Select PPSE responce parced"); | ||||||
|                 } else { |                 } else { | ||||||
|                     FURI_LOG_E(NFC_WORKER_TAG, "Can't find pay application"); |                     FURI_LOG_E(NFC_WORKER_TAG, "Can't find pay application"); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Starting application ..."); |                 FURI_LOG_I(NFC_WORKER_TAG, "Starting application ..."); | ||||||
|                 tx_len = emv_prepare_select_app(tx_buff, &emv_app); |                 tx_len = emv_prepare_select_app(tx_buff, &emv_app); | ||||||
|                 err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |                 err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|                 if(err != ERR_NONE) { |                 if(err != ERR_NONE) { | ||||||
|                     FURI_LOG_E( |                     FURI_LOG_E( | ||||||
|                         NFC_WORKER_TAG, "Error during application selection request: %d", err); |                         NFC_WORKER_TAG, "Error during application selection request: %d", err); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|                 FURI_LOG_I( |                 FURI_LOG_I( | ||||||
| @ -270,16 +270,16 @@ void nfc_worker_read_emv(NfcWorker* nfc_worker) { | |||||||
|                     memcpy(result->emv_data.name, emv_app.name, sizeof(emv_app.name)); |                     memcpy(result->emv_data.name, emv_app.name, sizeof(emv_app.name)); | ||||||
|                 } else { |                 } else { | ||||||
|                     FURI_LOG_E(NFC_WORKER_TAG, "Can't read card name"); |                     FURI_LOG_E(NFC_WORKER_TAG, "Can't read card name"); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Starting Get Processing Options command ..."); |                 FURI_LOG_I(NFC_WORKER_TAG, "Starting Get Processing Options command ..."); | ||||||
|                 tx_len = emv_prepare_get_proc_opt(tx_buff, &emv_app); |                 tx_len = emv_prepare_get_proc_opt(tx_buff, &emv_app); | ||||||
|                 err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |                 err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|                 if(err != ERR_NONE) { |                 if(err != ERR_NONE) { | ||||||
|                     FURI_LOG_E( |                     FURI_LOG_E( | ||||||
|                         NFC_WORKER_TAG, "Error during Get Processing Options command: %d", err); |                         NFC_WORKER_TAG, "Error during Get Processing Options command: %d", err); | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
|                 if(emv_decode_get_proc_opt(rx_buff, *rx_len, &emv_app)) { |                 if(emv_decode_get_proc_opt(rx_buff, *rx_len, &emv_app)) { | ||||||
| @ -303,7 +303,7 @@ void nfc_worker_read_emv(NfcWorker* nfc_worker) { | |||||||
|                         // Iterate over all records in file
 |                         // Iterate over all records in file
 | ||||||
|                         for(uint8_t record = record_start; record <= record_end; ++record) { |                         for(uint8_t record = record_start; record <= record_end; ++record) { | ||||||
|                             tx_len = emv_prepare_read_sfi_record(tx_buff, sfi, record); |                             tx_len = emv_prepare_read_sfi_record(tx_buff, sfi, record); | ||||||
|                             err = api_hal_nfc_data_exchange( |                             err = furi_hal_nfc_data_exchange( | ||||||
|                                 tx_buff, tx_len, &rx_buff, &rx_len, false); |                                 tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|                             if(err != ERR_NONE) { |                             if(err != ERR_NONE) { | ||||||
|                                 FURI_LOG_E( |                                 FURI_LOG_E( | ||||||
| @ -336,17 +336,17 @@ void nfc_worker_read_emv(NfcWorker* nfc_worker) { | |||||||
|                     } else { |                     } else { | ||||||
|                         FURI_LOG_E(NFC_WORKER_TAG, "Can't read card number"); |                         FURI_LOG_E(NFC_WORKER_TAG, "Can't read card number"); | ||||||
|                     } |                     } | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 // Can't find EMV card
 |                 // Can't find EMV card
 | ||||||
|                 FURI_LOG_W(NFC_WORKER_TAG, "Card doesn't support EMV"); |                 FURI_LOG_W(NFC_WORKER_TAG, "Card doesn't support EMV"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|             // Can't find EMV card
 |             // Can't find EMV card
 | ||||||
|             FURI_LOG_W(NFC_WORKER_TAG, "Can't find any cards"); |             FURI_LOG_W(NFC_WORKER_TAG, "Can't find any cards"); | ||||||
|             api_hal_nfc_deactivate(); |             furi_hal_nfc_deactivate(); | ||||||
|         } |         } | ||||||
|         osDelay(20); |         osDelay(20); | ||||||
|     } |     } | ||||||
| @ -406,47 +406,47 @@ void nfc_worker_emulate_apdu(NfcWorker* nfc_worker) { | |||||||
|         0x00, 0x00}; |         0x00, 0x00}; | ||||||
| 
 | 
 | ||||||
|     while(nfc_worker->state == NfcWorkerStateEmulateApdu) { |     while(nfc_worker->state == NfcWorkerStateEmulateApdu) { | ||||||
|         if(api_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, 300)) { |         if(furi_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, 300)) { | ||||||
|             FURI_LOG_I(NFC_WORKER_TAG, "POS terminal detected"); |             FURI_LOG_I(NFC_WORKER_TAG, "POS terminal detected"); | ||||||
|             // Read data from POS terminal
 |             // Read data from POS terminal
 | ||||||
|             err = api_hal_nfc_data_exchange(NULL, 0, &rx_buff, &rx_len, false); |             err = furi_hal_nfc_data_exchange(NULL, 0, &rx_buff, &rx_len, false); | ||||||
|             if(err == ERR_NONE) { |             if(err == ERR_NONE) { | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Received Select PPSE"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Received Select PPSE"); | ||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 1st data exchange: select PPSE"); |                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 1st data exchange: select PPSE"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|             FURI_LOG_I(NFC_WORKER_TAG, "Transive SELECT PPSE ANS"); |             FURI_LOG_I(NFC_WORKER_TAG, "Transive SELECT PPSE ANS"); | ||||||
|             tx_len = emv_select_ppse_ans(tx_buff); |             tx_len = emv_select_ppse_ans(tx_buff); | ||||||
|             err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |             err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|             if(err == ERR_NONE) { |             if(err == ERR_NONE) { | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Received Select APP"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Received Select APP"); | ||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 2nd data exchange: select APP"); |                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 2nd data exchange: select APP"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             FURI_LOG_I(NFC_WORKER_TAG, "Transive SELECT APP ANS"); |             FURI_LOG_I(NFC_WORKER_TAG, "Transive SELECT APP ANS"); | ||||||
|             tx_len = emv_select_app_ans(tx_buff); |             tx_len = emv_select_app_ans(tx_buff); | ||||||
|             err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |             err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|             if(err == ERR_NONE) { |             if(err == ERR_NONE) { | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Received PDOL"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Received PDOL"); | ||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 3rd data exchange: receive PDOL"); |                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 3rd data exchange: receive PDOL"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             FURI_LOG_I(NFC_WORKER_TAG, "Transive PDOL ANS"); |             FURI_LOG_I(NFC_WORKER_TAG, "Transive PDOL ANS"); | ||||||
|             tx_len = emv_get_proc_opt_ans(tx_buff); |             tx_len = emv_get_proc_opt_ans(tx_buff); | ||||||
|             err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |             err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|             if(err == ERR_NONE) { |             if(err == ERR_NONE) { | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Transive PDOL ANS"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Transive PDOL ANS"); | ||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 4rd data exchange: Transive PDOL ANS"); |                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 4rd data exchange: Transive PDOL ANS"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
| @ -455,13 +455,13 @@ void nfc_worker_emulate_apdu(NfcWorker* nfc_worker) { | |||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Correct debug message received"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Correct debug message received"); | ||||||
|                 tx_len = sizeof(debug_tx); |                 tx_len = sizeof(debug_tx); | ||||||
|                 err = api_hal_nfc_data_exchange( |                 err = furi_hal_nfc_data_exchange( | ||||||
|                     (uint8_t*)debug_tx, tx_len, &rx_buff, &rx_len, false); |                     (uint8_t*)debug_tx, tx_len, &rx_buff, &rx_len, false); | ||||||
|                 if(err == ERR_NONE) { |                 if(err == ERR_NONE) { | ||||||
|                     FURI_LOG_I(NFC_WORKER_TAG, "Transive Debug message"); |                     FURI_LOG_I(NFC_WORKER_TAG, "Transive Debug message"); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             api_hal_nfc_deactivate(); |             furi_hal_nfc_deactivate(); | ||||||
|         } else { |         } else { | ||||||
|             FURI_LOG_W(NFC_WORKER_TAG, "Can't find reader"); |             FURI_LOG_W(NFC_WORKER_TAG, "Can't find reader"); | ||||||
|         } |         } | ||||||
| @ -481,9 +481,9 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|     NfcDeviceData* result = nfc_worker->dev_data; |     NfcDeviceData* result = nfc_worker->dev_data; | ||||||
| 
 | 
 | ||||||
|     while(nfc_worker->state == NfcWorkerStateReadMifareUl) { |     while(nfc_worker->state == NfcWorkerStateReadMifareUl) { | ||||||
|         api_hal_nfc_deactivate(); |         furi_hal_nfc_deactivate(); | ||||||
|         memset(&mf_ul_read, 0, sizeof(mf_ul_read)); |         memset(&mf_ul_read, 0, sizeof(mf_ul_read)); | ||||||
|         if(api_hal_nfc_detect(&dev_list, &dev_cnt, 300, false)) { |         if(furi_hal_nfc_detect(&dev_list, &dev_cnt, 300, false)) { | ||||||
|             if(dev_list[0].type == RFAL_NFC_LISTEN_TYPE_NFCA && |             if(dev_list[0].type == RFAL_NFC_LISTEN_TYPE_NFCA && | ||||||
|                mf_ul_check_card_type( |                mf_ul_check_card_type( | ||||||
|                    dev_list[0].dev.nfca.sensRes.anticollisionInfo, |                    dev_list[0].dev.nfca.sensRes.anticollisionInfo, | ||||||
| @ -492,7 +492,7 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                 // Get Mifare Ultralight version
 |                 // Get Mifare Ultralight version
 | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Found Mifare Ultralight tag. Reading tag version"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Found Mifare Ultralight tag. Reading tag version"); | ||||||
|                 tx_len = mf_ul_prepare_get_version(tx_buff); |                 tx_len = mf_ul_prepare_get_version(tx_buff); | ||||||
|                 err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |                 err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|                 if(err == ERR_NONE) { |                 if(err == ERR_NONE) { | ||||||
|                     mf_ul_parse_get_version_response(rx_buff, &mf_ul_read); |                     mf_ul_parse_get_version_response(rx_buff, &mf_ul_read); | ||||||
|                     FURI_LOG_I( |                     FURI_LOG_I( | ||||||
| @ -507,8 +507,8 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                     err = ERR_NONE; |                     err = ERR_NONE; | ||||||
|                     mf_ul_set_default_version(&mf_ul_read); |                     mf_ul_set_default_version(&mf_ul_read); | ||||||
|                     // Reinit device
 |                     // Reinit device
 | ||||||
|                     api_hal_nfc_deactivate(); |                     furi_hal_nfc_deactivate(); | ||||||
|                     if(!api_hal_nfc_detect(&dev_list, &dev_cnt, 300, false)) { |                     if(!furi_hal_nfc_detect(&dev_list, &dev_cnt, 300, false)) { | ||||||
|                         FURI_LOG_E(NFC_WORKER_TAG, "Lost connection. Restarting search"); |                         FURI_LOG_E(NFC_WORKER_TAG, "Lost connection. Restarting search"); | ||||||
|                         continue; |                         continue; | ||||||
|                     } |                     } | ||||||
| @ -523,7 +523,7 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                 if(mf_ul_read.support_fast_read) { |                 if(mf_ul_read.support_fast_read) { | ||||||
|                     FURI_LOG_I(NFC_WORKER_TAG, "Reading pages ..."); |                     FURI_LOG_I(NFC_WORKER_TAG, "Reading pages ..."); | ||||||
|                     tx_len = mf_ul_prepare_fast_read(tx_buff, 0x00, mf_ul_read.pages_to_read - 1); |                     tx_len = mf_ul_prepare_fast_read(tx_buff, 0x00, mf_ul_read.pages_to_read - 1); | ||||||
|                     if(api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { |                     if(furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { | ||||||
|                         FURI_LOG_E(NFC_WORKER_TAG, "Failed reading pages"); |                         FURI_LOG_E(NFC_WORKER_TAG, "Failed reading pages"); | ||||||
|                         continue; |                         continue; | ||||||
|                     } else { |                     } else { | ||||||
| @ -533,7 +533,7 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
| 
 | 
 | ||||||
|                     FURI_LOG_I(NFC_WORKER_TAG, "Reading signature ..."); |                     FURI_LOG_I(NFC_WORKER_TAG, "Reading signature ..."); | ||||||
|                     tx_len = mf_ul_prepare_read_signature(tx_buff); |                     tx_len = mf_ul_prepare_read_signature(tx_buff); | ||||||
|                     if(api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { |                     if(furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { | ||||||
|                         FURI_LOG_W(NFC_WORKER_TAG, "Failed reading signature"); |                         FURI_LOG_W(NFC_WORKER_TAG, "Failed reading signature"); | ||||||
|                         memset(mf_ul_read.data.signature, 0, sizeof(mf_ul_read.data.signature)); |                         memset(mf_ul_read.data.signature, 0, sizeof(mf_ul_read.data.signature)); | ||||||
|                     } else { |                     } else { | ||||||
| @ -543,7 +543,7 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                     FURI_LOG_I(NFC_WORKER_TAG, "Reading 3 counters ..."); |                     FURI_LOG_I(NFC_WORKER_TAG, "Reading 3 counters ..."); | ||||||
|                     for(uint8_t i = 0; i < 3; i++) { |                     for(uint8_t i = 0; i < 3; i++) { | ||||||
|                         tx_len = mf_ul_prepare_read_cnt(tx_buff, i); |                         tx_len = mf_ul_prepare_read_cnt(tx_buff, i); | ||||||
|                         if(api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { |                         if(furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { | ||||||
|                             FURI_LOG_W(NFC_WORKER_TAG, "Failed reading Counter %d", i); |                             FURI_LOG_W(NFC_WORKER_TAG, "Failed reading Counter %d", i); | ||||||
|                             mf_ul_read.data.counter[i] = 0; |                             mf_ul_read.data.counter[i] = 0; | ||||||
|                         } else { |                         } else { | ||||||
| @ -554,7 +554,7 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                     FURI_LOG_I(NFC_WORKER_TAG, "Checking tearing flags ..."); |                     FURI_LOG_I(NFC_WORKER_TAG, "Checking tearing flags ..."); | ||||||
|                     for(uint8_t i = 0; i < 3; i++) { |                     for(uint8_t i = 0; i < 3; i++) { | ||||||
|                         tx_len = mf_ul_prepare_check_tearing(tx_buff, i); |                         tx_len = mf_ul_prepare_check_tearing(tx_buff, i); | ||||||
|                         if(api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { |                         if(furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { | ||||||
|                             FURI_LOG_E(NFC_WORKER_TAG, "Error checking tearing flag %d", i); |                             FURI_LOG_E(NFC_WORKER_TAG, "Error checking tearing flag %d", i); | ||||||
|                             mf_ul_read.data.tearing[i] = MF_UL_TEARING_FLAG_DEFAULT; |                             mf_ul_read.data.tearing[i] = MF_UL_TEARING_FLAG_DEFAULT; | ||||||
|                         } else { |                         } else { | ||||||
| @ -566,7 +566,7 @@ void nfc_worker_read_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                     for(uint8_t page = 0; page < mf_ul_read.pages_to_read; page += 4) { |                     for(uint8_t page = 0; page < mf_ul_read.pages_to_read; page += 4) { | ||||||
|                         FURI_LOG_I(NFC_WORKER_TAG, "Reading pages %d - %d ...", page, page + 3); |                         FURI_LOG_I(NFC_WORKER_TAG, "Reading pages %d - %d ...", page, page + 3); | ||||||
|                         tx_len = mf_ul_prepare_read(tx_buff, page); |                         tx_len = mf_ul_prepare_read(tx_buff, page); | ||||||
|                         if(api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { |                         if(furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false)) { | ||||||
|                             FURI_LOG_E( |                             FURI_LOG_E( | ||||||
|                                 NFC_WORKER_TAG, "Read pages %d - %d failed", page, page + 3); |                                 NFC_WORKER_TAG, "Read pages %d - %d failed", page, page + 3); | ||||||
|                             continue; |                             continue; | ||||||
| @ -610,7 +610,7 @@ void nfc_worker_emulate_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|     NfcDeviceData* data = nfc_worker->dev_data; |     NfcDeviceData* data = nfc_worker->dev_data; | ||||||
| 
 | 
 | ||||||
|     while(nfc_worker->state == NfcWorkerStateEmulateMifareUl) { |     while(nfc_worker->state == NfcWorkerStateEmulateMifareUl) { | ||||||
|         if(api_hal_nfc_listen( |         if(furi_hal_nfc_listen( | ||||||
|                data->nfc_data.uid, |                data->nfc_data.uid, | ||||||
|                data->nfc_data.uid_len, |                data->nfc_data.uid_len, | ||||||
|                data->nfc_data.atqa, |                data->nfc_data.atqa, | ||||||
| @ -620,7 +620,7 @@ void nfc_worker_emulate_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|             // Prepare version answer
 |             // Prepare version answer
 | ||||||
|             tx_len = sizeof(data->mf_ul_data.version); |             tx_len = sizeof(data->mf_ul_data.version); | ||||||
|             memcpy(tx_buff, &data->mf_ul_data.version, tx_len); |             memcpy(tx_buff, &data->mf_ul_data.version, tx_len); | ||||||
|             err = api_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); |             err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); | ||||||
|             if(err == ERR_NONE) { |             if(err == ERR_NONE) { | ||||||
|                 FURI_LOG_I(NFC_WORKER_TAG, "Received 1st message:"); |                 FURI_LOG_I(NFC_WORKER_TAG, "Received 1st message:"); | ||||||
|                 for(uint16_t i = 0; i < *rx_len; i++) { |                 for(uint16_t i = 0; i < *rx_len; i++) { | ||||||
| @ -629,7 +629,7 @@ void nfc_worker_emulate_mifare_ul(NfcWorker* nfc_worker) { | |||||||
|                 printf("\r\n"); |                 printf("\r\n"); | ||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 1st data exchange: select PPSE"); |                 FURI_LOG_E(NFC_WORKER_TAG, "Error in 1st data exchange: select PPSE"); | ||||||
|                 api_hal_nfc_deactivate(); |                 furi_hal_nfc_deactivate(); | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @ -639,9 +639,9 @@ void nfc_worker_emulate_mifare_ul(NfcWorker* nfc_worker) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void nfc_worker_field(NfcWorker* nfc_worker) { | void nfc_worker_field(NfcWorker* nfc_worker) { | ||||||
|     api_hal_nfc_field_on(); |     furi_hal_nfc_field_on(); | ||||||
|     while(nfc_worker->state == NfcWorkerStateField) { |     while(nfc_worker->state == NfcWorkerStateField) { | ||||||
|         osDelay(50); |         osDelay(50); | ||||||
|     } |     } | ||||||
|     api_hal_nfc_field_off(); |     furi_hal_nfc_field_off(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "notification.h" | #include "notification.h" | ||||||
| #include "notification-messages.h" | #include "notification-messages.h" | ||||||
| #include "notification-app.h" | #include "notification-app.h" | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <storage/storage.h> | #include <storage/storage.h> | ||||||
| #include "notification.h" | #include "notification.h" | ||||||
| #include "notification-messages.h" | #include "notification-messages.h" | ||||||
| @ -41,7 +41,7 @@ void notification_apply_internal_led_layer(NotificationLedLayer* layer, uint8_t | |||||||
| 
 | 
 | ||||||
|     // apply if current layer is internal
 |     // apply if current layer is internal
 | ||||||
|     if(layer->index == LayerInternal) { |     if(layer->index == LayerInternal) { | ||||||
|         api_hal_light_set(layer->light, layer->value[LayerInternal]); |         furi_hal_light_set(layer->light, layer->value[LayerInternal]); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -71,7 +71,7 @@ void notification_apply_notification_led_layer( | |||||||
|     // set layer
 |     // set layer
 | ||||||
|     layer->value[LayerNotification] = layer_value; |     layer->value[LayerNotification] = layer_value; | ||||||
|     // apply
 |     // apply
 | ||||||
|     api_hal_light_set(layer->light, layer->value[LayerNotification]); |     furi_hal_light_set(layer->light, layer->value[LayerNotification]); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void notification_reset_notification_led_layer(NotificationLedLayer* layer) { | void notification_reset_notification_led_layer(NotificationLedLayer* layer) { | ||||||
| @ -84,7 +84,7 @@ void notification_reset_notification_led_layer(NotificationLedLayer* layer) { | |||||||
|     layer->index = LayerInternal; |     layer->index = LayerInternal; | ||||||
| 
 | 
 | ||||||
|     // apply
 |     // apply
 | ||||||
|     api_hal_light_set(layer->light, layer->value[LayerInternal]); |     furi_hal_light_set(layer->light, layer->value[LayerInternal]); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void notification_reset_notification_layer(NotificationApp* app, uint8_t reset_mask) { | void notification_reset_notification_layer(NotificationApp* app, uint8_t reset_mask) { | ||||||
| @ -130,11 +130,11 @@ uint32_t notification_settings_display_off_delay_ticks(NotificationApp* app) { | |||||||
| 
 | 
 | ||||||
| // generics
 | // generics
 | ||||||
| void notification_vibro_on() { | void notification_vibro_on() { | ||||||
|     api_hal_vibro_on(true); |     furi_hal_vibro_on(true); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void notification_vibro_off() { | void notification_vibro_off() { | ||||||
|     api_hal_vibro_on(false); |     furi_hal_vibro_on(false); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void notification_sound_on(float pwm, float freq) { | void notification_sound_on(float pwm, float freq) { | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "notification.h" | #include "notification.h" | ||||||
| #include "notification-messages.h" | #include "notification-messages.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <notification/notification-messages.h> | #include <notification/notification-messages.h> | ||||||
| 
 | 
 | ||||||
| const NotificationMessage message_green_110 = { | const NotificationMessage message_green_110 = { | ||||||
| @ -20,7 +20,7 @@ int32_t power_observer_srv(void* p) { | |||||||
|     const float overconsumption_limit = 0.03f; |     const float overconsumption_limit = 0.03f; | ||||||
| 
 | 
 | ||||||
|     while(true) { |     while(true) { | ||||||
|         float current = -api_hal_power_get_battery_current(ApiHalPowerICFuelGauge); |         float current = -furi_hal_power_get_battery_current(FuriHalPowerICFuelGauge); | ||||||
| 
 | 
 | ||||||
|         if(current >= overconsumption_limit) { |         if(current >= overconsumption_limit) { | ||||||
|             notification_message_block(notifications, &sequence_overconsumption); |             notification_message_block(notifications, &sequence_overconsumption); | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| #include "power_views.h" | #include "power_views.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <menu/menu.h> | #include <menu/menu.h> | ||||||
| #include <menu/menu_item.h> | #include <menu/menu_item.h> | ||||||
| @ -86,11 +86,11 @@ void power_menu_reset_callback(void* context) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void power_menu_enable_otg_callback(void* context) { | void power_menu_enable_otg_callback(void* context) { | ||||||
|     api_hal_power_enable_otg(); |     furi_hal_power_enable_otg(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void power_menu_disable_otg_callback(void* context) { | void power_menu_disable_otg_callback(void* context) { | ||||||
|     api_hal_power_disable_otg(); |     furi_hal_power_disable_otg(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void power_menu_info_callback(void* context) { | void power_menu_info_callback(void* context) { | ||||||
| @ -157,22 +157,22 @@ void power_free(Power* power) { | |||||||
| 
 | 
 | ||||||
| void power_off(Power* power) { | void power_off(Power* power) { | ||||||
|     furi_assert(power); |     furi_assert(power); | ||||||
|     api_hal_power_off(); |     furi_hal_power_off(); | ||||||
|     view_dispatcher_switch_to_view(power->view_dispatcher, PowerViewDisconnect); |     view_dispatcher_switch_to_view(power->view_dispatcher, PowerViewDisconnect); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void power_reboot(Power* power, PowerBootMode mode) { | void power_reboot(Power* power, PowerBootMode mode) { | ||||||
|     if(mode == PowerBootModeNormal) { |     if(mode == PowerBootModeNormal) { | ||||||
|         api_hal_boot_set_mode(ApiHalBootModeNormal); |         furi_hal_boot_set_mode(FuriHalBootModeNormal); | ||||||
|     } else if(mode == PowerBootModeDfu) { |     } else if(mode == PowerBootModeDfu) { | ||||||
|         api_hal_boot_set_mode(ApiHalBootModeDFU); |         furi_hal_boot_set_mode(FuriHalBootModeDFU); | ||||||
|     } |     } | ||||||
|     api_hal_power_reset(); |     furi_hal_power_reset(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void power_charging_indication_handler(Power* power, NotificationApp* notifications) { | static void power_charging_indication_handler(Power* power, NotificationApp* notifications) { | ||||||
|     if(api_hal_power_is_charging()) { |     if(furi_hal_power_is_charging()) { | ||||||
|         if(api_hal_power_get_pct() == 100) { |         if(furi_hal_power_get_pct() == 100) { | ||||||
|             if(power->state != PowerStateCharged) { |             if(power->state != PowerStateCharged) { | ||||||
|                 notification_internal_message(notifications, &sequence_charged); |                 notification_internal_message(notifications, &sequence_charged); | ||||||
|                 power->state = PowerStateCharged; |                 power->state = PowerStateCharged; | ||||||
| @ -185,7 +185,7 @@ static void power_charging_indication_handler(Power* power, NotificationApp* not | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if(!api_hal_power_is_charging()) { |     if(!furi_hal_power_is_charging()) { | ||||||
|         if(power->state != PowerStateNotCharging) { |         if(power->state != PowerStateNotCharging) { | ||||||
|             notification_internal_message(notifications, &sequence_not_charging); |             notification_internal_message(notifications, &sequence_not_charging); | ||||||
|             power->state = PowerStateNotCharging; |             power->state = PowerStateNotCharging; | ||||||
| @ -212,19 +212,19 @@ int32_t power_srv(void* p) { | |||||||
| 
 | 
 | ||||||
|         with_view_model( |         with_view_model( | ||||||
|             power->info_view, (PowerInfoModel * model) { |             power->info_view, (PowerInfoModel * model) { | ||||||
|                 model->charge = api_hal_power_get_pct(); |                 model->charge = furi_hal_power_get_pct(); | ||||||
|                 model->health = api_hal_power_get_bat_health_pct(); |                 model->health = furi_hal_power_get_bat_health_pct(); | ||||||
|                 model->capacity_remaining = api_hal_power_get_battery_remaining_capacity(); |                 model->capacity_remaining = furi_hal_power_get_battery_remaining_capacity(); | ||||||
|                 model->capacity_full = api_hal_power_get_battery_full_capacity(); |                 model->capacity_full = furi_hal_power_get_battery_full_capacity(); | ||||||
|                 model->current_charger = api_hal_power_get_battery_current(ApiHalPowerICCharger); |                 model->current_charger = furi_hal_power_get_battery_current(FuriHalPowerICCharger); | ||||||
|                 model->current_gauge = api_hal_power_get_battery_current(ApiHalPowerICFuelGauge); |                 model->current_gauge = furi_hal_power_get_battery_current(FuriHalPowerICFuelGauge); | ||||||
|                 model->voltage_charger = api_hal_power_get_battery_voltage(ApiHalPowerICCharger); |                 model->voltage_charger = furi_hal_power_get_battery_voltage(FuriHalPowerICCharger); | ||||||
|                 model->voltage_gauge = api_hal_power_get_battery_voltage(ApiHalPowerICFuelGauge); |                 model->voltage_gauge = furi_hal_power_get_battery_voltage(FuriHalPowerICFuelGauge); | ||||||
|                 model->voltage_vbus = api_hal_power_get_usb_voltage(); |                 model->voltage_vbus = furi_hal_power_get_usb_voltage(); | ||||||
|                 model->temperature_charger = |                 model->temperature_charger = | ||||||
|                     api_hal_power_get_battery_temperature(ApiHalPowerICCharger); |                     furi_hal_power_get_battery_temperature(FuriHalPowerICCharger); | ||||||
|                 model->temperature_gauge = |                 model->temperature_gauge = | ||||||
|                     api_hal_power_get_battery_temperature(ApiHalPowerICFuelGauge); |                     furi_hal_power_get_battery_temperature(FuriHalPowerICFuelGauge); | ||||||
| 
 | 
 | ||||||
|                 if(model->charge == 0 && model->voltage_vbus < 4.0f) { |                 if(model->charge == 0 && model->voltage_vbus < 4.0f) { | ||||||
|                     battery_low = true; |                     battery_low = true; | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "power_cli.h" | #include "power_cli.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| void power_cli_poweroff(Cli* cli, string_t args, void* context) { | void power_cli_poweroff(Cli* cli, string_t args, void* context) { | ||||||
|     Power* power = context; |     Power* power = context; | ||||||
| @ -22,7 +22,7 @@ void power_cli_factory_reset(Cli* cli, string_t args, void* context) { | |||||||
|     char c = cli_getc(cli); |     char c = cli_getc(cli); | ||||||
|     if(c == 'y' || c == 'Y') { |     if(c == 'y' || c == 'Y') { | ||||||
|         printf("Data will be wiped after reboot.\r\n"); |         printf("Data will be wiped after reboot.\r\n"); | ||||||
|         api_hal_boot_set_flags(ApiHalBootFlagFactoryReset); |         furi_hal_boot_set_flags(FuriHalBootFlagFactoryReset); | ||||||
|         power_reboot(power, PowerBootModeNormal); |         power_reboot(power, PowerBootModeNormal); | ||||||
|     } else { |     } else { | ||||||
|         printf("Safe choice.\r\n"); |         printf("Safe choice.\r\n"); | ||||||
| @ -30,14 +30,14 @@ void power_cli_factory_reset(Cli* cli, string_t args, void* context) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void power_cli_info(Cli* cli, string_t args, void* context) { | void power_cli_info(Cli* cli, string_t args, void* context) { | ||||||
|     api_hal_power_dump_state(); |     furi_hal_power_dump_state(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void power_cli_otg(Cli* cli, string_t args, void* context) { | void power_cli_otg(Cli* cli, string_t args, void* context) { | ||||||
|     if(!string_cmp(args, "0")) { |     if(!string_cmp(args, "0")) { | ||||||
|         api_hal_power_disable_otg(); |         furi_hal_power_disable_otg(); | ||||||
|     } else if(!string_cmp(args, "1")) { |     } else if(!string_cmp(args, "1")) { | ||||||
|         api_hal_power_enable_otg(); |         furi_hal_power_enable_otg(); | ||||||
|     } else { |     } else { | ||||||
|         cli_print_usage("power_otg", "<1|0>", string_get_cstr(args)); |         cli_print_usage("power_otg", "<1|0>", string_get_cstr(args)); | ||||||
|     } |     } | ||||||
| @ -45,9 +45,9 @@ void power_cli_otg(Cli* cli, string_t args, void* context) { | |||||||
| 
 | 
 | ||||||
| void power_cli_ext(Cli* cli, string_t args, void* context) { | void power_cli_ext(Cli* cli, string_t args, void* context) { | ||||||
|     if(!string_cmp(args, "0")) { |     if(!string_cmp(args, "0")) { | ||||||
|         api_hal_power_disable_external_3_3v(); |         furi_hal_power_disable_external_3_3v(); | ||||||
|     } else if(!string_cmp(args, "1")) { |     } else if(!string_cmp(args, "1")) { | ||||||
|         api_hal_power_enable_external_3_3v(); |         furi_hal_power_enable_external_3_3v(); | ||||||
|     } else { |     } else { | ||||||
|         cli_print_usage("power_ext", "<1|0>", string_get_cstr(args)); |         cli_print_usage("power_ext", "<1|0>", string_get_cstr(args)); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #include <generic-scene.hpp> | #include <generic-scene.hpp> | ||||||
| #include <scene-controller.hpp> | #include <scene-controller.hpp> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "../storage-settings.h" | #include "../storage-settings.h" | ||||||
| #include <api-hal-version.h> | #include <furi-hal-version.h> | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
|     storage_settings_scene_internal_info_dialog_callback(DialogExResult result, void* context) { |     storage_settings_scene_internal_info_dialog_callback(DialogExResult result, void* context) { | ||||||
| @ -28,7 +28,7 @@ void storage_settings_scene_internal_info_on_enter(void* context) { | |||||||
|         string_printf( |         string_printf( | ||||||
|             app->text_string, |             app->text_string, | ||||||
|             "Label: %s\nType: LittleFS\n%lu KB total\n%lu KB free", |             "Label: %s\nType: LittleFS\n%lu KB total\n%lu KB free", | ||||||
|             api_hal_version_get_name_ptr(), |             furi_hal_version_get_name_ptr(), | ||||||
|             (uint32_t)(total_space / 1024), |             (uint32_t)(total_space / 1024), | ||||||
|             (uint32_t)(free_space / 1024)); |             (uint32_t)(free_space / 1024)); | ||||||
|         dialog_ex_set_text( |         dialog_ex_set_text( | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| #include <lib/toolbox/args.h> | #include <lib/toolbox/args.h> | ||||||
| #include <storage/storage.h> | #include <storage/storage.h> | ||||||
| #include <storage/storage-sd-api.h> | #include <storage/storage-sd-api.h> | ||||||
| #include <api-hal-version.h> | #include <furi-hal-version.h> | ||||||
| 
 | 
 | ||||||
| #define MAX_NAME_LENGTH 255 | #define MAX_NAME_LENGTH 255 | ||||||
| 
 | 
 | ||||||
| @ -64,7 +64,7 @@ void storage_cli_info(Cli* cli, string_t path) { | |||||||
|         } else { |         } else { | ||||||
|             printf( |             printf( | ||||||
|                 "Label: %s\r\nType: LittleFS\r\n%lu KB total\r\n%lu KB free\r\n", |                 "Label: %s\r\nType: LittleFS\r\n%lu KB total\r\n%lu KB free\r\n", | ||||||
|                 api_hal_version_get_name_ptr(), |                 furi_hal_version_get_name_ptr(), | ||||||
|                 (uint32_t)(total_space / 1024), |                 (uint32_t)(total_space / 1024), | ||||||
|                 (uint32_t)(free_space / 1024)); |                 (uint32_t)(free_space / 1024)); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "storage-glue.h" | #include "storage-glue.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| /****************** storage file ******************/ | /****************** storage file ******************/ | ||||||
| 
 | 
 | ||||||
| @ -39,12 +39,12 @@ void storage_data_init(StorageData* storage) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool storage_data_lock(StorageData* storage) { | bool storage_data_lock(StorageData* storage) { | ||||||
|     api_hal_power_insomnia_enter(); |     furi_hal_power_insomnia_enter(); | ||||||
|     return (osMutexAcquire(storage->mutex, osWaitForever) == osOK); |     return (osMutexAcquire(storage->mutex, osWaitForever) == osOK); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool storage_data_unlock(StorageData* storage) { | bool storage_data_unlock(StorageData* storage) { | ||||||
|     api_hal_power_insomnia_exit(); |     furi_hal_power_insomnia_exit(); | ||||||
|     return (osMutexRelease(storage->mutex) == osOK); |     return (osMutexRelease(storage->mutex) == osOK); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <storage/storage.h> | #include <storage/storage.h> | ||||||
| 
 | 
 | ||||||
| #define TAG "storage-test" | #define TAG "storage-test" | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| #include "fatfs.h" | #include "fatfs.h" | ||||||
| #include "../filesystem-api-internal.h" | #include "../filesystem-api-internal.h" | ||||||
| #include "storage-ext.h" | #include "storage-ext.h" | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "sd-notify.h" | #include "sd-notify.h" | ||||||
| #include <api-hal-sd.h> | #include <furi-hal-sd.h> | ||||||
| 
 | 
 | ||||||
| typedef FIL SDFile; | typedef FIL SDFile; | ||||||
| typedef DIR SDDir; | typedef DIR SDDir; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include "storage-int.h" | #include "storage-int.h" | ||||||
| #include <lfs.h> | #include <lfs.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| #define TAG "storage-int" | #define TAG "storage-int" | ||||||
| #define STORAGE_PATH "/int" | #define STORAGE_PATH "/int" | ||||||
| @ -103,7 +103,7 @@ static int storage_int_device_prog( | |||||||
| 
 | 
 | ||||||
|     int ret = 0; |     int ret = 0; | ||||||
|     while(size > 0) { |     while(size > 0) { | ||||||
|         if(!api_hal_flash_write_dword(address, *(uint64_t*)buffer)) { |         if(!furi_hal_flash_write_dword(address, *(uint64_t*)buffer)) { | ||||||
|             ret = -1; |             ret = -1; | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
| @ -121,7 +121,7 @@ static int storage_int_device_erase(const struct lfs_config* c, lfs_block_t bloc | |||||||
| 
 | 
 | ||||||
|     FURI_LOG_D(TAG, "Device erase: page %d, translated page: %d", block, page); |     FURI_LOG_D(TAG, "Device erase: page %d, translated page: %d", block, page); | ||||||
| 
 | 
 | ||||||
|     if(api_hal_flash_erase(page, 1)) { |     if(furi_hal_flash_erase(page, 1)) { | ||||||
|         return 0; |         return 0; | ||||||
|     } else { |     } else { | ||||||
|         return -1; |         return -1; | ||||||
| @ -137,9 +137,9 @@ static LFSData* storage_int_lfs_data_alloc() { | |||||||
|     LFSData* lfs_data = furi_alloc(sizeof(LFSData)); |     LFSData* lfs_data = furi_alloc(sizeof(LFSData)); | ||||||
| 
 | 
 | ||||||
|     // Internal storage start address
 |     // Internal storage start address
 | ||||||
|     *(size_t*)(&lfs_data->start_address) = api_hal_flash_get_free_page_start_address(); |     *(size_t*)(&lfs_data->start_address) = furi_hal_flash_get_free_page_start_address(); | ||||||
|     *(size_t*)(&lfs_data->start_page) = |     *(size_t*)(&lfs_data->start_page) = | ||||||
|         (lfs_data->start_address - api_hal_flash_get_base()) / api_hal_flash_get_page_size(); |         (lfs_data->start_address - furi_hal_flash_get_base()) / furi_hal_flash_get_page_size(); | ||||||
| 
 | 
 | ||||||
|     // LFS configuration
 |     // LFS configuration
 | ||||||
|     // Glue and context
 |     // Glue and context
 | ||||||
| @ -150,11 +150,11 @@ static LFSData* storage_int_lfs_data_alloc() { | |||||||
|     lfs_data->config.sync = storage_int_device_sync; |     lfs_data->config.sync = storage_int_device_sync; | ||||||
| 
 | 
 | ||||||
|     // Block device description
 |     // Block device description
 | ||||||
|     lfs_data->config.read_size = api_hal_flash_get_read_block_size(); |     lfs_data->config.read_size = furi_hal_flash_get_read_block_size(); | ||||||
|     lfs_data->config.prog_size = api_hal_flash_get_write_block_size(); |     lfs_data->config.prog_size = furi_hal_flash_get_write_block_size(); | ||||||
|     lfs_data->config.block_size = api_hal_flash_get_page_size(); |     lfs_data->config.block_size = furi_hal_flash_get_page_size(); | ||||||
|     lfs_data->config.block_count = api_hal_flash_get_free_page_count(); |     lfs_data->config.block_count = furi_hal_flash_get_free_page_count(); | ||||||
|     lfs_data->config.block_cycles = api_hal_flash_get_cycles_count(); |     lfs_data->config.block_cycles = furi_hal_flash_get_cycles_count(); | ||||||
|     lfs_data->config.cache_size = 16; |     lfs_data->config.cache_size = 16; | ||||||
|     lfs_data->config.lookahead_size = 16; |     lfs_data->config.lookahead_size = 16; | ||||||
| 
 | 
 | ||||||
| @ -163,15 +163,15 @@ static LFSData* storage_int_lfs_data_alloc() { | |||||||
| 
 | 
 | ||||||
| static void storage_int_lfs_mount(LFSData* lfs_data, StorageData* storage) { | static void storage_int_lfs_mount(LFSData* lfs_data, StorageData* storage) { | ||||||
|     int err; |     int err; | ||||||
|     ApiHalBootFlag boot_flags = api_hal_boot_get_flags(); |     FuriHalBootFlag boot_flags = furi_hal_boot_get_flags(); | ||||||
|     lfs_t* lfs = &lfs_data->lfs; |     lfs_t* lfs = &lfs_data->lfs; | ||||||
| 
 | 
 | ||||||
|     if(boot_flags & ApiHalBootFlagFactoryReset) { |     if(boot_flags & FuriHalBootFlagFactoryReset) { | ||||||
|         // Factory reset
 |         // Factory reset
 | ||||||
|         err = lfs_format(lfs, &lfs_data->config); |         err = lfs_format(lfs, &lfs_data->config); | ||||||
|         if(err == 0) { |         if(err == 0) { | ||||||
|             FURI_LOG_I(TAG, "Factory reset: Format successful, trying to mount"); |             FURI_LOG_I(TAG, "Factory reset: Format successful, trying to mount"); | ||||||
|             api_hal_boot_set_flags(boot_flags & ~ApiHalBootFlagFactoryReset); |             furi_hal_boot_set_flags(boot_flags & ~FuriHalBootFlagFactoryReset); | ||||||
|             err = lfs_mount(lfs, &lfs_data->config); |             err = lfs_mount(lfs, &lfs_data->config); | ||||||
|             if(err == 0) { |             if(err == 0) { | ||||||
|                 FURI_LOG_I(TAG, "Factory reset: Mounted"); |                 FURI_LOG_I(TAG, "Factory reset: Mounted"); | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "subghz_cli.h" | #include "subghz_cli.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <stream_buffer.h> | #include <stream_buffer.h> | ||||||
| #include <lib/subghz/protocols/subghz_protocol.h> | #include <lib/subghz/protocols/subghz_protocol.h> | ||||||
| 
 | 
 | ||||||
| @ -31,7 +31,7 @@ void subghz_cli_command_tx_carrier(Cli* cli, string_t args, void* context) { | |||||||
|             cli_print_usage("subghz_tx_carrier", "<Frequency in HZ>", string_get_cstr(args)); |             cli_print_usage("subghz_tx_carrier", "<Frequency in HZ>", string_get_cstr(args)); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         if(!api_hal_subghz_is_frequency_valid(frequency)) { |         if(!furi_hal_subghz_is_frequency_valid(frequency)) { | ||||||
|             printf( |             printf( | ||||||
|                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", |                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", | ||||||
|                 frequency); |                 frequency); | ||||||
| @ -39,14 +39,14 @@ void subghz_cli_command_tx_carrier(Cli* cli, string_t args, void* context) { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
|     frequency = api_hal_subghz_set_frequency_and_path(frequency); |     frequency = furi_hal_subghz_set_frequency_and_path(frequency); | ||||||
| 
 | 
 | ||||||
|     hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); |     hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); | ||||||
|     hal_gpio_write(&gpio_cc1101_g0, true); |     hal_gpio_write(&gpio_cc1101_g0, true); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_tx(); |     furi_hal_subghz_tx(); | ||||||
| 
 | 
 | ||||||
|     printf("Transmitting at frequency %lu Hz\r\n", frequency); |     printf("Transmitting at frequency %lu Hz\r\n", frequency); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
| @ -54,8 +54,8 @@ void subghz_cli_command_tx_carrier(Cli* cli, string_t args, void* context) { | |||||||
|         osDelay(250); |         osDelay(250); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_set_path(ApiHalSubGhzPathIsolate); |     furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate); | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void subghz_cli_command_rx_carrier(Cli* cli, string_t args, void* context) { | void subghz_cli_command_rx_carrier(Cli* cli, string_t args, void* context) { | ||||||
| @ -68,7 +68,7 @@ void subghz_cli_command_rx_carrier(Cli* cli, string_t args, void* context) { | |||||||
|             cli_print_usage("subghz_tx_carrier", "<Frequency in HZ>", string_get_cstr(args)); |             cli_print_usage("subghz_tx_carrier", "<Frequency in HZ>", string_get_cstr(args)); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         if(!api_hal_subghz_is_frequency_valid(frequency)) { |         if(!furi_hal_subghz_is_frequency_valid(frequency)) { | ||||||
|             printf( |             printf( | ||||||
|                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", |                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", | ||||||
|                 frequency); |                 frequency); | ||||||
| @ -76,22 +76,22 @@ void subghz_cli_command_rx_carrier(Cli* cli, string_t args, void* context) { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
|     frequency = api_hal_subghz_set_frequency_and_path(frequency); |     frequency = furi_hal_subghz_set_frequency_and_path(frequency); | ||||||
|     printf("Receiving at frequency %lu Hz\r\n", frequency); |     printf("Receiving at frequency %lu Hz\r\n", frequency); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_rx(); |     furi_hal_subghz_rx(); | ||||||
| 
 | 
 | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         osDelay(250); |         osDelay(250); | ||||||
|         printf("RSSI: %03.1fdbm\r", api_hal_subghz_get_rssi()); |         printf("RSSI: %03.1fdbm\r", furi_hal_subghz_get_rssi()); | ||||||
|         fflush(stdout); |         fflush(stdout); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_set_path(ApiHalSubGhzPathIsolate); |     furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate); | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define SUBGHZ_PT_SHORT 376 | #define SUBGHZ_PT_SHORT 376 | ||||||
| @ -118,7 +118,7 @@ void subghz_cli_command_tx(Cli* cli, string_t args, void* context) { | |||||||
|                 string_get_cstr(args)); |                 string_get_cstr(args)); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         if(!api_hal_subghz_is_frequency_valid(frequency)) { |         if(!furi_hal_subghz_is_frequency_valid(frequency)) { | ||||||
|             printf( |             printf( | ||||||
|                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", |                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", | ||||||
|                 frequency); |                 frequency); | ||||||
| @ -151,16 +151,16 @@ void subghz_cli_command_tx(Cli* cli, string_t args, void* context) { | |||||||
|         key, |         key, | ||||||
|         repeat); |         repeat); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
|     frequency = api_hal_subghz_set_frequency_and_path(frequency); |     frequency = furi_hal_subghz_set_frequency_and_path(frequency); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_start_async_tx(subghz_test_data, subghz_test_data_size, repeat); |     furi_hal_subghz_start_async_tx(subghz_test_data, subghz_test_data_size, repeat); | ||||||
|     api_hal_subghz_wait_async_tx(); |     furi_hal_subghz_wait_async_tx(); | ||||||
|     api_hal_subghz_stop_async_tx(); |     furi_hal_subghz_stop_async_tx(); | ||||||
| 
 | 
 | ||||||
|     free(subghz_test_data); |     free(subghz_test_data); | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
| @ -200,7 +200,7 @@ void subghz_cli_command_rx(Cli* cli, string_t args, void* context) { | |||||||
|             cli_print_usage("subghz_rx", "<Frequency in HZ>", string_get_cstr(args)); |             cli_print_usage("subghz_rx", "<Frequency in HZ>", string_get_cstr(args)); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         if(!api_hal_subghz_is_frequency_valid(frequency)) { |         if(!furi_hal_subghz_is_frequency_valid(frequency)) { | ||||||
|             printf( |             printf( | ||||||
|                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", |                 "Frequency must be in " SUBGHZ_FREQUENCY_RANGE_STR " range, not %lu\r\n", | ||||||
|                 frequency); |                 frequency); | ||||||
| @ -219,14 +219,14 @@ void subghz_cli_command_rx(Cli* cli, string_t args, void* context) { | |||||||
|     subghz_protocol_enable_dump_text(protocol, subghz_cli_command_rx_text_callback, instance); |     subghz_protocol_enable_dump_text(protocol, subghz_cli_command_rx_text_callback, instance); | ||||||
| 
 | 
 | ||||||
|     // Configure radio
 |     // Configure radio
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
|     frequency = api_hal_subghz_set_frequency_and_path(frequency); |     frequency = furi_hal_subghz_set_frequency_and_path(frequency); | ||||||
|     hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); |     hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); | ||||||
| 
 | 
 | ||||||
|     // Prepare and start RX
 |     // Prepare and start RX
 | ||||||
|     api_hal_subghz_set_async_rx_callback(subghz_cli_command_rx_callback, instance); |     furi_hal_subghz_set_async_rx_callback(subghz_cli_command_rx_callback, instance); | ||||||
|     api_hal_subghz_start_async_rx(); |     furi_hal_subghz_start_async_rx(); | ||||||
| 
 | 
 | ||||||
|     // Wait for packets to arrive
 |     // Wait for packets to arrive
 | ||||||
|     printf("Listening at %lu. Press CTRL+C to stop\r\n", frequency); |     printf("Listening at %lu. Press CTRL+C to stop\r\n", frequency); | ||||||
| @ -247,8 +247,8 @@ void subghz_cli_command_rx(Cli* cli, string_t args, void* context) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Shutdown radio
 |     // Shutdown radio
 | ||||||
|     api_hal_subghz_stop_async_rx(); |     furi_hal_subghz_stop_async_rx(); | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| 
 | 
 | ||||||
|     printf("\r\nPackets recieved %u\r\n", instance->packet_count); |     printf("\r\nPackets recieved %u\r\n", instance->packet_count); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
| #include "views/subghz_static.h" | #include "views/subghz_static.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <gui/view_dispatcher.h> | #include <gui/view_dispatcher.h> | ||||||
| #include <gui/modules/submenu.h> | #include <gui/modules/submenu.h> | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
| #include <math.h> | #include <math.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
| #include <gui/elements.h> | #include <gui/elements.h> | ||||||
| #include <notification/notification-messages.h> | #include <notification/notification-messages.h> | ||||||
| @ -85,10 +85,10 @@ bool subghz_capture_input(InputEvent* event, void* context) { | |||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(reconfigure) { |             if(reconfigure) { | ||||||
|                 api_hal_subghz_idle(); |                 furi_hal_subghz_idle(); | ||||||
|                 model->real_frequency = |                 model->real_frequency = | ||||||
|                     api_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); |                     furi_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); | ||||||
|                 api_hal_subghz_rx(); |                 furi_hal_subghz_rx(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             return reconfigure; |             return reconfigure; | ||||||
| @ -141,28 +141,28 @@ void subghz_capture_enter(void* context) { | |||||||
|     furi_assert(context); |     furi_assert(context); | ||||||
|     SubghzCapture* subghz_capture = context; |     SubghzCapture* subghz_capture = context; | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_idle(); |     furi_hal_subghz_idle(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
| 
 | 
 | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         subghz_capture->view, (SubghzCaptureModel * model) { |         subghz_capture->view, (SubghzCaptureModel * model) { | ||||||
|             model->frequency = subghz_frequencies_433_92; |             model->frequency = subghz_frequencies_433_92; | ||||||
|             model->real_frequency = |             model->real_frequency = | ||||||
|                 api_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); |                 furi_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); | ||||||
|             model->scene = 1; |             model->scene = 1; | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|     hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); |     hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_set_async_rx_callback(subghz_worker_rx_callback, subghz_capture->worker); |     furi_hal_subghz_set_async_rx_callback(subghz_worker_rx_callback, subghz_capture->worker); | ||||||
|     api_hal_subghz_start_async_rx(); |     furi_hal_subghz_start_async_rx(); | ||||||
| 
 | 
 | ||||||
|     subghz_worker_start(subghz_capture->worker); |     subghz_worker_start(subghz_capture->worker); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_flush_rx(); |     furi_hal_subghz_flush_rx(); | ||||||
|     api_hal_subghz_rx(); |     furi_hal_subghz_rx(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void subghz_capture_exit(void* context) { | void subghz_capture_exit(void* context) { | ||||||
| @ -171,8 +171,8 @@ void subghz_capture_exit(void* context) { | |||||||
| 
 | 
 | ||||||
|     subghz_worker_stop(subghz_capture->worker); |     subghz_worker_stop(subghz_capture->worker); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_stop_async_rx(); |     furi_hal_subghz_stop_async_rx(); | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uint32_t subghz_capture_back(void* context) { | uint32_t subghz_capture_back(void* context) { | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
| #include <math.h> | #include <math.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
| #include <notification/notification-messages.h> | #include <notification/notification-messages.h> | ||||||
| 
 | 
 | ||||||
| @ -80,10 +80,10 @@ bool subghz_static_input(InputEvent* event, void* context) { | |||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(reconfigure) { |             if(reconfigure) { | ||||||
|                 api_hal_subghz_idle(); |                 furi_hal_subghz_idle(); | ||||||
|                 model->real_frequency = |                 model->real_frequency = | ||||||
|                     api_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); |                     furi_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); | ||||||
|                 api_hal_subghz_tx(); |                 furi_hal_subghz_tx(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(event->key == InputKeyOk) { |             if(event->key == InputKeyOk) { | ||||||
| @ -128,8 +128,8 @@ void subghz_static_enter(void* context) { | |||||||
|     furi_assert(context); |     furi_assert(context); | ||||||
|     SubghzStatic* subghz_static = context; |     SubghzStatic* subghz_static = context; | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
| 
 | 
 | ||||||
|     hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); |     hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); | ||||||
|     hal_gpio_write(&gpio_cc1101_g0, false); |     hal_gpio_write(&gpio_cc1101_g0, false); | ||||||
| @ -138,12 +138,12 @@ void subghz_static_enter(void* context) { | |||||||
|         subghz_static->view, (SubghzStaticModel * model) { |         subghz_static->view, (SubghzStaticModel * model) { | ||||||
|             model->frequency = subghz_frequencies_433_92; |             model->frequency = subghz_frequencies_433_92; | ||||||
|             model->real_frequency = |             model->real_frequency = | ||||||
|                 api_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); |                 furi_hal_subghz_set_frequency_and_path(subghz_frequencies[model->frequency]); | ||||||
|             model->button = 0; |             model->button = 0; | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_tx(); |     furi_hal_subghz_tx(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void subghz_static_exit(void* context) { | void subghz_static_exit(void* context) { | ||||||
| @ -151,7 +151,7 @@ void subghz_static_exit(void* context) { | |||||||
|     // SubghzStatic* subghz_static = context;
 |     // SubghzStatic* subghz_static = context;
 | ||||||
| 
 | 
 | ||||||
|     // Reinitialize IC to default state
 |     // Reinitialize IC to default state
 | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uint32_t subghz_static_back(void* context) { | uint32_t subghz_static_back(void* context) { | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
| #include <math.h> | #include <math.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
| 
 | 
 | ||||||
| struct SubghzTestBasic { | struct SubghzTestBasic { | ||||||
| @ -19,7 +19,7 @@ typedef enum { | |||||||
| typedef struct { | typedef struct { | ||||||
|     uint8_t frequency; |     uint8_t frequency; | ||||||
|     uint32_t real_frequency; |     uint32_t real_frequency; | ||||||
|     ApiHalSubGhzPath path; |     FuriHalSubGhzPath path; | ||||||
|     float rssi; |     float rssi; | ||||||
|     SubghzTestBasicModelStatus status; |     SubghzTestBasicModelStatus status; | ||||||
| } SubghzTestBasicModel; | } SubghzTestBasicModel; | ||||||
| @ -43,13 +43,13 @@ void subghz_test_basic_draw(Canvas* canvas, SubghzTestBasicModel* model) { | |||||||
|     canvas_draw_str(canvas, 0, 20, buffer); |     canvas_draw_str(canvas, 0, 20, buffer); | ||||||
|     // Path
 |     // Path
 | ||||||
|     char* path_name = "Unknown"; |     char* path_name = "Unknown"; | ||||||
|     if(model->path == ApiHalSubGhzPathIsolate) { |     if(model->path == FuriHalSubGhzPathIsolate) { | ||||||
|         path_name = "isolate"; |         path_name = "isolate"; | ||||||
|     } else if(model->path == ApiHalSubGhzPath433) { |     } else if(model->path == FuriHalSubGhzPath433) { | ||||||
|         path_name = "433MHz"; |         path_name = "433MHz"; | ||||||
|     } else if(model->path == ApiHalSubGhzPath315) { |     } else if(model->path == FuriHalSubGhzPath315) { | ||||||
|         path_name = "315MHz"; |         path_name = "315MHz"; | ||||||
|     } else if(model->path == ApiHalSubGhzPath868) { |     } else if(model->path == FuriHalSubGhzPath868) { | ||||||
|         path_name = "868MHz"; |         path_name = "868MHz"; | ||||||
|     } |     } | ||||||
|     snprintf(buffer, sizeof(buffer), "Path: %d - %s", model->path, path_name); |     snprintf(buffer, sizeof(buffer), "Path: %d - %s", model->path, path_name); | ||||||
| @ -78,7 +78,7 @@ bool subghz_test_basic_input(InputEvent* event, void* context) { | |||||||
|     with_view_model( |     with_view_model( | ||||||
|         subghz_test_basic->view, (SubghzTestBasicModel * model) { |         subghz_test_basic->view, (SubghzTestBasicModel * model) { | ||||||
|             osTimerStop(subghz_test_basic->timer); |             osTimerStop(subghz_test_basic->timer); | ||||||
|             api_hal_subghz_idle(); |             furi_hal_subghz_idle(); | ||||||
| 
 | 
 | ||||||
|             if(event->type == InputTypeShort) { |             if(event->type == InputTypeShort) { | ||||||
|                 if(event->key == InputKeyLeft) { |                 if(event->key == InputKeyLeft) { | ||||||
| @ -88,7 +88,7 @@ bool subghz_test_basic_input(InputEvent* event, void* context) { | |||||||
|                 } else if(event->key == InputKeyDown) { |                 } else if(event->key == InputKeyDown) { | ||||||
|                     if(model->path > 0) model->path--; |                     if(model->path > 0) model->path--; | ||||||
|                 } else if(event->key == InputKeyUp) { |                 } else if(event->key == InputKeyUp) { | ||||||
|                     if(model->path < ApiHalSubGhzPath868) model->path++; |                     if(model->path < FuriHalSubGhzPath868) model->path++; | ||||||
|                 } else if(event->key == InputKeyOk) { |                 } else if(event->key == InputKeyOk) { | ||||||
|                     if(model->status == SubghzTestBasicModelStatusTx) { |                     if(model->status == SubghzTestBasicModelStatusTx) { | ||||||
|                         model->status = SubghzTestBasicModelStatusRx; |                         model->status = SubghzTestBasicModelStatusRx; | ||||||
| @ -98,18 +98,18 @@ bool subghz_test_basic_input(InputEvent* event, void* context) { | |||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 model->real_frequency = |                 model->real_frequency = | ||||||
|                     api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); |                     furi_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); | ||||||
|                 api_hal_subghz_set_path(model->path); |                 furi_hal_subghz_set_path(model->path); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(model->status == SubghzTestBasicModelStatusRx) { |             if(model->status == SubghzTestBasicModelStatusRx) { | ||||||
|                 hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); |                 hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); | ||||||
|                 api_hal_subghz_rx(); |                 furi_hal_subghz_rx(); | ||||||
|                 osTimerStart(subghz_test_basic->timer, 1024 / 4); |                 osTimerStart(subghz_test_basic->timer, 1024 / 4); | ||||||
|             } else { |             } else { | ||||||
|                 hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); |                 hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); | ||||||
|                 hal_gpio_write(&gpio_cc1101_g0, true); |                 hal_gpio_write(&gpio_cc1101_g0, true); | ||||||
|                 api_hal_subghz_tx(); |                 furi_hal_subghz_tx(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             return true; |             return true; | ||||||
| @ -122,8 +122,8 @@ void subghz_test_basic_enter(void* context) { | |||||||
|     furi_assert(context); |     furi_assert(context); | ||||||
|     SubghzTestBasic* subghz_test_basic = context; |     SubghzTestBasic* subghz_test_basic = context; | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
| 
 | 
 | ||||||
|     hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); |     hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); | ||||||
| 
 | 
 | ||||||
| @ -131,14 +131,14 @@ void subghz_test_basic_enter(void* context) { | |||||||
|         subghz_test_basic->view, (SubghzTestBasicModel * model) { |         subghz_test_basic->view, (SubghzTestBasicModel * model) { | ||||||
|             model->frequency = subghz_frequencies_433_92; // 433
 |             model->frequency = subghz_frequencies_433_92; // 433
 | ||||||
|             model->real_frequency = |             model->real_frequency = | ||||||
|                 api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); |                 furi_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); | ||||||
|             model->path = ApiHalSubGhzPathIsolate; // isolate
 |             model->path = FuriHalSubGhzPathIsolate; // isolate
 | ||||||
|             model->rssi = 0.0f; |             model->rssi = 0.0f; | ||||||
|             model->status = SubghzTestBasicModelStatusRx; |             model->status = SubghzTestBasicModelStatusRx; | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_rx(); |     furi_hal_subghz_rx(); | ||||||
| 
 | 
 | ||||||
|     osTimerStart(subghz_test_basic->timer, 1024 / 4); |     osTimerStart(subghz_test_basic->timer, 1024 / 4); | ||||||
| } | } | ||||||
| @ -150,7 +150,7 @@ void subghz_test_basic_exit(void* context) { | |||||||
|     osTimerStop(subghz_test_basic->timer); |     osTimerStop(subghz_test_basic->timer); | ||||||
| 
 | 
 | ||||||
|     // Reinitialize IC to default state
 |     // Reinitialize IC to default state
 | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void subghz_test_basic_rssi_timer_callback(void* context) { | void subghz_test_basic_rssi_timer_callback(void* context) { | ||||||
| @ -159,7 +159,7 @@ void subghz_test_basic_rssi_timer_callback(void* context) { | |||||||
| 
 | 
 | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         subghz_test_basic->view, (SubghzTestBasicModel * model) { |         subghz_test_basic->view, (SubghzTestBasicModel * model) { | ||||||
|             model->rssi = api_hal_subghz_get_rssi(); |             model->rssi = furi_hal_subghz_get_rssi(); | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
| #include <math.h> | #include <math.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
| #include <toolbox/level_duration.h> | #include <toolbox/level_duration.h> | ||||||
| #include <lib/subghz/protocols/subghz_protocol_princeton.h> | #include <lib/subghz/protocols/subghz_protocol_princeton.h> | ||||||
| @ -32,7 +32,7 @@ typedef enum { | |||||||
| typedef struct { | typedef struct { | ||||||
|     uint8_t frequency; |     uint8_t frequency; | ||||||
|     uint32_t real_frequency; |     uint32_t real_frequency; | ||||||
|     ApiHalSubGhzPath path; |     FuriHalSubGhzPath path; | ||||||
|     float rssi; |     float rssi; | ||||||
|     size_t packets; |     size_t packets; | ||||||
|     SubghzTestPacketModelStatus status; |     SubghzTestPacketModelStatus status; | ||||||
| @ -59,11 +59,11 @@ static void subghz_test_packet_rssi_timer_callback(void* context) { | |||||||
|     with_view_model( |     with_view_model( | ||||||
|         instance->view, (SubghzTestPacketModel * model) { |         instance->view, (SubghzTestPacketModel * model) { | ||||||
|             if(model->status == SubghzTestPacketModelStatusRx) { |             if(model->status == SubghzTestPacketModelStatusRx) { | ||||||
|                 model->rssi = api_hal_subghz_get_rssi(); |                 model->rssi = furi_hal_subghz_get_rssi(); | ||||||
|                 model->packets = instance->packet_rx; |                 model->packets = instance->packet_rx; | ||||||
|             } else { |             } else { | ||||||
|                 model->packets = |                 model->packets = | ||||||
|                     SUBGHZ_TEST_PACKET_COUNT - api_hal_subghz_get_async_tx_repeat_left(); |                     SUBGHZ_TEST_PACKET_COUNT - furi_hal_subghz_get_async_tx_repeat_left(); | ||||||
|             } |             } | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| @ -88,13 +88,13 @@ static void subghz_test_packet_draw(Canvas* canvas, SubghzTestPacketModel* model | |||||||
|     canvas_draw_str(canvas, 0, 20, buffer); |     canvas_draw_str(canvas, 0, 20, buffer); | ||||||
|     // Path
 |     // Path
 | ||||||
|     char* path_name = "Unknown"; |     char* path_name = "Unknown"; | ||||||
|     if(model->path == ApiHalSubGhzPathIsolate) { |     if(model->path == FuriHalSubGhzPathIsolate) { | ||||||
|         path_name = "isolate"; |         path_name = "isolate"; | ||||||
|     } else if(model->path == ApiHalSubGhzPath433) { |     } else if(model->path == FuriHalSubGhzPath433) { | ||||||
|         path_name = "433MHz"; |         path_name = "433MHz"; | ||||||
|     } else if(model->path == ApiHalSubGhzPath315) { |     } else if(model->path == FuriHalSubGhzPath315) { | ||||||
|         path_name = "315MHz"; |         path_name = "315MHz"; | ||||||
|     } else if(model->path == ApiHalSubGhzPath868) { |     } else if(model->path == FuriHalSubGhzPath868) { | ||||||
|         path_name = "868MHz"; |         path_name = "868MHz"; | ||||||
|     } |     } | ||||||
|     snprintf(buffer, sizeof(buffer), "Path: %d - %s", model->path, path_name); |     snprintf(buffer, sizeof(buffer), "Path: %d - %s", model->path, path_name); | ||||||
| @ -127,9 +127,9 @@ static bool subghz_test_packet_input(InputEvent* event, void* context) { | |||||||
|     with_view_model( |     with_view_model( | ||||||
|         instance->view, (SubghzTestPacketModel * model) { |         instance->view, (SubghzTestPacketModel * model) { | ||||||
|             if(model->status == SubghzTestPacketModelStatusRx) { |             if(model->status == SubghzTestPacketModelStatusRx) { | ||||||
|                 api_hal_subghz_stop_async_rx(); |                 furi_hal_subghz_stop_async_rx(); | ||||||
|             } else { |             } else { | ||||||
|                 api_hal_subghz_stop_async_tx(); |                 furi_hal_subghz_stop_async_tx(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(event->type == InputTypeShort) { |             if(event->type == InputTypeShort) { | ||||||
| @ -140,7 +140,7 @@ static bool subghz_test_packet_input(InputEvent* event, void* context) { | |||||||
|                 } else if(event->key == InputKeyDown) { |                 } else if(event->key == InputKeyDown) { | ||||||
|                     if(model->path > 0) model->path--; |                     if(model->path > 0) model->path--; | ||||||
|                 } else if(event->key == InputKeyUp) { |                 } else if(event->key == InputKeyUp) { | ||||||
|                     if(model->path < ApiHalSubGhzPath868) model->path++; |                     if(model->path < FuriHalSubGhzPath868) model->path++; | ||||||
|                 } else if(event->key == InputKeyOk) { |                 } else if(event->key == InputKeyOk) { | ||||||
|                     if(model->status == SubghzTestPacketModelStatusTx) { |                     if(model->status == SubghzTestPacketModelStatusTx) { | ||||||
|                         model->status = SubghzTestPacketModelStatusRx; |                         model->status = SubghzTestPacketModelStatusRx; | ||||||
| @ -150,14 +150,14 @@ static bool subghz_test_packet_input(InputEvent* event, void* context) { | |||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 model->real_frequency = |                 model->real_frequency = | ||||||
|                     api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); |                     furi_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); | ||||||
|                 api_hal_subghz_set_path(model->path); |                 furi_hal_subghz_set_path(model->path); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(model->status == SubghzTestPacketModelStatusRx) { |             if(model->status == SubghzTestPacketModelStatusRx) { | ||||||
|                 api_hal_subghz_start_async_rx(); |                 furi_hal_subghz_start_async_rx(); | ||||||
|             } else { |             } else { | ||||||
|                 api_hal_subghz_start_async_tx( |                 furi_hal_subghz_start_async_tx( | ||||||
|                     instance->tx_buffer, instance->tx_buffer_size, SUBGHZ_TEST_PACKET_COUNT); |                     instance->tx_buffer, instance->tx_buffer_size, SUBGHZ_TEST_PACKET_COUNT); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
| @ -192,22 +192,22 @@ void subghz_test_packet_enter(void* context) { | |||||||
|     instance->tx_buffer[pos++] = SUBGHZ_PT_SHORT; |     instance->tx_buffer[pos++] = SUBGHZ_PT_SHORT; | ||||||
|     instance->tx_buffer[pos++] = SUBGHZ_PT_SHORT + SUBGHZ_PT_GUARD; |     instance->tx_buffer[pos++] = SUBGHZ_PT_SHORT + SUBGHZ_PT_GUARD; | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_reset(); |     furi_hal_subghz_reset(); | ||||||
|     api_hal_subghz_load_preset(ApiHalSubGhzPresetOokAsync); |     furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); | ||||||
|     api_hal_subghz_set_async_rx_callback(subghz_test_packet_rx_callback, instance); |     furi_hal_subghz_set_async_rx_callback(subghz_test_packet_rx_callback, instance); | ||||||
| 
 | 
 | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         instance->view, (SubghzTestPacketModel * model) { |         instance->view, (SubghzTestPacketModel * model) { | ||||||
|             model->frequency = subghz_frequencies_433_92; |             model->frequency = subghz_frequencies_433_92; | ||||||
|             model->real_frequency = |             model->real_frequency = | ||||||
|                 api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); |                 furi_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); | ||||||
|             model->path = ApiHalSubGhzPathIsolate; // isolate
 |             model->path = FuriHalSubGhzPathIsolate; // isolate
 | ||||||
|             model->rssi = 0.0f; |             model->rssi = 0.0f; | ||||||
|             model->status = SubghzTestPacketModelStatusRx; |             model->status = SubghzTestPacketModelStatusRx; | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|     api_hal_subghz_start_async_rx(); |     furi_hal_subghz_start_async_rx(); | ||||||
| 
 | 
 | ||||||
|     osTimerStart(instance->timer, 1024 / 4); |     osTimerStart(instance->timer, 1024 / 4); | ||||||
| } | } | ||||||
| @ -222,14 +222,14 @@ void subghz_test_packet_exit(void* context) { | |||||||
|     with_view_model( |     with_view_model( | ||||||
|         instance->view, (SubghzTestPacketModel * model) { |         instance->view, (SubghzTestPacketModel * model) { | ||||||
|             if(model->status == SubghzTestPacketModelStatusRx) { |             if(model->status == SubghzTestPacketModelStatusRx) { | ||||||
|                 api_hal_subghz_stop_async_rx(); |                 furi_hal_subghz_stop_async_rx(); | ||||||
|             } else { |             } else { | ||||||
|                 api_hal_subghz_stop_async_tx(); |                 furi_hal_subghz_stop_async_tx(); | ||||||
|             } |             } | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
|     api_hal_subghz_set_async_rx_callback(NULL, NULL); |     furi_hal_subghz_set_async_rx_callback(NULL, NULL); | ||||||
|     api_hal_subghz_sleep(); |     furi_hal_subghz_sleep(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uint32_t subghz_test_packet_back(void* context) { | uint32_t subghz_test_packet_back(void* context) { | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include "api-hal-delay.h" | #include "furi-hal-delay.h" | ||||||
| 
 | 
 | ||||||
| #include "minunit.h" | #include "minunit.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include "minunit_vars.h" | #include "minunit_vars.h" | ||||||
| #include <notification/notification-messages.h> | #include <notification/notification-messages.h> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ PROJECT			= bootloader | |||||||
| 
 | 
 | ||||||
| include 		$(PROJECT_ROOT)/make/base.mk | include 		$(PROJECT_ROOT)/make/base.mk | ||||||
| 
 | 
 | ||||||
| CFLAGS			+= -I$(PROJECT_ROOT) -Itargets/api-hal-include | CFLAGS			+= -I$(PROJECT_ROOT) -Itargets/furi-hal-include | ||||||
| ASM_SOURCES		+= $(wildcard src/*.s) | ASM_SOURCES		+= $(wildcard src/*.s) | ||||||
| C_SOURCES		+= $(wildcard src/*.c) | C_SOURCES		+= $(wildcard src/*.c) | ||||||
| CPP_SOURCES		+= $(wildcard src/*.cpp) | CPP_SOURCES		+= $(wildcard src/*.cpp) | ||||||
|  | |||||||
| @ -1,6 +0,0 @@ | |||||||
| #include <api-hal.h> |  | ||||||
| 
 |  | ||||||
| void api_hal_init() { |  | ||||||
|     api_hal_i2c_init(); |  | ||||||
|     api_hal_light_init(); |  | ||||||
| } |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <api-hal-i2c.h> |  | ||||||
| #include <api-hal-light.h> |  | ||||||
| 
 |  | ||||||
| void api_hal_init(); |  | ||||||
| @ -1,4 +1,4 @@ | |||||||
| #include <api-hal-i2c.h> | #include <furi-hal-i2c.h> | ||||||
| 
 | 
 | ||||||
| #include <stm32wbxx_ll_bus.h> | #include <stm32wbxx_ll_bus.h> | ||||||
| #include <stm32wbxx_ll_i2c.h> | #include <stm32wbxx_ll_i2c.h> | ||||||
| @ -6,7 +6,7 @@ | |||||||
| #include <stm32wbxx_ll_gpio.h> | #include <stm32wbxx_ll_gpio.h> | ||||||
| #include <stm32wbxx_ll_cortex.h> | #include <stm32wbxx_ll_cortex.h> | ||||||
| 
 | 
 | ||||||
| void api_hal_i2c_init() { | void furi_hal_i2c_init() { | ||||||
|     LL_I2C_InitTypeDef I2C_InitStruct = {0}; |     LL_I2C_InitTypeDef I2C_InitStruct = {0}; | ||||||
|     LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; |     LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||||
| 
 | 
 | ||||||
| @ -38,7 +38,7 @@ void api_hal_i2c_init() { | |||||||
|     LL_I2C_EnableClockStretching(I2C1); |     LL_I2C_EnableClockStretching(I2C1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool api_hal_i2c_tx( | bool furi_hal_i2c_tx( | ||||||
|     I2C_TypeDef* instance, |     I2C_TypeDef* instance, | ||||||
|     uint8_t address, |     uint8_t address, | ||||||
|     const uint8_t* data, |     const uint8_t* data, | ||||||
| @ -79,7 +79,7 @@ bool api_hal_i2c_tx( | |||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool api_hal_i2c_rx( | bool furi_hal_i2c_rx( | ||||||
|     I2C_TypeDef* instance, |     I2C_TypeDef* instance, | ||||||
|     uint8_t address, |     uint8_t address, | ||||||
|     uint8_t* data, |     uint8_t* data, | ||||||
| @ -120,7 +120,7 @@ bool api_hal_i2c_rx( | |||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool api_hal_i2c_trx( | bool furi_hal_i2c_trx( | ||||||
|     I2C_TypeDef* instance, |     I2C_TypeDef* instance, | ||||||
|     uint8_t address, |     uint8_t address, | ||||||
|     const uint8_t* tx_data, |     const uint8_t* tx_data, | ||||||
| @ -128,8 +128,8 @@ bool api_hal_i2c_trx( | |||||||
|     uint8_t* rx_data, |     uint8_t* rx_data, | ||||||
|     uint8_t rx_size, |     uint8_t rx_size, | ||||||
|     uint32_t timeout) { |     uint32_t timeout) { | ||||||
|     if(api_hal_i2c_tx(instance, address, tx_data, tx_size, timeout) && |     if(furi_hal_i2c_tx(instance, address, tx_data, tx_size, timeout) && | ||||||
|        api_hal_i2c_rx(instance, address, rx_data, rx_size, timeout)) { |        furi_hal_i2c_rx(instance, address, rx_data, rx_size, timeout)) { | ||||||
|         return true; |         return true; | ||||||
|     } else { |     } else { | ||||||
|         return false; |         return false; | ||||||
| @ -2,29 +2,29 @@ | |||||||
| 
 | 
 | ||||||
| #include <stdbool.h> | #include <stdbool.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <api-hal-resources.h> | #include <furi-hal-resources.h> | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| void api_hal_i2c_init(); | void furi_hal_i2c_init(); | ||||||
| 
 | 
 | ||||||
| bool api_hal_i2c_tx( | bool furi_hal_i2c_tx( | ||||||
|     I2C_TypeDef* instance, |     I2C_TypeDef* instance, | ||||||
|     const uint8_t address, |     const uint8_t address, | ||||||
|     const uint8_t* data, |     const uint8_t* data, | ||||||
|     const uint8_t size, |     const uint8_t size, | ||||||
|     uint32_t timeout); |     uint32_t timeout); | ||||||
| 
 | 
 | ||||||
| bool api_hal_i2c_rx( | bool furi_hal_i2c_rx( | ||||||
|     I2C_TypeDef* instance, |     I2C_TypeDef* instance, | ||||||
|     const uint8_t address, |     const uint8_t address, | ||||||
|     uint8_t* data, |     uint8_t* data, | ||||||
|     const uint8_t size, |     const uint8_t size, | ||||||
|     uint32_t timeout); |     uint32_t timeout); | ||||||
| 
 | 
 | ||||||
| bool api_hal_i2c_trx( | bool furi_hal_i2c_trx( | ||||||
|     I2C_TypeDef* instance, |     I2C_TypeDef* instance, | ||||||
|     const uint8_t address, |     const uint8_t address, | ||||||
|     const uint8_t* tx_data, |     const uint8_t* tx_data, | ||||||
| @ -33,7 +33,7 @@ bool api_hal_i2c_trx( | |||||||
|     const uint8_t rx_size, |     const uint8_t rx_size, | ||||||
|     uint32_t timeout); |     uint32_t timeout); | ||||||
| 
 | 
 | ||||||
| #define with_api_hal_i2c(type, pointer, function_body)        \ | #define with_furi_hal_i2c(type, pointer, function_body)       \ | ||||||
|     {                                                         \ |     {                                                         \ | ||||||
|         *pointer = ({ type __fn__ function_body __fn__; })(); \ |         *pointer = ({ type __fn__ function_body __fn__; })(); \ | ||||||
|     } |     } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| #include <api-hal-light.h> | #include <furi-hal-light.h> | ||||||
| #include <lp5562.h> | #include <lp5562.h> | ||||||
| 
 | 
 | ||||||
| #define LED_CURRENT_RED 50 | #define LED_CURRENT_RED 50 | ||||||
| @ -6,7 +6,7 @@ | |||||||
| #define LED_CURRENT_BLUE 50 | #define LED_CURRENT_BLUE 50 | ||||||
| #define LED_CURRENT_WHITE 150 | #define LED_CURRENT_WHITE 150 | ||||||
| 
 | 
 | ||||||
| void api_hal_light_init() { | void furi_hal_light_init() { | ||||||
|     lp5562_reset(); |     lp5562_reset(); | ||||||
| 
 | 
 | ||||||
|     lp5562_set_channel_current(LP5562ChannelRed, LED_CURRENT_RED); |     lp5562_set_channel_current(LP5562ChannelRed, LED_CURRENT_RED); | ||||||
| @ -23,7 +23,7 @@ void api_hal_light_init() { | |||||||
|     lp5562_configure(); |     lp5562_configure(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void api_hal_light_set(Light light, uint8_t value) { | void furi_hal_light_set(Light light, uint8_t value) { | ||||||
|     switch(light) { |     switch(light) { | ||||||
|     case LightRed: |     case LightRed: | ||||||
|         lp5562_set_channel_value(LP5562ChannelRed, value); |         lp5562_set_channel_value(LP5562ChannelRed, value); | ||||||
| @ -2,15 +2,15 @@ | |||||||
| 
 | 
 | ||||||
| #include <stdbool.h> | #include <stdbool.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <api-hal-resources.h> | #include <furi-hal-resources.h> | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| void api_hal_light_init(); | void furi_hal_light_init(); | ||||||
| 
 | 
 | ||||||
| void api_hal_light_set(Light light, uint8_t value); | void furi_hal_light_set(Light light, uint8_t value); | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
							
								
								
									
										6
									
								
								bootloader/targets/f6/furi-hal/furi-hal.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								bootloader/targets/f6/furi-hal/furi-hal.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | #include <furi-hal.h> | ||||||
|  | 
 | ||||||
|  | void furi_hal_init() { | ||||||
|  |     furi_hal_i2c_init(); | ||||||
|  |     furi_hal_light_init(); | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								bootloader/targets/f6/furi-hal/furi-hal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								bootloader/targets/f6/furi-hal/furi-hal.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <furi-hal-i2c.h> | ||||||
|  | #include <furi-hal-light.h> | ||||||
|  | 
 | ||||||
|  | void furi_hal_init(); | ||||||
| @ -10,7 +10,7 @@ | |||||||
| #include <stm32wbxx_hal_flash.h> | #include <stm32wbxx_hal_flash.h> | ||||||
| 
 | 
 | ||||||
| #include <lib/toolbox/version.h> | #include <lib/toolbox/version.h> | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| 
 | 
 | ||||||
| // Boot request enum
 | // Boot request enum
 | ||||||
| #define BOOT_REQUEST_TAINTED 0x00000000 | #define BOOT_REQUEST_TAINTED 0x00000000 | ||||||
| @ -28,32 +28,32 @@ | |||||||
| #define RTC_CLOCK_IS_READY() (LL_RCC_LSE_IsReady() && LL_RCC_LSI1_IsReady()) | #define RTC_CLOCK_IS_READY() (LL_RCC_LSE_IsReady() && LL_RCC_LSI1_IsReady()) | ||||||
| 
 | 
 | ||||||
| void target_led_control(char* c) { | void target_led_control(char* c) { | ||||||
|     api_hal_light_set(LightRed, 0x00); |     furi_hal_light_set(LightRed, 0x00); | ||||||
|     api_hal_light_set(LightGreen, 0x00); |     furi_hal_light_set(LightGreen, 0x00); | ||||||
|     api_hal_light_set(LightBlue, 0x00); |     furi_hal_light_set(LightBlue, 0x00); | ||||||
|     do { |     do { | ||||||
|         if(*c == 'R') { |         if(*c == 'R') { | ||||||
|             api_hal_light_set(LightRed, 0xFF); |             furi_hal_light_set(LightRed, 0xFF); | ||||||
|         } else if(*c == 'G') { |         } else if(*c == 'G') { | ||||||
|             api_hal_light_set(LightGreen, 0xFF); |             furi_hal_light_set(LightGreen, 0xFF); | ||||||
|         } else if(*c == 'B') { |         } else if(*c == 'B') { | ||||||
|             api_hal_light_set(LightBlue, 0xFF); |             furi_hal_light_set(LightBlue, 0xFF); | ||||||
|         } else if(*c == '.') { |         } else if(*c == '.') { | ||||||
|             LL_mDelay(125); |             LL_mDelay(125); | ||||||
|             api_hal_light_set(LightRed, 0x00); |             furi_hal_light_set(LightRed, 0x00); | ||||||
|             api_hal_light_set(LightGreen, 0x00); |             furi_hal_light_set(LightGreen, 0x00); | ||||||
|             api_hal_light_set(LightBlue, 0x00); |             furi_hal_light_set(LightBlue, 0x00); | ||||||
|             LL_mDelay(125); |             LL_mDelay(125); | ||||||
|         } else if(*c == '-') { |         } else if(*c == '-') { | ||||||
|             LL_mDelay(250); |             LL_mDelay(250); | ||||||
|             api_hal_light_set(LightRed, 0x00); |             furi_hal_light_set(LightRed, 0x00); | ||||||
|             api_hal_light_set(LightGreen, 0x00); |             furi_hal_light_set(LightGreen, 0x00); | ||||||
|             api_hal_light_set(LightBlue, 0x00); |             furi_hal_light_set(LightBlue, 0x00); | ||||||
|             LL_mDelay(250); |             LL_mDelay(250); | ||||||
|         } else if(*c == '|') { |         } else if(*c == '|') { | ||||||
|             api_hal_light_set(LightRed, 0x00); |             furi_hal_light_set(LightRed, 0x00); | ||||||
|             api_hal_light_set(LightGreen, 0x00); |             furi_hal_light_set(LightGreen, 0x00); | ||||||
|             api_hal_light_set(LightBlue, 0x00); |             furi_hal_light_set(LightBlue, 0x00); | ||||||
|         } |         } | ||||||
|         c++; |         c++; | ||||||
|     } while(*c != 0); |     } while(*c != 0); | ||||||
| @ -125,7 +125,7 @@ void usb_wire_reset() { | |||||||
| void target_init() { | void target_init() { | ||||||
|     clock_init(); |     clock_init(); | ||||||
|     gpio_init(); |     gpio_init(); | ||||||
|     api_hal_init(); |     furi_hal_init(); | ||||||
|     target_led_control("RGB"); |     target_led_control("RGB"); | ||||||
|     rtc_init(); |     rtc_init(); | ||||||
|     version_save(); |     version_save(); | ||||||
|  | |||||||
| @ -34,8 +34,8 @@ CFLAGS			+= -I$(DRIVERS_DIR) | |||||||
| C_SOURCES		+= $(DRIVERS_DIR)/lp5562.c | C_SOURCES		+= $(DRIVERS_DIR)/lp5562.c | ||||||
| 
 | 
 | ||||||
| # API-HAL
 | # API-HAL
 | ||||||
| CFLAGS			+= -I$(TARGET_DIR)/api-hal | CFLAGS			+= -I$(TARGET_DIR)/furi-hal | ||||||
| C_SOURCES		+= $(wildcard $(TARGET_DIR)/api-hal/*.c) | C_SOURCES		+= $(wildcard $(TARGET_DIR)/furi-hal/*.c) | ||||||
| 
 | 
 | ||||||
| # Version generation
 | # Version generation
 | ||||||
| C_SOURCES		+= $(PROJECT_ROOT)/lib/toolbox/version.c | C_SOURCES		+= $(PROJECT_ROOT)/lib/toolbox/version.c | ||||||
|  | |||||||
| @ -4,5 +4,5 @@ CFLAGS			+= -I$(CORE_DIR) -D_GNU_SOURCE | |||||||
| ASM_SOURCES		+= $(wildcard $(CORE_DIR)/*.s) | ASM_SOURCES		+= $(wildcard $(CORE_DIR)/*.s) | ||||||
| C_SOURCES		+= $(wildcard $(CORE_DIR)/*.c) | C_SOURCES		+= $(wildcard $(CORE_DIR)/*.c) | ||||||
| C_SOURCES		+= $(wildcard $(CORE_DIR)/furi/*.c) | C_SOURCES		+= $(wildcard $(CORE_DIR)/furi/*.c) | ||||||
| C_SOURCES		+= $(wildcard $(CORE_DIR)/api-hal/*.c) | C_SOURCES		+= $(wildcard $(CORE_DIR)/furi-hal/*.c) | ||||||
| CPP_SOURCES		+= $(wildcard $(CORE_DIR)/*.cpp) | CPP_SOURCES		+= $(wildcard $(CORE_DIR)/*.cpp) | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "flipper.h" | #include "flipper.h" | ||||||
| #include <applications.h> | #include <applications.h> | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
| #include <api-hal-version.h> | #include <furi-hal-version.h> | ||||||
| 
 | 
 | ||||||
| static void flipper_print_version(const char* target, const Version* version) { | static void flipper_print_version(const char* target, const Version* version) { | ||||||
|     if(version) { |     if(version) { | ||||||
| @ -25,10 +25,10 @@ static void flipper_print_version(const char* target, const Version* version) { | |||||||
| void flipper_init() { | void flipper_init() { | ||||||
|     const Version* version; |     const Version* version; | ||||||
| 
 | 
 | ||||||
|     version = (const Version*)api_hal_version_get_boot_version(); |     version = (const Version*)furi_hal_version_get_boot_version(); | ||||||
|     flipper_print_version("Bootloader", version); |     flipper_print_version("Bootloader", version); | ||||||
| 
 | 
 | ||||||
|     version = (const Version*)api_hal_version_get_firmware_version(); |     version = (const Version*)furi_hal_version_get_firmware_version(); | ||||||
|     flipper_print_version("Firmware", version); |     flipper_print_version("Firmware", version); | ||||||
| 
 | 
 | ||||||
|     FURI_LOG_I("FLIPPER", "starting services"); |     FURI_LOG_I("FLIPPER", "starting services"); | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ | |||||||
| #include <furi/valuemutex.h> | #include <furi/valuemutex.h> | ||||||
| #include <furi/log.h> | #include <furi/log.h> | ||||||
| 
 | 
 | ||||||
| #include <api-hal-gpio.h> | #include <furi-hal-gpio.h> | ||||||
| #include <api-hal/api-interrupt-mgr.h> | #include <furi-hal/api-interrupt-mgr.h> | ||||||
| 
 | 
 | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| #include "check.h" | #include "check.h" | ||||||
| #include "api-hal-task.h" | #include "furi-hal-task.h" | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| 
 | 
 | ||||||
| void __furi_abort(void); | void __furi_abort(void); | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| #include "check.h" | #include "check.h" | ||||||
| #include "memmgr.h" | #include "memmgr.h" | ||||||
| 
 | 
 | ||||||
| #include <api-hal.h> | #include <furi-hal.h> | ||||||
| #include <m-dict.h> | #include <m-dict.h> | ||||||
| 
 | 
 | ||||||
| DICT_DEF2( | DICT_DEF2( | ||||||
| @ -58,7 +58,7 @@ static ssize_t stdout_write(void* _cookie, const char* data, size_t size) { | |||||||
|         return 0; |         return 0; | ||||||
|     } |     } | ||||||
|     // Debug uart
 |     // Debug uart
 | ||||||
|     if(!consumed) api_hal_console_tx((const uint8_t*)data, size); |     if(!consumed) furi_hal_console_tx((const uint8_t*)data, size); | ||||||
|     // All data consumed
 |     // All data consumed
 | ||||||
|     return size; |     return size; | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ include			$(PROJECT_ROOT)/core/core.mk | |||||||
| include 		$(PROJECT_ROOT)/applications/applications.mk | include 		$(PROJECT_ROOT)/applications/applications.mk | ||||||
| include			$(PROJECT_ROOT)/lib/lib.mk | include			$(PROJECT_ROOT)/lib/lib.mk | ||||||
| 
 | 
 | ||||||
| CFLAGS			+= -I$(PROJECT_ROOT) -Itargets/api-hal-include | CFLAGS			+= -I$(PROJECT_ROOT) -Itargets/furi-hal-include | ||||||
| CFLAGS			+= -Werror -Wno-address-of-packed-member | CFLAGS			+= -Werror -Wno-address-of-packed-member | ||||||
| CPPFLAGS		+= -Werror | CPPFLAGS		+= -Werror | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ You can find platform code for STM32WB55 version in `f4` folder: | |||||||
| ``` | ``` | ||||||
| ├── Inc                             # CubeMX generated headers | ├── Inc                             # CubeMX generated headers | ||||||
| ├── Src                             # CubeMX generated code | ├── Src                             # CubeMX generated code | ||||||
| ├── api-hal                         # Our HAL wrappers and platform specifics | ├── furi-hal                         # Our HAL wrappers and platform specifics | ||||||
| ├── ble-glue                        # BLE specific code(Glue for STMWPAN) | ├── ble-glue                        # BLE specific code(Glue for STMWPAN) | ||||||
| ├── f4.ioc                          # CubeMX project file | ├── f4.ioc                          # CubeMX project file | ||||||
| ├── startup_stm32wb55xx_cm4.s       # Board startup/initialization assembler code | ├── startup_stm32wb55xx_cm4.s       # Board startup/initialization assembler code | ||||||
| @ -46,7 +46,7 @@ Working with CubeMX: | |||||||
| 3. Do whatever you want to | 3. Do whatever you want to | ||||||
| 3. Click `generate code` | 3. Click `generate code` | ||||||
| 4. After regenerating, look at git status, regeneration may brake some files. | 4. After regenerating, look at git status, regeneration may brake some files. | ||||||
| 5. Check one more time that things that you've changes are not covered in platform api-hal. Because you know... | 5. Check one more time that things that you've changes are not covered in platform furi-hal. Because you know... | ||||||
| 
 | 
 | ||||||
| # Flipper Universal Registry Implementation (FURI) | # Flipper Universal Registry Implementation (FURI) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,34 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| #include <stdint.h> |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| extern "C" { |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /** Boot modes */ |  | ||||||
| typedef enum { |  | ||||||
|     ApiHalBootModeNormal, |  | ||||||
|     ApiHalBootModeDFU |  | ||||||
| } ApiHalBootMode; |  | ||||||
| 
 |  | ||||||
| /** Boot flags */ |  | ||||||
| typedef enum { |  | ||||||
|     ApiHalBootFlagDefault=0, |  | ||||||
|     ApiHalBootFlagFactoryReset=1, |  | ||||||
| } ApiHalBootFlag; |  | ||||||
| 
 |  | ||||||
| /** Initialize boot subsystem */ |  | ||||||
| void api_hal_boot_init(); |  | ||||||
| 
 |  | ||||||
| /** Set boot mode */ |  | ||||||
| void api_hal_boot_set_mode(ApiHalBootMode mode); |  | ||||||
| 
 |  | ||||||
| /** Set boot flags */ |  | ||||||
| void api_hal_boot_set_flags(ApiHalBootFlag flags); |  | ||||||
| 
 |  | ||||||
| /** Get boot flag */ |  | ||||||
| ApiHalBootFlag api_hal_boot_get_flags(); |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| #include <stdbool.h> |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| extern "C" { |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| void api_hal_ibutton_start(); |  | ||||||
| 
 |  | ||||||
| void api_hal_ibutton_stop(); |  | ||||||
| 
 |  | ||||||
| void api_hal_ibutton_pin_low(); |  | ||||||
| 
 |  | ||||||
| void api_hal_ibutton_pin_high(); |  | ||||||
| 
 |  | ||||||
| bool api_hal_ibutton_pin_get_level(); |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,66 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <rfal_nfc.h> |  | ||||||
| #include <st_errno.h> |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include <stdint.h> |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| extern "C" { |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define API_HAL_NFC_UID_MAX_LEN 10 |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * Init nfc |  | ||||||
|  */ |  | ||||||
| void api_hal_nfc_init(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * Check if nfc worker is busy |  | ||||||
|  */ |  | ||||||
| bool api_hal_nfc_is_busy(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC field on |  | ||||||
|  */ |  | ||||||
| void api_hal_nfc_field_on(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC field off |  | ||||||
|  */ |  | ||||||
| void api_hal_nfc_field_off(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC start sleep |  | ||||||
|  */ |  | ||||||
| void api_hal_nfc_start_sleep(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC stop sleep |  | ||||||
|  */ |  | ||||||
| void api_hal_nfc_exit_sleep(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC poll |  | ||||||
|  */ |  | ||||||
| bool api_hal_nfc_detect(rfalNfcDevice** dev_list, uint8_t* dev_cnt, uint32_t timeout, bool deactivate); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC listen |  | ||||||
|  */ |  | ||||||
| bool api_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t sak, uint32_t timeout); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC data exchange |  | ||||||
|  */ |  | ||||||
| ReturnCode api_hal_nfc_data_exchange(uint8_t* tx_buff, uint16_t tx_len, uint8_t** rx_buff, uint16_t** rx_len, bool deactivate); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * NFC deactivate and start sleep |  | ||||||
|  */ |  | ||||||
| void api_hal_nfc_deactivate(); |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,90 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include <stdint.h> |  | ||||||
| #include <string.h> |  | ||||||
| #include <lib/toolbox/version.h> |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| extern "C" { |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /** Device Colors */ |  | ||||||
| typedef enum { |  | ||||||
|     ApiHalVersionColorUnknown=0x00, |  | ||||||
|     ApiHalVersionColorBlack=0x01, |  | ||||||
|     ApiHalVersionColorWhite=0x02, |  | ||||||
| } ApiHalVersionColor; |  | ||||||
| 
 |  | ||||||
| /** Device Regions */ |  | ||||||
| typedef enum { |  | ||||||
|     ApiHalVersionRegionUnknown=0x00, |  | ||||||
|     ApiHalVersionRegionEuRu=0x01, |  | ||||||
|     ApiHalVersionRegionUsCaAu=0x02, |  | ||||||
|     ApiHalVersionRegionJp=0x03, |  | ||||||
| } ApiHalVersionRegion; |  | ||||||
| 
 |  | ||||||
| /** Init flipper version */ |  | ||||||
| void api_hal_version_init(); |  | ||||||
| 
 |  | ||||||
| /** Check target firmware version */ |  | ||||||
| bool api_hal_version_do_i_belong_here(); |  | ||||||
| 
 |  | ||||||
| /** Get model name */ |  | ||||||
| const char* api_hal_version_get_model_name(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware version */ |  | ||||||
| const uint8_t api_hal_version_get_hw_version(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware target */ |  | ||||||
| const uint8_t api_hal_version_get_hw_target(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware body */ |  | ||||||
| const uint8_t api_hal_version_get_hw_body(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware body color */ |  | ||||||
| const ApiHalVersionColor api_hal_version_get_hw_color(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware connect */ |  | ||||||
| const uint8_t api_hal_version_get_hw_connect(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware region */ |  | ||||||
| const ApiHalVersionRegion api_hal_version_get_hw_region(); |  | ||||||
| 
 |  | ||||||
| /** Get hardware timestamp */ |  | ||||||
| const uint32_t api_hal_version_get_hw_timestamp(); |  | ||||||
| 
 |  | ||||||
| /** Get pointer to target name */ |  | ||||||
| const char* api_hal_version_get_name_ptr(); |  | ||||||
| 
 |  | ||||||
| /** Get pointer to target device name */ |  | ||||||
| const char* api_hal_version_get_device_name_ptr(); |  | ||||||
| 
 |  | ||||||
| /** Get pointer to target ble local device name */ |  | ||||||
| const char* api_hal_version_get_ble_local_device_name_ptr(); |  | ||||||
| 
 |  | ||||||
| const uint8_t* api_hal_version_get_ble_mac(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * Get address of version structure of bootloader, stored in chip flash. |  | ||||||
|  * |  | ||||||
|  * @return Address of boot version structure. |  | ||||||
|  */ |  | ||||||
| const struct Version* api_hal_version_get_boot_version(void); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * Get address of version structure of firmware. |  | ||||||
|  * |  | ||||||
|  * @return Address of firmware version structure. |  | ||||||
|  */ |  | ||||||
| const struct Version* api_hal_version_get_firmware_version(void); |  | ||||||
| 
 |  | ||||||
| /** Get platform UID size in bytes */ |  | ||||||
| size_t api_hal_version_uid_size(); |  | ||||||
| 
 |  | ||||||
| /** Get const pointer to UID */ |  | ||||||
| const uint8_t* api_hal_version_uid(); |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,32 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| template <unsigned int N> struct STOP_EXTERNING_ME {}; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #include "api-hal-boot.h" |  | ||||||
| #include "api-hal-clock.h" |  | ||||||
| #include "api-hal-console.h" |  | ||||||
| #include "api-hal-os.h" |  | ||||||
| #include "api-hal-i2c.h" |  | ||||||
| #include "api-hal-resources.h" |  | ||||||
| #include "api-hal-gpio.h" |  | ||||||
| #include "api-hal-light.h" |  | ||||||
| #include "api-hal-delay.h" |  | ||||||
| #include "api-hal-pwm.h" |  | ||||||
| #include "api-hal-task.h" |  | ||||||
| #include "api-hal-power.h" |  | ||||||
| #include "api-hal-vcp.h" |  | ||||||
| #include "api-hal-interrupt.h" |  | ||||||
| #include "api-hal-version.h" |  | ||||||
| #include "api-hal-bt.h" |  | ||||||
| #include "api-hal-spi.h" |  | ||||||
| #include "api-hal-flash.h" |  | ||||||
| #include "api-hal-subghz.h" |  | ||||||
| #include "api-hal-vibro.h" |  | ||||||
| #include "api-hal-ibutton.h" |  | ||||||
| #include "api-hal-rfid.h" |  | ||||||
| #include "api-hal-nfc.h" |  | ||||||
| 
 |  | ||||||
| /** Init api-hal */ |  | ||||||
| void api_hal_init(); |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく