Rename api-hal to furi-hal (#629)

This commit is contained in:
あく 2021-08-08 21:03:25 +03:00 committed by GitHub
parent 7907cb232b
commit 0a97d6913c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
192 changed files with 2276 additions and 2212 deletions

View File

@ -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

View File

@ -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() {

View File

@ -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;

View File

@ -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;

View File

@ -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);
} }

View File

@ -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>

View File

@ -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);

View File

@ -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]);
} }

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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);
} }

View File

@ -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>

View File

@ -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);
} }

View File

@ -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);

View File

@ -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;
} }

View File

@ -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>

View File

@ -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;
} }

View File

@ -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>

View File

@ -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;

View File

@ -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();
} }

View File

@ -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();
} }

View File

@ -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,

View File

@ -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() {

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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;
} }

View File

@ -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>

View File

@ -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"

View File

@ -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>

View File

@ -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>

View File

@ -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();
} }

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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();
} }

View File

@ -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);
} }
} }

View File

@ -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"

View File

@ -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) {

View File

@ -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) {

View File

@ -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>

View File

@ -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>

View File

@ -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);
} }
} }

View File

@ -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>

View File

@ -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>

View File

@ -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);

View File

@ -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();
} }

View File

@ -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();
} }

View File

@ -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"

View File

@ -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) {

View File

@ -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"

View File

@ -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);

View File

@ -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;

View File

@ -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));
} }

View File

@ -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>

View File

@ -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(

View File

@ -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));
} }

View File

@ -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);
} }

View File

@ -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"

View File

@ -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;

View File

@ -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");

View File

@ -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);

View File

@ -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>

View File

@ -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) {

View File

@ -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) {

View File

@ -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;
}); });
} }

View File

@ -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) {

View File

@ -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"

View File

@ -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>

View File

@ -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)

View File

@ -1,6 +0,0 @@
#include <api-hal.h>
void api_hal_init() {
api_hal_i2c_init();
api_hal_light_init();
}

View File

@ -1,6 +0,0 @@
#pragma once
#include <api-hal-i2c.h>
#include <api-hal-light.h>
void api_hal_init();

View File

@ -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;

View File

@ -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__; })(); \
} }

View File

@ -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);

View File

@ -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
} }

View File

@ -0,0 +1,6 @@
#include <furi-hal.h>
void furi_hal_init() {
furi_hal_i2c_init();
furi_hal_light_init();
}

View File

@ -0,0 +1,6 @@
#pragma once
#include <furi-hal-i2c.h>
#include <furi-hal-light.h>
void furi_hal_init();

View File

@ -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();

View File

@ -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

View File

@ -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)

View File

@ -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");

View File

@ -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>

View File

@ -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);

View File

@ -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;
} }

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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