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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 literal 0 HcmV?d00001 diff --git a/libraries/AltSoftSerial/AltSoftSerial.cpp b/libraries/AltSoftSerial/AltSoftSerial.cpp index 833f0af..8883e49 100644 --- a/libraries/AltSoftSerial/AltSoftSerial.cpp +++ b/libraries/AltSoftSerial/AltSoftSerial.cpp @@ -47,7 +47,7 @@ static uint8_t rx_bit = 0; static uint16_t rx_target; static volatile uint8_t rx_buffer_head; static volatile uint8_t rx_buffer_tail; -#define RX_BUFFER_SIZE 80 +#define RX_BUFFER_SIZE 30 static volatile uint8_t rx_buffer[RX_BUFFER_SIZE]; const static uint32_t cycles_per_bit = 1667UL;