Skip to content
This repository was archived by the owner on Jan 7, 2025. It is now read-only.

Commit 939cdf9

Browse files
author
Matthieu Saignemorte
committed
netdev_driver: modifications after TX debug
1 parent 12ca1b6 commit 939cdf9

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

stack/framework/hal/chips/netdev_driver/sx127x_getset.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ uint8_t sx127x_get_state(const sx127x_t *dev)
5858

5959
void sx127x_set_state(sx127x_t *dev, uint8_t state)
6060
{
61-
#if ENABLE_DEBUG
6261
switch (state) {
6362
case SX127X_RF_IDLE:
6463
DEBUG("[sx127x] Change state: IDLE\n");
@@ -73,7 +72,6 @@ void sx127x_set_state(sx127x_t *dev, uint8_t state)
7372
DEBUG("[sx127x] Change state: UNKNOWN\n");
7473
break;
7574
}
76-
#endif
7775

7876
dev->settings.state = state;
7977
}
@@ -629,7 +627,6 @@ uint8_t sx127x_get_op_mode(const sx127x_t *dev)
629627

630628
void sx127x_set_op_mode(const sx127x_t *dev, uint8_t op_mode)
631629
{
632-
#if ENABLE_DEBUG
633630
switch(op_mode) {
634631
case SX127X_RF_OPMODE_SLEEP:
635632
DEBUG("[sx127x] Set op mode: SLEEP\n");
@@ -650,16 +647,13 @@ void sx127x_set_op_mode(const sx127x_t *dev, uint8_t op_mode)
650647
DEBUG("[sx127x] Set op mode: UNKNOWN (%d)\n", op_mode);
651648
break;
652649
}
653-
#endif
654650

655651
#if defined(PLATFORM_SX127X_USE_MANUAL_RXTXSW_PIN) || defined(PLATFORM_USE_ABZ)
656652
set_antenna_switch(dev, op_mode);
657653
#endif
658654

659655
/* Replace previous mode value and setup new mode value */
660-
sx127x_reg_write(dev, SX127X_REG_OPMODE,
661-
(sx127x_reg_read(dev, SX127X_REG_OPMODE) &
662-
SX127X_RF_OPMODE_MASK) | op_mode);
656+
sx127x_reg_write(dev, SX127X_REG_OPMODE, op_mode);
663657
}
664658

665659
uint32_t computeRxBw( uint8_t mantisse, uint8_t exponent )

stack/framework/hal/chips/netdev_driver/sx127x_netdev.c

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
119119
}
120120
}
121121

122+
122123
/* FIFO operations can not take place in Sleep mode
123124
* So wake up the chip */
124125
if (sx127x_get_op_mode(dev) == SX127X_RF_OPMODE_SLEEP) {
@@ -153,8 +154,17 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
153154
dev->packet.pos = size;
154155
if (dev->options & SX127X_OPT_TELL_TX_REFILL) // we expect to refill the FIFO with subsequent data
155156
{
156-
sx127x_reg_write(dev, SX127X_REG_FIFOTHRESH, 0x80 | (size/2 - 1));
157-
dev->packet.fifothresh = size/2;
157+
// Setting the fifo threshold to half the packet length
158+
if ((dev->packet.length % 2) == 1)
159+
{
160+
dev->packet.fifothresh = ((dev->packet.length+1)/2);
161+
sx127x_reg_write(dev, SX127X_REG_FIFOTHRESH, (0x80 | (dev->packet.fifothresh-1)));
162+
}
163+
else
164+
{
165+
dev->packet.fifothresh = ((dev->packet.length/2)+1);
166+
sx127x_reg_write(dev, SX127X_REG_FIFOTHRESH, (0x80 | (dev->packet.fifothresh-1)));
167+
}
158168

159169
sx127x_write_fifo(dev, iolist->iol_base, size);
160170
hw_gpio_set_edge_interrupt(dev->params.dio1_pin, GPIO_FALLING_EDGE);
@@ -221,9 +231,16 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
221231
timer_add_event(&dev->_internal.tx_timeout_timer);
222232
}
223233

224-
/* Put chip into transfer mode */
225-
sx127x_set_state(dev, SX127X_RF_TX_RUNNING);
226-
sx127x_set_op_mode(dev, SX127X_RF_OPMODE_TRANSMITTER);
234+
if (sx127x_get_state(dev) & SX127X_RF_TX_RUNNING) {}
235+
else {
236+
/* Put chip into Standby mode */
237+
sx127x_set_state(dev, SX127X_RF_IDLE);
238+
sx127x_set_op_mode(dev, SX127X_RF_OPMODE_STANDBY);
239+
240+
/* Put chip into transfer mode */
241+
sx127x_set_state(dev, SX127X_RF_TX_RUNNING);
242+
sx127x_set_op_mode(dev, SX127X_RF_OPMODE_TRANSMITTER);
243+
}
227244
}
228245

229246
return 0;
@@ -372,6 +389,9 @@ static int _init(netdev_t *netdev)
372389
/* Put chip into sleep */
373390
sx127x_set_sleep(sx127x);
374391

392+
/* Put chip into standby mode*/
393+
sx127x_set_standby(sx127x);
394+
375395
DEBUG("[sx127x] init_radio: sx127x initialization done\n");
376396
init_done = true;
377397

0 commit comments

Comments
 (0)