Commit 6f1fbc5c30f98ee3f14d5fba1150ac223d4917e6
1 parent
f1fb1a21
Rename to primary and secondary regarding thermostat and remote device like boiler or HVAC
Showing
2 changed files
with
126 additions
and
123 deletions
src/EasyOpenTherm.cpp
| @@ -28,8 +28,8 @@ | @@ -28,8 +28,8 @@ | ||
| 28 | OpenTherm::OpenTherm(uint8_t rxPin, | 28 | OpenTherm::OpenTherm(uint8_t rxPin, |
| 29 | uint8_t txPin, | 29 | uint8_t txPin, |
| 30 | time_t timeoutMs, | 30 | time_t timeoutMs, |
| 31 | - bool master): _rxPin(rxPin), _txPin(txPin), _timeoutMs(timeoutMs), _master(master) { | ||
| 32 | - _OTP = new OTPhysicalLayer(_rxPin, _txPin, master); | 31 | + bool primary): _rxPin(rxPin), _txPin(txPin), _timeoutMs(timeoutMs), _primary(primary) { |
| 32 | + _OTP = new OTPhysicalLayer(_rxPin, _txPin, primary); | ||
| 33 | 33 | ||
| 34 | if(!_OTP) Serial.println("OpenTherm Out of Memory, fail on assert()"); | 34 | if(!_OTP) Serial.println("OpenTherm Out of Memory, fail on assert()"); |
| 35 | assert(_OTP != NULL); // check for Out of Memory | 35 | assert(_OTP != NULL); // check for Out of Memory |
| @@ -41,24 +41,24 @@ | @@ -41,24 +41,24 @@ | ||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | 43 | ||
| 44 | -bool OpenTherm::status(uint8_t & slaveFlags) { | ||
| 45 | - uint8_t masterFlags = uint8_t(OpenTherm::STATUS_FLAGS::MASTER_CH_ENABLE) | uint8_t(OpenTherm::STATUS_FLAGS::MASTER_DHW_ENABLE) | uint8_t(OpenTherm::STATUS_FLAGS::MASTER_COOLING_ENABLE) | uint8_t(OpenTherm::STATUS_FLAGS::MASTER_OTC_ENABLE); | 44 | +bool OpenTherm::status(uint8_t & secondaryFlags) { |
| 45 | + uint8_t primaryFlags = uint8_t(OpenTherm::STATUS_FLAGS::PRIMARY_CH_ENABLE) | uint8_t(OpenTherm::STATUS_FLAGS::PRIMARY_DHW_ENABLE) | uint8_t(OpenTherm::STATUS_FLAGS::PRIMARY_COOLING_ENABLE) | uint8_t(OpenTherm::STATUS_FLAGS::PRIMARY_OTC_ENABLE); | ||
| 46 | 46 | ||
| 47 | - return status(masterFlags, slaveFlags); | 47 | + return status(primaryFlags, secondaryFlags); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | 50 | ||
| 51 | -bool OpenTherm::status(uint8_t masterFlags, | ||
| 52 | - uint8_t & slaveFlags) { | ||
| 53 | - slaveFlags = 0x00; // See OpenTherm Protocol Specification v2.2 page 25 | ||
| 54 | - return readWrite(READ_WRITE_DATA_ID::STATUS, masterFlags, slaveFlags); | 51 | +bool OpenTherm::status(uint8_t primaryFlags, |
| 52 | + uint8_t & secondaryFlags) { | ||
| 53 | + secondaryFlags = 0x00; // See OpenTherm Protocol Specification v2.2 page 25 | ||
| 54 | + return readWrite(READ_WRITE_DATA_ID::STATUS, primaryFlags, secondaryFlags); | ||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | 57 | ||
| 58 | bool OpenTherm::read(READ_DATA_ID msgID, | 58 | bool OpenTherm::read(READ_DATA_ID msgID, |
| 59 | uint16_t & value) { | 59 | uint16_t & value) { |
| 60 | OTDataLinkLayer data; | 60 | OTDataLinkLayer data; |
| 61 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_READ_DATA, uint8_t(msgID), 0x0000); | 61 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA, uint8_t(msgID), 0x0000); |
| 62 | 62 | ||
| 63 | if(_execute(data)) { | 63 | if(_execute(data)) { |
| 64 | value = data.value(); | 64 | value = data.value(); |
| @@ -73,7 +73,7 @@ bool OpenTherm::read(READ_DATA_ID ms | @@ -73,7 +73,7 @@ bool OpenTherm::read(READ_DATA_ID ms | ||
| 73 | bool OpenTherm::read(READ_DATA_ID msgID, | 73 | bool OpenTherm::read(READ_DATA_ID msgID, |
| 74 | int16_t & value) { // signed integer | 74 | int16_t & value) { // signed integer |
| 75 | OTDataLinkLayer data; | 75 | OTDataLinkLayer data; |
| 76 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_READ_DATA, uint8_t(msgID), 0x0000); | 76 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA, uint8_t(msgID), 0x0000); |
| 77 | 77 | ||
| 78 | if(_execute(data)) { | 78 | if(_execute(data)) { |
| 79 | value = int16_t(data.value()); | 79 | value = int16_t(data.value()); |
| @@ -89,7 +89,7 @@ bool OpenTherm::read(READ_DATA_ID ms | @@ -89,7 +89,7 @@ bool OpenTherm::read(READ_DATA_ID ms | ||
| 89 | uint8_t & valueMSB, | 89 | uint8_t & valueMSB, |
| 90 | uint8_t & valueLSB) { | 90 | uint8_t & valueLSB) { |
| 91 | OTDataLinkLayer data; | 91 | OTDataLinkLayer data; |
| 92 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_READ_DATA, uint8_t(msgID), 0x0000); | 92 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA, uint8_t(msgID), 0x0000); |
| 93 | 93 | ||
| 94 | if(_execute(data)) { | 94 | if(_execute(data)) { |
| 95 | valueMSB = data.valueMSB(); | 95 | valueMSB = data.valueMSB(); |
| @@ -106,7 +106,7 @@ bool OpenTherm::read(READ_DATA_ID ms | @@ -106,7 +106,7 @@ bool OpenTherm::read(READ_DATA_ID ms | ||
| 106 | int8_t & valueMSB, // signed intergers | 106 | int8_t & valueMSB, // signed intergers |
| 107 | int8_t & valueLSB) { | 107 | int8_t & valueLSB) { |
| 108 | OTDataLinkLayer data; | 108 | OTDataLinkLayer data; |
| 109 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_READ_DATA, uint8_t(msgID), 0x0000); | 109 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA, uint8_t(msgID), 0x0000); |
| 110 | 110 | ||
| 111 | if(_execute(data)) { | 111 | if(_execute(data)) { |
| 112 | valueMSB = int8_t(data.valueMSB()); | 112 | valueMSB = int8_t(data.valueMSB()); |
| @@ -122,7 +122,7 @@ bool OpenTherm::read(READ_DATA_ID ms | @@ -122,7 +122,7 @@ bool OpenTherm::read(READ_DATA_ID ms | ||
| 122 | bool OpenTherm::read(READ_DATA_ID msgID, | 122 | bool OpenTherm::read(READ_DATA_ID msgID, |
| 123 | float & value) { | 123 | float & value) { |
| 124 | OTDataLinkLayer data; | 124 | OTDataLinkLayer data; |
| 125 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_READ_DATA, uint8_t(msgID), 0x0000); | 125 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA, uint8_t(msgID), 0x0000); |
| 126 | 126 | ||
| 127 | if(_execute(data)) { | 127 | if(_execute(data)) { |
| 128 | value = float(data.value()) / 256.0; | 128 | value = float(data.value()) / 256.0; |
| @@ -137,7 +137,7 @@ bool OpenTherm::read(READ_DATA_ID ms | @@ -137,7 +137,7 @@ bool OpenTherm::read(READ_DATA_ID ms | ||
| 137 | bool OpenTherm::write(WRITE_DATA_ID msgID, | 137 | bool OpenTherm::write(WRITE_DATA_ID msgID, |
| 138 | uint16_t value) { | 138 | uint16_t value) { |
| 139 | OTDataLinkLayer data; | 139 | OTDataLinkLayer data; |
| 140 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_WRITE_DATA, uint8_t(msgID), value); | 140 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_WRITE_DATA, uint8_t(msgID), value); |
| 141 | 141 | ||
| 142 | return _execute(data); | 142 | return _execute(data); |
| 143 | } | 143 | } |
| @@ -147,7 +147,7 @@ bool OpenTherm::write(WRITE_DATA_ID ms | @@ -147,7 +147,7 @@ bool OpenTherm::write(WRITE_DATA_ID ms | ||
| 147 | uint8_t valueMSB, | 147 | uint8_t valueMSB, |
| 148 | uint8_t valueLSB) { | 148 | uint8_t valueLSB) { |
| 149 | OTDataLinkLayer data; | 149 | OTDataLinkLayer data; |
| 150 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_WRITE_DATA, uint8_t(msgID), valueMSB, valueLSB); | 150 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_WRITE_DATA, uint8_t(msgID), valueMSB, valueLSB); |
| 151 | 151 | ||
| 152 | return _execute(data); | 152 | return _execute(data); |
| 153 | } | 153 | } |
| @@ -156,7 +156,7 @@ bool OpenTherm::write(WRITE_DATA_ID ms | @@ -156,7 +156,7 @@ bool OpenTherm::write(WRITE_DATA_ID ms | ||
| 156 | bool OpenTherm::write(WRITE_DATA_ID msgID, | 156 | bool OpenTherm::write(WRITE_DATA_ID msgID, |
| 157 | float value) { | 157 | float value) { |
| 158 | OTDataLinkLayer data; | 158 | OTDataLinkLayer data; |
| 159 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_WRITE_DATA, uint8_t(msgID), uint16_t(value * 256.0f)); | 159 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_WRITE_DATA, uint8_t(msgID), uint16_t(value * 256.0f)); |
| 160 | 160 | ||
| 161 | return _execute(data); | 161 | return _execute(data); |
| 162 | } | 162 | } |
| @@ -166,7 +166,7 @@ bool OpenTherm::readWrite(READ_WRITE_DATA_ID ms | @@ -166,7 +166,7 @@ bool OpenTherm::readWrite(READ_WRITE_DATA_ID ms | ||
| 166 | uint8_t valueMSB, | 166 | uint8_t valueMSB, |
| 167 | uint8_t & valueLSB) { | 167 | uint8_t & valueLSB) { |
| 168 | OTDataLinkLayer data; | 168 | OTDataLinkLayer data; |
| 169 | - data.set(OTDataLinkLayer::MSG_TYPE::MASTER_TO_SLAVE_READ_DATA, uint8_t(msgID), valueMSB, valueLSB); | 169 | + data.set(OTDataLinkLayer::MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA, uint8_t(msgID), valueMSB, valueLSB); |
| 170 | 170 | ||
| 171 | if(_execute(data)) { | 171 | if(_execute(data)) { |
| 172 | valueLSB = data.valueLSB(); | 172 | valueLSB = data.valueLSB(); |
| @@ -298,17 +298,17 @@ uint32_t OTDataLinkLayer::frame() { | @@ -298,17 +298,17 @@ uint32_t OTDataLinkLayer::frame() { | ||
| 298 | 298 | ||
| 299 | 299 | ||
| 300 | bool OTDataLinkLayer::isValid() { | 300 | bool OTDataLinkLayer::isValid() { |
| 301 | - return parity() && (type() == MSG_TYPE::SLAVE_TO_MASTER_READ_ACK || type() == MSG_TYPE::SLAVE_TO_MASTER_WRITE_ACK || type() == MSG_TYPE::MASTER_TO_SLAVE_READ_DATA || type() == MSG_TYPE::MASTER_TO_SLAVE_WRITE_DATA); | 301 | + return parity() && (type() == MSG_TYPE::SECONDARY_TO_PRIMARY_READ_ACK || type() == MSG_TYPE::SECONDARY_TO_PRIMARY_WRITE_ACK || type() == MSG_TYPE::PRIMARY_TO_SECONDARY_READ_DATA || type() == MSG_TYPE::PRIMARY_TO_SECONDARY_WRITE_DATA); |
| 302 | } | 302 | } |
| 303 | 303 | ||
| 304 | 304 | ||
| 305 | bool OTDataLinkLayer::dataInvalid() { | 305 | bool OTDataLinkLayer::dataInvalid() { |
| 306 | - return type() == MSG_TYPE::SLAVE_TO_MASTER_DATA_INVALID || type() == MSG_TYPE::MASTER_TO_SLAVE_INVALID_DATA; | 306 | + return type() == MSG_TYPE::SECONDARY_TO_PRIMARY_DATA_INVALID || type() == MSG_TYPE::PRIMARY_TO_SECONDARY_INVALID_DATA; |
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | 309 | ||
| 310 | bool OTDataLinkLayer::unknownDataID() { | 310 | bool OTDataLinkLayer::unknownDataID() { |
| 311 | - return type() == MSG_TYPE::SLAVE_TO_MASTER_UNKNOWN_DATA_ID; // Slave does not select the DATA-ID, this function should not be called from a slave | 311 | + return type() == MSG_TYPE::SECONDARY_TO_PRIMARY_UNKNOWN_DATA_ID; // Secondary device does not select the DATA-ID, this function should not be called from a secondary |
| 312 | } | 312 | } |
| 313 | 313 | ||
| 314 | 314 | ||
| @@ -340,7 +340,7 @@ void OTPGenericISR() { | @@ -340,7 +340,7 @@ void OTPGenericISR() { | ||
| 340 | 340 | ||
| 341 | OTPhysicalLayer::OTPhysicalLayer(uint8_t rxPin, | 341 | OTPhysicalLayer::OTPhysicalLayer(uint8_t rxPin, |
| 342 | uint8_t txPin, | 342 | uint8_t txPin, |
| 343 | - bool master): _rxPin(rxPin), _txPin(txPin), _master(master) { | 343 | + bool primary): _rxPin(rxPin), _txPin(txPin), _primary(primary) { |
| 344 | 344 | ||
| 345 | pinMode(_rxPin, INPUT); | 345 | pinMode(_rxPin, INPUT); |
| 346 | pinMode(_txPin, OUTPUT); | 346 | pinMode(_txPin, OUTPUT); |
| @@ -398,7 +398,7 @@ bool OTPhysicalLayer::receive(uint32_t & fr | @@ -398,7 +398,7 @@ bool OTPhysicalLayer::receive(uint32_t & fr | ||
| 398 | if(_state == STATE::INVALID) return false; // ::send() will set _state to STATE::WAITING | 398 | if(_state == STATE::INVALID) return false; // ::send() will set _state to STATE::WAITING |
| 399 | 399 | ||
| 400 | if(_state != STATE::READY) { // ::handleInterrupt() will set _state to STATE::READY upon receiving a complete frame (including start and stop bits) | 400 | if(_state != STATE::READY) { // ::handleInterrupt() will set _state to STATE::READY upon receiving a complete frame (including start and stop bits) |
| 401 | - if(_master && millis() - _lastSentTimestampMs > 800) { // ::send() will set _lastSentTimestampMs to after sending the final bit. A slave never times out, it keeps on listning to the master | 401 | + if(_primary && millis() - _lastSentTimestampMs > 800) { // ::send() will set _lastSentTimestampMs to after sending the final bit. A secondary never times out, it keeps on listning to the primary |
| 402 | _state = STATE::INVALID; // timeout | 402 | _state = STATE::INVALID; // timeout |
| 403 | } | 403 | } |
| 404 | 404 | ||
| @@ -431,12 +431,12 @@ void OTPhysicalLayer::sendBit(uint8_t va | @@ -431,12 +431,12 @@ void OTPhysicalLayer::sendBit(uint8_t va | ||
| 431 | if(_state == STATE::INVALID) return; // Start reception after _send() has set _state to STATE::WAITING | 431 | if(_state == STATE::INVALID) return; // Start reception after _send() has set _state to STATE::WAITING |
| 432 | // ::handleInterrupt() passes from STATE_WATING to STATE::START_BIT, to STATE::RECEIVING for the data bits, to _state STATE::READY after the stop bit | 432 | // ::handleInterrupt() passes from STATE_WATING to STATE::START_BIT, to STATE::RECEIVING for the data bits, to _state STATE::READY after the stop bit |
| 433 | if(_state == STATE::READY) { | 433 | if(_state == STATE::READY) { |
| 434 | - if(!_master && digitalRead(_rxPin) == HIGH) { | 434 | + if(!_primary && digitalRead(_rxPin) == HIGH) { |
| 435 | _state = STATE::WAITING; | 435 | _state = STATE::WAITING; |
| 436 | _frame = 0; | 436 | _frame = 0; |
| 437 | } else { | 437 | } else { |
| 438 | 438 | ||
| 439 | - return; // Nothing to do for a master in _state is STATE::READY | 439 | + return; // Nothing to do for a primary device in _state is STATE::READY |
| 440 | } | 440 | } |
| 441 | } | 441 | } |
| 442 | 442 |
src/EasyOpenTherm.h
| @@ -17,6 +17,9 @@ | @@ -17,6 +17,9 @@ | ||
| 17 | * | 17 | * |
| 18 | * You should have received a copy of the GNU General Public License | 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | 19 | * along with this program. If not, see <https://www.gnu.org/licenses/>. |
| 20 | + * | ||
| 21 | + * Primary: thermostat | ||
| 22 | + * Secondary: boiler or HVAC | ||
| 20 | */ | 23 | */ |
| 21 | 24 | ||
| 22 | 25 | ||
| @@ -34,19 +37,19 @@ public: | @@ -34,19 +37,19 @@ public: | ||
| 34 | OpenTherm(uint8_t rxPin, | 37 | OpenTherm(uint8_t rxPin, |
| 35 | uint8_t txPin, | 38 | uint8_t txPin, |
| 36 | time_t timeoutMs = 900, | 39 | time_t timeoutMs = 900, |
| 37 | - bool master = true); | 40 | + bool primary = true); |
| 38 | 41 | ||
| 39 | ~OpenTherm(); | 42 | ~OpenTherm(); |
| 40 | 43 | ||
| 41 | - bool status(uint8_t & slaveFlags); | 44 | + bool status(uint8_t & secondaryFlags); |
| 42 | 45 | ||
| 43 | - bool status(uint8_t masterFlags, | ||
| 44 | - uint8_t & slaveFlags); | 46 | + bool status(uint8_t primaryFlags, |
| 47 | + uint8_t & secondaryFlags); | ||
| 45 | 48 | ||
| 46 | 49 | ||
| 47 | enum class READ_WRITE_DATA_ID { | 50 | enum class READ_WRITE_DATA_ID { |
| 48 | // Class 1 : Control and Status Information | 51 | // Class 1 : Control and Status Information |
| 49 | - STATUS = 0, // flag8, flag8 Mandatory: Master status, slave status | 52 | + STATUS = 0, // flag8, flag8 Mandatory; Primary status, secondary status |
| 50 | 53 | ||
| 51 | // Class 3 : Remote Commands | 54 | // Class 3 : Remote Commands |
| 52 | COMMAND_CODE = 4, // u8, u8 Command code / Response to command | 55 | COMMAND_CODE = 4, // u8, u8 Command code / Response to command |
| @@ -55,10 +58,10 @@ public: | @@ -55,10 +58,10 @@ public: | ||
| 55 | // Where applicable and available flags and masks are also defined below | 58 | // Where applicable and available flags and masks are also defined below |
| 56 | 59 | ||
| 57 | // HVAC specific DATA-IDs (ventilation / heat recovery) | 60 | // HVAC specific DATA-IDs (ventilation / heat recovery) |
| 58 | - HVAC_STATUS = 70, // flag8, flag8 Master status, slave status | 61 | + HVAC_STATUS = 70, // flag8, flag8 Primary status, secondary status |
| 59 | 62 | ||
| 60 | // Solar specific DATA-IDs | 63 | // Solar specific DATA-IDs |
| 61 | - SOLAR_STATUS = 101, // flag8, flag8? MSB Master Solar Storage Mode, LSB Slave Solar Storage Mode | 64 | + SOLAR_STATUS = 101, // flag8, flag8? MSB Primary Solar Storage Mode, LSB Secondary Solar Storage Mode |
| 62 | }; | 65 | }; |
| 63 | 66 | ||
| 64 | 67 | ||
| @@ -68,18 +71,18 @@ public: | @@ -68,18 +71,18 @@ public: | ||
| 68 | OEM_DIAGNOSTIC = 115, // u16 An OEM-specific diagnostic/service code | 71 | OEM_DIAGNOSTIC = 115, // u16 An OEM-specific diagnostic/service code |
| 69 | 72 | ||
| 70 | // Class 2 : Configuration Information | 73 | // Class 2 : Configuration Information |
| 71 | - SLAVE_CONFIGURATION = 3, // flag8, u8 Mandatory: Slave Configuration Flags / MemberID Code of the slave | ||
| 72 | - OPENTHERM_VERSION_SLAVE = 125, // f8.8 The implemented version of the OpenTherm Protocol Specification in the slave | ||
| 73 | - SLAVE_PRODUCT_VERSION = 127, // u8, u8 The slave device product version number and type as defined by the manufacturer | 74 | + SECONDARY_CONFIGURATION = 3, // flag8, u8 Mandatory; Secondary Configuration Flags / MemberID Code of the secondary device |
| 75 | + OPENTHERM_VERSION_SECONDARY = 125, // f8.8 The implemented version of the OpenTherm Protocol Specification in the secondary device | ||
| 76 | + SECONDARY_PRODUCT_VERSION = 127, // u8, u8 The secondary device product version number and type as defined by the manufacturer | ||
| 74 | 77 | ||
| 75 | // Class 4 : Sensor and Informational Data | 78 | // Class 4 : Sensor and Informational Data |
| 76 | - RELATIVE_MODULATION_LEVEL = 17, // f8.8 Mandatory: Percent modulation between min and max modulation levels. i.e. 0% = Minimum modulation level and 100% = Maximum modulation level (%) | 79 | + RELATIVE_MODULATION_LEVEL = 17, // f8.8 Mandatory; Percent modulation between min and max modulation levels. i.e. 0% = Minimum modulation level and 100% = Maximum modulation level (%) |
| 77 | CH_WATER_PRESSURE = 18, // f8.8 Water pressure of the boiler CH circuit (bar) | 80 | CH_WATER_PRESSURE = 18, // f8.8 Water pressure of the boiler CH circuit (bar) |
| 78 | DHW_FLOW_RATE = 19, // f8.8 Water flow rate through the DHW circuit (l/min) | 81 | DHW_FLOW_RATE = 19, // f8.8 Water flow rate through the DHW circuit (l/min) |
| 79 | DAY_TIME = 20, // special, u8 Day of Week and Time of Day; special: bit 7,6,5 day of week (1=Monday, etc...., 0=no DoW info available); bit 4,3,2,1,0 hours, LSB is minutes | 82 | DAY_TIME = 20, // special, u8 Day of Week and Time of Day; special: bit 7,6,5 day of week (1=Monday, etc...., 0=no DoW info available); bit 4,3,2,1,0 hours, LSB is minutes |
| 80 | DATE = 21, // u8, u8 Calendar date: Month, Day of month | 83 | DATE = 21, // u8, u8 Calendar date: Month, Day of month |
| 81 | YEAR = 22, // u16 Calendar year; note : 1999-2099 will normally be sufficient | 84 | YEAR = 22, // u16 Calendar year; note : 1999-2099 will normally be sufficient |
| 82 | - BOILER_WATER_TEMP = 25, // f8.8 Mandatory: Flow water temperature from boiler (ยฐC) | 85 | + BOILER_WATER_TEMP = 25, // f8.8 Mandatory; Flow water temperature from boiler (ยฐC) |
| 83 | DHW_TEMPERATURE = 26, // f8.8 Domestic hot water temperature (ยฐC) | 86 | DHW_TEMPERATURE = 26, // f8.8 Domestic hot water temperature (ยฐC) |
| 84 | OUTSIDE_TEMPERATURE = 27, // f8.8 Outside air temperature (ยฐC) | 87 | OUTSIDE_TEMPERATURE = 27, // f8.8 Outside air temperature (ยฐC) |
| 85 | RETURN_WATER_TEMPERATURE = 28, // f8.8 Return water temperature to boiler (ยฐC) | 88 | RETURN_WATER_TEMPERATURE = 28, // f8.8 Return water temperature to boiler (ยฐC) |
| @@ -88,26 +91,26 @@ public: | @@ -88,26 +91,26 @@ public: | ||
| 88 | FLOW_TEMPERATURE_CH2 = 31, // f8.8 Flow water temperature of the second central heating circuit (ยฐC) | 91 | FLOW_TEMPERATURE_CH2 = 31, // f8.8 Flow water temperature of the second central heating circuit (ยฐC) |
| 89 | DHW2_TEMPERATURE = 32, // f8.8 Domestic hot water temperature 2 (ยฐC) | 92 | DHW2_TEMPERATURE = 32, // f8.8 Domestic hot water temperature 2 (ยฐC) |
| 90 | EXHAUST_TEMPERATURE = 33, // s16 Exhaust temperature (ยฐC) | 93 | EXHAUST_TEMPERATURE = 33, // s16 Exhaust temperature (ยฐC) |
| 91 | - BURNER_STARTS = 116, // u16 Number of starts burner. Reset by writing zero is optional for slave | ||
| 92 | - CH_PUMP_STARTS = 117, // u16 Number of starts CH pump. Reset by writing zero is optional for slave | ||
| 93 | - DHW_PUMP_VALVE_STARTS = 118, // u16 Number of starts DHW pump/valve. Reset by writing zero is optional for slave | ||
| 94 | - DHW_BURNER_STARTS = 119, // u16 Number of starts burner in DHW mode. Reset by writing zero is optional for slave | ||
| 95 | - BURNER_OPERATION_HOURS = 120, // u16 Number of hours that burner is in operation (i.e. flame on). Reset by writing zero is optional for slave | ||
| 96 | - CH_PUMP_OPERATION_HOURS = 121, // u16 Number of hours that CH pump has been running. Reset by writing zero is optional for slave | ||
| 97 | - DHW_PUMP_VALVE_OPERATION_HOURS = 122, // u16 Number of hours that DHW pump has been running or DHW valve has been opened. Reset by writing zero is optional for slave | ||
| 98 | - DHW_BURNER_OPERATION_HOURS = 123, // u16 Number of hours that burner is in operation during DHW mode. Reset by writing zero is optional for slave | 94 | + BURNER_STARTS = 116, // u16 Number of starts burner. Reset by writing zero is optional for the secondary device |
| 95 | + CH_PUMP_STARTS = 117, // u16 Number of starts CH pump. Reset by writing zero is optional for the secondary device | ||
| 96 | + DHW_PUMP_VALVE_STARTS = 118, // u16 Number of starts DHW pump/valve. Reset by writing zero is optional for the secondary device | ||
| 97 | + DHW_BURNER_STARTS = 119, // u16 Number of starts burner in DHW mode. Reset by writing zero is optional for the secondary device | ||
| 98 | + BURNER_OPERATION_HOURS = 120, // u16 Number of hours that burner is in operation (i.e. flame on). Reset by writing zero is optional for the secondary device | ||
| 99 | + CH_PUMP_OPERATION_HOURS = 121, // u16 Number of hours that CH pump has been running. Reset by writing zero is optional for the secondary device | ||
| 100 | + DHW_PUMP_VALVE_OPERATION_HOURS = 122, // u16 Number of hours that DHW pump has been running or DHW valve has been opened. Reset by writing zero is optional for the secondary device | ||
| 101 | + DHW_BURNER_OPERATION_HOURS = 123, // u16 Number of hours that burner is in operation during DHW mode. Reset by writing zero is optional for the secondary device | ||
| 99 | 102 | ||
| 100 | // Class 5 : Pre-Defined Remote Boiler Parameters | 103 | // Class 5 : Pre-Defined Remote Boiler Parameters |
| 101 | REMOTE_PARAMETER = 6, // flag8, flag8 Remote boiler parameter transfer-enable flags, read/write flags | 104 | REMOTE_PARAMETER = 6, // flag8, flag8 Remote boiler parameter transfer-enable flags, read/write flags |
| 102 | DHW_SETPOINT_BOUNDS = 48, // s8, s8 Upper bound for adjustment of DHW setp (ยฐC), Lower bound for adjustment of DHW setp (ยฐC) | 105 | DHW_SETPOINT_BOUNDS = 48, // s8, s8 Upper bound for adjustment of DHW setp (ยฐC), Lower bound for adjustment of DHW setp (ยฐC) |
| 103 | CH_SETPOINT_BOUNDS = 49, // s8, s8 Upper bound for adjustment of maxCH setp (ยฐC), Lower bound for adjustment of maxCH setp (ยฐC) | 106 | CH_SETPOINT_BOUNDS = 49, // s8, s8 Upper bound for adjustment of maxCH setp (ยฐC), Lower bound for adjustment of maxCH setp (ยฐC) |
| 104 | - OTC_CURVE_BOUNDS = 50, // s8, s8 upp/low bnd | 107 | + OTC_CURVE_BOUNDS = 50, // s8, s8 Upper / lower bound |
| 105 | DHW_SETPOINT = 56, // f8.8 Domestic hot water temperature setpoint (Remote parameter 1) (ยฐC) | 108 | DHW_SETPOINT = 56, // f8.8 Domestic hot water temperature setpoint (Remote parameter 1) (ยฐC) |
| 106 | MAX_CH_WATER_SETPOINT = 57, // f8.8 Maximum allowable CH water setpoint (Remote parameter 2) (ยฐC) | 109 | MAX_CH_WATER_SETPOINT = 57, // f8.8 Maximum allowable CH water setpoint (Remote parameter 2) (ยฐC) |
| 107 | OTC_CURVE_RATIO = 58, // f8.8 OTC heat curve ratio (Remote parameter 3) (ยฐC) | 110 | OTC_CURVE_RATIO = 58, // f8.8 OTC heat curve ratio (Remote parameter 3) (ยฐC) |
| 108 | 111 | ||
| 109 | - // Class 6 : Transparent Slave Parameters | ||
| 110 | - NUMBER_OF_TSPS = 10, // u8, u8 Number of transparent-slave-parameter supported by the slave device, -Reserved- | 112 | + // Class 6 : Transparent Secondary Parameters |
| 113 | + NUMBER_OF_TSPS = 10, // u8, u8 Number of transparent-secondary-parameter supported by the secondary device, -Reserved- | ||
| 111 | TSP_COMMAND = 11, // u8, u8 Index number of following TSP, Value of the referenced TSP | 114 | TSP_COMMAND = 11, // u8, u8 Index number of following TSP, Value of the referenced TSP |
| 112 | 115 | ||
| 113 | // Class 7 : Fault History Data | 116 | // Class 7 : Fault History Data |
| @@ -132,9 +135,9 @@ public: | @@ -132,9 +135,9 @@ public: | ||
| 132 | HVAC_RELATIVE_VENT_SETPOINT = 71, // f8.8 Relative ventilation position (0-100%) | 135 | HVAC_RELATIVE_VENT_SETPOINT = 71, // f8.8 Relative ventilation position (0-100%) |
| 133 | HVAC_FAULT_FLAGS = 72, // flag8, u8 Application-specific fault flags and OEM fault code | 136 | HVAC_FAULT_FLAGS = 72, // flag8, u8 Application-specific fault flags and OEM fault code |
| 134 | HVAC_OEM_DIAGNOSTIC_CODE = 73, // u16 An OEM specific diagnostic/service code | 137 | HVAC_OEM_DIAGNOSTIC_CODE = 73, // u16 An OEM specific diagnostic/service code |
| 135 | - HVAC_SLAVE_CONFIGURATION = 74, // flag8, u8 Slave Configuration Flags / MemberID Code of the slave | ||
| 136 | - HVAC_OPENTHERM_VERSION_SLAVE = 75, // f8.8 The implemented version of the OpenTherm Protocol Specification in the slave | ||
| 137 | - HVAC_SLAVE_PRODUCT_VERSION = 76, // u8, u8 The slave device product version number and type as defined by the manufacturer | 138 | + HVAC_SECONDARY_CONFIGURATION = 74, // flag8, u8 Secondary Configuration Flags / MemberID Code of the secondary device |
| 139 | + HVAC_OPENTHERM_VERSION_SECONDARY= 75, // f8.8 The implemented version of the OpenTherm Protocol Specification in the secondary device | ||
| 140 | + HVAC_SECONDARY_PRODUCT_VERSION = 76, // u8, u8 The secondary device product version number and type as defined by the manufacturer | ||
| 138 | HVAC_RELATIVE_VENTILATION = 77, // f8.8 Relative ventilation (0-100%) | 141 | HVAC_RELATIVE_VENTILATION = 77, // f8.8 Relative ventilation (0-100%) |
| 139 | HVAC_RELATIVE_HUMIDITY_EXHAUST = 78, // f8.8 Relative humidity exhaust air (0-100%) | 142 | HVAC_RELATIVE_HUMIDITY_EXHAUST = 78, // f8.8 Relative humidity exhaust air (0-100%) |
| 140 | HVAC_CO2_LEVEL_EXHAUST_AIR = 79, // ? CO2 level exhaust air (0-2000 ppm) | 143 | HVAC_CO2_LEVEL_EXHAUST_AIR = 79, // ? CO2 level exhaust air (0-2000 ppm) |
| @@ -146,7 +149,7 @@ public: | @@ -146,7 +149,7 @@ public: | ||
| 146 | HVAC_SUPPLY_FAN_SPEED = 85, // u16? Supply fan speed (rpm) | 149 | HVAC_SUPPLY_FAN_SPEED = 85, // u16? Supply fan speed (rpm) |
| 147 | HVAC_REMOTE_PARAMETER = 86, // u8, u8? MSB Remote parameter transfer enable nominal ventilation value, LSB Remote parameter read/write nominal ventilation value | 150 | HVAC_REMOTE_PARAMETER = 86, // u8, u8? MSB Remote parameter transfer enable nominal ventilation value, LSB Remote parameter read/write nominal ventilation value |
| 148 | HVAC_NOMINAL_RELATIVE_VENTILATION = 87, // f8.8 Nominal relative value for ventilation (0-100%) | 151 | HVAC_NOMINAL_RELATIVE_VENTILATION = 87, // f8.8 Nominal relative value for ventilation (0-100%) |
| 149 | - HVAC_NUMBER_OF_TSPS = 88, // u8, u8? Number of transparent-slave-parameter supported by the slave device, -Reserved- | 152 | + HVAC_NUMBER_OF_TSPS = 88, // u8, u8? Number of transparent-secondary-parameter supported by the secondary device, -Reserved- |
| 150 | HVAC_TSP_COMMAND = 89, // u8, u8 Index number of following TSP, Value of the referenced TSP | 153 | HVAC_TSP_COMMAND = 89, // u8, u8 Index number of following TSP, Value of the referenced TSP |
| 151 | HVAC_FAULT_BUFFER_SIZE = 90, // u8, u8? The size of the fault history buffer | 154 | HVAC_FAULT_BUFFER_SIZE = 90, // u8, u8? The size of the fault history buffer |
| 152 | HVAC_FAULT_BUFFER_DATA = 91, // u8, u8 Index number of Fault Buffer entry, Value of the referenced Fault Buffer entry | 155 | HVAC_FAULT_BUFFER_DATA = 91, // u8, u8 Index number of Fault Buffer entry, Value of the referenced Fault Buffer entry |
| @@ -155,9 +158,9 @@ public: | @@ -155,9 +158,9 @@ public: | ||
| 155 | 158 | ||
| 156 | // Solar specific DATA-IDs | 159 | // Solar specific DATA-IDs |
| 157 | SOLAR_FAULT_FLAGS = 102, // flag8, u8 Application-specific fault flags and OEM fault code | 160 | SOLAR_FAULT_FLAGS = 102, // flag8, u8 Application-specific fault flags and OEM fault code |
| 158 | - SOLAR_SLAVE_CONFIGURATION = 103, // flag8, u8 Slave Configuration Flags / MemberID Code of the slave | ||
| 159 | - SOLAR_SLAVE_PRODUCT_VERSION = 104, // u8, u8 The slave device product version number and type as defined by the manufacturer | ||
| 160 | - SOLAR_NUMBER_OF_TSPS = 105, // u8, u8? Number of transparent-slave-parameter supported by the slave device, -Reserved- | 161 | + SOLAR_SECONDARY_CONFIGURATION = 103, // flag8, u8 Secondary Configuration Flags / MemberID Code of the secondary device |
| 162 | + SOLAR_SECONDARY_PRODUCT_VERSION = 104, // u8, u8 The secondary device product version number and type as defined by the manufacturer | ||
| 163 | + SOLAR_NUMBER_OF_TSPS = 105, // u8, u8? Number of transparent-secondary-parameter supported by the secondary device, -Reserved- | ||
| 161 | SOLAR_TSP_COMMAND = 106, // u8, u8 Index number of following TSP, Value of the referenced TSP | 164 | SOLAR_TSP_COMMAND = 106, // u8, u8 Index number of following TSP, Value of the referenced TSP |
| 162 | SOLAR_FAULT_BUFFER_SIZE = 107, // u8, u8? The size of the fault history buffer | 165 | SOLAR_FAULT_BUFFER_SIZE = 107, // u8, u8? The size of the fault history buffer |
| 163 | SOLAR_FAULT_BUFFER_DATA = 108, // u8, u8 Index number of Fault Buffer entry, Value of the referenced Fault Buffer entry | 166 | SOLAR_FAULT_BUFFER_DATA = 108, // u8, u8 Index number of Fault Buffer entry, Value of the referenced Fault Buffer entry |
| @@ -176,13 +179,13 @@ public: | @@ -176,13 +179,13 @@ public: | ||
| 176 | 179 | ||
| 177 | enum class WRITE_DATA_ID { | 180 | enum class WRITE_DATA_ID { |
| 178 | // Class 1 : Control and Status Information | 181 | // Class 1 : Control and Status Information |
| 179 | - CONTROL_SETPOINT_CH = 1, // f8.8 Mandatory: Control setpoint (CH water temperature setpoint) (ยฐC) | 182 | + CONTROL_SETPOINT_CH = 1, // f8.8 Mandatory; Control setpoint (CH water temperature setpoint) (ยฐC) |
| 180 | CONTROL_SETPOINT_CH2 = 8, // f8.8 Control setpoint for 2nd CH circuit (ยฐC) | 183 | CONTROL_SETPOINT_CH2 = 8, // f8.8 Control setpoint for 2nd CH circuit (ยฐC) |
| 181 | 184 | ||
| 182 | // Class 2 : Configuration Information | 185 | // Class 2 : Configuration Information |
| 183 | - MASTER_CONFIGURATION = 2, // flag8, u8 Master Configuration Flags / MemberID Code of the master | ||
| 184 | - OPENTHERM_VERSION_MASTER = 124, // f8.8 The implemented version of the OpenTherm Protocol Specification in the master | ||
| 185 | - MASTER_PRODUCT_VERSION = 126, // u8, u8 The master device product version number and type as defined by the manufacturer | 186 | + PRIMARY_CONFIGURATION = 2, // flag8, u8 Primary Configuration Flags / MemberID Code of the primary device |
| 187 | + OPENTHERM_VERSION_PRIMARY = 124, // f8.8 The implemented version of the OpenTherm Protocol Specification in the primary device | ||
| 188 | + PRIMARY_PRODUCT_VERSION = 126, // u8, u8 The primary device product version number and type as defined by the manufacturer | ||
| 186 | 189 | ||
| 187 | // Class 4 : Sensor and Informational Data | 190 | // Class 4 : Sensor and Informational Data |
| 188 | ROOM_SETPOINT = 16, // f8.8 Current room temperature setpoint (ยฐC) | 191 | ROOM_SETPOINT = 16, // f8.8 Current room temperature setpoint (ยฐC) |
| @@ -191,26 +194,26 @@ public: | @@ -191,26 +194,26 @@ public: | ||
| 191 | YEAR = 22, // u16 Calendar year; note : 1999-2099 will normally be sufficient | 194 | YEAR = 22, // u16 Calendar year; note : 1999-2099 will normally be sufficient |
| 192 | ROOM_SETPOINT_CH2 = 23, // f8.8 Current room Setpoint for 2nd CH circuit (ยฐC) | 195 | ROOM_SETPOINT_CH2 = 23, // f8.8 Current room Setpoint for 2nd CH circuit (ยฐC) |
| 193 | ROOM_TEMPERATURE = 24, // f8.8 Current sensed room temperature (ยฐC) | 196 | ROOM_TEMPERATURE = 24, // f8.8 Current sensed room temperature (ยฐC) |
| 194 | - BURNER_STARTS = 116, // u16 Number of starts burner. Reset by writing zero is optional for slave | ||
| 195 | - CH_PUMP_STARTS = 117, // u16 Number of starts CH pump. Reset by writing zero is optional for slave | ||
| 196 | - DHW_PUMP_VALVE_STARTS = 118, // u16 Number of starts DHW pump/valve. Reset by writing zero is optional for slave | ||
| 197 | - DHW_BURNER_STARTS = 119, // u16 Number of starts burner in DHW mode. Reset by writing zero is optional for slave | ||
| 198 | - BURNER_OPERATION_HOURS = 120, // u16 Number of hours that burner is in operation (i.e. flame on). Reset by writing zero is optional for slave | ||
| 199 | - CH_PUMP_OPERATION_HOURS = 121, // u16 Number of hours that CH pump has been running. Reset by writing zero is optional for slave | ||
| 200 | - DHW_PUMP_VALVE_OPERATION_HOURS = 122, // u16 Number of hours that DHW pump has been running or DHW valve has been opened. Reset by writing zero is optional for slave | ||
| 201 | - DHW_BURNER_OPERATION_HOURS = 123, // u16 Number of hours that burner is in operation during DHW mode. Reset by writing zero is optional for slave | 197 | + BURNER_STARTS = 116, // u16 Number of starts burner. Reset by writing zero is optional for the secondary device |
| 198 | + CH_PUMP_STARTS = 117, // u16 Number of starts CH pump. Reset by writing zero is optional for the secondary device | ||
| 199 | + DHW_PUMP_VALVE_STARTS = 118, // u16 Number of starts DHW pump/valve. Reset by writing zero is optional for the secondary device | ||
| 200 | + DHW_BURNER_STARTS = 119, // u16 Number of starts burner in DHW mode. Reset by writing zero is optional for the secondary device | ||
| 201 | + BURNER_OPERATION_HOURS = 120, // u16 Number of hours that burner is in operation (i.e. flame on). Reset by writing zero is optional for the secondary device | ||
| 202 | + CH_PUMP_OPERATION_HOURS = 121, // u16 Number of hours that CH pump has been running. Reset by writing zero is optional for the secondary device | ||
| 203 | + DHW_PUMP_VALVE_OPERATION_HOURS = 122, // u16 Number of hours that DHW pump has been running or DHW valve has been opened. Reset by writing zero is optional for the secondary device | ||
| 204 | + DHW_BURNER_OPERATION_HOURS = 123, // u16 Number of hours that burner is in operation during DHW mode. Reset by writing zero is optional for the secondary device | ||
| 202 | 205 | ||
| 203 | // Class 5 : Pre-Defined Remote Boiler Parameters | 206 | // Class 5 : Pre-Defined Remote Boiler Parameters |
| 204 | DHW_SETPOINT = 56, // f8.8 Domestic hot water temperature setpoint (Remote parameter 1) (ยฐC) | 207 | DHW_SETPOINT = 56, // f8.8 Domestic hot water temperature setpoint (Remote parameter 1) (ยฐC) |
| 205 | MAX_CH_WATER_SETPOINT = 57, // f8.8 Maximum allowable CH water setpoint (Remote parameter 2) (ยฐC) | 208 | MAX_CH_WATER_SETPOINT = 57, // f8.8 Maximum allowable CH water setpoint (Remote parameter 2) (ยฐC) |
| 206 | OTC_CURVE_RATIO = 58, // f8.8 OTC heat curve ratio (Remote parameter 3) (ยฐC) | 209 | OTC_CURVE_RATIO = 58, // f8.8 OTC heat curve ratio (Remote parameter 3) (ยฐC) |
| 207 | 210 | ||
| 208 | - // Class 6 : Transparent Slave Parameters | 211 | + // Class 6 : Transparent Secondary Parameters |
| 209 | TSP_COMMAND = 11, // u8, u8 Index number of following TSP, Value of the referenced TSP | 212 | TSP_COMMAND = 11, // u8, u8 Index number of following TSP, Value of the referenced TSP |
| 210 | 213 | ||
| 211 | // Class 8 : Control of Special Applications | 214 | // Class 8 : Control of Special Applications |
| 212 | COOLING_CONTROL = 7, // f8.8 Signal for cooling plant (%) | 215 | COOLING_CONTROL = 7, // f8.8 Signal for cooling plant (%) |
| 213 | - MAX_MODULATION_LEVEL = 14, // f8.8 Mandatory: Maximum relative boiler modulation level setting for sequencer and off-low & pump control applications (%) | 216 | + MAX_MODULATION_LEVEL = 14, // f8.8 Mandatory; Maximum relative boiler modulation level setting for sequencer and off-low & pump control applications (%) |
| 214 | 217 | ||
| 215 | 218 | ||
| 216 | // Incomplete information for DATA-IDs below. If these DATA-IDs are R, W or R/W is unknown. Also the data type is unknown and deducted from the name | 219 | // Incomplete information for DATA-IDs below. If these DATA-IDs are R, W or R/W is unknown. Also the data type is unknown and deducted from the name |
| @@ -220,21 +223,21 @@ public: | @@ -220,21 +223,21 @@ public: | ||
| 220 | 223 | ||
| 221 | 224 | ||
| 222 | enum class STATUS_FLAGS { | 225 | enum class STATUS_FLAGS { |
| 223 | - // Master is MSB | ||
| 224 | - MASTER_CH_ENABLE = (0b00000001), // CH is Central Heating | ||
| 225 | - MASTER_DHW_ENABLE = (0b00000010), // DHW is Domestic Hot Water | ||
| 226 | - MASTER_COOLING_ENABLE = (0b00000100), | ||
| 227 | - MASTER_OTC_ENABLE = (0b00001000), // OTC is Outside Temperature Compensation | ||
| 228 | - MASTER_CH2_ENABLE = (0b00010000), | ||
| 229 | - | ||
| 230 | - // Slave is LSB | ||
| 231 | - SLAVE_FAULT_INDICATION = (0b00000001), | ||
| 232 | - SLAVE_CH_MODE = (0b00000010), | ||
| 233 | - SLAVE_DHW_MODE = (0b00000100), | ||
| 234 | - SLAVE_FLAME_STATUS = (0b00001000), | ||
| 235 | - SLAVE_COOLING_STATUS = (0b00010000), | ||
| 236 | - SLAVE_CH2_MODE = (0b00100000), | ||
| 237 | - SLAVE_DIAGNOSTIC_IND = (0b01000000), | 226 | + // Primary device is MSB |
| 227 | + PRIMARY_CH_ENABLE = (0b00000001), // CH is Central Heating | ||
| 228 | + PRIMARY_DHW_ENABLE = (0b00000010), // DHW is Domestic Hot Water | ||
| 229 | + PRIMARY_COOLING_ENABLE = (0b00000100), | ||
| 230 | + PRIMARY_OTC_ENABLE = (0b00001000), // OTC is Outside Temperature Compensation | ||
| 231 | + PRIMARY_CH2_ENABLE = (0b00010000), | ||
| 232 | + | ||
| 233 | + // Secondary device is LSB | ||
| 234 | + SECONDARY_FAULT_INDICATION = (0b00000001), | ||
| 235 | + SECONDARY_CH_MODE = (0b00000010), | ||
| 236 | + SECONDARY_DHW_MODE = (0b00000100), | ||
| 237 | + SECONDARY_FLAME_STATUS = (0b00001000), | ||
| 238 | + SECONDARY_COOLING_STATUS = (0b00010000), | ||
| 239 | + SECONDARY_CH2_MODE = (0b00100000), | ||
| 240 | + SECONDARY_DIAGNOSTIC_IND = (0b01000000), | ||
| 238 | }; | 241 | }; |
| 239 | 242 | ||
| 240 | 243 | ||
| @@ -274,12 +277,12 @@ public: | @@ -274,12 +277,12 @@ public: | ||
| 274 | 277 | ||
| 275 | 278 | ||
| 276 | enum class CONFIGURATION_FLAGS { | 279 | enum class CONFIGURATION_FLAGS { |
| 277 | - SLAVE_DHW_PRESENT = (0b00000001), | ||
| 278 | - SLAVE_CONTROL_TYPE = (0b00000010), | ||
| 279 | - SLAVE_COOLING = (0b00000100), | ||
| 280 | - SLAVE_DHW = (0b00001000), | ||
| 281 | - SLAVE_LOW_OFF_PUMP_CTRL = (0b00010000), | ||
| 282 | - SLAVE_CH2_PRESENT = (0b00100000), | 280 | + SECONDARY_DHW_PRESENT = (0b00000001), |
| 281 | + SECONDARY_CONTROL_TYPE = (0b00000010), | ||
| 282 | + SECONDARY_COOLING = (0b00000100), | ||
| 283 | + SECONDARY_DHW = (0b00001000), | ||
| 284 | + SECONDARY_LOW_OFF_PUMP_CTRL = (0b00010000), | ||
| 285 | + SECONDARY_CH2_PRESENT = (0b00100000), | ||
| 283 | }; | 286 | }; |
| 284 | 287 | ||
| 285 | 288 | ||
| @@ -305,30 +308,30 @@ public: | @@ -305,30 +308,30 @@ public: | ||
| 305 | 308 | ||
| 306 | 309 | ||
| 307 | enum class HVAC_STATUS_FLAGS { | 310 | enum class HVAC_STATUS_FLAGS { |
| 308 | - // Master is MSB | ||
| 309 | - MASTER_VENTILATION_ENABLE = (0b00000001), | ||
| 310 | - MASTER_BYPASS_POSTION = (0b00000010), | ||
| 311 | - MASTER__BYPASS_MODE = (0b00000100), | ||
| 312 | - MASTER_FREE_VENTILATION_MODE = (0b00001000), | ||
| 313 | - | ||
| 314 | - // Slave is LSB | ||
| 315 | - SLAVE_FAULT_INDICATION = (0b00000001), | ||
| 316 | - SLAVE_VENTILATION_MODE = (0b00000010), | ||
| 317 | - SLAVE_BYPASS_STATUS = (0b00000100), | ||
| 318 | - SLAVE_BYPASS_AUTOMATIC_STATUS = (0b00001000), | ||
| 319 | - SLAVE_FREE_VENTILATION_MODE = (0b00010000), | ||
| 320 | - SLAVE_DIAGNOSTIC_IND = (0b00100000), | 311 | + // Primary device is MSB |
| 312 | + PRIMARY_VENTILATION_ENABLE = (0b00000001), | ||
| 313 | + PRIMARY_BYPASS_POSTION = (0b00000010), | ||
| 314 | + PRIMARY_BYPASS_MODE = (0b00000100), | ||
| 315 | + PRIMARY_FREE_VENTILATION_MODE = (0b00001000), | ||
| 316 | + | ||
| 317 | + // Secondary device is LSB | ||
| 318 | + SECONDARY_FAULT_INDICATION = (0b00000001), | ||
| 319 | + SECONDARY_VENTILATION_MODE = (0b00000010), | ||
| 320 | + SECONDARY_BYPASS_STATUS = (0b00000100), | ||
| 321 | + SECONDARY_BYPASS_AUTOMATIC_STATUS= (0b00001000), | ||
| 322 | + SECONDARY_FREE_VENTILATION_MODE = (0b00010000), | ||
| 323 | + SECONDARY_DIAGNOSTIC_IND = (0b00100000), | ||
| 321 | }; | 324 | }; |
| 322 | 325 | ||
| 323 | 326 | ||
| 324 | enum class SOLAR_STATUS_FLAGS { | 327 | enum class SOLAR_STATUS_FLAGS { |
| 325 | - // Master is MSB | ||
| 326 | - MASTER_MODE = (0b00000111), | 328 | + // Priamry device is MSB |
| 329 | + PRIMARY_MODE = (0b00000111), | ||
| 327 | 330 | ||
| 328 | - // Slave is LSB | ||
| 329 | - SLAVE_FAULT_INDICATION = (0b00000001), | ||
| 330 | - SLAVE_MODE = (0b00001110), | ||
| 331 | - SLAVE_STATUS = (0b00110000), | 331 | + // Secondary device is LSB |
| 332 | + SECONDARY_FAULT_INDICATION = (0b00000001), | ||
| 333 | + SECONDARY_MODE = (0b00001110), | ||
| 334 | + SECONDARY_STATUS = (0b00110000), | ||
| 332 | }; | 335 | }; |
| 333 | 336 | ||
| 334 | 337 | ||
| @@ -339,8 +342,8 @@ public: | @@ -339,8 +342,8 @@ public: | ||
| 339 | }; | 342 | }; |
| 340 | 343 | ||
| 341 | 344 | ||
| 342 | - enum class SOLAR_SLAVE_CONFIGURATION_FLAGS { | ||
| 343 | - SLAVE_SYSTEM_TYPE = (0b00000001), | 345 | + enum class SOLAR_SECONDARY_CONFIGURATION_FLAGS { |
| 346 | + SECONDARY_SYSTEM_TYPE = (0b00000001), | ||
| 344 | }; | 347 | }; |
| 345 | 348 | ||
| 346 | 349 | ||
| @@ -396,7 +399,7 @@ private: | @@ -396,7 +399,7 @@ private: | ||
| 396 | uint8_t _txPin; | 399 | uint8_t _txPin; |
| 397 | 400 | ||
| 398 | time_t _timeoutMs; | 401 | time_t _timeoutMs; |
| 399 | - bool _master; | 402 | + bool _primary; |
| 400 | 403 | ||
| 401 | ERROR_CODES _lastError; | 404 | ERROR_CODES _lastError; |
| 402 | }; | 405 | }; |
| @@ -405,15 +408,15 @@ private: | @@ -405,15 +408,15 @@ private: | ||
| 405 | class OTDataLinkLayer { | 408 | class OTDataLinkLayer { |
| 406 | public: | 409 | public: |
| 407 | enum class MSG_TYPE { | 410 | enum class MSG_TYPE { |
| 408 | - MASTER_TO_SLAVE_READ_DATA = (0b0000000UL << 24), // value >> 28 := 0 | ||
| 409 | - MASTER_TO_SLAVE_WRITE_DATA = (0b0010000UL << 24), // value >> 28 := 1 | ||
| 410 | - MASTER_TO_SLAVE_INVALID_DATA = (0b0100000UL << 24), // value >> 28 := 2 | ||
| 411 | - MASTER_TO_SLAVE_RESERVED = (0b0110000UL << 24), // value >> 28 := 3 | ||
| 412 | - | ||
| 413 | - SLAVE_TO_MASTER_READ_ACK = (0b1000000UL << 24), // value >> 28 := 4 | ||
| 414 | - SLAVE_TO_MASTER_WRITE_ACK = (0b1010000UL << 24), // value >> 28 := 5 | ||
| 415 | - SLAVE_TO_MASTER_DATA_INVALID = (0b1100000UL << 24), // value >> 28 := 6 | ||
| 416 | - SLAVE_TO_MASTER_UNKNOWN_DATA_ID = (0b1110000UL << 24) // value >> 28 := 7 | 411 | + PRIMARY_TO_SECONDARY_READ_DATA = (0b0000000UL << 24), // value >> 28 := 0 |
| 412 | + PRIMARY_TO_SECONDARY_WRITE_DATA = (0b0010000UL << 24), // value >> 28 := 1 | ||
| 413 | + PRIMARY_TO_SECONDARY_INVALID_DATA = (0b0100000UL << 24), // value >> 28 := 2 | ||
| 414 | + PRIMARY_TO_SECONDARY_RESERVED = (0b0110000UL << 24), // value >> 28 := 3 | ||
| 415 | + | ||
| 416 | + SECONDARY_TO_PRIMARY_READ_ACK = (0b1000000UL << 24), // value >> 28 := 4 | ||
| 417 | + SECONDARY_TO_PRIMARY_WRITE_ACK = (0b1010000UL << 24), // value >> 28 := 5 | ||
| 418 | + SECONDARY_TO_PRIMARY_DATA_INVALID = (0b1100000UL << 24), // value >> 28 := 6 | ||
| 419 | + SECONDARY_TO_PRIMARY_UNKNOWN_DATA_ID = (0b1110000UL << 24) // value >> 28 := 7 | ||
| 417 | }; | 420 | }; |
| 418 | 421 | ||
| 419 | OTDataLinkLayer(); | 422 | OTDataLinkLayer(); |
| @@ -463,7 +466,7 @@ class OTPhysicalLayer { | @@ -463,7 +466,7 @@ class OTPhysicalLayer { | ||
| 463 | public: | 466 | public: |
| 464 | OTPhysicalLayer(uint8_t rxPin, | 467 | OTPhysicalLayer(uint8_t rxPin, |
| 465 | uint8_t txPin, | 468 | uint8_t txPin, |
| 466 | - bool master); | 469 | + bool primary); |
| 467 | 470 | ||
| 468 | ~OTPhysicalLayer(); | 471 | ~OTPhysicalLayer(); |
| 469 | 472 | ||
| @@ -490,7 +493,7 @@ private: | @@ -490,7 +493,7 @@ private: | ||
| 490 | 493 | ||
| 491 | uint8_t _rxPin; | 494 | uint8_t _rxPin; |
| 492 | uint8_t _txPin; | 495 | uint8_t _txPin; |
| 493 | - bool _master; | 496 | + bool _primary; |
| 494 | 497 | ||
| 495 | enum class STATE { | 498 | enum class STATE { |
| 496 | INVALID, | 499 | INVALID, |