Re: [riot-devel] Netdev2 State changes

2016-09-13 Thread Alexander Aring
Hi,

On 09/13/2016 10:50 PM, Alexander Aring wrote:
...
> 
> I think for "auto-acknowledgement" you can't _exactly_ track the states
> which the hardware does. E.g. transmit a frame and wait for a received ack.
> True, this would be a state change from "TX to RX", but you can't track
> it because it's done by hardware. The at86rf2xx will handle that also as
> TX_ARET_BUSY only, there is no change to get the "very small" receiving
> state after transmission.
> 

s/change/chance/

And the same is for "RX to TX", when receiving a frame and sends an ACK
frame back. This will also occur no netdev2 statechange in at86rf2xx.
It's not possible to detect this statechange on hardware (so far I
know). It will handled as RX state completely.

- Alex
___
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel


Re: [riot-devel] Netdev2 State changes

2016-09-13 Thread Neo

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


Re: [riot-devel] Netdev2 State changes

2016-09-13 Thread Alexander Aring

Hi,

On 09/13/2016 09:23 AM, Peter Kietzmann wrote:
> 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?
> 

as the linux maintainer of 802.15.4 and I worked with at86rf2xx and
mrf24j40 transceiver I think I know what Neo means.

The main difference between both transceiver is that:

 - at86rf2xx has ONE framebuffer for transmit and receive
 - mrf24j40 has two (also even more for GTS, etc) framebuffers one for
   transmit and one for receive.

The main "performance?" advantage is that the mrf24j40 can _fill_ the tx
framebuffer while it's _actual_ receiving a frame.

That doesn't mean that it can transmit and receive at the same time.
It's about filling framebuffer over SPI connection.

For me it's important to know what does the state parameter exactly
means. Does a TX state means including "filling tx framebuffer" or
excluding "filling tx framebuffer". :-/ In at86rf2xx I think it would be
including, because you acutally stop receiving of frames to going into
TX state.

This would be end in some different meaning depends on transceiver what
acutally the TX state means.

- Alex
___
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel


Re: [riot-devel] Netdev2 State changes

2016-09-13 Thread 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


--
Peter Kietzmann

Hamburg University of Applied Sciences
Dept. Informatik, Internet Technologies Group
Berliner Tor 7, 20099 Hamburg, Germany
Fon: +49-40-42875-8426
Web: http://www.haw-hamburg.de/inet
___
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel