Backend is mostly done, mapping out the plant automagically works

This commit is contained in:
TraYali 2024-03-18 22:49:32 +01:00
parent ce64341ccc
commit b48d2241d2
5 changed files with 64 additions and 27 deletions

View file

@ -8,28 +8,11 @@
struct _modbus;
typedef _modbus modbus_t;
Microinverter::Microinverter(std::shared_ptr<modbus_t*> modbus_context, std::mutex *modbus_context_mutex) {
Microinverter::Microinverter(std::shared_ptr<modbus_t*> modbus_context, std::mutex *modbus_context_mutex, long serialNumber) {
this->modbus_context = modbus_context;
this->modbus_context_mutex = modbus_context_mutex;
this->populatePorts();
}
void Microinverter::populatePorts() {
uint16_t portStartAddress = 0x1000;
uint16_t readArray[1];
int registerCount;
registerCount = modbus_read_registers(*this->modbus_context.get(), portStartAddress + 0x0021, 1, readArray);
while(registerCount != -1 && readArray[0] == 0x700) {
Port port{ this->modbus_context, this->modbus_context_mutex, portStartAddress };
this->ports.push_back(port);
portStartAddress += 0x0028;
this->modbus_context_mutex->lock();
registerCount = modbus_read_registers(*this->modbus_context.get(), portStartAddress + 0x0021, 1, readArray);
this->modbus_context_mutex->unlock();
}
this->serialNumber = serialNumber;
}
void Microinverter::updatePorts() {