mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 22:52:19 +03:00
start version
This commit is contained in:
26
src/Bus/I2CScanner.cpp
Normal file
26
src/Bus/I2CScanner.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include "Bus/I2CScanner.h"
|
||||
#include "Utils/PrintMessage.h"
|
||||
|
||||
#include <Wire.h>
|
||||
|
||||
static const char* MODULE = "I2C";
|
||||
|
||||
I2CScanner::I2CScanner(String& out) : BusScanner(TAG_I2C, out, 2){};
|
||||
|
||||
void I2CScanner::init() {
|
||||
Wire.begin();
|
||||
}
|
||||
|
||||
boolean I2CScanner::syncScan() {
|
||||
pm.info("scanning...");
|
||||
size_t cnt = 0;
|
||||
for (uint8_t i = 8; i < 120; i++) {
|
||||
Wire.beginTransmission(i);
|
||||
if (Wire.endTransmission() == 0) {
|
||||
pm.info("found: " + i);
|
||||
addResult(i, i < 119);
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
25
src/Bus/OneWireBus.cpp
Normal file
25
src/Bus/OneWireBus.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
#include "Bus/OneWireBus.h"
|
||||
|
||||
OneWireBus oneWireBus;
|
||||
|
||||
OneWireBus::OneWireBus(){};
|
||||
|
||||
OneWire *OneWireBus::get(uint8_t pin) {
|
||||
// Ищем среди ранее созданных
|
||||
for (size_t i = 0; i < _items.size(); i++) {
|
||||
auto item = _items.at(i);
|
||||
if (item.pin == pin) {
|
||||
return item.bus;
|
||||
}
|
||||
}
|
||||
// Добавляем новый
|
||||
OneWireBus_t newItem;
|
||||
newItem.bus = new OneWire(pin);
|
||||
newItem.pin = pin;
|
||||
_items.push_back(newItem);
|
||||
return newItem.bus;
|
||||
}
|
||||
|
||||
size_t OneWireBus::count() {
|
||||
return _items.size();
|
||||
}
|
||||
26
src/Bus/OneWireScanner.cpp
Normal file
26
src/Bus/OneWireScanner.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include "Bus/OneWireScanner.h"
|
||||
|
||||
#include "Utils/PrintMessage.h"
|
||||
|
||||
const char* MODULE = "OneWire";
|
||||
|
||||
OneWireScanner::OneWireScanner(String& out, uint8_t pin) : BusScanner(TAG_ONE_WIRE, out, 1) {
|
||||
_bus = oneWireBus.get(pin);
|
||||
}
|
||||
|
||||
bool OneWireScanner::syncScan() {
|
||||
uint8_t addr[8];
|
||||
pm.info("scanning...");
|
||||
while (_bus->search(addr)) {
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
pm.info("found: " + String(i, DEC));
|
||||
addResult(addr[i], i < 7);
|
||||
}
|
||||
}
|
||||
if (OneWire::crc8(addr, 7) != addr[7]) {
|
||||
pm.error(String("CRC!"));
|
||||
return false;
|
||||
}
|
||||
_bus->reset_search();
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user