summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-11-22 02:42:45 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-11-22 02:42:45 +0100
commitf8eee14729012f620fb7448334eaef46f1964198 (patch)
tree6105e9130462581e45ba1dae9e7a98bc15d7a3f5
parentadded basic environment for RadioHead lib - not working yet (diff)
some more tests - still does not compile
-rw-r--r--contrib/Makefile1
-rw-r--r--contrib/radiohead.patch26
-rw-r--r--lib/SPI.h17
-rw-r--r--lib/arduino-minimal.h54
-rw-r--r--lora-test/lora-test.cpp8
-rw-r--r--radiohead.mk3
6 files changed, 99 insertions, 10 deletions
diff --git a/contrib/Makefile b/contrib/Makefile
index 0da0e95..9d606bb 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -65,6 +65,7 @@ download-radiohead: RadioHead-${RADIOHEAD_VERSION}.zip
RadioHead-${RADIOHEAD_VERSION}.zip:
wget "http://www.airspayce.com/mikem/arduino/RadioHead/$@" -O "$@"
unzip $@
+ cd RadioHead; patch -p1 < ../radiohead.patch
.teensy-loader.prepared:
diff --git a/contrib/radiohead.patch b/contrib/radiohead.patch
new file mode 100644
index 0000000..e844a0a
--- /dev/null
+++ b/contrib/radiohead.patch
@@ -0,0 +1,26 @@
+diff -Nur RadioHead.orig/RadioHead.h RadioHead/RadioHead.h
+--- RadioHead.orig/RadioHead.h 2018-11-15 02:40:23.000000000 +0100
++++ RadioHead/RadioHead.h 2018-11-22 02:28:56.058105167 +0100
+@@ -317,8 +317,6 @@
+ cd /tmp
+ mkdir RadioHead
+ cd RadioHead
+-cp /usr/local/projects/arduino/libraries/RadioHead/*.h .
+-cp /usr/local/projects/arduino/libraries/RadioHead/*.cpp .
+ cp /usr/local/projects/arduino/libraries/RadioHead/examples/cc110/cc110_client/cc110_client.pde application.cpp
+ \endcode
+ - Edit application.cpp and comment out any \#include <SPI.h> so it looks like:
+@@ -1283,11 +1281,13 @@
+ #elif (RH_PLATFORM == RH_PLATFORM_GENERIC_AVR8)
+ #include <avr/io.h>
+ #include <avr/interrupt.h>
++ #include <avr/pgmspace.h>
+ #include <util/delay.h>
+ #include <string.h>
+ #include <stdbool.h>
+ #define RH_HAVE_HARDWARE_SPI
+ #include <SPI.h>
++ #include <arduino-minimal.h>
+
+ // For Steve Childress port to ARM M4 w/CMSIS with STM's Hardware Abstraction lib.
+ // See ArduinoWorkarounds.h (not supplied)
diff --git a/lib/SPI.h b/lib/SPI.h
index 6b3264e..a770999 100644
--- a/lib/SPI.h
+++ b/lib/SPI.h
@@ -23,15 +23,16 @@
#ifndef SPREADAVR_SPI_h_INCLUDED
#define SPREADAVR_SPI_h_INCLUDED
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- // TODO: for now this is just a placeholder to make so we
+ // TODO: for now this is just a placeholder to make it so we
// can compile RadioHead
-#ifdef __cplusplus
-}
-#endif
+class SPIClass { // AVR
+public:
+ static void begin();
+ static void end();
+ static uint8_t transfer(uint8_t data);
+};
+
+extern SPIClass SPI;
#endif
diff --git a/lib/arduino-minimal.h b/lib/arduino-minimal.h
new file mode 100644
index 0000000..64eb867
--- /dev/null
+++ b/lib/arduino-minimal.h
@@ -0,0 +1,54 @@
+/*
+ * spreadspace avr utils
+ *
+ *
+ * Copyright (C) 2013-2018 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of spreadspace avr utils.
+ *
+ * spreadspace avr utils is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * spreadspace avr utils is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SPREADAVR_arduino_minimal_h_INCLUDED
+#define SPREADAVR_arduino_minimal_h_INCLUDED
+
+#define HIGH 0x1
+#define LOW 0x0
+
+#define INPUT 0x0
+#define OUTPUT 0x1
+#define INPUT_PULLUP 0x2
+
+#define CHANGE 1
+#define FALLING 2
+#define RISING 3
+
+unsigned long millis(void);
+void delay(unsigned long);
+
+void pinMode(uint8_t, uint8_t);
+void digitalWrite(uint8_t, uint8_t);
+// int digitalRead(uint8_t);
+// int analogRead(uint8_t);
+// void analogReference(uint8_t mode);
+// void analogWrite(uint8_t, int);
+
+void attachInterrupt(uint8_t, void (*)(void), int mode);
+//void detachInterrupt(uint8_t);
+
+// WMath prototypes
+long random(long);
+long random(long, long);
+
+#endif
diff --git a/lora-test/lora-test.cpp b/lora-test/lora-test.cpp
index 665e762..aecb0a6 100644
--- a/lora-test/lora-test.cpp
+++ b/lora-test/lora-test.cpp
@@ -28,7 +28,11 @@
#include "util.h"
#include "led.h"
+
#include "RadioHead.h"
+#include "RH_RF95.h"
+
+RH_RF95 rf95;
int main(void)
{
@@ -39,7 +43,9 @@ int main(void)
led_init();
sei();
+ rf95.init();
+ rf95.setFrequency(868.0);
for(;;) {
- // for now we don't do anything here...
+ // for now we don't do anything here...
}
}
diff --git a/radiohead.mk b/radiohead.mk
index f0aabca..94d1de3 100644
--- a/radiohead.mk
+++ b/radiohead.mk
@@ -22,7 +22,8 @@
include $(SPREADAVR_PATH)/defines.mk
-RADIOHEAD_COMPONENTS := RH_$(RADIOHEAD_DRIVER) # TODO: added other components dependent on driver...
+ # TODO: add other components dependent on driver...
+RADIOHEAD_COMPONENTS := RH_$(RADIOHEAD_DRIVER) RHGenericDriver RHSPIDriver RHHardwareSPI RHGenericSPI
SRC:=$(foreach COMP,$(RADIOHEAD_COMPONENTS),$(RADIOHEAD_PATH)/$(COMP).cpp)