2022-08-11 09:21:56 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
2022-09-14 16:11:38 +00:00
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2022-08-11 09:21:56 +00:00
|
|
|
|
typedef struct {
|
|
|
|
|
uint32_t start;
|
|
|
|
|
uint32_t end;
|
|
|
|
|
int8_t power_limit;
|
|
|
|
|
uint8_t duty_cycle;
|
|
|
|
|
} FuriHalRegionBand;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char country_code[4];
|
|
|
|
|
uint16_t bands_count;
|
|
|
|
|
FuriHalRegionBand bands[];
|
|
|
|
|
} FuriHalRegion;
|
|
|
|
|
|
|
|
|
|
/** Initialize region */
|
2024-03-19 14:43:52 +00:00
|
|
|
|
void furi_hal_region_init(void);
|
2022-08-11 09:21:56 +00:00
|
|
|
|
|
|
|
|
|
/** Get Region Data.
|
|
|
|
|
*
|
|
|
|
|
* Region data may be allocated in Flash or in RAM.
|
|
|
|
|
* Keep in mind that we don't do memory management on our side.
|
|
|
|
|
*
|
|
|
|
|
* @return pointer to FuriHalRegion instance (in RAM or Flash, check before freeing on region update)
|
|
|
|
|
*/
|
2024-03-19 14:43:52 +00:00
|
|
|
|
const FuriHalRegion* furi_hal_region_get(void);
|
2022-08-11 09:21:56 +00:00
|
|
|
|
|
|
|
|
|
/** Set device region data
|
|
|
|
|
*
|
|
|
|
|
* @param region pointer to the FuriHalRegion
|
|
|
|
|
*/
|
|
|
|
|
void furi_hal_region_set(FuriHalRegion* region);
|
|
|
|
|
|
|
|
|
|
/** Check if region data provisioned
|
|
|
|
|
*
|
|
|
|
|
* @return true if provisioned, false otherwise
|
|
|
|
|
*/
|
2024-03-19 14:43:52 +00:00
|
|
|
|
bool furi_hal_region_is_provisioned(void);
|
2022-08-11 09:21:56 +00:00
|
|
|
|
|
|
|
|
|
/** Get region name
|
|
|
|
|
*
|
|
|
|
|
* 2 letter Region code according to iso 3166 standard
|
|
|
|
|
* There are 2 extra values that we use in special cases:
|
|
|
|
|
* - "00" - developer edition, unlocked
|
|
|
|
|
* - "WW" - world wide, region provisioned by default
|
|
|
|
|
* - "--" - no provisioned region
|
|
|
|
|
*
|
|
|
|
|
* @return Pointer to string
|
|
|
|
|
*/
|
2024-03-19 14:43:52 +00:00
|
|
|
|
const char* furi_hal_region_get_name(void);
|
2022-08-11 09:21:56 +00:00
|
|
|
|
|
|
|
|
|
/** Сheck if transmission is allowed on this frequency for your flipper region
|
|
|
|
|
*
|
|
|
|
|
* @param[in] frequency The frequency
|
|
|
|
|
* @param value frequency in Hz
|
|
|
|
|
*
|
|
|
|
|
* @return true if allowed
|
|
|
|
|
*/
|
|
|
|
|
bool furi_hal_region_is_frequency_allowed(uint32_t frequency);
|
|
|
|
|
|
|
|
|
|
/** Get band data for frequency
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @param[in] frequency The frequency
|
|
|
|
|
*
|
|
|
|
|
* @return { description_of_the_return_value }
|
|
|
|
|
*/
|
|
|
|
|
const FuriHalRegionBand* furi_hal_region_get_band(uint32_t frequency);
|
2022-09-14 16:11:38 +00:00
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|