Mercurial > code > home > repos > homeauto
view espNode/desk/src/main.cpp @ 785:3ff074ba25f1
updates to mqtt message API; much more consistent logging
author | drewp@bigasterisk.com |
---|---|
date | Fri, 28 Aug 2020 01:39:08 -0700 |
parents | e4cf795d3677 |
children |
line wrap: on
line source
#include <Arduino.h> #include <string> #include "display.h" #include "fingerprint.h" #include "mqtt.h" #include "wifi.h" #define ADC_EN 14 #define ADC_PIN 34 // #include <Button2.h> // #define BUTTON_1 35 // #define BUTTON_2 0 void setup() { Serial.begin(115200); Serial.println("Serial.begin"); fingerprint::Setup(); // go early since the others display status on our LED display::Setup(); display::Message("Hello world"); wifi::Setup(); mqtt::Setup(); } namespace { uint16_t LastComponentNumber(const std::string &s) { return atoi(s.substr(s.rfind("/") + 1).c_str()); } } // namespace void HandleCommand(const std::string &payload_string) { if (payload_string == "enroll") { fingerprint::Enroll(); } else if (payload_string == "show_success") { fingerprint::BlinkSuccess(); while (!mqtt::HasPendingMessage()) yield(); mqtt::PopPendingMessage(); // hope it's "clear_success", but who cares fingerprint::BlinkClearSuccess(); } else if (payload_string == "delete_all") { fingerprint::DeleteAll(); } else if (payload_string.rfind("delete/model/", 0) == 0) { uint16_t fid = LastComponentNumber(payload_string); fingerprint::DeleteModel(fid); } else if (payload_string.rfind("get/model/", 0) == 0) { uint16_t fid = LastComponentNumber(payload_string); fingerprint::DownloadModel(fid); } } void loop() { Serial.println("--loop--"); fingerprint::ExecuteAnyQueued(); fingerprint::ScanLoop(); if (mqtt::HasPendingMessage()) { std::pair<std::string, std::vector<byte>> msg = mqtt::PopPendingMessage(); const std::string &topic = msg.first; const std::vector<byte> &payload = msg.second; if (topic == "fingerprint/command") { const std::string payload_string(payload.begin(), payload.end()); HandleCommand(payload_string); } else if (topic.rfind("fingerprint/set/model/", 0) == 0) { uint16_t fid = LastComponentNumber(topic); fingerprint::SetModel(fid, payload); } } }