commit
1041137de8
@ -16,5 +16,6 @@ typedef struct {
|
|||||||
} cmd_t;
|
} cmd_t;
|
||||||
|
|
||||||
void rcommand(uint8_t cmd[], uint8_t cmdlength);
|
void rcommand(uint8_t cmd[], uint8_t cmdlength);
|
||||||
|
void do_reset();
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -27,7 +27,7 @@ description = Paxcounter is a proof-of-concept ESP32 device for metering passeng
|
|||||||
|
|
||||||
[common]
|
[common]
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
||||||
release_version = 1.6.0
|
release_version = 1.6.1
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
; 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
|
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
||||||
debug_level = 0
|
debug_level = 0
|
||||||
|
@ -15,7 +15,7 @@ void doHousekeeping() {
|
|||||||
|
|
||||||
// check if update mode trigger switch was set
|
// check if update mode trigger switch was set
|
||||||
if (cfg.runmode == 1)
|
if (cfg.runmode == 1)
|
||||||
ESP.restart();
|
do_reset();
|
||||||
|
|
||||||
// task storage debugging //
|
// task storage debugging //
|
||||||
ESP_LOGD(TAG, "Wifiloop %d bytes left",
|
ESP_LOGD(TAG, "Wifiloop %d bytes left",
|
||||||
@ -60,7 +60,7 @@ void doHousekeeping() {
|
|||||||
get_salt(); // get new salt for salting hashes
|
get_salt(); // get new salt for salting hashes
|
||||||
|
|
||||||
if (esp_get_minimum_free_heap_size() <= MEM_LOW) // check again
|
if (esp_get_minimum_free_heap_size() <= MEM_LOW) // check again
|
||||||
esp_restart(); // memory leak, reset device
|
do_reset(); // memory leak, reset device
|
||||||
}
|
}
|
||||||
} // doHousekeeping()
|
} // doHousekeeping()
|
||||||
|
|
||||||
|
13
src/led.cpp
13
src/led.cpp
@ -122,7 +122,18 @@ void ledLoop(void *parameter) {
|
|||||||
LEDState =
|
LEDState =
|
||||||
((millis() % 200) < 20) ? LED_ON : LED_OFF; // TX data pending
|
((millis() % 200) < 20) ? LED_ON : LED_OFF; // TX data pending
|
||||||
} else if (LMIC.opmode & (OP_TXDATA | OP_TXRXPEND)) {
|
} else if (LMIC.opmode & (OP_TXDATA | OP_TXRXPEND)) {
|
||||||
LEDColor = COLOR_BLUE;
|
// select color to blink by message port
|
||||||
|
switch (LMIC.pendTxPort) {
|
||||||
|
case STATUSPORT:
|
||||||
|
LEDColor = COLOR_RED;
|
||||||
|
break;
|
||||||
|
case CONFIGPORT:
|
||||||
|
LEDColor = COLOR_CYAN;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LEDColor = COLOR_BLUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
// small blink 10ms on each 1/2sec (not when joining)
|
// small blink 10ms on each 1/2sec (not when joining)
|
||||||
LEDState = ((millis() % 500) < 10) ? LED_ON : LED_OFF;
|
LEDState = ((millis() % 500) < 10) ? LED_ON : LED_OFF;
|
||||||
// This should not happen so indicate a problem
|
// This should not happen so indicate a problem
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
#define COUNTERPORT 1 // Port on which device sends counts
|
#define COUNTERPORT 1 // Port on which device sends counts
|
||||||
#define RCMDPORT 2 // Port on which device listenes for remote commands
|
#define RCMDPORT 2 // Port on which device listenes for remote commands
|
||||||
#define STATUSPORT 2 // Port on which device sends remote command results
|
#define STATUSPORT 2 // Port on which device sends remote command results
|
||||||
#define CONFIGPORT 3 // Port on which device sends gps query results
|
#define CONFIGPORT 3 // Port on which device sends config query results
|
||||||
#define GPSPORT 4 // Port on which device sends gps query results
|
#define GPSPORT 4 // Port on which device sends gps query results
|
||||||
#define BUTTONPORT 5 // Port on which device sends button pressed signal
|
#define BUTTONPORT 5 // Port on which device sends button pressed signal
|
||||||
#define LPP1PORT 1 // Port for Cayenne LPP 1.0 dynamic sensor encoding
|
#define LPP1PORT 1 // Port for Cayenne LPP 1.0 dynamic sensor encoding
|
||||||
|
@ -5,15 +5,19 @@
|
|||||||
// Local logging tag
|
// Local logging tag
|
||||||
static const char TAG[] = "main";
|
static const char TAG[] = "main";
|
||||||
|
|
||||||
|
// helper function
|
||||||
|
void do_reset() {
|
||||||
|
ESP_LOGI(TAG, "Remote command: restart device");
|
||||||
|
LMIC_shutdown();
|
||||||
|
esp_restart();
|
||||||
|
}
|
||||||
|
|
||||||
// set of functions that can be triggered by remote commands
|
// set of functions that can be triggered by remote commands
|
||||||
void set_reset(uint8_t val[]) {
|
void set_reset(uint8_t val[]) {
|
||||||
switch (val[0]) {
|
switch (val[0]) {
|
||||||
case 0: // restart device
|
case 0: // restart device
|
||||||
ESP_LOGI(TAG, "Remote command: restart device");
|
|
||||||
sprintf(display_line6, "Reset pending");
|
sprintf(display_line6, "Reset pending");
|
||||||
vTaskDelay(10000 / portTICK_PERIOD_MS); // wait for LMIC to confirm LoRa
|
do_reset();
|
||||||
// downlink to server
|
|
||||||
esp_restart();
|
|
||||||
break;
|
break;
|
||||||
case 1: // reset MAC counter
|
case 1: // reset MAC counter
|
||||||
ESP_LOGI(TAG, "Remote command: reset MAC counter");
|
ESP_LOGI(TAG, "Remote command: reset MAC counter");
|
||||||
|
Loading…
Reference in New Issue
Block a user