IRremoteIDF
Infrared send & receive for ESP-IDF
Loading...
Searching...
No Matches
ir_Rhoss.h
Go to the documentation of this file.
1// Copyright 2021 Tom Rosenback
2
5// Supports:
6// Brand: Rhoss, Model: Idrowall MPCV 20-30-35-40
7
8#ifndef IR_RHOSS_H_
9#define IR_RHOSS_H_
10
11#define __STDC_LIMIT_MACROS
12#include <stdint.h>
13#include "IRplatform.h"
14#include "IRremoteESP8266.h"
15#include "IRsend.h"
16#ifdef UNIT_TEST
17#include "IRsend_test.h"
18#endif
19
20
23 uint8_t raw[kRhossStateLength]; // The state of the IR remote.
24 struct {
25 // Byte 0
26 uint8_t :8; // Typically 0xAA
27 // Byte 1
28 uint8_t Temp :4;
29 uint8_t :4; // Typically 0x0
30 // Byte 2
31 uint8_t :8; // Typically 0x60
32 // Byte 3
33 uint8_t :8; // Typically 0x0
34 // Byte 4
35 uint8_t Fan :2;
36 uint8_t :2; // Typically 0x0
37 uint8_t Mode :4;
38 // Byte 5
39 uint8_t Swing :1;
40 uint8_t :5; // Typically 0x0
41 uint8_t Power :2;
42 // Byte 6
43 uint8_t :8; // Typically 0x54
44 // Byte 7
45 uint8_t :8; // Typically 0x0
46 // Byte 8
47 uint8_t :8; // Typically 0x0
48 // Byte 9
49 uint8_t :8; // Typically 0x0
50 // Byte 10
51 uint8_t :8; // Typically 0x0
52 // Byte 11
53 uint8_t Sum :8;
54 };
55};
56
57// Constants
58
59// Fan Control
60const uint8_t kRhossFanAuto = 0b00;
61const uint8_t kRhossFanMin = 0b01;
62const uint8_t kRhossFanMed = 0b10;
63const uint8_t kRhossFanMax = 0b11;
64// Modes
65const uint8_t kRhossModeHeat = 0b0001;
66const uint8_t kRhossModeCool = 0b0010;
67const uint8_t kRhossModeDry = 0b0011;
68const uint8_t kRhossModeFan = 0b0100;
69const uint8_t kRhossModeAuto = 0b0101;
70
71// Temperature
72const uint8_t kRhossTempMin = 16; // Celsius
73const uint8_t kRhossTempMax = 30; // Celsius
74
75// Power
76const uint8_t kRhossPowerOn = 0b10; // 0x2
77const uint8_t kRhossPowerOff = 0b01; // 0x1
78
79// Swing
80const uint8_t kRhossSwingOn = 0b1; // 0x1
81const uint8_t kRhossSwingOff = 0b0; // 0x0
82
85const uint8_t kRhossDefaultTemp = 21; // Celsius
86const bool kRhossDefaultPower = false;
87const bool kRhossDefaultSwing = false;
88
89// Classes
90
92class IRRhossAc {
93 public:
94 explicit IRRhossAc(const uint16_t pin, const bool inverted = false,
95 const bool use_modulation = true);
96
97 void stateReset();
98#if SEND_RHOSS
99 void send(const uint16_t repeat = kRhossDefaultRepeat);
104 int8_t calibrate(void) { return _irsend.calibrate(); }
105#endif // SEND_RHOSS
106 void begin();
107 static uint8_t calcChecksum(const uint8_t state[],
108 const uint16_t length = kRhossStateLength);
109 static bool validChecksum(const uint8_t state[],
110 const uint16_t length = kRhossStateLength);
111 void setPower(const bool state);
112 bool getPower(void) const;
113 void on(void);
114 void off(void);
115 void setTemp(const uint8_t temp);
116 uint8_t getTemp(void) const;
117 void setFan(const uint8_t speed);
118 uint8_t getFan(void) const;
119 void setSwing(const bool state);
120 uint8_t getSwing(void) const;
121 void setMode(const uint8_t mode);
122 uint8_t getMode(void) const;
123 uint8_t* getRaw(void);
124 void setRaw(const uint8_t state[]);
125 static uint8_t convertMode(const stdAc::opmode_t mode);
126 static uint8_t convertFan(const stdAc::fanspeed_t speed);
127 static stdAc::opmode_t toCommonMode(const uint8_t mode);
128 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
129 stdAc::state_t toCommon(void) const;
130 String toString(void) const;
131#ifndef UNIT_TEST
132
133 private:
135#else
137 IRsendTest _irsend;
139#endif
141 void checksum(void);
142};
143#endif // IR_RHOSS_H_
std::string String
The protocol code builds human readable output with String. On ESP-IDF that is just std::string.
Definition IRplatform.h:21
const uint16_t kRhossStateLength
Definition IRremoteESP8266.h:1461
const uint16_t kRhossDefaultRepeat
Definition IRremoteESP8266.h:1463
Class for handling detailed Rhoss A/C messages.
Definition ir_Rhoss.h:92
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Rhoss.cpp:313
void checksum(void)
Update the checksum value for the internal state.
Definition ir_Rhoss.cpp:139
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Rhoss.cpp:219
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_Rhoss.cpp:191
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Rhoss.cpp:261
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kRhossStateLength)
Calculate the checksum for the supplied state.
Definition ir_Rhoss.cpp:126
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Rhoss.cpp:352
void begin()
Set up hardware to be able to send a message.
Definition ir_Rhoss.cpp:112
void stateReset()
Reset the internals of the object to a known good state.
Definition ir_Rhoss.cpp:145
void setPower(const bool state)
Set the internal state to have the desired power.
Definition ir_Rhoss.cpp:179
uint8_t getSwing(void) const
Get the Vertical Swing speed of the A/C.
Definition ir_Rhoss.cpp:231
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Rhoss.cpp:204
void send(const uint16_t repeat=kRhossDefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Rhoss.cpp:117
uint8_t * getRaw(void)
Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
Definition ir_Rhoss.cpp:160
static bool validChecksum(const uint8_t state[], const uint16_t length=kRhossStateLength)
Verify the checksum is valid for a given state.
Definition ir_Rhoss.cpp:134
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Rhoss.cpp:299
uint8_t getMode(void) const
Get the current operation mode setting.
Definition ir_Rhoss.cpp:237
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Rhoss.cpp:281
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Rhoss.cpp:326
void off(void)
Set the internal state to have the power off.
Definition ir_Rhoss.cpp:175
void setMode(const uint8_t mode)
Set the desired operation mode.
Definition ir_Rhoss.cpp:243
bool getPower(void) const
Get the power setting from the internal state.
Definition ir_Rhoss.cpp:185
IRsend _irsend
Definition ir_Rhoss.h:134
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Rhoss.cpp:198
RhossProtocol _
Definition ir_Rhoss.h:140
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Rhoss.h:104
void on(void)
Set the internal state to have the power on.
Definition ir_Rhoss.cpp:172
void setRaw(const uint8_t state[])
Set the raw state of the object.
Definition ir_Rhoss.cpp:167
void setSwing(const bool state)
Set the Vertical Swing mode of the A/C.
Definition ir_Rhoss.cpp:225
Class for sending all basic IR protocols.
Definition IRsend.h:256
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:286
const uint8_t kRhossModeHeat
Definition ir_Rhoss.h:65
const uint8_t kRhossPowerOff
Definition ir_Rhoss.h:77
const uint8_t kRhossPowerOn
Definition ir_Rhoss.h:76
const uint8_t kRhossTempMax
Definition ir_Rhoss.h:73
const uint8_t kRhossModeAuto
Definition ir_Rhoss.h:69
const uint8_t kRhossSwingOn
Definition ir_Rhoss.h:80
const uint8_t kRhossFanMin
Definition ir_Rhoss.h:61
const uint8_t kRhossModeCool
Definition ir_Rhoss.h:66
const uint8_t kRhossFanMax
Definition ir_Rhoss.h:63
const uint8_t kRhossDefaultMode
Definition ir_Rhoss.h:84
const uint8_t kRhossDefaultTemp
Definition ir_Rhoss.h:85
const bool kRhossDefaultPower
Definition ir_Rhoss.h:86
const uint8_t kRhossModeDry
Definition ir_Rhoss.h:67
const bool kRhossDefaultSwing
Definition ir_Rhoss.h:87
const uint8_t kRhossSwingOff
Definition ir_Rhoss.h:81
const uint8_t kRhossFanAuto
Definition ir_Rhoss.h:60
const uint8_t kRhossFanMed
Definition ir_Rhoss.h:62
const uint8_t kRhossDefaultFan
Definition ir_Rhoss.h:83
const uint8_t kRhossModeFan
Definition ir_Rhoss.h:68
const uint8_t kRhossTempMin
Definition ir_Rhoss.h:72
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:67
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:55
Structure to hold a common A/C state.
Definition IRsend.h:120
Native representation of a Rhoss A/C message.
Definition ir_Rhoss.h:22
uint8_t Swing
Definition ir_Rhoss.h:39
uint8_t Sum
Definition ir_Rhoss.h:53
uint8_t Mode
Definition ir_Rhoss.h:37
uint8_t Power
Definition ir_Rhoss.h:41
uint8_t Temp
Definition ir_Rhoss.h:28
uint8_t raw[kRhossStateLength]
Definition ir_Rhoss.h:23
uint8_t Fan
Definition ir_Rhoss.h:35