Two issues caused the sensitivity on CC13xx devices to be dramatically
worse than CC26xx devices:
* Wrong front-end mode configuration
* Faulty/outdated RF switching logic
Both issues are inherently board-specific. Therefore, a generic
configuration was aligned across all boards which allows a specific
board to configure a correct RF front-end mode. In addition, the RF
switching logic was updated to latest and greatest.
A couple of issues was found:
* Wrong CPE patches in RF settings
* Wrong whitening init value for the CMD_BLE5_ADV_NC command
* BLE MAC address was not copied to RAM before set in the bleAdvPar
construct.
* BLE advertisements were not transmitted in intervals as specified by
BLE spec.
All LaunchPads drives the UART0_RX pin up, but is configured in the
Board file to be pull-down. This alignes the UART0_RX pin configuration
with the development board HW.
This commit changes the method of accessing the default v6 prefix. Instead of always using `UIP_DS6_DEFAULT_PREFIX`, we store the default prefix in a variable. We subsequently retrieve the prefix by calling `uip_ds6_default_prefix()`.
`uip_ds6_init()` will set this variable to the value of `UIP_DS6_DEFAULT_PREFIX`, but only if the startup code has not set a different default prefix before `uip_ds6_init()` gets called.
This approach has the following benefits:
* It allows us to change the default prefix at run time.
* It allows the startup code to set a prefix different than the one specified by `UIP_DS6_DEFAULT_PREFIX`, which can be useful if the default prefix comes from a different source (e.g. the command line for native, or a configuration stored on a node's flash)
* In many places the current code assumes that the prefix contains 6 bytes of zeros (e.g. `FDxx::/64`). Changing to a different prefix (e.g. `FD00:ABCD::`) would need extensive code changes. This change here makes it easy to use a prefix of any length.
Made cc2420 follow the same logic as cc2538 when
disabling the unmodulated carrier. Now they both
return to the state they were in before the carrier
was enabled.
Modified the cc2538 driver to enable the radio test
mode to emit unmodulated carriers (tones).
A carrier can be enabled using the normal radio driver
API:
NETSTACK_CONF_RADIO.set_value(
RADIO_PARAM_POWER_MODE,
RADIO_POWER_MODE_CARRIER_ON);
Once enabled, the carrier can be disabled like this:
NETSTACK_CONF_RADIO.set_value(
RADIO_PARAM_POWER_MODE,
RADIO_POWER_MODE_CARRIER_OFF);
Modified the cc2420 driver to enable the radio test
mode to emit unmodulated carriers (tones).
A carrier can be enabled using the normal radio driver
API:
NETSTACK_CONF_RADIO.set_value(
RADIO_PARAM_POWER_MODE,
RADIO_POWER_MODE_CARRIER_ON);
Once enabled, the carrier can be disabled like this:
NETSTACK_CONF_RADIO.set_value(
RADIO_PARAM_POWER_MODE,
RADIO_POWER_MODE_CARRIER_OFF);