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_reg_write(dev, SX127X_REG_LR_IRQFLAGSMASK,
|
||||||
/* SX127X_RF_LORA_IRQFLAGS_RXTIMEOUT |
|
/* SX127X_RF_LORA_IRQFLAGS_RXTIMEOUT |
|
||||||
SX127X_RF_LORA_IRQFLAGS_RXDONE |
|
SX127X_RF_LORA_IRQFLAGS_RXDONE |
|
||||||
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR | */
|
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR |
|
||||||
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER |
|
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER | */
|
||||||
SX127X_RF_LORA_IRQFLAGS_TXDONE |
|
SX127X_RF_LORA_IRQFLAGS_TXDONE |
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDONE |
|
SX127X_RF_LORA_IRQFLAGS_CADDONE |
|
||||||
/* SX127X_RF_LORA_IRQFLAGS_FHSSCHANGEDCHANNEL | */
|
/* SX127X_RF_LORA_IRQFLAGS_FHSSCHANGEDCHANNEL | */
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
||||||
|
|
||||||
/* DIO0=RxDone, DIO2=FhssChangeChannel */
|
/* DIO0=RxDone, DIO2=FhssChangeChannel, DIO3=ValidHeader */
|
||||||
sx127x_reg_write(dev, SX127X_REG_DIOMAPPING1,
|
sx127x_reg_write(dev, SX127X_REG_DIOMAPPING1,
|
||||||
(sx127x_reg_read(dev, SX127X_REG_DIOMAPPING1) &
|
(sx127x_reg_read(dev, SX127X_REG_DIOMAPPING1) &
|
||||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_MASK &
|
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_DIO0_00 |
|
||||||
SX127X_RF_LORA_DIOMAPPING1_DIO2_00);
|
SX127X_RF_LORA_DIOMAPPING1_DIO2_00 |
|
||||||
|
SX127X_RF_LORA_DIOMAPPING1_DIO3_01);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGSMASK,
|
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGSMASK,
|
||||||
/* SX127X_RF_LORA_IRQFLAGS_RXTIMEOUT |
|
/* SX127X_RF_LORA_IRQFLAGS_RXTIMEOUT |
|
||||||
SX127X_RF_LORA_IRQFLAGS_RXDONE |
|
SX127X_RF_LORA_IRQFLAGS_RXDONE |
|
||||||
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR | */
|
SX127X_RF_LORA_IRQFLAGS_PAYLOADCRCERROR |
|
||||||
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER |
|
SX127X_RF_LORA_IRQFLAGS_VALIDHEADER | */
|
||||||
SX127X_RF_LORA_IRQFLAGS_TXDONE |
|
SX127X_RF_LORA_IRQFLAGS_TXDONE |
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDONE |
|
SX127X_RF_LORA_IRQFLAGS_CADDONE |
|
||||||
SX127X_RF_LORA_IRQFLAGS_FHSSCHANGEDCHANNEL |
|
SX127X_RF_LORA_IRQFLAGS_FHSSCHANGEDCHANNEL |
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
||||||
|
|
||||||
/* DIO0=RxDone */
|
/* DIO0=RxDone, DIO3=ValidHeader */
|
||||||
sx127x_reg_write(dev, SX127X_REG_DIOMAPPING1,
|
sx127x_reg_write(dev, SX127X_REG_DIOMAPPING1,
|
||||||
(sx127x_reg_read(dev, SX127X_REG_DIOMAPPING1) &
|
(sx127x_reg_read(dev, SX127X_REG_DIOMAPPING1) &
|
||||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_MASK) |
|
SX127X_RF_LORA_DIOMAPPING1_DIO0_MASK &
|
||||||
SX127X_RF_LORA_DIOMAPPING1_DIO0_00);
|
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);
|
sx127x_reg_write(dev, SX127X_REG_LR_FIFORXBASEADDR, 0);
|
||||||
|
|||||||
@ -80,7 +80,8 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
puts("sx127x_netdev, Unsupported modem");
|
DEBUG("[sx127x] netdev: Unsupported modem (%d)\n",
|
||||||
|
dev->settings.modem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,6 +242,7 @@ static void _isr(netdev_t *netdev)
|
|||||||
|
|
||||||
case SX127X_RF_LORA_IRQFLAGS_CADDETECTED:
|
case SX127X_RF_LORA_IRQFLAGS_CADDETECTED:
|
||||||
case SX127X_RF_LORA_IRQFLAGS_CADDONE:
|
case SX127X_RF_LORA_IRQFLAGS_CADDONE:
|
||||||
|
case SX127X_RF_LORA_IRQFLAGS_VALIDHEADER:
|
||||||
irq = SX127X_IRQ_DIO3;
|
irq = SX127X_IRQ_DIO3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -690,23 +692,44 @@ void _on_dio3_irq(void *arg)
|
|||||||
sx127x_t *dev = (sx127x_t *) arg;
|
sx127x_t *dev = (sx127x_t *) arg;
|
||||||
netdev_t *netdev = (netdev_t *) dev;
|
netdev_t *netdev = (netdev_t *) dev;
|
||||||
|
|
||||||
switch (dev->settings.modem) {
|
switch (dev->settings.state) {
|
||||||
case SX127X_MODEM_FSK:
|
case SX127X_RF_CAD:
|
||||||
break;
|
switch (dev->settings.modem) {
|
||||||
case SX127X_MODEM_LORA:
|
case SX127X_MODEM_FSK:
|
||||||
/* Clear IRQ */
|
break;
|
||||||
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGS,
|
case SX127X_MODEM_LORA:
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED |
|
/* Clear IRQ */
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDONE);
|
sx127x_reg_write(dev, SX127X_REG_LR_IRQFLAGS,
|
||||||
|
SX127X_RF_LORA_IRQFLAGS_CADDETECTED |
|
||||||
|
SX127X_RF_LORA_IRQFLAGS_CADDONE);
|
||||||
|
|
||||||
/* Send event message */
|
/* Send event message */
|
||||||
dev->_internal.is_last_cad_success = ((sx127x_reg_read(dev, SX127X_REG_LR_IRQFLAGS) &
|
dev->_internal.is_last_cad_success = ((sx127x_reg_read(dev, SX127X_REG_LR_IRQFLAGS) &
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED) ==
|
SX127X_RF_LORA_IRQFLAGS_CADDETECTED) ==
|
||||||
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
SX127X_RF_LORA_IRQFLAGS_CADDETECTED);
|
||||||
netdev->event_callback(netdev, NETDEV_EVENT_CAD_DONE);
|
netdev->event_callback(netdev, NETDEV_EVENT_CAD_DONE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
puts("[sx127x] netdev: sx127x_on_dio3: unknown modem");
|
DEBUG("[sx127x] netdev: sx127x_on_dio3: unknown state");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user