flipperzero-firmware/firmware/targets/furi_hal_include/furi_hal_region.h
あく fae392d84e
[FL-2677] SubGhz: region provisioning (#1574)
* FuriHal: region HAL draft
* FuriHal,SubGhz: complete region provisioning.
* Rpc: fix null pointer dereference.
* Cli: device info formatting
* FuriHal: region provisioning fixes and documentation.
2022-08-11 19:21:56 +10:00

74 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
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 */
void furi_hal_region_init();
/** 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)
*/
const FuriHalRegion* furi_hal_region_get();
/** 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
*/
bool furi_hal_region_is_provisioned();
/** 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
*/
const char* furi_hal_region_get_name();
/** С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);