diff --git a/MeterBusPowerMaster.cpp b/MeterBusPowerMaster.cpp index b3b2e22..385d502 100644 --- a/MeterBusPowerMaster.cpp +++ b/MeterBusPowerMaster.cpp @@ -4,13 +4,13 @@ #include "MeterBusPowerMaster.h" #include "cmd.h" -#include "test.h" +// #include "test.h" #include "uptime.h" #include "meterBusMaster.h" static CmdServer cmdServer(&Serial); -static TestCmd testCmd; +// static TestCmd testCmd; static Uptime uptime; static MeterBusMaster meterBusMaster; @@ -18,7 +18,7 @@ static MeterBusMaster meterBusMaster; void setup() { cmdServer.begin(); - testCmd.registerYourself(&cmdServer); + // testCmd.registerYourself(&cmdServer); uptime.begin(&cmdServer); meterBusMaster.begin(&cmdServer); diff --git a/meterBusMaster.cpp b/meterBusMaster.cpp index a611007..c64e5bf 100644 --- a/meterBusMaster.cpp +++ b/meterBusMaster.cpp @@ -37,6 +37,16 @@ uint16_t stringToUInt8(String i, uint8_t index) { // ===================================================================================================== +String MeasureCurrent::exec(String params) { + int currentInVal = analogRead(CURRENT_IN); + + int current = currentInVal; + + return String() + current; +} + + + String SendOctets::exec(String params) { bool err = false;; uint16_t sendBufLen = 0; @@ -101,7 +111,7 @@ void SendOctets::sendError(uint8_t code) { // ===================================================================================================== -MeterBusMaster::MeterBusMaster() : m_sendOctets(this), +MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this), m_cmdReadyToSend(false), m_cmdReadyFromRecv(false), m_expectResponse(false), m_sendBufLen(0), m_recvBufLen(0), m_retransmitCount(0), m_responseCallback(0) { pinMode(RX_EN_PIN, OUTPUT); @@ -110,6 +120,12 @@ MeterBusMaster::MeterBusMaster() : m_sendOctets(this), } +void MeterBusMaster::begin(CmdServer *cmdServer) { + m_sendOctets.registerYourself(cmdServer); + m_measureCurrent.registerYourself(cmdServer); +} + + uint8_t *MeterBusMaster::getSendBuffer() { return m_expectResponse ? 0 : m_sendBuffer; } @@ -175,10 +191,6 @@ void MeterBusMaster::prepareResponse(bool err, uint8_t in) { } } -void MeterBusMaster::begin(CmdServer *cmdServer) { - m_sendOctets.registerYourself(cmdServer); -} - void MeterBusMaster::sample() { if (! m_sampling) { m_sampling = true; diff --git a/meterBusMaster.h b/meterBusMaster.h index b4ef7c5..3145a00 100644 --- a/meterBusMaster.h +++ b/meterBusMaster.h @@ -9,17 +9,18 @@ const unsigned long RESPONSE_TIMEOUT = 2000; // millisecond -#define RX_EN_PIN 2 -#define RX_ENABLE LOW -#define RX_DISABLE HIGH +const uint8_t RX_EN_PIN = 2; +const uint8_t RX_ENABLE = LOW; +const uint8_t RX_DISABLE = HIGH; +const uint8_t CURRENT_IN = A0; class SendOctets : public Cmd, public ResponseCallback { public: SendOctets(RequestSender *meterBusMaster) : m_meterBusMaster(meterBusMaster) {} virtual String getCmdName() { return "SO"; } - virtual String getHelp() { return "Send octets, len first"; } + virtual String getHelp() { return "Send octets"; } virtual String exec(String params); virtual void sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLength); virtual void sendError(uint8_t code); @@ -27,6 +28,16 @@ private: RequestSender *m_meterBusMaster; }; +class MeasureCurrent : public Cmd { +public: + MeasureCurrent(RequestSender *meterBusMaster) : m_meterBusMaster(meterBusMaster) {} + virtual String getCmdName() { return "MC"; } + virtual String getHelp() { return "Measure current"; } + virtual String exec(String params); +private: + RequestSender *m_meterBusMaster; +}; + const uint8_t SEND_BUFFER_SIZE = 30; const uint8_t RECEIVE_BUFFER_SIZE = 180; @@ -40,6 +51,7 @@ public: void sendBufferReady(uint16_t bufLen, ResponseCallback *responseCallback); private: SendOctets m_sendOctets; + MeasureCurrent m_measureCurrent; bool m_cmdReadyToSend; bool m_cmdReadyFromRecv; bool m_expectResponse;