sx127x: set ValidHeader interrupt to NETDEV_EVENT_RX_STARTED event
This commit is contained in:
parent
4ccdb3ac80
commit
433ccc9a11
@ -269,37 +269,41 @@ void sx127x_set_rx(sx127x_t *dev)
|
||||
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGSMASK,
|
||||
/* SX127X_RF_LORA_IRQFLAGS_RXTIMEOUT |
|
||||
SX127X_RF_LORA_IRQFLAGS_RXDONE |
|
||||
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR | */
|
||||
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER |
|
||||
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR |
|
||||
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER | */
|
||||
SX127X_RF_LORA_IRQFLAGS_TXDONE |
|
||||
SX127X_RF_LORA_IRQFLAGS_CADDONE |
|
||||
/* SX127X_RF_LORA_IRQFLAGS_FHSSCHANGEDCHANNEL | */
|
||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
||||
|
||||
/* DIO0=RxDone, DIO2=FhssChangeChannel */
|
||||
/* DIO0=RxDone, DIO2=FhssChangeChannel, DIO3=ValidHeader */
|
||||
sx127x_reg_write(dev, SX127X_REG_DIOMAPPING1,
|
||||
(sx127x_reg_read(dev, SX127X_REG_DIOMAPPING1) &
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_MASK &
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO2_MASK) |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO2_MASK &
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO3_MASK) |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_00 |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO2_00);
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO2_00 |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO3_01);
|
||||
}
|
||||
else {
|
||||
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGSMASK,
|
||||
/* SX127X_RF_LORA_IRQFLAGS_RXTIMEOUT |
|
||||
SX127X_RF_LORA_IRQFLAGS_RXDONE |
|
||||
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR | */
|
||||
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER |
|
||||
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR |
|
||||
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER | */
|
||||
SX127X_RF_LORA_IRQFLAGS_TXDONE |
|
||||
SX127X_RF_LORA_IRQFLAGS_CADDONE |
|
||||
SX127X_RF_LORA_IRQFLAGS_FHSSCHANGEDCHANNEL |
|
||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
||||
|
||||
/* DIO0=RxDone */
|
||||
/* DIO0=RxDone, DIO3=ValidHeader */
|
||||
sx127x_reg_write(dev, SX127X_REG_DIOMAPPING1,
|
||||
(sx127x_reg_read(dev, SX127X_REG_DIOMAPPING1) &
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_MASK) |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_00);
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_MASK &
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO3_MASK) |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_00 |
|
||||
SX127X_RF_LORA_DIOMAPPING1_DIO3_01);
|
||||
}
|
||||
|
||||
sx127x_reg_write(dev, SX127X_REG_LR_FIFORXBASEADDR, 0);
|
||||
|
||||
@ -80,7 +80,8 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
puts("sx127x_netdev, Unsupported modem");
|
||||
DEBUG("[sx127x] netdev: Unsupported modem (%d)\n",
|
||||
dev->settings.modem);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -241,6 +242,7 @@ static void _isr(netdev_t *netdev)
|
||||
|
||||
case SX127X_RF_LORA_IRQFLAGS_CADDETECTED:
|
||||
case SX127X_RF_LORA_IRQFLAGS_CADDONE:
|
||||
case SX127X_RF_LORA_IRQFLAGS_VALIDHEADER:
|
||||
irq = SX127X_IRQ_DIO3;
|
||||
break;
|
||||
|
||||
@ -690,6 +692,8 @@ void _on_dio3_irq(void *arg)
|
||||
sx127x_t *dev = (sx127x_t *) arg;
|
||||
netdev_t *netdev = (netdev_t *) dev;
|
||||
|
||||
switch (dev->settings.state) {
|
||||
case SX127X_RF_CAD:
|
||||
switch (dev->settings.modem) {
|
||||
case SX127X_MODEM_FSK:
|
||||
break;
|
||||
@ -709,6 +713,25 @@ void _on_dio3_irq(void *arg)
|
||||
puts("[sx127x] netdev: sx127x_on_dio3: unknown modem");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SX127X_RF_RX_RUNNING:
|
||||
switch (dev->settings.modem) {
|
||||
case SX127X_MODEM_FSK:
|
||||
break;
|
||||
case SX127X_MODEM_LORA:
|
||||
/* Clear IRQ */
|
||||
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGS, SX127X_RF_LORA_IRQFLAGS_VALIDHEADER);
|
||||
|
||||
netdev->event_callback(netdev, NETDEV_EVENT_RX_STARTED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
DEBUG("[sx127x] netdev: sx127x_on_dio3: unknown state");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const netdev_driver_t sx127x_driver = {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user