From 2dd1b330e55da3f9654d4dbedc2d5e85a72deb11 Mon Sep 17 00:00:00 2001 From: Federico Braghiroli Date: Sat, 29 Jun 2019 16:56:57 +0000 Subject: [PATCH] Merged in fbraghiroli/nuttx/fix_nrf24l01 (pull request #922) nrf24l01: fix PIPENO/PKTLEN bitmask in rx fifo header In RX fifo header, the first byte should use 5 lsb to store PKTLEN and 3 msb to store PIPENO. However, FIFO_PIPENO_SHIFT was set to 4 which causes the lsb of pipe number to interfere with the received packet size stored in the fifo. This fix rx corruption when using pipe number > 0. Signed-off-by: Federico Braghiroli Approved-by: Gregory Nutt --- drivers/wireless/nrf24l01.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/wireless/nrf24l01.c b/drivers/wireless/nrf24l01.c index ef7bfaa4da..4c96f12a9b 100644 --- a/drivers/wireless/nrf24l01.c +++ b/drivers/wireless/nrf24l01.c @@ -116,7 +116,7 @@ #define FIFO_PKTLEN_MASK 0x1F /* 5 ls bits used to store packet length */ #define FIFO_PKTLEN_SHIFT 0 #define FIFO_PIPENO_MASK 0xE0 /* 3 ms bits used to store pipe # */ -#define FIFO_PIPENO_SHIFT 4 +#define FIFO_PIPENO_SHIFT 5 #define FIFO_PKTLEN(dev) \ (((dev->rx_fifo[dev->nxt_read] & FIFO_PKTLEN_MASK) >> FIFO_PKTLEN_SHIFT) + 1)