mcci-catena/arduino-lmic

US-like `TxParamSetupReq` processing is erroneous

terrillmoore opened this issue · 0 comments

TxParamSetupReq as implemented for us-like regions has a few problems.

  1. It miscomputes the base channel for a change group change; if the host asks to disable all 500k channels, it will instead disable 125k channels 0..15, causing an assert the next time nextTx is called.
  2. nextTx() should try 125k channels and lowering datarate (or 500k channels and raising datarate).
  3. It doesn't check the feasibility of the selected data rate given the effective set of enabled channels
  4. It doesn't include the need for minimum number of 125k channels in its effectiveness decision.

The US compliance tests do things like turning off all 125kHz channels and setting DR to DR1 -- not feasible unless you have some number of 125kHz channels. In this case, we're supposed to reject the request.