Hello Peter,
shure - in the datasheet you find this RFSTATE, but it is not really
helpful. RTSEL1 and RTSEL2 are not described at all. The CALVCO and
CALFIL show Calibration States, so the only useful states seems to be
RX, TX, SLEEP and RESET. But every code I have seen up to know uses the
RX State during receive and transmit. I tried to monitor this register
to see if the TX state is visible during transmitting packets, but no
success. The state field shows only RX.
I tried to force the chip to show TX state by setting bit-1 of RFCTL
register (RFTXMODE). No success - the chip stucks.
So for me it looks like the RFSTATE register is useless, except the
detection of reset and sleep.
The driver is able to transmit packet without auto-retransmission.
I have at the moment the problem to distinguish the phases of
transmission or reception inside the interrupt service routine (_isr)
and to set the correct netdev2 states if I configure the system to use
auto-retries and auto-acknowledgement.
Regards,
Neo
Am 13.09.2016 um 09:23 schrieb Peter Kietzmann:
Hi Neo,
there might be code snippets that actively wait for a state
transition, but AFAIK not in the netdev part any more. Then there is
interrupt handling which signals tx/rx start/end points to the upper
layer. Of course you can't implement anything once it's not available
on the device. The great thing about netdev is that it's pretty
generic and you don't *need* to implement every
function/message/interrupt/state change/whatsoever to get the device
running.
But looking at the data sheet I stumbled upon the RFSTATE register
which signals the following (useful) sates:
111 = RTSEL2
110 = RTSEL1
101 = RX
100 = TX
011 = CALVCO
010 = SLEEP
001 = CALFIL
000 = RESET
In addition there is the INTSTAT register which seems somehow similar
to the Atmel radio. Where exactly did you stuck? Could you be a more
precise?
Best
Peter
Am 11.09.2016 um 17:38 schrieb Neo:
Dear radio module driver developers,
as far as I have seen, the netdev2 architecture reads several time the
state of the radio chip to synchronize with the hardware dependent part
of the driver (state changes). This is wonderful if the radio chip has a
register which shows the actual state of the radio-modul - like the
TRX_STATUS register inside of the Atmel chips.
What could be done, if the radio chip doesn't have such a register or
shows only rudiment state informations to synchronize/trigger the
netdev2 part of the driver.
The MRF24J40 from Microchip for example shows only the following useful
state information:
RX
SLEEP
RESET
Transmission is done in the RX state without any changes, just trigger
the transission (TXNCON-Reg./TXNTRIG-Bit).
Thanks a lot!
Regards,
Neo
_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel