BusScanner

This commit is contained in:
Yuri Trikoz
2020-06-25 17:57:17 +03:00
parent a1bd008867
commit d0c6d34f4a
19 changed files with 398 additions and 155 deletions

73
include/Bus/BusScanner.h Normal file
View File

@@ -0,0 +1,73 @@
#pragma once
#include <Arduino.h>
enum BusScanner_t {
BS_I2C,
BS_ONE_WIRE
};
class BusScanner {
public:
BusScanner(String& result, size_t tries) : _tries{tries}, _result{&result} {}
void addResult(uint8_t addr, boolean last = true) {
_result->concat("0x");
if (addr < 16) {
_result->concat("0");
}
_result->concat(String(addr, HEX));
_result->concat(!last ? ", " : "");
};
void scan() {
if (!syncScan() && _tries--) {
syncScan();
}
}
virtual boolean syncScan();
private:
size_t _tries;
BusScanner_t _type;
String* _result;
};
class I2CScanner : public BusScanner {
public:
I2CScanner(String& result) : BusScanner(result, 2){};
virtual boolean syncScan() override;
};
class OneWireScanner : public BusScanner {
public:
OneWireScanner(String& result) : BusScanner(result, 1){};
virtual boolean syncScan() override;
};
class BusScannerFactory {
public:
static const char* label(BusScanner_t type) {
switch (type) {
case BS_I2C:
return "i2c";
case BS_ONE_WIRE:
return "onewire";
default:
return "";
}
}
static BusScanner* get(String& str, BusScanner_t type, size_t tries = 1) {
switch (type) {
case BS_I2C:
return new I2CScanner(str);
case BS_ONE_WIRE:
return new OneWireScanner(str);
default:
return nullptr;
}
}
};

View File

@@ -11,9 +11,11 @@
//
#include "Consts.h"
#include "CommonTypes.h"
#include "Bus/BusScanner.h"
#include "Errors.h"
#include "GyverFilters.h"
#include "UptimeInterval.h"
#include "Upgrade.h"
#include "Clock.h"
#include "MqttClient.h"
@@ -100,15 +102,24 @@ extern int enter_to_logging_counter;
extern int scenario_line_status[40];
extern String last_version;
extern String lastVersion;
extern boolean upgrade_url;
extern boolean upgrade;
extern boolean mqttParamsChanged;
extern boolean udp_data_parse;
extern boolean mqtt_send_settings_to_udp;
extern boolean i2c_scanning;
extern boolean fscheck_flag;
/*
* Запрос на скарнирование шины
*/
extern boolean busScanFlag;
/*
* Запрос на сканирование шины, указание какую
*/
extern BusScanner_t busToScan;
extern boolean fsCheckFlag;
extern int sensors_reading_map[15];
@@ -225,11 +236,9 @@ extern void timerStop_();
extern void delTimer(String number);
extern int readTimer(int number);
//Upgrade
extern void init_updater();
extern void initUpdater();
// widget
extern void createWidgetByType(String widget_name, String page_name, String page_number, String file, String topic);
extern void createWidgetParam(String widget_name, String page_name, String page_number, String file, String topic, String name1, String param1, String name2, String param2, String name3, String param3);
extern void createWidget(String widget_name, String page_name, String page_number, String type, String topik);
@@ -250,8 +259,8 @@ extern void loopCmd();
extern void loopButton();
extern void loopScenario();
extern void loopUdp();
extern void do_upgrade_url();
extern void do_upgrade();
extern void flashUpgrade();
// Init
extern void uptime_init();

8
include/MqttDiscovery.h Normal file
View File

@@ -0,0 +1,8 @@
#pragma once
#include "Utils/SysUtils.h"
namespace Discovery {
}

5
include/Upgrade.h Normal file
View File

@@ -0,0 +1,5 @@
#pragma once
void getLastVersion();
void flashUpgrade();

View File

@@ -4,6 +4,10 @@
const String getChipId();
const String getUniqueId(const String& name);
const String printMemoryStatus();
const String getHeapStats();
const String getMacAddress();

View File

@@ -1,7 +0,0 @@
#pragma once
#include <Arduino.h>
void do_i2c_scanning();
const String i2c_scan();