From 5e8c891a6037bbd356ee65bb29c6266e9a7871f4 Mon Sep 17 00:00:00 2001 From: sessionm21 Date: Fri, 15 May 2020 22:20:43 +0100 Subject: [PATCH] reduced size with config --- Makefile | 10 +- collar.cpp | 98 ++++++++---------- fenceless_lmic_config.h | 15 +++ .../AltSoftSerial/.AltSoftSerial.cpp.swp | Bin 0 -> 16384 bytes libraries/AltSoftSerial/AltSoftSerial.cpp | 2 +- 5 files changed, 67 insertions(+), 58 deletions(-) create mode 100644 fenceless_lmic_config.h create mode 100644 libraries/AltSoftSerial/.AltSoftSerial.cpp.swp diff --git a/Makefile b/Makefile index f0bca4b..e6fa039 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ CFLAGS?=-Datmega328p\ -DARDUINO=200\ -DARDUINO_AVR_NANO\ -DARDUINO_ARCH_AVR\ + -DARDUINO_LMIC_PROJECT_CONFIG_H=fenceless_lmic_config.h\ -Os\ -ffunction-sections\ -fdata-sections\ @@ -35,6 +36,7 @@ CXXFLAGS?=-Datmega328p\ -DARDUINO=200\ -DARDUINO_AVR_NANO\ -DARDUINO_ARCH_AVR\ + -DARDUINO_LMIC_PROJECT_CONFIG_H=fenceless_lmic_config.h\ -Os\ -ffunction-sections\ -fdata-sections\ @@ -42,7 +44,7 @@ CXXFLAGS?=-Datmega328p\ -flto\ -fno-fat-lto-objects\ -fuse-linker-plugin\ - -Wall + -Wall\ INC_DIRS?=-I./\ -I./$(ARDUINO_DIR)/libraries/SPI/src\ @@ -57,7 +59,8 @@ INC_DIRS?=-I./\ -I./libraries/arduino-lmic/src/hal/\ -I./libraries/arduino-lmic/src/lmic/\ -I./libraries/arduino-lmic/src/aes/\ - -I./libraries/AltSoftSerial/ + -I./libraries/AltSoftSerial/\ + -I./ SRC_FILES?=./$(ARDUINO_DIR)/cores/arduino/main.cpp\ ./$(ARDUINO_DIR)/cores/arduino/wiring_digital.c\ @@ -144,14 +147,13 @@ flash: $(OUT)$(NAME) avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:$(OUT)$(NAME).hex:i run: flash - screen /dev/ttyUSB0 4800 + screen /dev/ttyUSB0 start: flash systemctl start lora-gateway-bridge loraserver stop: avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:nothing.hex:i - systemctl stop lora-gateway-bridge loraserver clean: rm -r protobuf diff --git a/collar.cpp b/collar.cpp index f4ee3ab..8310729 100644 --- a/collar.cpp +++ b/collar.cpp @@ -28,12 +28,10 @@ void os_getDevEui (u1_t* buf) { } void os_getDevKey (u1_t* buf) { } static osjob_t sendjob; -static osjob_t gpsjob; // Schedule TX every this many seconds (might become longer due to duty // cycle limitations). const unsigned TX_INTERVAL = 10; -const unsigned GPS_INTERVAL = 1; // Pin mapping for Adafruit Feather M0 LoRa const lmic_pinmap lmic_pins = { @@ -50,6 +48,11 @@ const lmic_pinmap lmic_pins = { ***************************************************/ TinyGPSPlus gps; + +uint8_t general_int; +#define isr general_int +#define timeout general_int +#define n_poly general_int /**************************************************** * Track each pair of X and Y coordinates * - arrays are used by the pnpoly function @@ -57,28 +60,7 @@ TinyGPSPlus gps; const uint8_t N_POLY_MAX=10; float polyx[N_POLY_MAX]; float polyy[N_POLY_MAX]; -int n_poly=0; - -/**************************************************** - * Add a coordinate to the arrays - * - stores a total of N_POLY_MAX pairs - ***************************************************/ -const int push_vert(const float x, const float y) { - if(n_poly>N_POLY_MAX) - return 0; - polyx[n_poly]=x; - polyy[n_poly]=y; - n_poly++; - return 1; -} - -/**************************************************** - * 'Clear' pairs of coordinates - ***************************************************/ -void clear_verts() { - n_poly=0; -} - +//int n_poly=0; /**************************************************** * Check a pair of coordinates against two lists * of vertices @@ -112,31 +94,28 @@ const int check_bounds(const float x, const float y) { ***************************************************/ void import_protobuf(const uint8_t *protobuffer, const uint32_t size) { if(size != 122) { - Serial.println("Failed to decode"); + Serial.println("nmd"); return; } Serial.println("Recieved valid protobuf data?"); - uint32_t isr; - isr = 0; isr = protobuffer[1]; - if(isr>N_POLY_MAX) isr = N_POLY_MAX; - - clear_verts(); - + if(isr>N_POLY_MAX) isr = 0; const uint8_t *ptr = protobuffer + 5; - for(uint32_t i=0;i0) { + const uint8_t oob = !check_bounds(latitude, longitude); + if(oob) { + Serial.println(oob); + } else { + Serial.println(inb); + } + memcpy(buffer+13, (void*)&oob, 1); + } else { + const uint8_t oob = 0; + memcpy(buffer+13, (void*)&oob, 1); + } memcpy(buffer+3, (void*)&latitude, 4); memcpy(buffer+8, (void*)&longitude, 4); - memcpy(buffer+13, (void*)&oob, 1); - - LMIC_setTxData2(1, buffer, sizeof(buffer), 0); + LMIC_setTxData2(1, buffer, sizeof(buffer)-2, 0); } } -void do_gps(osjob_t* j){ - while(softserial_available()>0) { +#define GPS_MAX_ENCODES 60 +void read_gps(){ + timeout = 0; + while(softserial_available()>0 && timeout < GPS_MAX_ENCODES) { gps.encode(softserial_read()); + timeout ++; } if(!is_sending && gps.location.isValid()) { + Serial.println("gps"); is_sending = 1; - do_send(&sendjob); + os_setTimedCallback(&sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send); } - os_setTimedCallback(&gpsjob, os_getTime()+sec2osticks(GPS_INTERVAL), do_gps); } void setup() { - Serial.begin(4800); + Serial.begin(9600); softserial_init(); delay(100); @@ -237,10 +230,9 @@ void setup() { // Set data rate and transmit power for uplink LMIC_setDrTxpow(DR_SF7,14); - - os_setTimedCallback(&gpsjob, os_getTime()+sec2osticks(GPS_INTERVAL), do_gps); } void loop() { - os_runloop_once(); + os_runloop_once(); + read_gps(); } diff --git a/fenceless_lmic_config.h b/fenceless_lmic_config.h new file mode 100644 index 0000000..587899e --- /dev/null +++ b/fenceless_lmic_config.h @@ -0,0 +1,15 @@ +// project-specific definitions +//#define CFG_eu868 1 +#define CFG_us915 1 +//#define CFG_au915 1 +//#define CFG_as923 1 +// #define LMIC_COUNTRY_CODE LMIC_COUNTRY_CODE_JP /* for as923-JP */ +//#define CFG_kr920 1 +//#define CFG_in866 1 +#define CFG_sx1276_radio 1 +//#define LMIC_USE_INTERRUPTS +#define DISABLE_JOIN +#define DISABLE_PING +#define DISABLE_BEACONS +#define DISABLE_LMIC_FAILURE_TO +#define USE_IDEETRON_AES diff --git a/libraries/AltSoftSerial/.AltSoftSerial.cpp.swp b/libraries/AltSoftSerial/.AltSoftSerial.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..7fb15e159a3bb0e8ce62ef1da61fd830836d3f6b GIT binary patch literal 16384 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 jh$A&3f1;Ntw1%P+^PSINX#(e