nimble/fem: Add runtime default antenna selection to SKY66112

This allows to configure default antenna at runtime.
This commit is contained in:
Szymon Janc
2022-12-13 17:42:48 +01:00
parent 58a71bad16
commit 2de047cbbc
3 changed files with 32 additions and 8 deletions
@@ -30,6 +30,11 @@ extern "C" {
void sky66112_tx_hp_mode(uint8_t enabled);
void sky66112_rx_bypass(uint8_t enabled);
void sky66112_tx_bypass(uint8_t enabled);
#if MYNEWT_VAL_CHOICE(SKY66112_ANTENNA_PORT, runtime)
uint8_t sky66112_default_antenna_get(void);
#endif
#ifdef __cplusplus
}
#endif
+19 -3
View File
@@ -31,6 +31,18 @@ static struct {
.tx_bypass = MYNEWT_VAL(SKY66112_TX_BYPASS),
};
#if !MYNEWT_VAL_CHOICE(SKY66112_ANTENNA_PORT, runtime)
static uint8_t
sky66112_default_antenna_get(void)
{
if (MYNEWT_VAL_CHOICE(SKY66112_ANTENNA_PORT, ANT2)) {
return 2;
} else {
return 1;
}
}
#endif
static void
sky66112_bypass(uint8_t enabled)
{
@@ -46,7 +58,7 @@ ble_fem_pa_init(void)
sky66112_tx_hp_mode(MYNEWT_VAL(SKY66112_TX_HP_MODE));
sky66112_tx_bypass(0);
#if MYNEWT_VAL(BLE_FEM_ANTENNA)
ble_fem_antenna(MYNEWT_VAL(SKY66112_ANTENNA_PORT));
ble_fem_antenna(0);
#endif
}
@@ -71,7 +83,7 @@ ble_fem_lna_init(void)
{
sky66112_rx_bypass(0);
#if MYNEWT_VAL(BLE_FEM_ANTENNA)
ble_fem_antenna(MYNEWT_VAL(SKY66112_ANTENNA_PORT));
ble_fem_antenna(0);
#endif
}
@@ -105,10 +117,14 @@ int
ble_fem_antenna(uint8_t port)
{
int pin = MYNEWT_VAL(SKY66112_PIN_SEL);
uint8_t ant;
if (pin >= 0) {
switch (port) {
case 0:
ant = sky66112_default_antenna_get();
assert(ant == 1 || ant == 2);
return ble_fem_antenna(ant);
case 1:
hal_gpio_write(pin, 0);
break;
@@ -171,7 +187,7 @@ sky66112_init(void)
/* configure default antenna */
pin = MYNEWT_VAL(SKY66112_PIN_SEL);
if (pin >= 0) {
switch (MYNEWT_VAL(SKY66112_ANTENNA_PORT)) {
switch (sky66112_default_antenna_get()) {
case 1:
hal_gpio_init_out(pin, 0);
break;
+8 -5
View File
@@ -58,11 +58,14 @@ syscfg.defs:
value: 0
SKY66112_ANTENNA_PORT:
description: >
Selects which antenna port should be enabled:
1 for ANT1 port enabled
2 for ANT2 port enabled
range: 1, 2
value: 1
Selects which antenna port should be enabled. If 'runtime' is
selected sky66112_default_antenna_get() (see sky66112/sky66112.h)
shall be implemeneted by application.
choices:
- ANT1
- ANT2
- runtime
value: ANT1
syscfg.vals.!BLE_FEM_PA:
# Enable TX bypass by default if PA is disabled