[riot-devel] Netdev2 State changes

Neo neo at nenaco.de
Tue Sep 13 22:15:51 CEST 2016

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.


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
>> 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 at riot-os.org
>> https://lists.riot-os.org/mailman/listinfo/devel

More information about the devel mailing list