Browse Source

fix reading packets

ugv_io
Alex Mikhalev 6 years ago
parent
commit
3a7b15912e
  1. 20
      components/sx127x_driver/sx127x_driver.c

20
components/sx127x_driver/sx127x_driver.c

@ -40,8 +40,8 @@ static esp_err_t sx127x_write_config(sx127x_t *hndl) {
SX127X_ERROR_CHECK(ret); SX127X_ERROR_CHECK(ret);
// set auto AGC // set auto AGC
ret = ret = sx127x_write_register(hndl, SX127X_REG_MODEM_CONFIG_3,
sx127x_write_register(hndl, SX127X_REG_MODEM_CONFIG_3, SX127X_CONFIG3_AUTO_AGC); SX127X_CONFIG3_AUTO_AGC);
SX127X_ERROR_CHECK(ret); SX127X_ERROR_CHECK(ret);
ret = sx127x_set_tx_power(hndl, config->tx_power, true); ret = sx127x_set_tx_power(hndl, config->tx_power, true);
@ -179,8 +179,8 @@ static void sx127x_do_tx(sx127x_t *hndl, sx127x_packet_t *packet) {
_TX_CHECK(sx127x_read_register(hndl, SX127X_REG_IRQ_FLAGS, &irq_flags)); _TX_CHECK(sx127x_read_register(hndl, SX127X_REG_IRQ_FLAGS, &irq_flags));
if (irq_flags & SX127X_IRQ_TX_DONE_MASK) { if (irq_flags & SX127X_IRQ_TX_DONE_MASK) {
// clear tx done bit // clear tx done bit
_TX_CHECK( _TX_CHECK(sx127x_write_register(hndl, SX127X_REG_IRQ_FLAGS,
sx127x_write_register(hndl, SX127X_REG_IRQ_FLAGS, SX127X_IRQ_TX_DONE_MASK)); SX127X_IRQ_TX_DONE_MASK));
} }
_TX_CHECK(sx127x_read_register(hndl, SX127X_REG_MODEM_CONFIG_2, &config_2)); _TX_CHECK(sx127x_read_register(hndl, SX127X_REG_MODEM_CONFIG_2, &config_2));
@ -209,8 +209,8 @@ static void sx127x_do_tx(sx127x_t *hndl, sx127x_packet_t *packet) {
vTaskDelay(1); vTaskDelay(1);
} }
// clear tx done bit // clear tx done bit
_TX_CHECK( _TX_CHECK(sx127x_write_register(hndl, SX127X_REG_IRQ_FLAGS,
sx127x_write_register(hndl, SX127X_REG_IRQ_FLAGS, SX127X_IRQ_TX_DONE_MASK)); SX127X_IRQ_TX_DONE_MASK));
error: error:
if (ret != ESP_OK) { if (ret != ESP_OK) {
@ -223,7 +223,7 @@ error:
} }
static void sx127x_do_rx(sx127x_t *hndl) { static void sx127x_do_rx(sx127x_t *hndl) {
uint8_t irq_flags, packet_len; uint8_t irq_flags, packet_len, rx_fifo_addr;
sx127x_rx_packet_t packet; sx127x_rx_packet_t packet;
esp_err_t ret; esp_err_t ret;
BaseType_t pdRet; BaseType_t pdRet;
@ -245,9 +245,11 @@ static void sx127x_do_rx(sx127x_t *hndl) {
SX127X_LONG_RANGE | SX127X_MODE_STDBY); SX127X_LONG_RANGE | SX127X_MODE_STDBY);
// TODO: implicit header receive? // TODO: implicit header receive?
_TX_CHECK(sx127x_read_register(hndl, SX127X_REG_FIFO_RX_CURRENT_ADDR,
&rx_fifo_addr));
_TX_CHECK(
sx127x_write_register(hndl, SX127X_REG_FIFO_ADDR_PTR, rx_fifo_addr));
_TX_CHECK(sx127x_read_register(hndl, SX127X_REG_RX_NB_BYTES, &packet_len)); _TX_CHECK(sx127x_read_register(hndl, SX127X_REG_RX_NB_BYTES, &packet_len));
_TX_CHECK(sx127x_write_register(hndl, SX127X_REG_FIFO_ADDR_PTR,
SX127X_REG_FIFO_RX_CURRENT_ADDR));
packet.data_len = packet_len; packet.data_len = packet_len;
packet.data = heap_caps_malloc( packet.data = heap_caps_malloc(

Loading…
Cancel
Save