ota.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. Ticker tkOTA; // periodic check if OTA available
  2. int OTA_check_ms = 100;
  3. bool flag_OTA = false;
  4. void OTA_Flag(){
  5. flag_OTA = true ;
  6. }
  7. void checkOTA(){
  8. //change to ticker flag system
  9. if (flag_OTA){
  10. flag_OTA = false ;
  11. ArduinoOTA.handle();
  12. //Serial.println("OTA check");
  13. }
  14. }
  15. void detachOTA(){
  16. tkOTA.detach();
  17. }
  18. void setupOTA(){
  19. ArduinoOTA.onStart([]() {
  20. Serial.println("Starting firmware update");
  21. redLedState(-1,100); // fast red blink
  22. });
  23. ArduinoOTA.onEnd([]() {
  24. Serial.println("update done !");
  25. redLedState(0, 500);
  26. blueLedState(-1, 100); // 5 fast blue blink on end
  27. delay(500);
  28. blueLedState(0,100);
  29. //ledBlink(Blue_Led, 3, 100);
  30. });
  31. ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
  32. Serial.printf("Progress: %u%%\n", (progress / (total / 100)));
  33. blueLedState(-1,500); //slow blue blink during progress
  34. });
  35. ArduinoOTA.onError([](ota_error_t error) {
  36. Serial.printf("Error[%u]: ", error);
  37. if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
  38. else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
  39. else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
  40. else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
  41. else if (error == OTA_END_ERROR) Serial.println("End Failed");
  42. redLedState(-1, 250);
  43. blueLedState(-1,250);
  44. });
  45. ArduinoOTA.begin();
  46. Serial.println("OTA started");
  47. tkOTA.attach_ms(OTA_check_ms, OTA_Flag);
  48. }