summaryrefslogtreecommitdiffstats
path: root/nrfm.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-04-02 11:06:38 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-04-02 11:06:38 +0800
commit35947bcc59a6361b693700fd1cba7ead26c9f794 (patch)
treee76c1a43fb5e3a19ffcd37e5b79be1f455cd6df4 /nrfm.c
parentbfda8d0483d3dd7a7b0983cf41d863b46c909800 (diff)
downloadavr-nrf24l01-driver-35947bcc59a6361b693700fd1cba7ead26c9f794.tar.gz
Fix batching logic.
Diffstat (limited to 'nrfm.c')
-rw-r--r--nrfm.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/nrfm.c b/nrfm.c
index eeddb18..8c89438 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, jn, jmax;
+ uint8_t i, j, j0, jmax;
enable_tx();
reset_irqs();
@@ -196,15 +196,15 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const void *msg, uint8_t n)
setaddr(0x10, addr);
setaddr(0x0A, addr);
- jn = n - 1;
+ jmax = n - 1;
for (i = 0; i < n; i += MAXPDLEN) {
SPI_PORT &= ~(1 << SPI_SS);
SPDR = 0b10100000;
while (!(SPSR & (1 << SPIF)))
;
- jmax = ((i + 1) * MAXPDLEN) - 1;
- for (j = jn < jmax ? jn : jmax; j >= i * MAXPDLEN; j--) {
+ j0 = i + MAXPDLEN - 1;
+ for (j = j0 < jmax ? j0 : jmax; j >= i; j--) {
SPDR = ((uint8_t *)msg)[j];
while (!(SPSR & (1 << SPIF)))
;
@@ -214,6 +214,8 @@ void radio_sendto(const uint8_t addr[ADDRLEN], const void *msg, uint8_t n)
NRF_CE_PORT |= (1 << NRF_CE);
_delay_us(12);
NRF_CE_PORT &= ~(1 << NRF_CE);
+
+ // todo: check success
}
}