summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-04-02 10:57:18 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-04-02 10:57:18 +0800
commit5fa09e0eb3a2099eff04434d7d6bb1d3d655ae78 (patch)
tree95875e2635913f11e500266fe194ba4529928f02
parentc354dd7324fc4d5fa25fd5f9d33408bef42ad98c (diff)
downloadavr-nrf24l01-driver-5fa09e0eb3a2099eff04434d7d6bb1d3d655ae78.tar.gz
Fix batching logic.
-rw-r--r--nrfm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/nrfm.c b/nrfm.c
index 1105326..8787938 100644
--- a/nrfm.c
+++ b/nrfm.c
@@ -187,7 +187,7 @@ void radio_init(const uint8_t rxaddr[ADDRLEN])
void radio_sendto(const uint8_t addr[ADDRLEN], const void *msg, uint8_t n)
{
- uint8_t i, j;
+ uint8_t i, j, j0;
enable_tx();
reset_irqs();
@@ -201,7 +201,9 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const void *msg, uint8_t n)
SPDR = 0b10100000;
while (!(SPSR & (1 << SPIF)))
;
- for (j = MAXPDLEN - 1 + i; j >= i * MAXPDLEN; j--) {
+
+ j0 = ((i + 1) * MAXPDLEN) - 1;
+ for (j = n - 1 < j0 ? n - 1 : j0; j >= i * MAXPDLEN; j--) {
SPDR = ((uint8_t *)msg)[j];
while (!(SPSR & (1 << SPIF)))
;