Switch sub-1GHz band (#349)
* switch band * extract subghz api to files
This commit is contained in:
parent
1b2c31da6f
commit
2fbf427e0a
@ -211,17 +211,17 @@ void tx_config(CC1101* cc1101) {
|
|||||||
// TODO: reg values not affetcts
|
// TODO: reg values not affetcts
|
||||||
|
|
||||||
const Band bands[] = {
|
const Band bands[] = {
|
||||||
{300., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{301., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{315., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{315., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{348., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{346., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{386., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{385., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{433.92, {0x00, 0x00, 0x00}, 0, 255, 74},
|
{433.92, {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{438.9, {0x00, 0x00, 0x00}, 0, 255, 74},
|
{438.9, {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{464., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{463., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{779., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{781., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{868., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{868., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{915., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{915., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
{928., {0x00, 0x00, 0x00}, 0, 255, 74},
|
{925., {0x00, 0x00, 0x00}, 0, 255, 74},
|
||||||
};
|
};
|
||||||
|
|
||||||
const FreqConfig FREQ_LIST[] = {
|
const FreqConfig FREQ_LIST[] = {
|
||||||
@ -278,6 +278,7 @@ typedef struct {
|
|||||||
int16_t last_rssi;
|
int16_t last_rssi;
|
||||||
size_t tx_level;
|
size_t tx_level;
|
||||||
bool need_cc1101_conf;
|
bool need_cc1101_conf;
|
||||||
|
RfBand rf_band;
|
||||||
} State;
|
} State;
|
||||||
|
|
||||||
static void render_callback(Canvas* canvas, void* ctx) {
|
static void render_callback(Canvas* canvas, void* ctx) {
|
||||||
@ -328,10 +329,15 @@ static void render_callback(Canvas* canvas, void* ctx) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
char buf[24];
|
char buf[24];
|
||||||
sprintf(buf, "tx level: %d dBm", TX_LEVELS[state->tx_level].dbm);
|
// sprintf(buf, "tx level: %d dBm", TX_LEVELS[state->tx_level].dbm);
|
||||||
|
sprintf(buf, "RF band: %d", (uint8_t)state->rf_band);
|
||||||
|
|
||||||
canvas_set_font(canvas, FontSecondary);
|
canvas_set_font(canvas, FontSecondary);
|
||||||
canvas_draw_str(canvas, 2, 63, buf);
|
if(state->rf_band == RfBandIsolation) {
|
||||||
|
canvas_draw_str(canvas, 2, 63, "RF band: isolation");
|
||||||
|
} else {
|
||||||
|
canvas_draw_str(canvas, 2, 63, buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
release_mutex((ValueMutex*)ctx, state);
|
release_mutex((ValueMutex*)ctx, state);
|
||||||
@ -360,6 +366,7 @@ extern "C" int32_t cc1101_workaround(void* p) {
|
|||||||
_state.need_cc1101_conf = true;
|
_state.need_cc1101_conf = true;
|
||||||
_state.last_rssi = 0;
|
_state.last_rssi = 0;
|
||||||
_state.tx_level = 0;
|
_state.tx_level = 0;
|
||||||
|
_state.rf_band = RfBand1;
|
||||||
|
|
||||||
ValueMutex state_mutex;
|
ValueMutex state_mutex;
|
||||||
if(!init_mutex(&state_mutex, &_state, sizeof(State))) {
|
if(!init_mutex(&state_mutex, &_state, sizeof(State))) {
|
||||||
@ -469,7 +476,11 @@ extern "C" int32_t cc1101_workaround(void* p) {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
state->active_freq += 0.25;
|
if(state->rf_band < RfBand3) {
|
||||||
|
state->rf_band = (RfBand)((uint8_t)state->rf_band + 1);
|
||||||
|
} else {
|
||||||
|
state->active_freq += 0.25;
|
||||||
|
}
|
||||||
state->need_cc1101_conf = true;
|
state->need_cc1101_conf = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,7 +494,11 @@ extern "C" int32_t cc1101_workaround(void* p) {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
state->active_freq -= 0.25;
|
if(state->rf_band > RfBandIsolation) {
|
||||||
|
state->rf_band = (RfBand)((uint8_t)state->rf_band - 1);
|
||||||
|
} else {
|
||||||
|
state->active_freq -= 0.25;
|
||||||
|
}
|
||||||
state->need_cc1101_conf = true;
|
state->need_cc1101_conf = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -518,6 +533,8 @@ extern "C" int32_t cc1101_workaround(void* p) {
|
|||||||
gpio_write(&cc1101_g0_gpio, false);
|
gpio_write(&cc1101_g0_gpio, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
api_hal_rf_band_set(state->rf_band);
|
||||||
|
|
||||||
state->need_cc1101_conf = false;
|
state->need_cc1101_conf = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
firmware/targets/api-hal-include/api-hal-subghz.h
Normal file
18
firmware/targets/api-hal-include/api-hal-subghz.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
RfBandIsolation = 0,
|
||||||
|
RfBand1 = 1,
|
||||||
|
RfBand2 = 2,
|
||||||
|
RfBand3 = 3
|
||||||
|
} RfBand;
|
||||||
|
|
||||||
|
void api_hal_rf_band_set(RfBand band);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -21,5 +21,6 @@ template <unsigned int N> struct STOP_EXTERNING_ME {};
|
|||||||
#include "api-hal-bt.h"
|
#include "api-hal-bt.h"
|
||||||
#include "api-hal-spi.h"
|
#include "api-hal-spi.h"
|
||||||
#include "api-hal-flash.h"
|
#include "api-hal-flash.h"
|
||||||
|
#include "api-hal-subghz.h"
|
||||||
|
|
||||||
void api_hal_init();
|
void api_hal_init();
|
||||||
|
5
firmware/targets/f4/api-hal/api-hal-subghz.c
Normal file
5
firmware/targets/f4/api-hal/api-hal-subghz.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "api-hal-subghz.h"
|
||||||
|
|
||||||
|
void api_hal_rf_band_set(RfBand band) {
|
||||||
|
|
||||||
|
}
|
@ -7,4 +7,4 @@ void api_hal_init() {
|
|||||||
api_hal_i2c_init();
|
api_hal_i2c_init();
|
||||||
api_hal_power_init();
|
api_hal_power_init();
|
||||||
api_hal_light_init();
|
api_hal_light_init();
|
||||||
}
|
}
|
19
firmware/targets/f5/api-hal/api-hal-subghz.c
Normal file
19
firmware/targets/f5/api-hal/api-hal-subghz.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "api-hal-subghz.h"
|
||||||
|
#include <stm32wbxx_ll_gpio.h>
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
void api_hal_rf_band_set(RfBand band) {
|
||||||
|
if (band == RfBand1) {
|
||||||
|
LL_GPIO_ResetOutputPin(PA_SW_0_GPIO_Port, PA_SW_0_Pin);
|
||||||
|
LL_GPIO_SetOutputPin(PA_SW_1_GPIO_Port, PA_SW_1_Pin);
|
||||||
|
} else if (band == RfBand2) {
|
||||||
|
LL_GPIO_SetOutputPin(PA_SW_0_GPIO_Port, PA_SW_0_Pin);
|
||||||
|
LL_GPIO_ResetOutputPin(PA_SW_1_GPIO_Port, PA_SW_1_Pin);
|
||||||
|
} else if (band == RfBand3) {
|
||||||
|
LL_GPIO_SetOutputPin(PA_SW_0_GPIO_Port, PA_SW_0_Pin);
|
||||||
|
LL_GPIO_SetOutputPin(PA_SW_1_GPIO_Port, PA_SW_1_Pin);
|
||||||
|
} else if (band == RfBandIsolation) {
|
||||||
|
LL_GPIO_ResetOutputPin(PA_SW_0_GPIO_Port, PA_SW_0_Pin);
|
||||||
|
LL_GPIO_ResetOutputPin(PA_SW_1_GPIO_Port, PA_SW_1_Pin);
|
||||||
|
}
|
||||||
|
}
|
@ -7,4 +7,4 @@ void api_hal_init() {
|
|||||||
api_hal_i2c_init();
|
api_hal_i2c_init();
|
||||||
api_hal_power_init();
|
api_hal_power_init();
|
||||||
api_hal_light_init();
|
api_hal_light_init();
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,6 @@ if [ ! -f $1 ]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
STM32_Programmer_CLI -c port=swd -d $1 0x1FFF7000
|
STM32_Programmer_CLI -c port=usb1 -d $1 0x1FFF7000
|
||||||
|
|
||||||
STM32_Programmer_CLI -c port=swd -r8 0x1FFF7000 8
|
STM32_Programmer_CLI -c port=usb1 -r8 0x1FFF7000 8
|
||||||
|
Loading…
Reference in New Issue
Block a user