[Oberon] FPGA - nRF24L01 `RPI Net' server

Tomas Kral thomas.kral at email.cz
Thu May 24 09:03:01 CEST 2018


On Thu, 24 May 2018 06:45:54 +0200
Jörg <joerg.straube at iaeth.ch> wrote:

> head1.typ is very important as it steers/controls the whole state
> machine of Net.Mod.

Now I see, Net.Mod states = (0, 1, 2, 4, 5).
5 means `no repsonse' and is set by the timeout, head1.typ = 255;

But I need to somehow distinguish when the receive transaction
completes through a timeout normally (last seqno) / abnormally
(lost seqno).

EDIT

Solutions
[1] 
ReceiveFiles*
...
IF done THEN Files.Register(F); (**) head1.typ := 0 (**); reply(0) ELSE
end := 0 END

[2]
Introduce a new / reuse an existing message, confirming normal transfer
completion, telling last seqno sent, file transfer done and complete.

[3]
Increase delay in SCC.ReceiveHead()
...
from IF Rcvd(0) THEN
to IF Rcvd(50) THEN (* just a guess *), but this may be unreliable

In all cases, 255 is kept in the header1 and confuses next Net file
user operation. Net.ReceiveHead() needs typically 20> iterations until
it sees data and only then SCC.ReceiveHead() clears the receiver.

-- 
Tomas Kral <thomas.kral at email.cz>


More information about the Oberon mailing list