From 8677aeb749ae253ca4765e84a64df50c3d60f2ca Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sun, 2 Feb 2014 16:39:08 +0100 Subject: [PATCH] add calibrationSupport --- meterBusMaster.cpp | 16 +++++++++++++++- meterBusMaster.h | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/meterBusMaster.cpp b/meterBusMaster.cpp index 25f7a80..95985a6 100644 --- a/meterBusMaster.cpp +++ b/meterBusMaster.cpp @@ -37,6 +37,17 @@ uint16_t stringToUInt8(String i, uint8_t index) { // ===================================================================================================== + +String CalibrationSupport::exec(String params) { + MeterBusMaster *mbm = (MeterBusMaster*)m_meterBusMaster; + if (params.equalsIgnoreCase("sample")) { + mbm->sample(); + } else if (params.equalsIgnoreCase("hold")) { + mbm->hold(); + } + return "Done"; +} + String MeasureCurrent::exec(String params) { int currentInVal = analogRead(CURRENT_IN); @@ -108,10 +119,12 @@ void SendOctets::sendError(uint8_t code) { + // ===================================================================================================== MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this), + m_calibrationSupport(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); @@ -122,7 +135,8 @@ MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this), void MeterBusMaster::begin(CmdServer *cmdServer) { m_sendOctets.registerYourself(cmdServer); - m_measureCurrent.registerYourself(cmdServer); + m_measureCurrent.registerYourself(cmdServer); + m_calibrationSupport.registerYourself(cmdServer); } diff --git a/meterBusMaster.h b/meterBusMaster.h index 001e4b2..9591056 100644 --- a/meterBusMaster.h +++ b/meterBusMaster.h @@ -15,7 +15,7 @@ const uint8_t RX_DISABLE = HIGH; const uint8_t CURRENT_IN = A0; const double U_UNIT = 4.9; // mV -const double R_SHUNT = 11.0; +const double R_SHUNT = 10.0; class SendOctets : public Cmd, public ResponseCallback { @@ -40,6 +40,17 @@ private: RequestSender *m_meterBusMaster; }; +class CalibrationSupport : public Cmd { +public: + CalibrationSupport(RequestSender *meterBusMaster) : m_meterBusMaster(meterBusMaster) {} + virtual String getCmdName() { return "CS"; } + virtual String getHelp() { return "Calibration Support"; } + virtual String exec(String params); +private: + RequestSender *m_meterBusMaster; +}; + + const uint8_t SEND_BUFFER_SIZE = 30; const uint8_t RECEIVE_BUFFER_SIZE = 180; @@ -51,9 +62,11 @@ public: void exec(); uint8_t *getSendBuffer(); void sendBufferReady(uint16_t bufLen, ResponseCallback *responseCallback); + friend class CalibrationSupport; private: SendOctets m_sendOctets; MeasureCurrent m_measureCurrent; + CalibrationSupport m_calibrationSupport; bool m_cmdReadyToSend; bool m_cmdReadyFromRecv; bool m_expectResponse;