summaryrefslogtreecommitdiffstats
path: root/rf_test/rfm.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2024-11-23 20:03:18 +0800
committerSadeep Madurange <sadeep@asciimx.com>2024-11-23 20:03:18 +0800
commitcbe4ea329552b9ca5eb35dccd5b180f7658781ce (patch)
tree4ef34988ff846c3c5d24a3f6be462a53c0856975 /rf_test/rfm.c
parent96631bbf2575ad3fa28d3ecb7fcd970accd07615 (diff)
downloadsmart-home-cbe4ea329552b9ca5eb35dccd5b180f7658781ce.tar.gz
wip: RFM69
Diffstat (limited to 'rf_test/rfm.c')
-rw-r--r--rf_test/rfm.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/rf_test/rfm.c b/rf_test/rfm.c
new file mode 100644
index 0000000..1b88773
--- /dev/null
+++ b/rf_test/rfm.c
@@ -0,0 +1,41 @@
+#include "rfm.h"
+#include "spi.h"
+
+#define READ_MASK 0x7F
+#define WRITE_MASK 0x80
+
+static inline void send_cmd(uint8_t addr, uint8_t val)
+{
+ uint8_t ra, wa;
+
+ ra = addr | READ_MASK;
+ wa = addr | WRITE_MASK;
+
+ while (spi_recv(ra) != val)
+ spi_send(wa, val);
+}
+
+void rfm_init(uint8_t addr)
+{
+ spi_init();
+
+ // mode: standby + packet
+ send_cmd(0x01, 0x44);
+
+ // rx interrupt on DPIO0
+ send_cmd(0x25, 0x40);
+ send_cmd(0x26, 0x07);
+
+ // packet format: 8 bits + whitening + crc + addr filtering
+ send_cmd(0x37, 0x52);
+ send_cmd(0x38, 0x08);
+ send_cmd(0x38, addr);
+
+ // disable encryption
+ send_cmd(0x3D, 0x02);
+}
+
+void rfm_send(uint8_t addr, uint8_t data)
+{
+
+}