From 06dcad6484edbfe58bdfe8e6115b4950304bcc4f Mon Sep 17 00:00:00 2001 From: Klaus K Wilting Date: Sun, 18 Nov 2018 15:50:57 +0100 Subject: [PATCH] payload decoder reworked for BME680 support --- README.md | 2 +- include/irqhandler.h | 2 +- include/senddata.h | 4 +-- platformio.ini | 68 +++++++++++++++++++-------------------- src/TTN/packed_decoder.js | 2 +- src/TTN/plain_decoder.js | 2 +- src/bme680read.cpp | 9 +++--- src/button.cpp | 2 +- src/cyclic.cpp | 12 +++---- src/hal/generic.h | 2 +- src/hal/heltec.h | 2 +- src/hal/octopus32.h | 2 ++ src/hal/ttgov21new.h | 2 +- src/irqhandler.cpp | 6 ++-- src/macsniff.cpp | 2 +- src/paxcounter.conf | 5 ++- src/payload.cpp | 50 +++++++++++++++++----------- src/rcommand.cpp | 8 ++--- src/senddata.cpp | 15 +++++---- 19 files changed, 105 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index 49c8d4aa..25bd11ea 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ Hereafter described is the default *plain* format, which uses MSB bit numbering. bytes 1-2: Temperature [°C] bytes 3-4: Pressure [hPa] bytes 5-6: Humidity [%] - bytes 7-8: Gas resistance [MOhm] + bytes 7-8: Gas resistance [kOhm] bytes 9-10: Altitude [meter] # Remote control diff --git a/include/irqhandler.h b/include/irqhandler.h index f21e484c..d068df32 100644 --- a/include/irqhandler.h +++ b/include/irqhandler.h @@ -3,7 +3,7 @@ #define DISPLAY_IRQ 0x01 #define BUTTON_IRQ 0x02 -#define SENDPAYLOAD_IRQ 0x04 +#define SENDCOUNTER_IRQ 0x04 #define CYCLIC_IRQ 0x08 #include "globals.h" diff --git a/include/senddata.h b/include/senddata.h index d2e2641d..da368f71 100644 --- a/include/senddata.h +++ b/include/senddata.h @@ -5,8 +5,8 @@ #include "lorawan.h" #include "cyclic.h" -void SendData(uint8_t port); -void sendPayload(void); +void SendPayload(uint8_t port); +void sendCounter(void); void checkSendQueues(void); void flushQueues(); diff --git a/platformio.ini b/platformio.ini index 2dfbad72..ca40581b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -29,7 +29,7 @@ description = Paxcounter is a proof-of-concept ESP32 device for metering passeng [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.6.68 +release_version = 1.6.8 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose debug_level = 0 @@ -41,10 +41,8 @@ keyfile = ota.conf platform_espressif32 = espressif32@1.5.0 board_build.partitions = min_spiffs.csv monitor_speed = 115200 -lib_deps_all = +lib_deps_basic = ArduinoJson@^5.13.1 - Adafruit Unified Sensor@^1.0.2 - Adafruit BME680 Library@^1.0.7 Time@>=1.5 lib_deps_lora = ; MCCI LoRaWAN LMIC library@^2.2.2 @@ -54,6 +52,16 @@ lib_deps_rgbled = SmartLeds@>=1.1.3 lib_deps_gps = TinyGPSPlus@>=1.0.2 +lib_deps_sensors = + Adafruit Unified Sensor@^1.0.2 + Adafruit BME680 Library@^1.0.7 +lib_deps_all = + ${common.lib_deps_basic} + ${common.lib_deps_lora} + ${common.lib_deps_display} + ${common.lib_deps_rgbled} + ${common.lib_deps_gps} + ${common.lib_deps_sensors} build_flags = -include src/hal/${PIOENV}.h -include src/paxcounter.conf @@ -72,7 +80,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 115200 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} build_flags = ${common.build_flags} @@ -87,8 +95,9 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 115200 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} + ${common.lib_deps_rgbled} build_flags = ${common.build_flags} upload_protocol = ${common.upload_protocol} @@ -102,7 +111,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_display} build_flags = @@ -118,7 +127,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_display} build_flags = @@ -134,7 +143,7 @@ board = ttgo-lora32-v1 board_build.partitions = ${common.board_build.partitions} upload_speed = 115200 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_display} build_flags = @@ -150,7 +159,7 @@ board = ttgo-lora32-v1 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_display} build_flags = @@ -166,7 +175,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_display} build_flags = @@ -182,7 +191,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_display} build_flags = @@ -198,7 +207,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_gps} build_flags = @@ -215,7 +224,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_rgbled} build_flags = @@ -231,7 +240,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_rgbled} ${common.lib_deps_gps} @@ -248,7 +257,7 @@ board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_rgbled} ${common.lib_deps_gps} @@ -266,7 +275,7 @@ board = lolin32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_rgbled} build_flags = @@ -282,7 +291,7 @@ board = lolin32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_lora} ${common.lib_deps_rgbled} build_flags = @@ -298,7 +307,7 @@ board = lolin32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 lib_deps = - ${common.lib_deps_all} + ${common.lib_deps_basic} ${common.lib_deps_rgbled} build_flags = ${common.build_flags} @@ -312,13 +321,8 @@ framework = arduino board = featheresp32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 -lib_deps = - ${common.lib_deps_all} - ${common.lib_deps_lora} - ${common.lib_deps_rgbled} - ${common.lib_deps_display} -build_flags = - ${common.build_flags} +lib_deps = ${common.lib_deps_all} +build_flags = ${common.build_flags} upload_protocol = ${common.upload_protocol} extra_scripts = ${common.extra_scripts} monitor_speed = ${common.monitor_speed} @@ -329,14 +333,8 @@ framework = arduino board = heltec_wifi_lora_32 board_build.partitions = ${common.board_build.partitions} upload_speed = 921600 -lib_deps = - ${common.lib_deps_all} - ${common.lib_deps_lora} - ${common.lib_deps_rgbled} - ${common.lib_deps_gps} - ${common.lib_deps_display} -build_flags = - ${common.build_flags} +lib_deps = ${common.lib_deps_all} +build_flags = ${common.build_flags} upload_protocol = ${common.upload_protocol} extra_scripts = ${common.extra_scripts} -monitor_speed = ${common.monitor_speed} +monitor_speed = ${common.monitor_speed} \ No newline at end of file diff --git a/src/TTN/packed_decoder.js b/src/TTN/packed_decoder.js index 6050f828..2c8b6c5e 100644 --- a/src/TTN/packed_decoder.js +++ b/src/TTN/packed_decoder.js @@ -43,7 +43,7 @@ function Decoder(bytes, port) { if (port === 7) { // BME680 sensor data - return decode(bytes, [temperature, uint16, humidity, uint16, uint16], ['temperature', 'pressure', 'humidity', 'gas', 'altitude']); + return decode(bytes, [temperature, uint16, humidity, uint16, temperature], ['temperature', 'pressure', 'humidity', 'air', 'altitude']); } } diff --git a/src/TTN/plain_decoder.js b/src/TTN/plain_decoder.js index dd4cbe38..146caa43 100644 --- a/src/TTN/plain_decoder.js +++ b/src/TTN/plain_decoder.js @@ -46,7 +46,7 @@ function Decoder(bytes, port) { decoded.temperature = ((bytes[i++] << 8) | bytes[i++]); decoded.pressure = ((bytes[i++] << 8) | bytes[i++]); decoded.humidity = ((bytes[i++] << 8) | bytes[i++]); - decoded.gas = ((bytes[i++] << 8) | bytes[i++]); + decoded.air = ((bytes[i++] << 8) | bytes[i++]); decoded.altitude = ((bytes[i++] << 8) | bytes[i++]); } diff --git a/src/bme680read.cpp b/src/bme680read.cpp index 795280af..46057030 100644 --- a/src/bme680read.cpp +++ b/src/bme680read.cpp @@ -14,7 +14,7 @@ bmeStatus_t bme_status; void bme_init(void) { // initialize BME680 sensor using default i2c address 0x77 - if (bme.begin()) { + if (bme.begin(HAS_BME)) { // Set up oversampling and filter initialization bme.setTemperatureOversampling(BME680_OS_8X); bme.setHumidityOversampling(BME680_OS_2X); @@ -31,11 +31,10 @@ bool bme_read(void) { if (ret) { // read current BME data and buffer in global struct bme_status.temperature = bme.temperature; - bme_status.pressure = (uint16_t)(bme.pressure / 100.0); + bme_status.pressure = (uint16_t)(bme.pressure / 100.0); // convert Pa -> hPa bme_status.humidity = bme.humidity; - bme_status.gas_resistance = (uint16_t)(bme.gas_resistance / 1000.0); - bme_status.altitude = - (uint16_t)(bme.readAltitude(SEALEVELPRESSURE_HPA / 1000.0)); + bme_status.gas_resistance = (uint16_t)(bme.gas_resistance / 1000.0); // convert Ohm -> kOhm + bme_status.altitude = bme.readAltitude(SEALEVELPRESSURE_HPA); ESP_LOGI(TAG, "BME680 sensor data read success"); } else { ESP_LOGI(TAG, "BME680 sensor read error"); diff --git a/src/button.cpp b/src/button.cpp index fd96545c..29eff252 100644 --- a/src/button.cpp +++ b/src/button.cpp @@ -10,6 +10,6 @@ void readButton() { ESP_LOGI(TAG, "Button pressed"); payload.reset(); payload.addButton(0x01); - SendData(BUTTONPORT); + SendPayload(BUTTONPORT); } #endif \ No newline at end of file diff --git a/src/cyclic.cpp b/src/cyclic.cpp index 4bdaa77d..a4776c77 100644 --- a/src/cyclic.cpp +++ b/src/cyclic.cpp @@ -23,10 +23,10 @@ void doHousekeeping() { spi_housekeeping(); lora_housekeeping(); -// time sync once per TIME_SYNC_INTERVAL_MIN -#ifdef TIME_SYNC +// time sync once per TIME_SYNC_INTERVAL +#ifdef TIME_SYNC_INTERVAL if (millis() >= nextTimeSync) { - nextTimeSync = millis() + TIME_SYNC_INTERVAL_MIN * + nextTimeSync = millis() + TIME_SYNC_INTERVAL * 60000; // set up next time sync period do_timesync(); } @@ -63,7 +63,7 @@ void doHousekeeping() { "Memory full, counter cleared (heap low water mark = %d Bytes / " "free heap = %d bytes)", esp_get_minimum_free_heap_size(), ESP.getFreeHeap()); - SendData(COUNTERPORT); // send data before clearing counters + SendPayload(COUNTERPORT); // send data before clearing counters reset_counters(); // clear macs container and reset all counters get_salt(); // get new salt for salting hashes @@ -90,7 +90,7 @@ void reset_counters() { } void do_timesync() { -#ifdef TIME_SYNC +#ifdef TIME_SYNC_INTERVAL // sync time & date if we have valid gps time #ifdef HAS_GPS if (gps.time.isValid()) { @@ -106,7 +106,7 @@ void do_timesync() { // Schedule a network time request at the next possible time LMIC_requestNetworkTime(user_request_network_time_callback, &userUTCTime); ESP_LOGI(TAG, "Network time request scheduled"); -#endif // TIME_SYNC +#endif // TIME_SYNC_INTERVAL } // do_timesync() #ifndef VERBOSE diff --git a/src/hal/generic.h b/src/hal/generic.h index 86564310..9fb9234d 100644 --- a/src/hal/generic.h +++ b/src/hal/generic.h @@ -13,7 +13,7 @@ #define SPI_SCLK GPIO_NUM_18 #define SPI_CS GPIO_NUM_5 -#define HAS_BME 1 // BME680 sensor on I2C bus (SDA=4/SCL=15); comment out if not present +#define HAS_BME 0x77 // BME680 sensor on I2C bus (SDA=4/SCL=15); comment out if not present #define CFG_sx1276_radio 1 // select LoRa chip //#define CFG_sx1272_radio 1 // select LoRa chip diff --git a/src/hal/heltec.h b/src/hal/heltec.h index 492f3425..45dc9911 100644 --- a/src/hal/heltec.h +++ b/src/hal/heltec.h @@ -3,7 +3,7 @@ #include -//#define HAS_BME 1 // BME680 sensor on I2C bus (SDI=21/SCL=22); comment out if not present +//#define HAS_BME 0x77 // BME680 sensor on I2C bus (SDI=21/SCL=22); comment out if not present // Hardware related definitions for Heltec LoRa-32 Board #define HAS_LORA 1 // comment out if device shall not send data via LoRa diff --git a/src/hal/octopus32.h b/src/hal/octopus32.h index 3ab6b525..a2be5f12 100644 --- a/src/hal/octopus32.h +++ b/src/hal/octopus32.h @@ -10,6 +10,8 @@ // disable brownout detection (avoid unexpected reset on some boards) #define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature +#define HAS_BME 0x76 // BME680 sensor on I2C bus; comment out if not present + #define HAS_LED 13 // ESP32 GPIO12 (pin22) On Board LED #define LED_ACTIVE_LOW 1 // Onboard LED is active when pin is LOW //#define HAS_RGB_LED 13 // ESP32 GPIO13 (pin13) On Board Shield WS2812B RGB LED diff --git a/src/hal/ttgov21new.h b/src/hal/ttgov21new.h index bc41184a..e34de684 100644 --- a/src/hal/ttgov21new.h +++ b/src/hal/ttgov21new.h @@ -8,7 +8,7 @@ // This settings are for boards labeled v1.6 on pcb, NOT for v1.5 or older */ -//#define HAS_BME 1 // BME680 sensor on I2C bus (SDI=21/SCL=22); comment out if not present +#define HAS_BME 0x77 // BME680 sensor on I2C bus (SDI=21/SCL=22); comment out if not present #define HAS_LORA 1 // comment out if device shall not send data via LoRa #define CFG_sx1276_radio 1 // HPD13A LoRa SoC diff --git a/src/irqhandler.cpp b/src/irqhandler.cpp index 61aa6d2e..f79e035e 100644 --- a/src/irqhandler.cpp +++ b/src/irqhandler.cpp @@ -35,8 +35,8 @@ void irqHandler(void *pvParameters) { doHousekeeping(); // is time to send the payload? - if (InterruptStatus & SENDPAYLOAD_IRQ) - sendPayload(); + if (InterruptStatus & SENDCOUNTER_IRQ) + sendCounter(); } vTaskDelete(NULL); // shoud never be reached } @@ -55,7 +55,7 @@ void IRAM_ATTR homeCycleIRQ() { } void IRAM_ATTR SendCycleIRQ() { - xTaskNotifyFromISR(irqHandlerTask, SENDPAYLOAD_IRQ, eSetBits, NULL); + xTaskNotifyFromISR(irqHandlerTask, SENDCOUNTER_IRQ, eSetBits, NULL); portYIELD_FROM_ISR(); } diff --git a/src/macsniff.cpp b/src/macsniff.cpp index b3e723ae..920ec091 100644 --- a/src/macsniff.cpp +++ b/src/macsniff.cpp @@ -107,7 +107,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) { #endif payload.reset(); payload.addAlarm(rssi, beaconID); - SendData(BEACONPORT); + SendPayload(BEACONPORT); } }; diff --git a/src/paxcounter.conf b/src/paxcounter.conf index c8c22984..c47b6c85 100644 --- a/src/paxcounter.conf +++ b/src/paxcounter.conf @@ -11,7 +11,7 @@ // Payload send cycle and encoding #define SEND_SECS 30 // payload send cycle [seconds/2] -> 60 sec. -#define PAYLOAD_ENCODER 3 // payload encoder: 1=Plain, 2=Packed, 3=CayenneLPP dynamic, 4=CayenneLPP packed +#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=CayenneLPP dynamic, 4=CayenneLPP packed // Set this to include BLE counting and vendor filter functions #define VENDORFILTER 1 // comment out if you want to count things, not people @@ -74,8 +74,7 @@ #define RESPONSE_TIMEOUT_MS 60000 // firmware binary server connection timeout [milliseconds] // setting for syncing time of node -#define TIME_SYNC 1 // comment out if no time sync of node necessary -#define TIME_SYNC_INTERVAL_MIN 60 // sync time each ... minutes [default = 60] +//#define TIME_SYNC_INTERVAL 60 // sync time each ... minutes [default = 60], comment out means off // LMIC settings // moved to src/lmic_config.h \ No newline at end of file diff --git a/src/payload.cpp b/src/payload.cpp index 3a9432d9..4ecab5e3 100644 --- a/src/payload.cpp +++ b/src/payload.cpp @@ -95,16 +95,19 @@ void PayloadConvert::addGPS(gpsStatus_t value) { void PayloadConvert::addBME(bmeStatus_t value) { #ifdef HAS_BME - buffer[cursor++] = highByte((int16_t)value.temperature); - buffer[cursor++] = lowByte((int16_t)value.temperature); + int16_t temperature = (int16_t)(value.temperature); // float -> int + uint16_t humidity = (uint16_t)(value.humidity); // float -> int + int16_t altitude = (int16_t)(value.altitude); // float -> int + buffer[cursor++] = highByte(temperature); + buffer[cursor++] = lowByte(temperature); buffer[cursor++] = highByte(value.pressure); buffer[cursor++] = lowByte(value.pressure); - buffer[cursor++] = highByte((uint16_t)value.humidity); - buffer[cursor++] = lowByte((uint16_t)value.humidity); + buffer[cursor++] = highByte(humidity); + buffer[cursor++] = lowByte(humidity); buffer[cursor++] = highByte(value.gas_resistance); buffer[cursor++] = lowByte(value.gas_resistance); - buffer[cursor++] = highByte(value.altitude); - buffer[cursor++] = lowByte(value.altitude); + buffer[cursor++] = highByte(altitude); + buffer[cursor++] = lowByte(altitude); #endif } @@ -171,7 +174,7 @@ void PayloadConvert::addBME(bmeStatus_t value) { writeUint16(value.pressure); writeHumidity(value.humidity); writeUint16(value.gas_resistance); - writeUint16(value.altitude); + writeTemperature(value.altitude); #endif } @@ -331,29 +334,40 @@ void PayloadConvert::addGPS(gpsStatus_t value) { void PayloadConvert::addBME(bmeStatus_t value) { #ifdef HAS_BME + + // data value conversions to meet cayenne data type definition + // 0.1°C per bit => -3276,7 .. +3276,7 °C + int16_t temperature = (int16_t)(value.temperature * 10.0); + // 0.1 hPa per bit => 0 .. 6553,6 hPa + uint16_t pressure = value.pressure * 10; + // 0.5% per bit => 0 .. 128 %C + uint8_t humidity = (uint8_t)(value.humidity * 2.0); + // 0.01 Ohm per bit => 0 .. 655,36 Ohm + uint16_t gas = value.gas_resistance * 100; + #if (PAYLOAD_ENCODER == 3) buffer[cursor++] = LPP_TEMPERATURE_CHANNEL; #endif - buffer[cursor++] = LPP_TEMPERATURE; - buffer[cursor++] = highByte((int16_t)value.temperature); - buffer[cursor++] = lowByte((int16_t)value.temperature); + buffer[cursor++] = LPP_TEMPERATURE; // 2 bytes 0.1 °C Signed MSB + buffer[cursor++] = highByte(temperature); + buffer[cursor++] = lowByte(temperature); #if (PAYLOAD_ENCODER == 3) buffer[cursor++] = LPP_BAROMETER_CHANNEL; #endif - buffer[cursor++] = LPP_BAROMETER; - buffer[cursor++] = highByte(value.pressure); - buffer[cursor++] = lowByte(value.pressure); + buffer[cursor++] = LPP_BAROMETER; // 2 bytes 0.1 hPa Unsigned MSB + buffer[cursor++] = highByte(pressure); + buffer[cursor++] = lowByte(pressure); #if (PAYLOAD_ENCODER == 3) buffer[cursor++] = LPP_HUMIDITY_CHANNEL; #endif - buffer[cursor++] = LPP_HUMIDITY; - buffer[cursor++] = (byte)value.humidity; + buffer[cursor++] = LPP_HUMIDITY; // 1 byte 0.5 % Unsigned + buffer[cursor++] = humidity; #if (PAYLOAD_ENCODER == 3) buffer[cursor++] = LPP_GAS_CHANNEL; #endif - buffer[cursor++] = LPP_ANALOG_INPUT; - buffer[cursor++] = highByte(value.gas_resistance); - buffer[cursor++] = lowByte(value.gas_resistance); + buffer[cursor++] = LPP_ANALOG_INPUT; // 2 bytes 0.01 Signed + buffer[cursor++] = highByte(gas); + buffer[cursor++] = lowByte(gas); #endif // HAS_BME } diff --git a/src/rcommand.cpp b/src/rcommand.cpp index dc525f44..cd72b85a 100644 --- a/src/rcommand.cpp +++ b/src/rcommand.cpp @@ -211,7 +211,7 @@ void get_config(uint8_t val[]) { ESP_LOGI(TAG, "Remote command: get device configuration"); payload.reset(); payload.addConfig(cfg); - SendData(CONFIGPORT); + SendPayload(CONFIGPORT); }; void get_status(uint8_t val[]) { @@ -225,7 +225,7 @@ void get_status(uint8_t val[]) { payload.addStatus(voltage, uptime() / 1000, temperatureRead(), ESP.getFreeHeap(), rtc_get_reset_reason(0), rtc_get_reset_reason(1)); - SendData(STATUSPORT); + SendPayload(STATUSPORT); }; void get_gps(uint8_t val[]) { @@ -234,7 +234,7 @@ void get_gps(uint8_t val[]) { gps_read(); payload.reset(); payload.addGPS(gps_status); - SendData(GPSPORT); + SendPayload(GPSPORT) #else ESP_LOGW(TAG, "GPS function not supported"); #endif @@ -245,7 +245,7 @@ void get_bme(uint8_t val[]) { #ifdef HAS_BME payload.reset(); payload.addBME(bme_status); - SendData(BMEPORT); + SendPayload(BMEPORT); #else ESP_LOGW(TAG, "BME680 sensor not supported"); #endif diff --git a/src/senddata.cpp b/src/senddata.cpp index bc010c12..c8deafae 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -2,22 +2,24 @@ #include "senddata.h" // put data to send in RTos Queues used for transmit over channels Lora and SPI -void SendData(uint8_t port) { +void SendPayload(uint8_t port) { MessageBuffer_t SendBuffer; // contains MessageSize, MessagePort, Message[] SendBuffer.MessageSize = payload.getSize(); - SendBuffer.MessagePort = port; + SendBuffer.MessagePort = PAYLOAD_ENCODER <= 2 + ? port + : (PAYLOAD_ENCODER == 4 ? LPP2PORT : LPP1PORT); memcpy(SendBuffer.Message, payload.getBuffer(), payload.getSize()); // enqueue message in device's send queues lora_enqueuedata(&SendBuffer); spi_enqueuedata(&SendBuffer); -} // SendData +} // SendPayload // interrupt triggered function to prepare payload to send -void sendPayload() { +void sendCounter() { // append counter data to payload payload.reset(); @@ -48,10 +50,9 @@ void sendPayload() { ESP_LOGD(TAG, "No valid GPS position or GPS data mode disabled"); } #endif - SendData(PAYLOAD_ENCODER <= 2 ? COUNTERPORT - : (PAYLOAD_ENCODER == 4 ? LPP2PORT : LPP1PORT)); + SendPayload(COUNTERPORT); -} // sendpayload() +} // sendCounter() void flushQueues() { lora_queuereset();