summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2024-11-24 11:53:53 +0800
committerSadeep Madurange <sadeep@asciimx.com>2024-11-24 11:53:53 +0800
commitcde3ab89cf48d246e1ae81fdcdbbed1234d225aa (patch)
tree7cd1cfac6d45b8dd1a14c394655bb0af26dda9a8
parent519e48ed2a3a15b529570f70d2615df998a2c182 (diff)
downloadsmart-home-cde3ab89cf48d246e1ae81fdcdbbed1234d225aa.tar.gz
Send data.
-rw-r--r--rf_test/rfm.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/rf_test/rfm.c b/rf_test/rfm.c
index 4928c4d..ab511ef 100644
--- a/rf_test/rfm.c
+++ b/rf_test/rfm.c
@@ -58,7 +58,6 @@ static inline void write_reg(uint8_t reg, uint8_t val)
static inline void set_mode(uint8_t mode)
{
write_reg(0x01, mode);
-
while (!read_reg(0x27))
;
}
@@ -82,6 +81,28 @@ void rfm_init(uint8_t addr)
write_reg(0x3D, 0x02);
}
-void rfm_send(uint8_t addr, uint8_t data)
+void rfm_send(uint8_t addr, uint8_t *data, uint8_t n)
{
+ uint8_t i;
+
+ set_mode(STDBY_MODE);
+
+ SS_PORT |= (1 << SS_PIN);
+
+ SPDR = 0x7F;
+ while (!(SPSR & (1 << SPIF)))
+ ;
+
+ for (i = 0; i < n; i++) {
+ SPDR = data[i];
+ while (!(SPSR & (1 << SPIF)))
+ ;
+ }
+
+ SS_PORT &= ~(1 << SS_PIN);
+
+ set_mode(TX_MODE);
+
+ while (!((read_reg(0x28) >> 3) & 1))
+ ;
}