WiFiPowerMeter/gateway.h

57 lines
1.1 KiB
C
Raw Permalink Normal View History

2015-05-02 00:14:40 +02:00
/*
* gateway.h
*
* Created on: 26.10.2014
* Author: wn
*/
#ifndef GATEWAY_H_
#define GATEWAY_H_
#include <Arduino.h>
#include "SimpleModbusMaster.h"
#include "Mudbus.h"
const uint8_t TOTAL_NO_OF_PACKETS = 8;
const uint32_t MODBUS_BAUD = 1200;
const uint16_t MODBUS_TIMEOUT = 10000;
const uint16_t MODBUS_SCANRATE = 1000;
const uint8_t MODBUS_RETRY_COUNT = 25;
const uint8_t MODBUS_TX_ENABLE_PIN = 2;
const uint16_t CONNECTION_STATUS_OFFSET = 0;
const uint16_t VALUE_STATUS_OFFSET = 0x100;
struct GatewayAssignment {
uint8_t id;
uint8_t function;
uint16_t address;
uint16_t data;
uint16_t mudbusIndex;
};
class Gateway {
public:
Gateway(Mudbus *mudbus) : m_mudbus(mudbus) {};
void prepareAssignments();
void begin();
void exec();
void show();
void assign(uint8_t id, uint8_t function, uint16_t address, uint16_t data);
void reactivate();
private:
Mudbus *m_mudbus;
Packet m_packets[TOTAL_NO_OF_PACKETS];
GatewayAssignment m_gatewayAssignments[TOTAL_NO_OF_PACKETS];
void assignPacket(uint8_t packetIdx, uint8_t id, uint8_t function, uint16_t address, uint16_t data, uint16_t mudbusIdx);
};
#endif /* GATEWAY_H_ */