diff --git a/platformio.ini b/platformio.ini index 0d0476e..eba7aa6 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,10 +13,10 @@ platform = espressif32 board = esp32dev framework = arduino monitor_speed = 115200 -; upload_port = COM[6] -upload_protocol = espota +#; upload_port = COM[6] +#upload_protocol = espota upload_port = 192.168.2.92 -; board_build.partitions = huge_app.csv +;board_build.partitions = huge_app.csv board_build.partitions = min_spiffs.csv diff --git a/src/main.cpp b/src/main.cpp index bf3ad2f..241e257 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -53,20 +53,27 @@ class MyServerCallbacks : public BLEServerCallbacks { } }; // uint8_t toggle = 0; -uint8_t alarmFired = 0; +uint8_t alarmFired_1km = 0; +uint8_t alarmFired_500m = 0; +uint8_t alarmFired_300m = 0; int state = 0; class MyAlarmCallback : public BLECharacteristicCallbacks { void onWrite(BLECharacteristic * pCharacteristic) { std::string value = pCharacteristic->getValue(); - for (int i = 0; i < value.length(); i++) { - Serial.print(value[i]); - } - Serial.println(""); - if (value.compare("X") == 0) { Serial.println("found X"); - alarmFired = 1; + alarmFired_1km = 1; + state = 0; + } + else if (value.compare("XX") == 0) { + Serial.println("found XX"); + alarmFired_500m = 1; + state = 0; + } + else if (value.compare("XXX") == 0) { + Serial.println("found XXX"); + alarmFired_300m = 1; state = 0; } else if (value.compare("U") == 0) { @@ -120,6 +127,8 @@ void setup() { Serial.begin(115200); EEPROM.begin(EEPROM_SIZE); + + // needs to be uncommend for very first boot // EEPROM.write(MODE_ADDRESS, MODE_BLE); // EEPROM.commit(); @@ -130,7 +139,7 @@ void setup() { // upcounting timer 1MHz timer = timerBegin(0, 40, true); timerAttachInterrupt(timer, &onTimer, true); - timerAlarmWrite(timer, 100000, true); + timerAlarmWrite(timer, 400000, true); timerAlarmEnable(timer); // blink led @@ -205,7 +214,20 @@ void setup() { // ArduinoOTA.begin(); } +// toggles pin and returns new state of pin +uint8_t togglePin(uint8_t pin, uint8_t state) { + if (state == 0) { + digitalWrite(pin, HIGH); + return 1; + } + else { + digitalWrite(pin, LOW); + return 0; + } +} + std::string x; +uint8_t stateLED = 0; void loop() { if (mode == MODE_WIFI) { @@ -216,7 +238,7 @@ void loop() { // BLE mode - // occures every 100ms + // occures every 200ms if (ctr > 0) { portENTER_CRITICAL(&timerMux); ctr--; @@ -230,22 +252,35 @@ void loop() { } state++; #else - if (alarmFired) { - if (state % 2 == 0) { - digitalWrite(ALARM_LED, HIGH); + if (alarmFired_1km) { + if (state % 4 == 0) { + stateLED = togglePin(ALARM_LED, stateLED); } - else { - digitalWrite(ALARM_LED, LOW); + state++; + } + else if (alarmFired_500m) { + if (state % 3 == 0) { + stateLED = togglePin(ALARM_LED, stateLED); + } + state++; + } + else if (alarmFired_300m) { + if (state % 2 == 0) { + stateLED = togglePin(ALARM_LED, stateLED); } state++; } #endif - if (state == 22) { + if (state == 50) { state = 0; + digitalWrite(ALARM_LED, LOW); + stateLED = 0; #if defined TESTMODE ctr = -20; #endif - alarmFired = 0; + alarmFired_1km = 0; + alarmFired_500m = 0; + alarmFired_300m = 0; } } @@ -271,6 +306,6 @@ void loop() { oldDeviceConnected = deviceConnected; } - delay(500); + // delay(500); } } \ No newline at end of file