Skip to content

Commit 5dd87d6

Browse files
authored
Merge branch 'crankyoldgit:master' into feature/electrolux-ac-eacm
2 parents a9e750c + ce0a65e commit 5dd87d6

7 files changed

+65
-36
lines changed

src/ir_Airton.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const uint8_t kAirtonFanHigh = 0b100; // 4
6868
const uint8_t kAirtonFanMax = 0b101; // 5
6969

7070
const uint8_t kAirtonMinTemp = 16; // 16C
71-
const uint8_t kAirtonMaxTemp = 25; // 25C
71+
const uint8_t kAirtonMaxTemp = 31; // 31C
7272

7373

7474
/// Class for handling detailed Airton 56-bit A/C messages.

src/ir_Coolix.h

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// Brand: Midea, Model: RG52D/BGE Remote
1616
// Brand: Midea, Model: MS12FU-10HRDN1-QRD0GW(B) A/C
1717
// Brand: Midea, Model: MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
18+
// Brand: Comfee (Midea), Model: Breezy Cool Pro 2.6
1819
// Brand: Tokio, Model: AATOEMF17-12CHR1SW split-type RG51|50/BGE Remote
1920
// Brand: Airwell, Model: RC08B remote
2021
// Brand: Kastron, Model: RG57A7/BGEF Inverter remote

src/ir_Daikin.h

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
// Brand: Daikin, Model: BRC4M150W16 remote (DAIKIN200)
5454
// Brand: Daikin, Model: FTXM20R5V1B A/C (DAIKIN312)
5555
// Brand: Daikin, Model: ARC466A67 remote (DAIKIN312)
56+
// Brand: Daikin, Model: ARC443A5 remote (DAIKIN)
5657

5758
#ifndef IR_DAIKIN_H_
5859
#define IR_DAIKIN_H_

src/ir_Gree.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ void IRGreeAC::setSwingVertical(const bool automatic, const uint8_t position) {
375375
uint8_t new_position = position;
376376
if (!automatic) {
377377
switch (position) {
378+
case kGreeSwingLastPos:
378379
case kGreeSwingUp:
379380
case kGreeSwingMiddleUp:
380381
case kGreeSwingMiddle:
@@ -503,6 +504,7 @@ uint8_t IRGreeAC::convertFan(const stdAc::fanspeed_t speed) {
503504
/// @return The native equivalent of the enum.
504505
uint8_t IRGreeAC::convertSwingV(const stdAc::swingv_t swingv) {
505506
switch (swingv) {
507+
case stdAc::swingv_t::kOff: return kGreeSwingLastPos;
506508
case stdAc::swingv_t::kHighest: return kGreeSwingUp;
507509
case stdAc::swingv_t::kHigh: return kGreeSwingMiddleUp;
508510
case stdAc::swingv_t::kMiddle: return kGreeSwingMiddle;
@@ -562,7 +564,7 @@ stdAc::swingv_t IRGreeAC::toCommonSwingV(const uint8_t pos) {
562564
case kGreeSwingMiddle: return stdAc::swingv_t::kMiddle;
563565
case kGreeSwingMiddleDown: return stdAc::swingv_t::kLow;
564566
case kGreeSwingDown: return stdAc::swingv_t::kLowest;
565-
default: return stdAc::swingv_t::kAuto;
567+
default: return stdAc::swingv_t::kOff;
566568
}
567569
}
568570

test/ir_Gree_test.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,11 @@ TEST(TestGreeClass, toCommon) {
701701
ASSERT_FALSE(ac.toCommon().filter);
702702
ASSERT_FALSE(ac.toCommon().beep);
703703
ASSERT_EQ(-1, ac.toCommon().clock);
704+
705+
// Test kGreeSwingLastPos following the pattern in IRac::gree().
706+
ASSERT_EQ(kGreeSwingLastPos, ac.convertSwingV(stdAc::swingv_t::kOff));
707+
ac.setSwingVertical(false, kGreeSwingLastPos);
708+
ASSERT_EQ(stdAc::swingv_t::kOff, ac.toCommon().swingv);
704709
}
705710

706711
TEST(TestGreeClass, Issue814Power) {

tools/auto_analyse_raw_data.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def add_data_code(self, bin_str, name="", footer=True):
105105
code.append(f" // Data Section #{self.section_count}")
106106
code.append(f" // e.g. data = 0x{int(bin_str, 2):X}, nbits = {nbits}")
107107
code.append(f" sendData(k{name}BitMark, k{name}OneSpace, k{name}BitMark,"
108-
f" k{name}ZeroSpace, send_data, {nbits}, true);")
108+
f" k{name}ZeroSpace, send_data, {nbits}, k{name}MsbFirst);")
109109
code.append(f" send_data >>= {nbits};")
110110
if footer:
111111
code.append(" // Footer")
@@ -122,7 +122,8 @@ def add_data_decode_code(self, bin_str, name="", footer=True):
122122
f" // e.g. data_result.data = 0x{int(bin_str, 2):X}, nbits = {nbits}",
123123
f" data_result = matchData(&(results->rawbuf[offset]), {nbits},",
124124
f" k{name}BitMark, k{name}OneSpace,",
125-
f" k{name}BitMark, k{name}ZeroSpace);",
125+
f" k{name}BitMark, k{name}ZeroSpace,",
126+
f" kUseDefTol, kMarkExcess, k{name}MsbFirst);",
126127
" offset += data_result.used;",
127128
" if (data_result.success == false) return false; // Fail",
128129
f" data <<= {nbits}; // Make room for the new bits of data.",
@@ -163,7 +164,8 @@ def add_data_byte_code(self, bin_str, name="", ambles=None):
163164
f" k{name}BitMark, k{name}ZeroSpace,",
164165
f" {lastmark}, {lastspace},",
165166
f" data + pos, {int(nbytes)}, // Bytes",
166-
f" k{name}Freq, true, kNoRepeat, kDutyDefault);",
167+
f" k{name}Freq, k{name}MsbFirst, kNoRepeat,"
168+
" kDutyDefault);",
167169
f" pos += {int(nbytes)};"
168170
f" // Adjust by how many bytes of data we sent"])
169171
return code
@@ -198,7 +200,7 @@ def add_data_byte_decode_code(self, bin_str, name="", ambles=None):
198200
f" {firstmark}, {firstspace},",
199201
f" k{name}BitMark, k{name}OneSpace,",
200202
f" k{name}BitMark, k{name}ZeroSpace,",
201-
f" {lastmark}, {lastspace}, true);",
203+
f" {lastmark}, {lastspace}, k{name}MsbFirst);",
202204
" if (used == 0) return false; // We failed to find any data.",
203205
" offset += used; // Adjust for how much of the message we read.",
204206
f" pos += {int(nbytes)};"
@@ -351,6 +353,7 @@ def dump_constants(message, defines, name="", output=sys.stdout):
351353
defines.append(f"const uint16_t k{name}SpaceGap{count} = {gap};")
352354
defines.append(f"const uint16_t k{name}Freq = 38000; "
353355
"// Hz. (Guessing the most common frequency.)")
356+
defines.append(f"const bool k{name}MsbFirst = true; // default assumption")
354357

355358

356359
def parse_and_report(rawdata_str, margin, gen_code=False, name="",

0 commit comments

Comments
 (0)