Skip to content

Commit f19ab87

Browse files
authored
Added extra "mid" option for Fan & SwingV to IRac (#1929)
Signed-off-by: Mateusz Bronk <[email protected]> Co-authored-by: Mateusz Bronk <[email protected]>
1 parent 00b27cc commit f19ab87

File tree

8 files changed

+50
-30
lines changed

8 files changed

+50
-30
lines changed

src/IRac.cpp

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3672,6 +3672,8 @@ stdAc::fanspeed_t IRac::strToFanspeed(const char *str,
36723672
!STRCASECMP(str, kMaximumStr) ||
36733673
!STRCASECMP(str, kHighestStr))
36743674
return stdAc::fanspeed_t::kMax;
3675+
else if (!STRCASECMP(str, kMedHighStr))
3676+
return stdAc::fanspeed_t::kMediumHigh;
36753677
else
36763678
return def;
36773679
}
@@ -3704,6 +3706,8 @@ stdAc::swingv_t IRac::strToSwingV(const char *str,
37043706
!STRCASECMP(str, kMediumStr) ||
37053707
!STRCASECMP(str, kCentreStr))
37063708
return stdAc::swingv_t::kMiddle;
3709+
else if (!STRCASECMP(str, kUpperMiddleStr))
3710+
return stdAc::swingv_t::kUpperMiddle;
37073711
else if (!STRCASECMP(str, kHighStr) ||
37083712
!STRCASECMP(str, kHiStr))
37093713
return stdAc::swingv_t::kHigh;
@@ -3920,13 +3924,14 @@ String IRac::opmodeToString(const stdAc::opmode_t mode, const bool ha) {
39203924
/// @return The equivalent String for the locale.
39213925
String IRac::fanspeedToString(const stdAc::fanspeed_t speed) {
39223926
switch (speed) {
3923-
case stdAc::fanspeed_t::kAuto: return kAutoStr;
3924-
case stdAc::fanspeed_t::kMax: return kMaxStr;
3925-
case stdAc::fanspeed_t::kHigh: return kHighStr;
3926-
case stdAc::fanspeed_t::kMedium: return kMediumStr;
3927-
case stdAc::fanspeed_t::kLow: return kLowStr;
3928-
case stdAc::fanspeed_t::kMin: return kMinStr;
3929-
default: return kUnknownStr;
3927+
case stdAc::fanspeed_t::kAuto: return kAutoStr;
3928+
case stdAc::fanspeed_t::kMax: return kMaxStr;
3929+
case stdAc::fanspeed_t::kHigh: return kHighStr;
3930+
case stdAc::fanspeed_t::kMedium: return kMediumStr;
3931+
case stdAc::fanspeed_t::kMediumHigh: return kMedHighStr;
3932+
case stdAc::fanspeed_t::kLow: return kLowStr;
3933+
case stdAc::fanspeed_t::kMin: return kMinStr;
3934+
default: return kUnknownStr;
39303935
}
39313936
}
39323937

@@ -3935,14 +3940,15 @@ String IRac::fanspeedToString(const stdAc::fanspeed_t speed) {
39353940
/// @return The equivalent String for the locale.
39363941
String IRac::swingvToString(const stdAc::swingv_t swingv) {
39373942
switch (swingv) {
3938-
case stdAc::swingv_t::kOff: return kOffStr;
3939-
case stdAc::swingv_t::kAuto: return kAutoStr;
3940-
case stdAc::swingv_t::kHighest: return kHighestStr;
3941-
case stdAc::swingv_t::kHigh: return kHighStr;
3942-
case stdAc::swingv_t::kMiddle: return kMiddleStr;
3943-
case stdAc::swingv_t::kLow: return kLowStr;
3944-
case stdAc::swingv_t::kLowest: return kLowestStr;
3945-
default: return kUnknownStr;
3943+
case stdAc::swingv_t::kOff: return kOffStr;
3944+
case stdAc::swingv_t::kAuto: return kAutoStr;
3945+
case stdAc::swingv_t::kHighest: return kHighestStr;
3946+
case stdAc::swingv_t::kHigh: return kHighStr;
3947+
case stdAc::swingv_t::kMiddle: return kMiddleStr;
3948+
case stdAc::swingv_t::kUpperMiddle: return kUpperMiddleStr;
3949+
case stdAc::swingv_t::kLow: return kLowStr;
3950+
case stdAc::swingv_t::kLowest: return kLowestStr;
3951+
default: return kUnknownStr;
39463952
}
39473953
}
39483954

src/IRsend.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,15 @@ enum class opmode_t {
5656

5757
/// Common A/C settings for Fan Speeds.
5858
enum class fanspeed_t {
59-
kAuto = 0,
60-
kMin = 1,
61-
kLow = 2,
62-
kMedium = 3,
63-
kHigh = 4,
64-
kMax = 5,
59+
kAuto = 0,
60+
kMin = 1,
61+
kLow = 2,
62+
kMedium = 3,
63+
kHigh = 4,
64+
kMax = 5,
65+
kMediumHigh = 6,
6566
// Add new entries before this one, and update it to point to the last entry
66-
kLastFanspeedEnum = kMax,
67+
kLastFanspeedEnum = kMediumHigh,
6768
};
6869

6970
/// Common A/C settings for Vertical Swing.
@@ -75,8 +76,9 @@ enum class swingv_t {
7576
kMiddle = 3,
7677
kLow = 4,
7778
kLowest = 5,
79+
kUpperMiddle = 6,
7880
// Add new entries before this one, and update it to point to the last entry
79-
kLastSwingvEnum = kLowest,
81+
kLastSwingvEnum = kUpperMiddle,
8082
};
8183

8284
/// @brief Tyoe of A/C command (if the remote uses different codes for each)

src/IRtext.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ IRTEXT_CONST_STRING(kOutsideStr, D_STR_OUTSIDE); ///< "Outside"
126126
IRTEXT_CONST_STRING(kLoudStr, D_STR_LOUD); ///< "Loud"
127127
IRTEXT_CONST_STRING(kLowerStr, D_STR_LOWER); ///< "Lower"
128128
IRTEXT_CONST_STRING(kUpperStr, D_STR_UPPER); ///< "Upper"
129+
IRTEXT_CONST_STRING(kUpperMiddleStr, D_STR_UPPER_MIDDLE); ///< "Upper-Middle"
129130
IRTEXT_CONST_STRING(kBreezeStr, D_STR_BREEZE); ///< "Breeze"
130131
IRTEXT_CONST_STRING(kCirculateStr, D_STR_CIRCULATE); ///< "Circulate"
131132
IRTEXT_CONST_STRING(kCeilingStr, D_STR_CEILING); ///< "Ceiling"

src/IRtext.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ extern IRTEXT_CONST_PTR(kTypeStr);
236236
extern IRTEXT_CONST_PTR(kUnknownStr);
237237
extern IRTEXT_CONST_PTR(kUpStr);
238238
extern IRTEXT_CONST_PTR(kUpperStr);
239+
extern IRTEXT_CONST_PTR(kUpperMiddleStr);
239240
extern IRTEXT_CONST_PTR(kValueStr);
240241
extern IRTEXT_CONST_PTR(kV9014557AStr);
241242
extern IRTEXT_CONST_PTR(kV9014557BStr);

src/ir_Argo.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,8 @@ argoFan_t IRArgoACBase<T>::convertFan(const stdAc::fanspeed_t speed) {
10951095
return argoFan_t::FAN_LOWER;
10961096
case stdAc::fanspeed_t::kMedium:
10971097
return argoFan_t::FAN_LOW;
1098-
// No 'MEDIUM-HIGH' in common, hence skipping the "actual" medium
1098+
case stdAc::fanspeed_t::kMediumHigh:
1099+
return argoFan_t::FAN_MEDIUM;
10991100
case stdAc::fanspeed_t::kHigh:
11001101
return argoFan_t::FAN_HIGH;
11011102
case stdAc::fanspeed_t::kMax:
@@ -1115,7 +1116,8 @@ argoFlap_t IRArgoACBase<T>::convertSwingV(const stdAc::swingv_t position) {
11151116
return argoFlap_t::FLAP_1;
11161117
case stdAc::swingv_t::kHigh:
11171118
return argoFlap_t::FLAP_2;
1118-
// Skipping "flap3" -> no UPPER-MIDDLE in common
1119+
case stdAc::swingv_t::kUpperMiddle:
1120+
return argoFlap_t::FLAP_3;
11191121
case stdAc::swingv_t::kMiddle:
11201122
return argoFlap_t::FLAP_4;
11211123
case stdAc::swingv_t::kLow:
@@ -1175,7 +1177,8 @@ stdAc::swingv_t IRArgoACBase<ArgoProtocolWREM3>::toCommonSwingV(
11751177
return stdAc::swingv_t::kHighest;
11761178
case argoFlap_t::FLAP_5:
11771179
return stdAc::swingv_t::kHigh;
1178-
case argoFlap_t::FLAP_4: // Upper-middle collapsed to "middle"
1180+
case argoFlap_t::FLAP_4:
1181+
return stdAc::swingv_t::kUpperMiddle;
11791182
case argoFlap_t::FLAP_3:
11801183
return stdAc::swingv_t::kMiddle;
11811184
case argoFlap_t::FLAP_2:
@@ -1232,9 +1235,8 @@ stdAc::fanspeed_t IRArgoACBase<T>::toCommonFanSpeed(const argoFan_t speed) {
12321235
case argoFan_t::FAN_AUTO: return stdAc::fanspeed_t::kAuto;
12331236
case argoFan_t::FAN_HIGHEST: return stdAc::fanspeed_t::kMax;
12341237
case argoFan_t::FAN_HIGH: return stdAc::fanspeed_t::kHigh;
1235-
case argoFan_t::FAN_MEDIUM: // No "Medium-High" support in common
1236-
case argoFan_t::FAN_LOW:
1237-
return stdAc::fanspeed_t::kMedium;
1238+
case argoFan_t::FAN_MEDIUM: return stdAc::fanspeed_t::kMediumHigh;
1239+
case argoFan_t::FAN_LOW: return stdAc::fanspeed_t::kMedium;
12381240
case argoFan_t::FAN_LOWER: return stdAc::fanspeed_t::kLow;
12391241
case argoFan_t::FAN_LOWEST: return stdAc::fanspeed_t::kMin;
12401242
default: return stdAc::fanspeed_t::kAuto;

src/locale/defaults.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,9 @@ D_STR_INDIRECT " " D_STR_MODE
451451
#ifndef D_STR_BOTTOM
452452
#define D_STR_BOTTOM "Bottom"
453453
#endif // D_STR_BOTTOM
454+
#ifndef D_STR_UPPER_MIDDLE
455+
#define D_STR_UPPER_MIDDLE D_STR_UPPER "-" D_STR_MIDDLE
456+
#endif // D_STR_UPPER_MIDDLE
454457
#ifndef D_STR_CONFIG
455458
#define D_STR_CONFIG "Config"
456459
#endif // D_STR_CONFIG

test/IRac_test.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2679,6 +2679,7 @@ TEST(TestIRac, strToFanspeed) {
26792679
EXPECT_EQ(stdAc::fanspeed_t::kMin, IRac::strToFanspeed("MIN"));
26802680
EXPECT_EQ(stdAc::fanspeed_t::kLow, IRac::strToFanspeed("LOW"));
26812681
EXPECT_EQ(stdAc::fanspeed_t::kMedium, IRac::strToFanspeed("MEDIUM"));
2682+
EXPECT_EQ(stdAc::fanspeed_t::kMediumHigh, IRac::strToFanspeed("MED-HIGH"));
26822683
EXPECT_EQ(stdAc::fanspeed_t::kHigh, IRac::strToFanspeed("HIGH"));
26832684
EXPECT_EQ(stdAc::fanspeed_t::kMax, IRac::strToFanspeed("MAX"));
26842685
EXPECT_EQ(stdAc::fanspeed_t::kAuto, IRac::strToFanspeed("FOOBAR"));
@@ -2691,6 +2692,7 @@ TEST(TestIRac, strToSwingV) {
26912692
EXPECT_EQ(stdAc::swingv_t::kLowest, IRac::strToSwingV("LOWEST"));
26922693
EXPECT_EQ(stdAc::swingv_t::kLow, IRac::strToSwingV("LOW"));
26932694
EXPECT_EQ(stdAc::swingv_t::kMiddle, IRac::strToSwingV("MIDDLE"));
2695+
EXPECT_EQ(stdAc::swingv_t::kUpperMiddle, IRac::strToSwingV("UPPER-MIDDLE"));
26942696
EXPECT_EQ(stdAc::swingv_t::kHigh, IRac::strToSwingV("HIGH"));
26952697
EXPECT_EQ(stdAc::swingv_t::kHighest, IRac::strToSwingV("HIGHEST"));
26962698
EXPECT_EQ(stdAc::swingv_t::kOff, IRac::strToSwingV("OFF"));
@@ -2771,13 +2773,16 @@ TEST(TestIRac, opmodeToString) {
27712773
TEST(TestIRac, fanspeedToString) {
27722774
EXPECT_EQ("Low", IRac::fanspeedToString(stdAc::fanspeed_t::kLow));
27732775
EXPECT_EQ("Auto", IRac::fanspeedToString(stdAc::fanspeed_t::kAuto));
2776+
EXPECT_EQ("Med-High", IRac::fanspeedToString(stdAc::fanspeed_t::kMediumHigh));
27742777
EXPECT_EQ("UNKNOWN", IRac::fanspeedToString((stdAc::fanspeed_t)500));
27752778
}
27762779

27772780
TEST(TestIRac, swingvToString) {
27782781
EXPECT_EQ("Off", IRac::swingvToString(stdAc::swingv_t::kOff));
27792782
EXPECT_EQ("Low", IRac::swingvToString(stdAc::swingv_t::kLow));
27802783
EXPECT_EQ("Auto", IRac::swingvToString(stdAc::swingv_t::kAuto));
2784+
EXPECT_EQ("Upper-Middle", IRac::swingvToString(
2785+
stdAc::swingv_t::kUpperMiddle));
27812786
EXPECT_EQ("UNKNOWN", IRac::swingvToString((stdAc::swingv_t)500));
27822787
}
27832788

test/ir_Argo_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ TEST(TestArgoAC_WREM3Class, toCommon) {
7575
ASSERT_EQ(stdAc::fanspeed_t::kMax, ac.toCommon().fanspeed);
7676
ASSERT_TRUE(ac.toCommon().turbo);
7777
ASSERT_TRUE(ac.toCommon().quiet); // Night
78-
ASSERT_EQ(stdAc::swingv_t::kMiddle, ac.toCommon().swingv);
78+
ASSERT_EQ(stdAc::swingv_t::kUpperMiddle, ac.toCommon().swingv);
7979
ASSERT_TRUE(ac.toCommon().econo);
8080
ASSERT_TRUE(ac.toCommon().light);
8181
ASSERT_TRUE(ac.toCommon().filter);

0 commit comments

Comments
 (0)