Configue sub-band

This commit is contained in:
Manuel Bleichenbacher 2021-07-26 22:29:20 +02:00
parent 281ba52155
commit ba908c0b93
3 changed files with 39 additions and 0 deletions

View File

@ -193,6 +193,20 @@ public:
ttn_configure_pins(spi_host, nss, rxtx, rst, dio0, dio1);
}
/**
* @brief Sets the frequency sub-band to be used.
*
* For regions with sub-bands (USA, Australia), sets the sub-band to be used for uplink communication.
* For other regions, this function has no effect.
*
* The sub-band must be set before joining or sending the first message.
*
* If not set, it defaults to sub-band 2 as defined by TTN.
*
* @param band band (between 1 and 8)
*/
void setSubband(int band) { ttn_set_subband(band); }
/**
* @brief Sets the credentials needed to activate the device via OTAA, without activating it.
*

View File

@ -188,6 +188,20 @@ void ttn_reset(void);
*/
void ttn_configure_pins(spi_host_device_t spi_host, uint8_t nss, uint8_t rxtx, uint8_t rst, uint8_t dio0, uint8_t dio1);
/**
* @brief Sets the frequency sub-band to be used.
*
* For regions with sub-bands (USA, Australia), sets the sub-band to be used for uplink communication.
* For other regions, this function has no effect.
*
* The sub-band must be set before joining or sending the first message.
*
* If not set, it defaults to sub-band 2 as defined by TTN.
*
* @param band band (between 1 and 8)
*/
void ttn_set_subband(int band);
/**
* @brief Sets the credentials needed to activate the device via OTAA, without activating it.
*

View File

@ -60,6 +60,7 @@ static ttn_message_cb message_callback;
static ttn_waiting_reason_t waiting_reason = TTN_WAITING_NONE;
static ttn_rf_settings_t last_rf_settings[4];
static ttn_rx_tx_window_t current_rx_tx_window;
static int subband = 1;
static bool join_core(void);
static void event_callback(void* user_data, ev_t event);
@ -99,6 +100,11 @@ void ttn_configure_pins(spi_host_device_t spi_host, uint8_t nss, uint8_t rxtx, u
hal_esp32_start_lmic_task();
}
void ttn_set_subband(int band)
{
subband = band;
}
void ttn_reset(void)
{
hal_esp32_enter_critical_section();
@ -203,6 +209,11 @@ bool join_core()
hal_esp32_enter_critical_section();
xQueueReset(lmic_event_queue);
waiting_reason = TTN_WAITING_FOR_JOIN;
#if defined(CFG_us915) || defined(CFG_au915)
LMIC_selectSubBand(subband - 1);
#endif
LMIC_startJoining();
hal_esp32_wake_up();
hal_esp32_leave_critical_section();