From 2dcf5445d6d798bb3f974ee900af9a9d998568c4 Mon Sep 17 00:00:00 2001 From: sivanovbg Date: Thu, 2 Feb 2017 22:54:42 +0200 Subject: [PATCH 1/2] Update mrf24j.cpp Changes: 1. Added new 'Mrf24j::send16' function with third attribute - 'length' to be able to send binary data instead of string over 802.15.4 interface 2.Variable 'frame_length' moved onto a new position within 'Mrf24j:interrupt_handler' function before its usage. Old position is commented. --- mrf24j.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/mrf24j.cpp b/mrf24j.cpp index 1e5d325..dabdb0f 100644 --- a/mrf24j.cpp +++ b/mrf24j.cpp @@ -40,6 +40,7 @@ Mrf24j::Mrf24j(int pin_reset, int pin_chip_select, int pin_interrupt) { SPI.setBitOrder(MSBFIRST) ; SPI.setDataMode(SPI_MODE0); + SPI.begin(); } @@ -148,6 +149,41 @@ void Mrf24j::send16(word dest16, char * data) { write_short(MRF_TXNCON, (1<> 8); + write_long(i++, dest16 & 0xff); // dest16 low + write_long(i++, dest16 >> 8); // dest16 high + + word src16 = address16_read(); + write_long(i++, src16 & 0xff); // src16 low + write_long(i++, src16 >> 8); // src16 high + + // All testing seems to indicate that the next two bytes are ignored. + //2 bytes on FCS appended by TXMAC + i+=ignoreBytes; + for (int q = 0; q < len; q++) { + write_long(i++, data[q]); + } + // ack on, and go! + write_short(MRF_TXNCON, (1< Date: Thu, 2 Feb 2017 22:56:39 +0200 Subject: [PATCH 2/2] Update mrf24j.h Added void send16(word dest16, char * data, byte length); definition. --- mrf24j.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mrf24j.h b/mrf24j.h index a06589b..d2e9e0c 100644 --- a/mrf24j.h +++ b/mrf24j.h @@ -220,6 +220,8 @@ class Mrf24j void set_palna(boolean enabled); void send16(word dest16, char * data); + + void send16(word dest16, char * data, byte length); void interrupt_handler(void);