1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys
Marian Buschsieweke 972367432a
drivers/cc110x: Rewrite of the cc110x driver
The cc110x driver has been re-written from scratch to overcome the limitations
of the old driver. The main motivation of the rewrite was to achieve better
maintainability by a detailed documentation, reduce the complexity and the
overhead of the SPI communication with the device, and to allow to
simultaneously use transceivers with different configuration regarding the used
base band, the channel bandwidth, the modulation rate, and the channel map.

Features of this driver include:

- Support for the CC1100, CC1101, and the CC1100e sub-gigahertz transceivers.
- Detailed documentation of every aspect of this driver.
- An easy to use configuration API that allows setting the transceiver
  configuration (modulation rate, channel bandwidth, base frequency) and the
  channel map.
- Fast channel hopping by pre-calibration of the channels during device
  configuration (so that no calibration is needed during hopping).
- Simplified SPI communication: Only during start-up the MCU has to wait
  for the transceiver to be ready (for the power regulators and the crystal
  to stabilize). The old driver did this for every SPI transfer, which
  resulted in complex communication code. This driver will wait on start up
  for the transceiver to power up and then use RIOT's SPI API like every other
  driver. (Not only the data sheet states that this is fine, it also proved to
  be reliable in practise.)
- Greatly reduced latency: The RTT on the old driver (@150 kbps data rate) was
  about 16ms, the new driver (@250 kbps data rate) has as RTT of ~3ms
  (depending on SPI clock and on CPU performance) (measured with ping6).
- Increased reliability: The preamble size and the sync word size have been
  doubled compared to the old driver (preamble: 8 bytes instead of 4,
  sync word: 4 byte instead of 2). The new values are the once recommended by
  the data sheet for reliable communication.
- Basic diagnostic during driver initialization to detect common issues as
  SPI communication issues and GDO pin configuration/wiring issues.
- TX power configuration with netdev_driver_t::set() API-integration
- Calls to netdev_driver_t::send() block until the transmission has completed
  to ease the use of the API (implemented without busy waiting, so that the
  MCU can enter lower power states or other threads can be executed).
2019-08-20 16:32:11 +02:00
..
analog_util sys/analog_util: Refactor adc_map, fix compilation 2018-04-16 13:53:49 +02:00
app_metadata sys/app_metadata: Add app_metadata module 2019-03-05 16:10:06 +01:00
arduino sys/arduino: reduce scope of adc_line_state 2019-08-06 19:43:54 +02:00
auto_init drivers/cc110x: Rewrite of the cc110x driver 2019-08-20 16:32:11 +02:00
base64 sys/base64: Add size estimation macros 2019-01-24 08:35:22 +01:00
benchmark sys/benchmark: incl irq.h and fixed output 2018-09-11 11:29:19 +02:00
bitfield doc: remove sys_util references 2018-04-05 14:39:59 +02:00
bloom
can sys/can: reduce scope of variable 2018-02-22 19:13:39 +01:00
cb_mux sys/cb_mux: initial support 2018-05-28 15:43:41 -04:00
checksum Merge pull request #10228 from bergzand/pr/checksum/fletcher16_split 2019-05-28 22:49:19 +02:00
color color: Fix -Wdouble-promotion warnings 2018-09-28 09:33:40 +02:00
cpp11-compat core: Made thread state an enum 2019-02-13 13:31:52 +01:00
crypto crypto: aes_init(): Fail correctly when called with bad key length 2019-08-07 11:02:16 +02:00
div sys: fix doxygen grouping 2018-06-11 19:12:02 +02:00
ecc sys/ecc: add repetition code 2018-10-18 13:37:21 +02:00
eepreg sys/eepreg: initial EEPROM registration support 2018-10-20 09:30:40 -04:00
embunit embunit: Const test case names 2018-06-15 00:34:33 +02:00
event sys/event: add event_wait_timeout() 2019-05-16 12:01:36 +02:00
evtimer evtimer: in evtimer_print also print first event 2019-07-17 20:51:32 +02:00
fmt sys: make use of ARRAY_SIZE macro 2019-08-06 19:43:54 +02:00
fs devfs: add /dev/{urandom,hwrng} with random/hwrng 2019-05-29 15:50:25 +02:00
hashes sys/sha1: deduplicate sys_hashes_sha1 group definition 2019-08-05 16:57:36 +02:00
include test_utils_interactive_sync: add a helper for synchronizing tests 2019-08-15 12:26:28 +02:00
iolist add copyrights from IOTPUSH project 2019-05-02 12:09:37 +02:00
irq_handler sys/irq_handler: single interrupt handler thread 2019-08-13 14:49:10 +02:00
isrpipe isrpipe: change API to be in line with tsrb 2019-06-05 18:13:57 +02:00
libc/include/sys cleanup: apply headerguard script output 2017-05-24 17:54:02 +02:00
log make: replace curly braces with parenthesis 2018-03-22 20:43:15 +01:00
luid sys/drivers: renamed uuid module to luid 2017-02-27 11:01:20 +01:00
matstat sys/matstat: change ingroup directive 2018-08-24 18:14:03 +02:00
memarray memarray: add fixed-size memory block allocator 2018-04-10 14:37:29 +02:00
mineplex sys: added 5x5 font 'Mineplex' 2016-11-09 11:59:45 +01:00
net Merge pull request #9852 from bergzand/pr/rpl/fix_debug_hdrs 2019-08-16 11:27:48 +02:00
newlib_syscalls_default boards/cpu/drivers/sys: use generic stdio_ if 2018-08-22 10:54:25 +02:00
od sys/od: add ASCII representation to memory dump 2017-11-14 09:22:02 +01:00
oneway-malloc doc/mem_management: add implementations and utils 2018-09-27 10:54:39 +02:00
phydat sys: make use of ARRAY_SIZE macro 2019-08-06 19:43:54 +02:00
pipe tests: adapt for arduino uno and duemilanove support 2016-09-21 21:12:58 +02:00
pm_layered pm_layered: Use {} for empty while loops 2018-02-01 06:55:49 +01:00
posix Merge pull request #11575 from miri64/posix_socket/fix/init-uninit-fields 2019-08-08 15:56:48 +02:00
ps core: rename thread_state_t to thread_status_t 2019-05-11 12:25:07 +02:00
puf_sram sys/puf_sram: CPU specific attributes for variables 2018-11-20 08:34:53 +01:00
quad_math cppcheck: add/correct reason for cppcheck-suppress 2018-09-25 12:03:58 +02:00
random add copyrights from IOTPUSH project 2019-05-02 12:09:37 +02:00
riotboot sys: make use of ARRAY_SIZE macro 2019-08-06 19:43:54 +02:00
saul_reg sys: saul: add missing stddef.h include (for NULL) 2018-09-20 23:54:46 +02:00
sema sys/sema: re-test value after owning mutex 2017-03-06 18:03:27 +01:00
seq sys/seq: change ingroup directive 2018-08-24 18:14:03 +02:00
shell sys/shell: cancel current line on CTRL-C. 2019-08-15 17:13:42 +02:00
ssp sys, ssp: fix doxygen grouping 2017-07-03 10:55:35 +02:00
stdio_rtt stdio/vfs: generalized VFS mapping for STDIO 2018-08-30 11:14:59 +02:00
stdio_uart drivers: sys: replace USE_ETHOS_FOR_STDIO macro by MODULE_STDIO_ETHOS 2019-06-23 22:16:03 +02:00
test_utils test_utils_interactive_sync: add a helper for synchronizing tests 2019-08-15 12:26:28 +02:00
timex sys/timex: fix incompatible atmega time.h 2018-05-28 13:04:55 -04:00
trickle trickle: remove msg_time member from struct 2018-05-17 10:40:12 +02:00
tsrb tsrb: remove now unnecessary cast 2019-06-05 17:10:26 +02:00
ubjson Merge pull request #11703 from fhessel/fix-ubjson-i64 2019-06-18 11:14:11 +02:00
universal_address cppcheck: add/correct reason for cppcheck-suppress 2018-09-25 12:03:58 +02:00
usb/usbus usbus: simplify adding entry to list 2019-06-19 22:22:10 +02:00
uuid uuid: add uuid_from_string() 2018-10-03 10:44:14 +02:00
vfs stdio/vfs: generalized VFS mapping for STDIO 2018-08-30 11:14:59 +02:00
xtimer xtimer/xtimer.c: sched_switch instead of yield 2019-08-09 17:29:40 +02:00
doc.txt sys/doc: add net_lorawan group 2019-04-12 15:51:15 +02:00
Makefile test_utils_interactive_sync: add a helper for synchronizing tests 2019-08-15 12:26:28 +02:00
Makefile.dep test_utils_interactive_sync: add a helper for synchronizing tests 2019-08-15 12:26:28 +02:00
Makefile.include sys/Makefile.include: check for newlib_nano instead of USE_NANO_SPECS 2019-07-22 16:52:18 +02:00