2022-01-05 19:10:18 +03:00
|
|
|
/**
|
|
|
|
|
* @file furi_hal.h
|
|
|
|
|
* Furi HAL API
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
2022-09-15 02:11:38 +10:00
|
|
|
template <unsigned int N>
|
|
|
|
|
struct STOP_EXTERNING_ME {};
|
2022-01-05 19:10:18 +03:00
|
|
|
#endif
|
|
|
|
|
|
2023-02-07 19:33:05 +03:00
|
|
|
#include <furi_hal_cortex.h>
|
|
|
|
|
#include <furi_hal_clock.h>
|
2024-04-18 00:17:40 +09:00
|
|
|
#include <furi_hal_adc.h>
|
2023-05-30 01:05:57 +09:00
|
|
|
#include <furi_hal_bus.h>
|
2023-02-07 19:33:05 +03:00
|
|
|
#include <furi_hal_crypto.h>
|
|
|
|
|
#include <furi_hal_debug.h>
|
2023-05-30 01:05:57 +09:00
|
|
|
#include <furi_hal_dma.h>
|
2023-02-07 19:33:05 +03:00
|
|
|
#include <furi_hal_os.h>
|
|
|
|
|
#include <furi_hal_sd.h>
|
|
|
|
|
#include <furi_hal_i2c.h>
|
|
|
|
|
#include <furi_hal_region.h>
|
|
|
|
|
#include <furi_hal_resources.h>
|
|
|
|
|
#include <furi_hal_rtc.h>
|
|
|
|
|
#include <furi_hal_speaker.h>
|
|
|
|
|
#include <furi_hal_gpio.h>
|
|
|
|
|
#include <furi_hal_light.h>
|
|
|
|
|
#include <furi_hal_power.h>
|
|
|
|
|
#include <furi_hal_interrupt.h>
|
|
|
|
|
#include <furi_hal_version.h>
|
|
|
|
|
#include <furi_hal_bt.h>
|
|
|
|
|
#include <furi_hal_spi.h>
|
|
|
|
|
#include <furi_hal_flash.h>
|
|
|
|
|
#include <furi_hal_vibro.h>
|
|
|
|
|
#include <furi_hal_usb.h>
|
|
|
|
|
#include <furi_hal_usb_hid.h>
|
2023-09-21 02:09:00 -07:00
|
|
|
#include <furi_hal_usb_ccid.h>
|
2024-01-16 08:09:37 +09:00
|
|
|
#include <furi_hal_serial_control.h>
|
|
|
|
|
#include <furi_hal_serial.h>
|
2023-02-07 19:33:05 +03:00
|
|
|
#include <furi_hal_info.h>
|
|
|
|
|
#include <furi_hal_random.h>
|
|
|
|
|
#include <furi_hal_target_hw.h>
|
2022-01-05 19:10:18 +03:00
|
|
|
|
2022-04-13 23:50:25 +03:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2024-10-31 20:42:03 +09:00
|
|
|
/** Early FuriHal init
|
|
|
|
|
*
|
|
|
|
|
* Init essential subsystems used in pre-DFU stage.
|
|
|
|
|
* This state can be undone with `furi_hal_deinit_early`.
|
|
|
|
|
*
|
|
|
|
|
*/
|
2024-03-19 23:43:52 +09:00
|
|
|
void furi_hal_init_early(void);
|
2022-04-13 23:50:25 +03:00
|
|
|
|
2024-10-31 20:42:03 +09:00
|
|
|
/** Early FuriHal deinit
|
|
|
|
|
*
|
|
|
|
|
* Undo `furi_hal_init_early`, prepare system for switch to another firmware/bootloader.
|
|
|
|
|
*/
|
2024-03-19 23:43:52 +09:00
|
|
|
void furi_hal_deinit_early(void);
|
2022-04-13 23:50:25 +03:00
|
|
|
|
2024-10-31 20:42:03 +09:00
|
|
|
/** Init FuriHal
|
|
|
|
|
*
|
|
|
|
|
* Initialize the rest of the HAL, must be used after `furi_hal_init_early`.
|
|
|
|
|
*/
|
2024-03-19 23:43:52 +09:00
|
|
|
void furi_hal_init(void);
|
2022-02-19 05:53:46 +10:00
|
|
|
|
2024-06-10 18:04:29 +01:00
|
|
|
/** Jump to the void*
|
2022-04-13 23:50:25 +03:00
|
|
|
*
|
2024-06-10 18:04:29 +01:00
|
|
|
* Allow your code to transfer control to another firmware.
|
|
|
|
|
*
|
|
|
|
|
* @warning This code doesn't reset system before jump. Call it only from
|
|
|
|
|
* main thread, no kernel should be running. Ensure that no
|
|
|
|
|
* peripheral blocks active and no interrupts are pending.
|
|
|
|
|
*
|
|
|
|
|
* @param address The System Vector address(start of your new firmware)
|
2022-02-19 05:53:46 +10:00
|
|
|
*/
|
2022-04-13 23:50:25 +03:00
|
|
|
void furi_hal_switch(void* address);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|