@@ -259,6 +259,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) {
259259#if SEND_SANYO_AC
260260 case decode_type_t ::SANYO_AC:
261261#endif
262+ #if SEND_SANYO_AC88
263+ case decode_type_t ::SANYO_AC88:
264+ #endif
262265#if SEND_SHARP_AC
263266 case decode_type_t ::SHARP_AC:
264267#endif
@@ -1766,7 +1769,7 @@ void IRac::samsung(IRSamsungAc *ac,
17661769#endif // SEND_SAMSUNG_AC
17671770
17681771#if SEND_SANYO_AC
1769- // / Send a Toshiba A/C message with the supplied settings.
1772+ // / Send a Sanyo A/C message with the supplied settings.
17701773// / @param[in, out] ac A Ptr to an IRSanyoAc object to use.
17711774// / @param[in] on The power setting.
17721775// / @param[in] mode The operation mode setting.
@@ -1804,6 +1807,44 @@ void IRac::sanyo(IRSanyoAc *ac,
18041807}
18051808#endif // SEND_SANYO_AC
18061809
1810+ #if SEND_SANYO_AC88
1811+ // / Send a Sanyo 88-bit A/C message with the supplied settings.
1812+ // / @param[in, out] ac A Ptr to an IRSanyoAc88 object to use.
1813+ // / @param[in] on The power setting.
1814+ // / @param[in] mode The operation mode setting.
1815+ // / @param[in] degrees The temperature setting in degrees.
1816+ // / @param[in] fan The speed setting for the fan.
1817+ // / @param[in] swingv The vertical swing setting.
1818+ // / @param[in] turbo Run the device in turbo/powerful mode.
1819+ // / @param[in] filter Turn on the (ion/pollen/etc) filter mode.
1820+ // / @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on.
1821+ // / @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore.
1822+ void IRac::sanyo88 (IRSanyoAc88 *ac,
1823+ const bool on, const stdAc::opmode_t mode,
1824+ const float degrees, const stdAc::fanspeed_t fan,
1825+ const stdAc::swingv_t swingv, const bool turbo,
1826+ const bool filter, const int16_t sleep,
1827+ const int16_t clock) {
1828+ ac->begin ();
1829+ ac->setPower (on);
1830+ ac->setMode (ac->convertMode (mode));
1831+ ac->setTemp (degrees);
1832+ ac->setFan (ac->convertFan (fan));
1833+ ac->setSwingV (swingv != stdAc::swingv_t ::kOff );
1834+ // No Horizontal swing setting available.
1835+ // No Quiet setting available.
1836+ ac->setTurbo (turbo);
1837+ // No Econo setting available.
1838+ // No Light setting available.
1839+ ac->setFilter (filter);
1840+ // No Clean setting available.
1841+ // No Beep setting available.
1842+ ac->setSleep (sleep >= 0 ); // Sleep is either on/off, so convert to boolean.
1843+ if (clock >= 0 ) ac->setClock (clock);
1844+ ac->send ();
1845+ }
1846+ #endif // SEND_SANYO_AC88
1847+
18071848#if SEND_SHARP_AC
18081849// / Send a Sharp A/C message with the supplied settings.
18091850// / @note Multiple IR messages may be generated & sent.
@@ -2798,6 +2839,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
27982839 break ;
27992840 }
28002841#endif // SEND_SANYO_AC
2842+ #if SEND_SANYO_AC88
2843+ case SANYO_AC88:
2844+ {
2845+ IRSanyoAc88 ac (_pin, _inverted, _modulation);
2846+ sanyo88 (&ac, send.power , send.mode , degC, send.fanspeed , send.swingv ,
2847+ send.turbo , send.filter , send.sleep , send.clock );
2848+ break ;
2849+ }
2850+ #endif // SEND_SANYO_AC88
28012851#if SEND_SHARP_AC
28022852 case SHARP_AC:
28032853 {
@@ -2912,7 +2962,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
29122962 return false ; // Fail, didn't match anything.
29132963 }
29142964 return true ; // Success.
2915- }
2965+ } // NOLINT(readability/fn_size)
29162966
29172967// / Update the previous state to the current one.
29182968void IRac::markAsSent (void ) {
@@ -3529,6 +3579,13 @@ namespace IRAcUtils {
35293579 return ac.toString ();
35303580 }
35313581#endif // DECODE_SANYO_AC
3582+ #if DECODE_SANYO_AC88
3583+ case decode_type_t ::SANYO_AC88: {
3584+ IRSanyoAc88 ac (kGpioUnused );
3585+ ac.setRaw (result->state );
3586+ return ac.toString ();
3587+ }
3588+ #endif // DECODE_SANYO_AC88
35323589#if DECODE_SHARP_AC
35333590 case decode_type_t ::SHARP_AC: {
35343591 IRSharpAc ac (kGpioUnused );
@@ -4006,6 +4063,14 @@ namespace IRAcUtils {
40064063 break ;
40074064 }
40084065#endif // DECODE_SANYO_AC
4066+ #if DECODE_SANYO_AC88
4067+ case decode_type_t ::SANYO_AC88: {
4068+ IRSanyoAc88 ac (kGpioUnused );
4069+ ac.setRaw (decode->state );
4070+ *result = ac.toCommon ();
4071+ break ;
4072+ }
4073+ #endif // DECODE_SANYO_AC88
40094074#if DECODE_SHARP_AC
40104075 case decode_type_t ::SHARP_AC: {
40114076 IRSharpAc ac (kGpioUnused );
0 commit comments