[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [uracoli-devel] radio_set_state(): how long to wait?
From: |
Axel Wachtler |
Subject: |
Re: [uracoli-devel] radio_set_state(): how long to wait? |
Date: |
Sat, 28 Nov 2009 13:12:29 +0100 |
Am Freitag, 27. November 2009 23:54:28 schrieb Joerg Wunsch:
>
> Note the @todo (I'm working in 868 MHz where things are slow), but the
> key point here is: this is a TX_ARET transaction, which can take
> *much* longer to complete (in particular in case of a busy channel, or
> a peer that doesn't respond at the first attempt).
Generally the huge waiting times for low data rates are the issue.
The Symbol time in BPSK20 is 50us where 8 Symbols are used to transfer one
byte, which means 400us for one byte, while OQPSK250 needs 32us to transfer
1 byte.
So waiting up to several x ms until any pending RX or TX operation finishes
will eat up the whole CPU time.
One idea to this issue is, to add a "bool force_change" parameter to
radio_set_state(), which does FORCE_TRX_OFF before a state change and
guarantees to be in the desired sate, when the function exits (if
force_change = true).
For a non-forced operation radio_set_state() should initialize the transaction
by writing the command word to the TRX_STATE register and return
STATE_CHANGE_IN_PROGRESS.
radio_set_state() should also be acompanied by a function
radio_verify_state(), the verification should be done against a global
variable exp_state which is set in radio_set_state().
Two questions now arises:
- How do deal with radio_set_state(SLEEP, 0); ?
- Does an awake state change should wait until TRX_OFF is reached?
Cheers, Axel