|
@@ -269,7 +269,7 @@ void furi_hal_subghz_init() {
|
|
|
furi_assert(furi_hal_subghz_state == SubGhzStateInit);
|
|
furi_assert(furi_hal_subghz_state == SubGhzStateInit);
|
|
|
furi_hal_subghz_state = SubGhzStateIdle;
|
|
furi_hal_subghz_state = SubGhzStateIdle;
|
|
|
|
|
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
#ifdef FURI_HAL_SUBGHZ_TX_GPIO
|
|
#ifdef FURI_HAL_SUBGHZ_TX_GPIO
|
|
|
hal_gpio_init(&FURI_HAL_SUBGHZ_TX_GPIO, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&FURI_HAL_SUBGHZ_TX_GPIO, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
|
|
@@ -277,58 +277,58 @@ void furi_hal_subghz_init() {
|
|
|
|
|
|
|
|
// Reset
|
|
// Reset
|
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
|
- cc1101_reset(device);
|
|
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
|
|
|
|
+ cc1101_reset(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
|
|
|
|
|
// Prepare GD0 for power on self test
|
|
// Prepare GD0 for power on self test
|
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow);
|
|
|
|
|
|
|
|
// GD0 low
|
|
// GD0 low
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG0, CC1101IocfgHW);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHW);
|
|
|
while(hal_gpio_read(&gpio_cc1101_g0) != false)
|
|
while(hal_gpio_read(&gpio_cc1101_g0) != false)
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
// GD0 high
|
|
// GD0 high
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG0, CC1101IocfgHW | CC1101_IOCFG_INV);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHW | CC1101_IOCFG_INV);
|
|
|
while(hal_gpio_read(&gpio_cc1101_g0) != true)
|
|
while(hal_gpio_read(&gpio_cc1101_g0) != true)
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
// Reset GD0 to floating state
|
|
// Reset GD0 to floating state
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
|
|
|
|
|
|
// RF switches
|
|
// RF switches
|
|
|
hal_gpio_init(&gpio_rf_sw_0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&gpio_rf_sw_0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG2, CC1101IocfgHW);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG2, CC1101IocfgHW);
|
|
|
|
|
|
|
|
// Go to sleep
|
|
// Go to sleep
|
|
|
- cc1101_shutdown(device);
|
|
|
|
|
|
|
+ cc1101_shutdown(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
FURI_LOG_I(TAG, "Init OK");
|
|
FURI_LOG_I(TAG, "Init OK");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_sleep() {
|
|
void furi_hal_subghz_sleep() {
|
|
|
furi_assert(furi_hal_subghz_state == SubGhzStateIdle);
|
|
furi_assert(furi_hal_subghz_state == SubGhzStateIdle);
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
- cc1101_switch_to_idle(device);
|
|
|
|
|
|
|
+ cc1101_switch_to_idle(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
|
|
|
|
|
|
- cc1101_shutdown(device);
|
|
|
|
|
|
|
+ cc1101_shutdown(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_dump_state() {
|
|
void furi_hal_subghz_dump_state() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
printf(
|
|
printf(
|
|
|
"[furi_hal_subghz] cc1101 chip %d, version %d\r\n",
|
|
"[furi_hal_subghz] cc1101 chip %d, version %d\r\n",
|
|
|
- cc1101_get_partnumber(device),
|
|
|
|
|
- cc1101_get_version(device));
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ cc1101_get_partnumber(&furi_hal_spi_bus_handle_subghz),
|
|
|
|
|
+ cc1101_get_version(&furi_hal_spi_bus_handle_subghz));
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_load_preset(FuriHalSubGhzPreset preset) {
|
|
void furi_hal_subghz_load_preset(FuriHalSubGhzPreset preset) {
|
|
@@ -350,81 +350,81 @@ void furi_hal_subghz_load_preset(FuriHalSubGhzPreset preset) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_load_registers(const uint8_t data[][2]) {
|
|
void furi_hal_subghz_load_registers(const uint8_t data[][2]) {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_reset(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_reset(&furi_hal_spi_bus_handle_subghz);
|
|
|
uint32_t i = 0;
|
|
uint32_t i = 0;
|
|
|
while(data[i][0]) {
|
|
while(data[i][0]) {
|
|
|
- cc1101_write_reg(device, data[i][0], data[i][1]);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, data[i][0], data[i][1]);
|
|
|
i++;
|
|
i++;
|
|
|
}
|
|
}
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_load_patable(const uint8_t data[8]) {
|
|
void furi_hal_subghz_load_patable(const uint8_t data[8]) {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_set_pa_table(device, data);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_set_pa_table(&furi_hal_spi_bus_handle_subghz, data);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_write_packet(const uint8_t* data, uint8_t size) {
|
|
void furi_hal_subghz_write_packet(const uint8_t* data, uint8_t size) {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_flush_tx(device);
|
|
|
|
|
- cc1101_write_fifo(device, data, size);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_flush_tx(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_write_fifo(&furi_hal_spi_bus_handle_subghz, data, size);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_flush_rx() {
|
|
void furi_hal_subghz_flush_rx() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_flush_rx(device);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_flush_rx(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_read_packet(uint8_t* data, uint8_t* size) {
|
|
void furi_hal_subghz_read_packet(uint8_t* data, uint8_t* size) {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_read_fifo(device, data, size);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_read_fifo(&furi_hal_spi_bus_handle_subghz, data, size);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_shutdown() {
|
|
void furi_hal_subghz_shutdown() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
// Reset and shutdown
|
|
// Reset and shutdown
|
|
|
- cc1101_shutdown(device);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ cc1101_shutdown(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_reset() {
|
|
void furi_hal_subghz_reset() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
hal_gpio_init(&gpio_cc1101_g0, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
|
|
|
- cc1101_switch_to_idle(device);
|
|
|
|
|
- cc1101_reset(device);
|
|
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ cc1101_switch_to_idle(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_reset(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHighImpedance);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_idle() {
|
|
void furi_hal_subghz_idle() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_switch_to_idle(device);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_switch_to_idle(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_rx() {
|
|
void furi_hal_subghz_rx() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_switch_to_rx(device);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_switch_to_rx(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool furi_hal_subghz_tx() {
|
|
bool furi_hal_subghz_tx() {
|
|
|
if(furi_hal_subghz_regulation != SubGhzRegulationTxRx) return false;
|
|
if(furi_hal_subghz_regulation != SubGhzRegulationTxRx) return false;
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- cc1101_switch_to_tx(device);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ cc1101_switch_to_tx(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
float furi_hal_subghz_get_rssi() {
|
|
float furi_hal_subghz_get_rssi() {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
- int32_t rssi_dec = cc1101_get_rssi(device);
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ int32_t rssi_dec = cc1101_get_rssi(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
float rssi = rssi_dec;
|
|
float rssi = rssi_dec;
|
|
|
if(rssi_dec >= 128) {
|
|
if(rssi_dec >= 128) {
|
|
@@ -461,7 +461,7 @@ uint32_t furi_hal_subghz_set_frequency_and_path(uint32_t value) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
uint32_t furi_hal_subghz_set_frequency(uint32_t value) {
|
|
uint32_t furi_hal_subghz_set_frequency(uint32_t value) {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
//checking regional settings
|
|
//checking regional settings
|
|
|
bool txrx = false;
|
|
bool txrx = false;
|
|
@@ -503,37 +503,37 @@ uint32_t furi_hal_subghz_set_frequency(uint32_t value) {
|
|
|
furi_hal_subghz_regulation = SubGhzRegulationOnlyRx;
|
|
furi_hal_subghz_regulation = SubGhzRegulationOnlyRx;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- uint32_t real_frequency = cc1101_set_frequency(device, value);
|
|
|
|
|
- cc1101_calibrate(device);
|
|
|
|
|
|
|
+ uint32_t real_frequency = cc1101_set_frequency(&furi_hal_spi_bus_handle_subghz, value);
|
|
|
|
|
+ cc1101_calibrate(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
while(true) {
|
|
while(true) {
|
|
|
- CC1101Status status = cc1101_get_status(device);
|
|
|
|
|
|
|
+ CC1101Status status = cc1101_get_status(&furi_hal_spi_bus_handle_subghz);
|
|
|
if(status.STATE == CC1101StateIDLE) break;
|
|
if(status.STATE == CC1101StateIDLE) break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
|
|
|
|
|
return real_frequency;
|
|
return real_frequency;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void furi_hal_subghz_set_path(FuriHalSubGhzPath path) {
|
|
void furi_hal_subghz_set_path(FuriHalSubGhzPath path) {
|
|
|
- const FuriHalSpiDevice* device = furi_hal_spi_device_get(FuriHalSpiDeviceIdSubGhz);
|
|
|
|
|
|
|
+ furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz);
|
|
|
if(path == FuriHalSubGhzPath433) {
|
|
if(path == FuriHalSubGhzPath433) {
|
|
|
hal_gpio_write(&gpio_rf_sw_0, 0);
|
|
hal_gpio_write(&gpio_rf_sw_0, 0);
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG2, CC1101IocfgHW | CC1101_IOCFG_INV);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG2, CC1101IocfgHW | CC1101_IOCFG_INV);
|
|
|
} else if(path == FuriHalSubGhzPath315) {
|
|
} else if(path == FuriHalSubGhzPath315) {
|
|
|
hal_gpio_write(&gpio_rf_sw_0, 1);
|
|
hal_gpio_write(&gpio_rf_sw_0, 1);
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG2, CC1101IocfgHW);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG2, CC1101IocfgHW);
|
|
|
} else if(path == FuriHalSubGhzPath868) {
|
|
} else if(path == FuriHalSubGhzPath868) {
|
|
|
hal_gpio_write(&gpio_rf_sw_0, 1);
|
|
hal_gpio_write(&gpio_rf_sw_0, 1);
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG2, CC1101IocfgHW | CC1101_IOCFG_INV);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG2, CC1101IocfgHW | CC1101_IOCFG_INV);
|
|
|
} else if(path == FuriHalSubGhzPathIsolate) {
|
|
} else if(path == FuriHalSubGhzPathIsolate) {
|
|
|
hal_gpio_write(&gpio_rf_sw_0, 0);
|
|
hal_gpio_write(&gpio_rf_sw_0, 0);
|
|
|
- cc1101_write_reg(device, CC1101_IOCFG2, CC1101IocfgHW);
|
|
|
|
|
|
|
+ cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG2, CC1101IocfgHW);
|
|
|
} else {
|
|
} else {
|
|
|
furi_crash(NULL);
|
|
furi_crash(NULL);
|
|
|
}
|
|
}
|
|
|
- furi_hal_spi_device_return(device);
|
|
|
|
|
|
|
+ furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
volatile uint32_t furi_hal_subghz_capture_delta_duration = 0;
|
|
volatile uint32_t furi_hal_subghz_capture_delta_duration = 0;
|