Merge pull request #8493 from s-hadinger/ir_277
Change IRremoteESP8266 library updated to v2.7.7
|
@ -1,103 +0,0 @@
|
|||
// Copyright 2018 David Conran
|
||||
|
||||
// Supports:
|
||||
// Brand: Carrier/Surrey, Model: 42QG5A55970 remote
|
||||
// Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C
|
||||
// Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C
|
||||
// Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C
|
||||
// Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C
|
||||
// Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter
|
||||
|
||||
#include "IRrecv.h"
|
||||
#include "IRsend.h"
|
||||
#include "IRutils.h"
|
||||
|
||||
// Constants
|
||||
// Ref:
|
||||
// https://github.com/crankyoldgit/IRremoteESP8266/issues/385
|
||||
const uint16_t kCarrierAcHdrMark = 8532;
|
||||
const uint16_t kCarrierAcHdrSpace = 4228;
|
||||
const uint16_t kCarrierAcBitMark = 628;
|
||||
const uint16_t kCarrierAcOneSpace = 1320;
|
||||
const uint16_t kCarrierAcZeroSpace = 532;
|
||||
const uint16_t kCarrierAcGap = 20000;
|
||||
|
||||
#if SEND_CARRIER_AC
|
||||
// Send a Carrier HVAC formatted message.
|
||||
//
|
||||
// Args:
|
||||
// data: The message to be sent.
|
||||
// nbits: The bit size of the message being sent. typically kCarrierAcBits.
|
||||
// repeat: The number of times the message is to be repeated.
|
||||
//
|
||||
// Status: STABLE / Work on real devices.
|
||||
//
|
||||
void IRsend::sendCarrierAC(uint64_t data, uint16_t nbits, uint16_t repeat) {
|
||||
for (uint16_t r = 0; r <= repeat; r++) {
|
||||
uint64_t temp_data = data;
|
||||
// Carrier sends the data block three times. normal + inverted + normal.
|
||||
for (uint16_t i = 0; i < 3; i++) {
|
||||
sendGeneric(kCarrierAcHdrMark, kCarrierAcHdrSpace, kCarrierAcBitMark,
|
||||
kCarrierAcOneSpace, kCarrierAcBitMark, kCarrierAcZeroSpace,
|
||||
kCarrierAcBitMark, kCarrierAcGap, temp_data, nbits, 38, true,
|
||||
0, kDutyDefault);
|
||||
temp_data = invertBits(temp_data, nbits);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DECODE_CARRIER_AC
|
||||
// Decode the supplied Carrier HVAC message.
|
||||
// Carrier HVAC messages contain only 32 bits, but it is sent three(3) times.
|
||||
// i.e. normal + inverted + normal
|
||||
// Args:
|
||||
// results: Ptr to the data to decode and where to store the decode result.
|
||||
// offset: The starting index to use when attempting to decode the raw data.
|
||||
// Typically/Defaults to kStartOffset.
|
||||
// nbits: Nr. of bits to expect in the data portion.
|
||||
// Typically kCarrierAcBits.
|
||||
// strict: Flag to indicate if we strictly adhere to the specification.
|
||||
// Returns:
|
||||
// boolean: True if it can decode it, false if it can't.
|
||||
//
|
||||
// Status: BETA / Probably works.
|
||||
//
|
||||
bool IRrecv::decodeCarrierAC(decode_results *results, uint16_t offset,
|
||||
const uint16_t nbits, const bool strict) {
|
||||
if (results->rawlen < ((2 * nbits + kHeader + kFooter) * 3) - 1 + offset)
|
||||
return false; // Can't possibly be a valid Carrier message.
|
||||
if (strict && nbits != kCarrierAcBits)
|
||||
return false; // We expect Carrier to be 32 bits of message.
|
||||
|
||||
uint64_t data = 0;
|
||||
uint64_t prev_data = 0;
|
||||
|
||||
for (uint8_t i = 0; i < 3; i++) {
|
||||
prev_data = data;
|
||||
// Match Header + Data + Footer
|
||||
uint16_t used;
|
||||
used = matchGeneric(results->rawbuf + offset, &data,
|
||||
results->rawlen - offset, nbits,
|
||||
kCarrierAcHdrMark, kCarrierAcHdrSpace,
|
||||
kCarrierAcBitMark, kCarrierAcOneSpace,
|
||||
kCarrierAcBitMark, kCarrierAcZeroSpace,
|
||||
kCarrierAcBitMark, kCarrierAcGap, true);
|
||||
if (!used) return false;
|
||||
offset += used;
|
||||
// Compliance.
|
||||
if (strict) {
|
||||
// Check if the data is an inverted copy of the previous data.
|
||||
if (i > 0 && prev_data != invertBits(data, nbits)) return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Success
|
||||
results->bits = nbits;
|
||||
results->value = data;
|
||||
results->decode_type = CARRIER_AC;
|
||||
results->address = data >> 16;
|
||||
results->command = data & 0xFFFF;
|
||||
return true;
|
||||
}
|
||||
#endif
|
|
@ -1,107 +0,0 @@
|
|||
// Copyright 2019 crankyoldgit
|
||||
|
||||
// Supports:
|
||||
// Brand: Sharp, Model: LC-52D62U TV
|
||||
// Brand: Sharp, Model: AY-ZP40KR A/C
|
||||
// Brand: Sharp, Model: AH-AxSAY A/C
|
||||
|
||||
#ifndef IR_SHARP_H_
|
||||
#define IR_SHARP_H_
|
||||
|
||||
#ifndef UNIT_TEST
|
||||
#include <Arduino.h>
|
||||
#endif
|
||||
#include "IRrecv.h"
|
||||
#include "IRremoteESP8266.h"
|
||||
#include "IRsend.h"
|
||||
#ifdef UNIT_TEST
|
||||
#include "IRsend_test.h"
|
||||
#endif
|
||||
|
||||
// Constants
|
||||
const uint16_t kSharpAcHdrMark = 3800;
|
||||
const uint16_t kSharpAcHdrSpace = 1900;
|
||||
const uint16_t kSharpAcBitMark = 470;
|
||||
const uint16_t kSharpAcZeroSpace = 500;
|
||||
const uint16_t kSharpAcOneSpace = 1400;
|
||||
const uint32_t kSharpAcGap = kDefaultMessageGap;
|
||||
|
||||
const uint8_t kSharpAcAuto = 0b000;
|
||||
const uint8_t kSharpAcDry = 0b011;
|
||||
const uint8_t kSharpAcCool = 0b010;
|
||||
const uint8_t kSharpAcHeat = 0b001;
|
||||
const uint8_t kSharpAcMinTemp = 15; // Celsius
|
||||
const uint8_t kSharpAcMaxTemp = 30; // Celsius
|
||||
const uint8_t kSharpAcFanAuto = 0b010; // 2
|
||||
const uint8_t kSharpAcFanMin = 0b100; // 4 (FAN1)
|
||||
const uint8_t kSharpAcFanMed = 0b011; // 3 (FAN2)
|
||||
const uint8_t kSharpAcFanHigh = 0b101; // 5 (FAN3)
|
||||
const uint8_t kSharpAcFanMax = 0b111; // 7 (FAN4)
|
||||
const uint8_t kSharpAcByteTemp = 4;
|
||||
const uint8_t kSharpAcBytePower = 5;
|
||||
const uint8_t kSharpAcBitPowerOffset = 4; // 0b000x0000
|
||||
const uint8_t kSharpAcBitPreviousPowerOffset = 5; // 0b00x00000
|
||||
const uint8_t kSharpAcByteMode = 6;
|
||||
const uint8_t kSharpAcModeSize = 2; // Mask 0b00000011;
|
||||
const uint8_t kSharpAcByteFan = kSharpAcByteMode;
|
||||
const uint8_t kSharpAcFanOffset = 4; // Mask 0b01110000
|
||||
const uint8_t kSharpAcFanSize = 3; // Nr. of Bits
|
||||
const uint8_t kSharpAcByteButton = 10;
|
||||
const uint8_t kSharpAcButtonOffset = 0;
|
||||
const uint8_t kSharpAcButtonSize = 3; // Mask 0b00000xxx
|
||||
const uint8_t kSharpAcButtonPowerMode = 0b000; // 0
|
||||
const uint8_t kSharpAcButtonTemp = 0b100; // 4
|
||||
const uint8_t kSharpAcButtonFan = 0b101; // 5
|
||||
|
||||
class IRSharpAc {
|
||||
public:
|
||||
explicit IRSharpAc(const uint16_t pin, const bool inverted = false,
|
||||
const bool use_modulation = true);
|
||||
|
||||
#if SEND_SHARP_AC
|
||||
void send(const uint16_t repeat = kSharpAcDefaultRepeat);
|
||||
uint8_t calibrate(void) { return _irsend.calibrate(); }
|
||||
#endif // SEND_SHARP_AC
|
||||
void begin(void);
|
||||
void on(void);
|
||||
void off(void);
|
||||
void setPower(const bool on);
|
||||
void setPower(const bool on, const bool prev);
|
||||
bool getPower(void);
|
||||
void setPreviousPower(const bool on);
|
||||
bool getPreviousPower(void);
|
||||
void setTemp(const uint8_t temp);
|
||||
uint8_t getTemp(void);
|
||||
void setFan(const uint8_t fan);
|
||||
uint8_t getFan(void);
|
||||
void setMode(const uint8_t mode);
|
||||
uint8_t getMode(void);
|
||||
void setButton(const uint8_t button);
|
||||
uint8_t getButton(void);
|
||||
uint8_t* getRaw(void);
|
||||
void setRaw(const uint8_t new_code[],
|
||||
const uint16_t length = kSharpAcStateLength);
|
||||
static bool validChecksum(uint8_t state[],
|
||||
const uint16_t length = kSharpAcStateLength);
|
||||
static uint8_t convertMode(const stdAc::opmode_t mode);
|
||||
static uint8_t convertFan(const stdAc::fanspeed_t speed);
|
||||
static stdAc::opmode_t toCommonMode(const uint8_t mode);
|
||||
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
|
||||
stdAc::state_t toCommon(void);
|
||||
String toString(void);
|
||||
#ifndef UNIT_TEST
|
||||
|
||||
private:
|
||||
IRsend _irsend;
|
||||
#else
|
||||
IRsendTest _irsend;
|
||||
#endif
|
||||
// # of bytes per command
|
||||
uint8_t remote[kSharpAcStateLength];
|
||||
void stateReset(void);
|
||||
void checksum(void);
|
||||
static uint8_t calcChecksum(uint8_t state[],
|
||||
const uint16_t length = kSharpAcStateLength);
|
||||
};
|
||||
|
||||
#endif // IR_SHARP_H_
|
|
@ -1,653 +0,0 @@
|
|||
# SYNOPSIS:
|
||||
#
|
||||
# make [all] - makes everything.
|
||||
# make TARGET - makes the given target.
|
||||
# make run - makes everything and runs all the tests.
|
||||
# make clean - removes all files generated by make.
|
||||
# make install-googletest - install the googletest code suite
|
||||
|
||||
# Please tweak the following variable definitions as needed by your
|
||||
# project, except GTEST_HEADERS, which you can use in your own targets
|
||||
# but shouldn't modify.
|
||||
|
||||
# Points to the root of Google Test, relative to where this file is.
|
||||
# Remember to tweak this if you move this file.
|
||||
GTEST_DIR = ../lib/googletest/googletest
|
||||
|
||||
# Where to find user code.
|
||||
USER_DIR = ../src
|
||||
INCLUDES = -I$(USER_DIR) -I.
|
||||
|
||||
# Flags passed to the preprocessor.
|
||||
# Set Google Test's header directory as a system directory, such that
|
||||
# the compiler doesn't generate warnings in Google Test headers.
|
||||
CPPFLAGS += -isystem $(GTEST_DIR)/include -DUNIT_TEST -D_IR_LOCALE_=en-AU
|
||||
|
||||
# Flags passed to the C++ compiler.
|
||||
CXXFLAGS += -g -Wall -Wextra -pthread -std=gnu++11
|
||||
|
||||
# All tests produced by this Makefile. Remember to add new tests you
|
||||
# created to the list.
|
||||
TESTS = IRutils_test IRsend_test ir_NEC_test ir_GlobalCache_test \
|
||||
ir_Sherwood_test ir_Sony_test ir_Samsung_test ir_Kelvinator_test \
|
||||
ir_JVC_test ir_RCMM_test ir_LG_test ir_Mitsubishi_test ir_Sharp_test \
|
||||
ir_RC5_RC6_test ir_Panasonic_test ir_Dish_test ir_Whynter_test \
|
||||
ir_Aiwa_test ir_Denon_test ir_Sanyo_test ir_Daikin_test ir_Coolix_test \
|
||||
ir_Gree_test IRrecv_test ir_Pronto_test ir_Fujitsu_test ir_Nikai_test \
|
||||
ir_Toshiba_test ir_Midea_test ir_Magiquest_test ir_Lasertag_test \
|
||||
ir_Carrier_test ir_Haier_test ir_Hitachi_test ir_GICable_test \
|
||||
ir_Whirlpool_test ir_Lutron_test ir_Electra_test ir_Pioneer_test \
|
||||
ir_MWM_test ir_Vestel_test ir_Teco_test ir_Tcl_test ir_Lego_test IRac_test \
|
||||
ir_MitsubishiHeavy_test ir_Trotec_test ir_Argo_test ir_Goodweather_test \
|
||||
ir_Inax_test ir_Neoclima_test ir_Amcor_test ir_Epson_test ir_Symphony_test \
|
||||
ir_Airwell_test
|
||||
|
||||
# All Google Test headers. Usually you shouldn't change this
|
||||
# definition.
|
||||
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
|
||||
$(GTEST_DIR)/include/gtest/internal/*.h
|
||||
|
||||
# House-keeping build targets.
|
||||
|
||||
all : $(TESTS)
|
||||
|
||||
clean :
|
||||
rm -f $(TESTS) gtest.a gtest_main.a *.o
|
||||
|
||||
# Build and run all the tests.
|
||||
run : all
|
||||
failed=""; \
|
||||
for unittest in $(TESTS); do \
|
||||
./$${unittest} || failed="$${failed} $${unittest}"; \
|
||||
done; \
|
||||
if [ -n "$${failed}" ]; then \
|
||||
echo "FAIL: :-( :-( Unit test(s)$${failed} failed! :-( :-("; exit 1; \
|
||||
else \
|
||||
echo "PASS: \o/ \o/ All unit tests passed. \o/ \o/"; \
|
||||
fi
|
||||
|
||||
run_tests : run
|
||||
|
||||
install-googletest :
|
||||
git clone -b v1.8.x https://github.com/google/googletest.git ../lib/googletest
|
||||
|
||||
# Builds gtest.a and gtest_main.a.
|
||||
|
||||
# Usually you shouldn't tweak such internal variables, indicated by a
|
||||
# trailing _.
|
||||
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
|
||||
|
||||
# All the IR protocol object files.
|
||||
PROTOCOLS = ir_NEC.o ir_Sony.o ir_Samsung.o ir_JVC.o ir_RCMM.o ir_RC5_RC6.o \
|
||||
ir_LG.o ir_Mitsubishi.o ir_Fujitsu.o ir_Sharp.o ir_Sanyo.o ir_Denon.o ir_Dish.o \
|
||||
ir_Panasonic.o ir_Whynter.o ir_Coolix.o ir_Aiwa.o ir_Sherwood.o \
|
||||
ir_Kelvinator.o ir_Daikin.o ir_Gree.o ir_Pronto.o ir_Nikai.o ir_Toshiba.o \
|
||||
ir_Midea.o ir_Magiquest.o ir_Lasertag.o ir_Carrier.o ir_Haier.o \
|
||||
ir_Hitachi.o ir_GICable.o ir_Whirlpool.o ir_Lutron.o ir_Electra.o \
|
||||
ir_Pioneer.o ir_MWM.o ir_Vestel.o ir_Teco.o ir_Tcl.o ir_Lego.o ir_Argo.o \
|
||||
ir_Trotec.o ir_MitsubishiHeavy.o ir_Goodweather.o ir_Inax.o ir_Neoclima.o \
|
||||
ir_Amcor.o ir_Epson.o ir_Symphony.o ir_Airwell.o
|
||||
|
||||
# All the IR Protocol header files.
|
||||
PROTOCOLS_H = $(USER_DIR)/ir_Amcor.h \
|
||||
$(USER_DIR)/ir_Argo.h \
|
||||
$(USER_DIR)/ir_Gree.h \
|
||||
$(USER_DIR)/ir_Magiquest.h \
|
||||
$(USER_DIR)/ir_Coolix.h \
|
||||
$(USER_DIR)/ir_Electra.h \
|
||||
$(USER_DIR)/ir_Haier.h \
|
||||
$(USER_DIR)/ir_Hitachi.h \
|
||||
$(USER_DIR)/ir_Midea.h \
|
||||
$(USER_DIR)/ir_Toshiba.h \
|
||||
$(USER_DIR)/ir_Daikin.h \
|
||||
$(USER_DIR)/ir_Goodweather.h \
|
||||
$(USER_DIR)/ir_Kelvinator.h \
|
||||
$(USER_DIR)/ir_Mitsubishi.h \
|
||||
$(USER_DIR)/ir_MitsubishiHeavy.h \
|
||||
$(USER_DIR)/ir_NEC.h \
|
||||
$(USER_DIR)/ir_Neoclima.h \
|
||||
$(USER_DIR)/ir_Sharp.h \
|
||||
$(USER_DIR)/ir_Samsung.h \
|
||||
$(USER_DIR)/ir_Trotec.h \
|
||||
$(USER_DIR)/ir_Fujitsu.h \
|
||||
$(USER_DIR)/ir_LG.h \
|
||||
$(USER_DIR)/ir_Panasonic.h \
|
||||
$(USER_DIR)/ir_Whirlpool.h \
|
||||
$(USER_DIR)/ir_Vestel.h \
|
||||
$(USER_DIR)/ir_Tcl.h \
|
||||
$(USER_DIR)/ir_Teco.h \
|
||||
$(USER_DIR)/ir_Trotec.h
|
||||
# Common object files
|
||||
COMMON_OBJ = IRutils.o IRtimer.o IRsend.o IRrecv.o IRac.o ir_GlobalCache.o \
|
||||
IRtext.o $(PROTOCOLS) gtest_main.a
|
||||
# Common dependencies
|
||||
COMMON_DEPS = $(USER_DIR)/IRrecv.h $(USER_DIR)/IRsend.h $(USER_DIR)/IRtimer.h \
|
||||
$(USER_DIR)/IRutils.h $(USER_DIR)/IRremoteESP8266.h \
|
||||
$(USER_DIR)/IRac.h $(USER_DIR)/i18n.h $(USER_DIR)/IRtext.h \
|
||||
$(PROTOCOLS_H)
|
||||
|
||||
# Common test dependencies
|
||||
COMMON_TEST_DEPS = $(COMMON_DEPS) IRrecv_test.h IRsend_test.h
|
||||
|
||||
# For simplicity and to avoid depending on Google Test's
|
||||
# implementation details, the dependencies specified below are
|
||||
# conservative and not optimized. This is fine as Google Test
|
||||
# compiles fast and for ordinary users its source rarely changes.
|
||||
gtest-all.o : $(GTEST_SRCS_)
|
||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
|
||||
$(GTEST_DIR)/src/gtest-all.cc
|
||||
|
||||
gtest_main.o : $(GTEST_SRCS_)
|
||||
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
|
||||
$(GTEST_DIR)/src/gtest_main.cc
|
||||
|
||||
gtest.a : gtest-all.o
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
|
||||
gtest_main.a : gtest-all.o gtest_main.o
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
|
||||
# Builds our test. A test should link with either gtest.a or
|
||||
# gtest_main.a, depending on whether it defines its own main()
|
||||
# function.
|
||||
|
||||
IRtext.o : $(USER_DIR)/IRtext.cpp $(USER_DIR)/IRtext.h $(USER_DIR)/IRremoteESP8266.h $(USER_DIR)/i18n.h $(USER_DIR)/locale/*.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/IRtext.cpp
|
||||
|
||||
IRutils.o : $(USER_DIR)/IRutils.cpp $(USER_DIR)/IRutils.h $(USER_DIR)/IRremoteESP8266.h $(USER_DIR)/i18n.h $(USER_DIR)/IRtext.cpp $(USER_DIR)/IRtext.h $(USER_DIR)/locale/*.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/IRutils.cpp
|
||||
|
||||
IRutils_test.o : IRutils_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c IRutils_test.cpp
|
||||
|
||||
IRutils_test : IRutils_test.o ir_NEC.o ir_Nikai.o ir_Toshiba.o IRtext.o $(COMMON_OBJ) gtest_main.a
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
IRtimer.o : $(USER_DIR)/IRtimer.cpp $(USER_DIR)/IRtimer.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRtimer.cpp
|
||||
|
||||
IRsend.o : $(USER_DIR)/IRsend.cpp $(USER_DIR)/IRsend.h $(USER_DIR)/IRremoteESP8266.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRsend.cpp
|
||||
|
||||
IRsend_test.o : IRsend_test.cpp $(USER_DIR)/IRsend.h $(USER_DIR)/IRrecv.h IRsend_test.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c IRsend_test.cpp
|
||||
|
||||
IRsend_test : IRsend_test.o $(COMMON_OBJ)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
IRrecv.o : $(USER_DIR)/IRrecv.cpp $(USER_DIR)/IRrecv.h $(USER_DIR)/IRremoteESP8266.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRrecv.cpp
|
||||
|
||||
IRrecv_test.o : IRrecv_test.cpp $(USER_DIR)/IRsend.h $(USER_DIR)/IRrecv.h IRsend_test.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c IRrecv_test.cpp
|
||||
|
||||
IRrecv_test : IRrecv_test.o $(COMMON_OBJ)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
IRac.o : $(USER_DIR)/IRac.cpp $(USER_DIR)/IRac.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/IRac.cpp
|
||||
|
||||
IRac_test.o : IRac_test.cpp $(USER_DIR)/IRac.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c IRac_test.cpp
|
||||
|
||||
IRac_test : IRac_test.o $(COMMON_OBJ)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_NEC.o : $(USER_DIR)/ir_NEC.cpp $(USER_DIR)/ir_NEC.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_NEC.cpp
|
||||
|
||||
ir_NEC_test.o : ir_NEC_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_NEC_test.cpp
|
||||
|
||||
ir_NEC_test : $(COMMON_OBJ) ir_NEC_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_GlobalCache.o : $(USER_DIR)/ir_GlobalCache.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_GlobalCache.cpp
|
||||
|
||||
ir_GlobalCache_test.o : ir_GlobalCache_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_GlobalCache_test.cpp
|
||||
|
||||
ir_GlobalCache_test : $(COMMON_OBJ) ir_GlobalCache_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Sherwood.o : $(USER_DIR)/ir_Sherwood.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Sherwood.cpp
|
||||
|
||||
ir_Sherwood_test.o : ir_Sherwood_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Sherwood_test.cpp
|
||||
|
||||
ir_Sherwood_test : $(COMMON_OBJ) ir_Sherwood_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Sony.o : $(USER_DIR)/ir_Sony.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Sony.cpp
|
||||
|
||||
ir_Sony_test.o : ir_Sony_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Sony_test.cpp
|
||||
|
||||
ir_Sony_test : $(COMMON_OBJ) ir_Sony_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Samsung.o : $(USER_DIR)/ir_Samsung.cpp $(USER_DIR)/ir_Samsung.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Samsung.cpp
|
||||
|
||||
ir_Samsung_test.o : ir_Samsung_test.cpp $(USER_DIR)/ir_Samsung.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Samsung_test.cpp
|
||||
|
||||
ir_Samsung_test : $(COMMON_OBJ) ir_Samsung_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Kelvinator.o : $(USER_DIR)/ir_Kelvinator.cpp $(USER_DIR)/ir_Kelvinator.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Kelvinator.cpp
|
||||
|
||||
ir_Kelvinator_test.o : ir_Kelvinator_test.cpp $(USER_DIR)/ir_Kelvinator.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Kelvinator_test.cpp
|
||||
|
||||
ir_Kelvinator_test : $(COMMON_OBJ) ir_Kelvinator_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_JVC.o : $(USER_DIR)/ir_JVC.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_JVC.cpp
|
||||
|
||||
ir_JVC_test.o : ir_JVC_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_JVC_test.cpp
|
||||
|
||||
ir_JVC_test : $(COMMON_OBJ) ir_JVC_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_RCMM.o : $(USER_DIR)/ir_RCMM.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_RCMM.cpp
|
||||
|
||||
ir_RCMM_test.o : ir_RCMM_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_RCMM_test.cpp
|
||||
|
||||
ir_RCMM_test : $(COMMON_OBJ) ir_RCMM_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_LG.o : $(USER_DIR)/ir_LG.h $(USER_DIR)/ir_LG.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_LG.cpp
|
||||
|
||||
ir_LG_test.o : ir_LG_test.cpp $(USER_DIR)/ir_LG.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_LG_test.cpp
|
||||
|
||||
ir_LG_test : $(COMMON_OBJ) ir_LG_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Mitsubishi.o : $(USER_DIR)/ir_Mitsubishi.h $(USER_DIR)/ir_Mitsubishi.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Mitsubishi.cpp
|
||||
|
||||
ir_Mitsubishi_test.o : ir_Mitsubishi_test.cpp $(USER_DIR)/ir_Mitsubishi.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Mitsubishi_test.cpp
|
||||
|
||||
ir_Mitsubishi_test : $(COMMON_OBJ) ir_Mitsubishi_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_MitsubishiHeavy.o : $(USER_DIR)/ir_MitsubishiHeavy.h $(USER_DIR)/ir_MitsubishiHeavy.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_MitsubishiHeavy.cpp
|
||||
|
||||
ir_MitsubishiHeavy_test.o : ir_MitsubishiHeavy_test.cpp $(USER_DIR)/ir_MitsubishiHeavy.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_MitsubishiHeavy_test.cpp
|
||||
|
||||
ir_MitsubishiHeavy_test : $(COMMON_OBJ) ir_MitsubishiHeavy_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Fujitsu.o : $(USER_DIR)/ir_Fujitsu.h $(USER_DIR)/ir_Fujitsu.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Fujitsu.cpp
|
||||
|
||||
ir_Fujitsu_test.o : ir_Fujitsu_test.cpp $(USER_DIR)/ir_Fujitsu.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Fujitsu_test.cpp
|
||||
|
||||
ir_Fujitsu_test : $(COMMON_OBJ) ir_Fujitsu_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Sharp.o : $(USER_DIR)/ir_Sharp.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Sharp.cpp
|
||||
|
||||
ir_Sharp_test.o : ir_Sharp_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Sharp_test.cpp
|
||||
|
||||
ir_Sharp_test : $(COMMON_OBJ) ir_Sharp_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_RC5_RC6.o : $(USER_DIR)/ir_RC5_RC6.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_RC5_RC6.cpp
|
||||
|
||||
ir_RC5_RC6_test.o : ir_RC5_RC6_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_RC5_RC6_test.cpp
|
||||
|
||||
ir_RC5_RC6_test : $(COMMON_OBJ) ir_RC5_RC6_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Panasonic.o : $(USER_DIR)/ir_Panasonic.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Panasonic.cpp
|
||||
|
||||
ir_Panasonic_test.o : ir_Panasonic_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Panasonic_test.cpp
|
||||
|
||||
ir_Panasonic_test : $(COMMON_OBJ) ir_Panasonic_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Dish.o : $(USER_DIR)/ir_Dish.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Dish.cpp
|
||||
|
||||
ir_Dish_test.o : ir_Dish_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Dish_test.cpp
|
||||
|
||||
ir_Dish_test : $(COMMON_OBJ) ir_Dish_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Whynter.o : $(USER_DIR)/ir_Whynter.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Whynter.cpp
|
||||
|
||||
ir_Whynter_test.o : ir_Whynter_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Whynter_test.cpp
|
||||
|
||||
ir_Whynter_test : $(COMMON_OBJ) ir_Whynter_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Coolix.o : $(USER_DIR)/ir_Coolix.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Coolix.cpp
|
||||
|
||||
ir_Coolix_test.o : ir_Coolix_test.cpp $(USER_DIR)/ir_Coolix.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Coolix_test.cpp
|
||||
|
||||
ir_Coolix_test : $(COMMON_OBJ) ir_Coolix_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Aiwa.o : $(USER_DIR)/ir_Aiwa.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Aiwa.cpp
|
||||
|
||||
ir_Aiwa_test.o : ir_Aiwa_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Aiwa_test.cpp
|
||||
|
||||
ir_Aiwa_test : $(COMMON_OBJ) ir_Aiwa_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Denon.o : $(USER_DIR)/ir_Denon.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Denon.cpp
|
||||
|
||||
ir_Denon_test.o : ir_Denon_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Denon_test.cpp
|
||||
|
||||
ir_Denon_test : $(COMMON_OBJ) ir_Denon_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Sanyo.o : $(USER_DIR)/ir_Sanyo.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Sanyo.cpp
|
||||
|
||||
ir_Sanyo_test.o : ir_Sanyo_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Sanyo_test.cpp
|
||||
|
||||
ir_Sanyo_test : $(COMMON_OBJ) ir_Sanyo_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Daikin.o : $(USER_DIR)/ir_Daikin.cpp $(USER_DIR)/ir_Daikin.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Daikin.cpp
|
||||
|
||||
ir_Daikin_test.o : ir_Daikin_test.cpp $(USER_DIR)/ir_Daikin.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Daikin_test.cpp
|
||||
|
||||
ir_Daikin_test : $(COMMON_OBJ) ir_Daikin_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Gree.o : $(USER_DIR)/ir_Gree.cpp $(GTEST_HEADERS) $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Gree.cpp
|
||||
|
||||
ir_Gree_test.o : ir_Gree_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Gree_test.cpp
|
||||
|
||||
ir_Gree_test : $(COMMON_OBJ) ir_Gree_test.o ir_Kelvinator.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Pronto.o : $(USER_DIR)/ir_Pronto.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Pronto.cpp
|
||||
|
||||
ir_Pronto_test.o : ir_Pronto_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Pronto_test.cpp
|
||||
|
||||
ir_Pronto_test : $(COMMON_OBJ) ir_Pronto_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Nikai.o : $(USER_DIR)/ir_Nikai.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Nikai.cpp
|
||||
|
||||
ir_Nikai_test.o : ir_Nikai_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Nikai_test.cpp
|
||||
|
||||
ir_Nikai_test : $(COMMON_OBJ) ir_Nikai_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Toshiba.o : $(USER_DIR)/ir_Toshiba.cpp $(USER_DIR)/ir_Toshiba.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Toshiba.cpp
|
||||
|
||||
ir_Toshiba_test.o : ir_Toshiba_test.cpp $(USER_DIR)/ir_Toshiba.h $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Toshiba_test.cpp
|
||||
|
||||
ir_Toshiba_test : $(COMMON_OBJ) ir_Toshiba_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Midea.o : $(USER_DIR)/ir_Midea.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Midea.cpp
|
||||
|
||||
ir_Midea_test.o : ir_Midea_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Midea_test.cpp
|
||||
|
||||
ir_Midea_test : $(COMMON_OBJ) ir_Midea_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Magiquest.o : $(USER_DIR)/ir_Magiquest.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Magiquest.cpp
|
||||
|
||||
ir_Magiquest_test.o : ir_Magiquest_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Magiquest_test.cpp
|
||||
|
||||
ir_Magiquest_test : $(COMMON_OBJ) ir_Magiquest_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Lasertag.o : $(USER_DIR)/ir_Lasertag.cpp $(USER_DIR)/ir_RC5_RC6.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Lasertag.cpp
|
||||
|
||||
ir_Lasertag_test.o : ir_Lasertag_test.cpp $(USER_DIR)/ir_RC5_RC6.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Lasertag_test.cpp
|
||||
|
||||
ir_Lasertag_test : $(COMMON_OBJ) ir_Lasertag_test.o ir_RC5_RC6.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Carrier.o : $(USER_DIR)/ir_Carrier.cpp $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Carrier.cpp
|
||||
|
||||
ir_Carrier_test.o : ir_Carrier_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Carrier_test.cpp
|
||||
|
||||
ir_Carrier_test : $(COMMON_OBJ) ir_Carrier_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Haier.o : $(USER_DIR)/ir_Haier.cpp $(USER_DIR)/ir_Haier.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Haier.cpp
|
||||
|
||||
ir_Haier_test.o : ir_Haier_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Haier_test.cpp
|
||||
|
||||
ir_Haier_test : $(COMMON_OBJ) ir_Haier_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Hitachi.o : $(USER_DIR)/ir_Hitachi.cpp $(USER_DIR)/ir_Hitachi.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Hitachi.cpp
|
||||
|
||||
ir_Hitachi_test.o : ir_Hitachi_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Hitachi_test.cpp
|
||||
|
||||
ir_Hitachi_test : $(COMMON_OBJ) ir_Hitachi_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_GICable.o : $(USER_DIR)/ir_GICable.cpp $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_GICable.cpp
|
||||
|
||||
ir_GICable_test.o : ir_GICable_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_GICable_test.cpp
|
||||
|
||||
ir_GICable_test : $(COMMON_OBJ) ir_GICable_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Whirlpool.o : $(USER_DIR)/ir_Whirlpool.cpp $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Whirlpool.cpp
|
||||
|
||||
ir_Whirlpool_test.o : ir_Whirlpool_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Whirlpool_test.cpp
|
||||
|
||||
ir_Whirlpool_test : $(COMMON_OBJ) ir_Whirlpool_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Lutron.o : $(USER_DIR)/ir_Lutron.cpp $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Lutron.cpp
|
||||
|
||||
ir_Lutron_test.o : ir_Lutron_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Lutron_test.cpp
|
||||
|
||||
ir_Lutron_test : $(COMMON_OBJ) ir_Lutron_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Electra.o : $(USER_DIR)/ir_Electra.h $(USER_DIR)/ir_Electra.cpp $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Electra.cpp
|
||||
|
||||
ir_Electra_test.o : ir_Electra_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Electra_test.cpp
|
||||
|
||||
ir_Electra_test : $(COMMON_OBJ) ir_Electra_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Pioneer.o : $(USER_DIR)/ir_Pioneer.cpp $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Pioneer.cpp
|
||||
|
||||
ir_Pioneer_test.o : ir_Pioneer_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Pioneer_test.cpp
|
||||
|
||||
ir_Pioneer_test : $(COMMON_OBJ) ir_Pioneer_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_MWM.o : $(USER_DIR)/ir_MWM.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_MWM.cpp
|
||||
|
||||
ir_MWM_test.o : ir_MWM_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_MWM_test.cpp
|
||||
|
||||
ir_MWM_test : $(COMMON_OBJ) ir_MWM_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Vestel.o : $(USER_DIR)/ir_Vestel.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Vestel.cpp
|
||||
|
||||
ir_Vestel_test.o : ir_Vestel_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Vestel_test.cpp
|
||||
|
||||
ir_Vestel_test : $(COMMON_OBJ) ir_Vestel_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Teco.o : $(USER_DIR)/ir_Teco.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Teco.cpp
|
||||
|
||||
ir_Teco_test.o : ir_Teco_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Teco_test.cpp
|
||||
|
||||
ir_Teco_test : $(COMMON_OBJ) ir_Teco_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Tcl.o : $(USER_DIR)/ir_Tcl.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Tcl.cpp
|
||||
|
||||
ir_Tcl_test.o : ir_Tcl_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Tcl_test.cpp
|
||||
|
||||
ir_Tcl_test : $(COMMON_OBJ) ir_Tcl_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Lego.o : $(USER_DIR)/ir_Lego.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Lego.cpp
|
||||
|
||||
ir_Lego_test.o : ir_Lego_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Lego_test.cpp
|
||||
|
||||
ir_Lego_test : $(COMMON_OBJ) ir_Lego_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Argo.o : $(USER_DIR)/ir_Argo.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Argo.cpp
|
||||
|
||||
ir_Argo_test.o : ir_Argo_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Argo_test.cpp
|
||||
|
||||
ir_Argo_test : $(COMMON_OBJ) ir_Argo_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Trotec.o : $(USER_DIR)/ir_Trotec.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Trotec.cpp
|
||||
|
||||
ir_Trotec_test.o : ir_Trotec_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Trotec_test.cpp
|
||||
|
||||
ir_Trotec_test : $(COMMON_OBJ) ir_Trotec_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Goodweather.o : $(USER_DIR)/ir_Goodweather.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Goodweather.cpp
|
||||
|
||||
ir_Goodweather_test.o : ir_Goodweather_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Goodweather_test.cpp
|
||||
|
||||
ir_Goodweather_test : $(COMMON_OBJ) ir_Goodweather_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Inax.o : $(USER_DIR)/ir_Inax.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Inax.cpp
|
||||
|
||||
ir_Inax_test.o : ir_Inax_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Inax_test.cpp
|
||||
|
||||
ir_Inax_test : $(COMMON_OBJ) ir_Inax_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Neoclima.o : $(USER_DIR)/ir_Neoclima.h $(USER_DIR)/ir_Neoclima.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Neoclima.cpp
|
||||
|
||||
ir_Neoclima_test.o : ir_Neoclima_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Neoclima_test.cpp
|
||||
|
||||
ir_Neoclima_test : $(COMMON_OBJ) ir_Neoclima_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Amcor.o : $(USER_DIR)/ir_Amcor.h $(USER_DIR)/ir_Amcor.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Amcor.cpp
|
||||
|
||||
ir_Amcor_test.o : ir_Amcor_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Amcor_test.cpp
|
||||
|
||||
ir_Amcor_test : $(COMMON_OBJ) ir_Amcor_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Epson.o : $(USER_DIR)/ir_Epson.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Epson.cpp
|
||||
|
||||
ir_Epson_test.o : ir_Epson_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Epson_test.cpp
|
||||
|
||||
ir_Epson_test : $(COMMON_OBJ) ir_Epson_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Symphony.o : $(USER_DIR)/ir_Symphony.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Symphony.cpp
|
||||
|
||||
ir_Symphony_test.o : ir_Symphony_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Symphony_test.cpp
|
||||
|
||||
ir_Symphony_test : $(COMMON_OBJ) ir_Symphony_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
ir_Airwell.o : $(USER_DIR)/ir_Airwell.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Airwell.cpp
|
||||
|
||||
ir_Airwell_test.o : ir_Airwell_test.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c ir_Airwell_test.cpp
|
||||
|
||||
ir_Airwell_test : $(COMMON_OBJ) ir_Airwell_test.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
|
@ -1,248 +0,0 @@
|
|||
# SYNOPSIS:
|
||||
#
|
||||
# make [all] - makes everything.
|
||||
# make clean - removes all files generated by make.
|
||||
|
||||
# Please tweak the following variable definitions as needed by your
|
||||
# project, except GTEST_HEADERS, which you can use in your own targets
|
||||
# but shouldn't modify.
|
||||
|
||||
|
||||
# Where to find user code.
|
||||
USER_DIR = ../src
|
||||
|
||||
# Where to find test code.
|
||||
TEST_DIR = ../test
|
||||
|
||||
INCLUDES = -I$(USER_DIR) -I$(TEST_DIR)
|
||||
# Flags passed to the preprocessor.
|
||||
# Set Google Test's header directory as a system directory, such that
|
||||
# the compiler doesn't generate warnings in Google Test headers.
|
||||
CPPFLAGS += -DUNIT_TEST -D_IR_LOCALE_=en-AU
|
||||
|
||||
# Flags passed to the C++ compiler.
|
||||
CXXFLAGS += -g -Wall -Wextra -pthread -std=gnu++11
|
||||
|
||||
all : gc_decode mode2_decode
|
||||
|
||||
run_tests : all
|
||||
failed=""; \
|
||||
for py_unittest in *_test.py; do \
|
||||
echo "RUNNING: $${py_unittest}"; \
|
||||
python3 ./$${py_unittest} || failed="$${failed} $${py_unittest}"; \
|
||||
done; \
|
||||
if [ -n "$${failed}" ]; then \
|
||||
echo "FAIL: :-( :-( Unit test(s)$${failed} failed! :-( :-("; exit 1; \
|
||||
else \
|
||||
echo "PASS: \o/ \o/ All unit tests passed. \o/ \o/"; \
|
||||
fi
|
||||
|
||||
clean :
|
||||
rm -f *.o *.pyc gc_decode mode2_decode
|
||||
|
||||
|
||||
# All the IR protocol object files.
|
||||
PROTOCOLS = ir_NEC.o ir_Sony.o ir_Samsung.o ir_JVC.o ir_RCMM.o ir_RC5_RC6.o \
|
||||
ir_LG.o ir_Mitsubishi.o ir_Fujitsu.o ir_Sharp.o ir_Sanyo.o \
|
||||
ir_Denon.o ir_Dish.o ir_Panasonic.o ir_Whynter.o ir_Coolix.o \
|
||||
ir_Aiwa.o ir_Sherwood.o ir_Kelvinator.o ir_Daikin.o ir_Gree.o \
|
||||
ir_Pronto.o ir_GlobalCache.o ir_Nikai.o ir_Toshiba.o ir_Midea.o \
|
||||
ir_Magiquest.o ir_Lasertag.o ir_Carrier.o ir_Haier.o ir_Hitachi.o \
|
||||
ir_GICable.o ir_Whirlpool.o ir_Lutron.o ir_Electra.o ir_Pioneer.o \
|
||||
ir_MWM.o ir_Vestel.o ir_Teco.o ir_Tcl.o ir_Lego.o \
|
||||
ir_MitsubishiHeavy.o ir_Goodweather.o ir_Inax.o ir_Argo.o \
|
||||
ir_Trotec.o ir_Neoclima.o ir_Amcor.o ir_Epson.o ir_Symphony.o \
|
||||
ir_Airwell.o
|
||||
|
||||
# Common object files
|
||||
COMMON_OBJ = IRutils.o IRtimer.o IRsend.o IRrecv.o IRtext.o IRac.o $(PROTOCOLS)
|
||||
|
||||
# Common dependencies
|
||||
COMMON_DEPS = $(USER_DIR)/IRrecv.h $(USER_DIR)/IRsend.h $(USER_DIR)/IRtimer.h \
|
||||
$(USER_DIR)/IRutils.h $(USER_DIR)/IRremoteESP8266.h \
|
||||
$(TEST_DIR)/IRsend_test.h $(USER_DIR)/IRtext.h $(USER_DIR)/i18n.h
|
||||
# Common test dependencies
|
||||
COMMON_TEST_DEPS = $(COMMON_DEPS) $(TEST_DIR)/IRsend_test.h
|
||||
|
||||
gc_decode.o : gc_decode.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c gc_decode.cpp
|
||||
|
||||
gc_decode : $(COMMON_OBJ) gc_decode.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
mode2_decode.o : mode2_decode.cpp $(COMMON_TEST_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c mode2_decode.cpp
|
||||
|
||||
mode2_decode : $(COMMON_OBJ) mode2_decode.o
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
|
||||
|
||||
IRtext.o : $(USER_DIR)/IRtext.cpp $(USER_DIR)/IRtext.h $(USER_DIR)/IRremoteESP8266.h $(USER_DIR)/i18n.h $(USER_DIR)/locale/*.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/IRtext.cpp
|
||||
|
||||
IRutils.o : $(USER_DIR)/IRutils.cpp $(USER_DIR)/IRutils.h $(USER_DIR)/IRremoteESP8266.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRutils.cpp
|
||||
|
||||
IRtimer.o : $(USER_DIR)/IRtimer.cpp $(USER_DIR)/IRtimer.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRtimer.cpp
|
||||
|
||||
IRsend.o : $(USER_DIR)/IRsend.cpp $(USER_DIR)/IRsend.h $(USER_DIR)/IRremoteESP8266.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRsend.cpp
|
||||
|
||||
IRrecv.o : $(USER_DIR)/IRrecv.cpp $(USER_DIR)/IRrecv.h $(USER_DIR)/IRremoteESP8266.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/IRrecv.cpp
|
||||
|
||||
ir_NEC.o : $(USER_DIR)/ir_NEC.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_NEC.cpp
|
||||
|
||||
ir_GlobalCache.o : $(USER_DIR)/ir_GlobalCache.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_GlobalCache.cpp
|
||||
|
||||
ir_Sherwood.o : $(USER_DIR)/ir_Sherwood.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Sherwood.cpp
|
||||
|
||||
ir_Sony.o : $(USER_DIR)/ir_Sony.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Sony.cpp
|
||||
|
||||
ir_Samsung.o : $(USER_DIR)/ir_Samsung.cpp $(USER_DIR)/ir_Samsung.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Samsung.cpp
|
||||
|
||||
ir_Kelvinator.o : $(USER_DIR)/ir_Kelvinator.cpp $(USER_DIR)/ir_Kelvinator.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Kelvinator.cpp
|
||||
|
||||
ir_Inax.o : $(USER_DIR)/ir_Inax.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Inax.cpp
|
||||
|
||||
ir_JVC.o : $(USER_DIR)/ir_JVC.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_JVC.cpp
|
||||
|
||||
ir_RCMM.o : $(USER_DIR)/ir_RCMM.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_RCMM.cpp
|
||||
|
||||
ir_LG.o : $(USER_DIR)/ir_LG.h $(USER_DIR)/ir_LG.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_LG.cpp
|
||||
|
||||
ir_Mitsubishi.o : $(USER_DIR)/ir_Mitsubishi.h $(USER_DIR)/ir_Mitsubishi.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Mitsubishi.cpp
|
||||
|
||||
ir_MitsubishiHeavy.o : $(USER_DIR)/ir_MitsubishiHeavy.h $(USER_DIR)/ir_MitsubishiHeavy.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_MitsubishiHeavy.cpp
|
||||
|
||||
ir_Fujitsu.o : $(USER_DIR)/ir_Fujitsu.h $(USER_DIR)/ir_Fujitsu.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Fujitsu.cpp
|
||||
|
||||
ir_Sharp.o : $(USER_DIR)/ir_Sharp.h $(USER_DIR)/ir_Sharp.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Sharp.cpp
|
||||
|
||||
ir_RC5_RC6.o : $(USER_DIR)/ir_RC5_RC6.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_RC5_RC6.cpp
|
||||
|
||||
ir_Panasonic.o : $(USER_DIR)/ir_Panasonic.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Panasonic.cpp
|
||||
|
||||
ir_Dish.o : $(USER_DIR)/ir_Dish.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Dish.cpp
|
||||
|
||||
ir_Whynter.o : $(USER_DIR)/ir_Whynter.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Whynter.cpp
|
||||
|
||||
ir_Coolix.o : $(USER_DIR)/ir_Coolix.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Coolix.cpp
|
||||
|
||||
ir_Aiwa.o : $(USER_DIR)/ir_Aiwa.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Aiwa.cpp
|
||||
|
||||
ir_Denon.o : $(USER_DIR)/ir_Denon.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Denon.cpp
|
||||
|
||||
ir_Sanyo.o : $(USER_DIR)/ir_Sanyo.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Sanyo.cpp
|
||||
|
||||
ir_Daikin.o : $(USER_DIR)/ir_Daikin.cpp $(USER_DIR)/ir_Daikin.h $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Daikin.cpp
|
||||
|
||||
ir_Gree.o : $(USER_DIR)/ir_Gree.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Gree.cpp
|
||||
|
||||
ir_Pronto.o : $(USER_DIR)/ir_Pronto.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Pronto.cpp
|
||||
|
||||
ir_Nikai.o : $(USER_DIR)/ir_Nikai.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Nikai.cpp
|
||||
|
||||
ir_Toshiba.o : $(USER_DIR)/ir_Toshiba.h $(USER_DIR)/ir_Toshiba.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Toshiba.cpp
|
||||
|
||||
ir_Midea.o : $(USER_DIR)/ir_Midea.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Midea.cpp
|
||||
|
||||
ir_Magiquest.o : $(USER_DIR)/ir_Magiquest.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Magiquest.cpp
|
||||
|
||||
ir_Lasertag.o : $(USER_DIR)/ir_Lasertag.cpp $(USER_DIR)/ir_RC5_RC6.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Lasertag.cpp
|
||||
|
||||
ir_Carrier.o : $(USER_DIR)/ir_Carrier.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Carrier.cpp
|
||||
|
||||
ir_Haier.o : $(USER_DIR)/ir_Haier.cpp $(USER_DIR)/ir_Haier.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Haier.cpp
|
||||
|
||||
ir_Hitachi.o : $(USER_DIR)/ir_Hitachi.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Hitachi.cpp
|
||||
|
||||
ir_GICable.o : $(USER_DIR)/ir_GICable.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_GICable.cpp
|
||||
|
||||
ir_Whirlpool.o : $(USER_DIR)/ir_Whirlpool.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Whirlpool.cpp
|
||||
|
||||
ir_Lutron.o : $(USER_DIR)/ir_Lutron.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Lutron.cpp
|
||||
|
||||
ir_Electra.o : $(USER_DIR)/ir_Electra.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Electra.cpp
|
||||
|
||||
ir_Pioneer.o : $(USER_DIR)/ir_Pioneer.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Pioneer.cpp
|
||||
|
||||
ir_MWM.o : $(USER_DIR)/ir_MWM.cpp $(USER_DIR)/ir_RC5_RC6.cpp $(COMMON_DEPS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_MWM.cpp
|
||||
|
||||
ir_Vestel.o : $(USER_DIR)/ir_Vestel.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Vestel.cpp
|
||||
|
||||
ir_Teco.o : $(USER_DIR)/ir_Teco.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Teco.cpp
|
||||
|
||||
ir_Tcl.o : $(USER_DIR)/ir_Tcl.cpp $(USER_DIR)/ir_Tcl.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Tcl.cpp
|
||||
|
||||
ir_Trotec.o : $(USER_DIR)/ir_Trotec.cpp $(USER_DIR)/ir_Trotec.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Trotec.cpp
|
||||
|
||||
ir_Lego.o : $(USER_DIR)/ir_Lego.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ir_Lego.cpp
|
||||
|
||||
ir_Argo.o : $(USER_DIR)/ir_Argo.cpp $(USER_DIR)/ir_Argo.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Argo.cpp
|
||||
|
||||
ir_Goodweather.o : $(USER_DIR)/ir_Goodweather.cpp $(USER_DIR)/ir_Goodweather.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Goodweather.cpp
|
||||
|
||||
ir_Neoclima.o : $(USER_DIR)/ir_Neoclima.cpp $(USER_DIR)/ir_Neoclima.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Neoclima.cpp
|
||||
|
||||
ir_Amcor.o : $(USER_DIR)/ir_Amcor.cpp $(USER_DIR)/ir_Amcor.h $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Amcor.cpp
|
||||
|
||||
ir_Epson.o : $(USER_DIR)/ir_Epson.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Epson.cpp
|
||||
|
||||
ir_Symphony.o : $(USER_DIR)/ir_Symphony.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Symphony.cpp
|
||||
|
||||
ir_Airwell.o : $(USER_DIR)/ir_Airwell.cpp $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/ir_Airwell.cpp
|
||||
|
||||
IRac.o : $(USER_DIR)/IRac.cpp $(USER_DIR)/IRac.h $(COMMON_DEPS) $(GTEST_HEADERS)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $(USER_DIR)/IRac.cpp
|
|
@ -9,8 +9,8 @@
|
|||
This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an
|
||||
[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc.
|
||||
|
||||
## v2.7.6 Now Available
|
||||
Version 2.7.6 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
|
||||
## v2.7.7 Now Available
|
||||
Version 2.7.7 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
|
||||
|
||||
#### Upgrading from pre-v2.0
|
||||
Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
|
|
@ -9,8 +9,8 @@
|
|||
Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole
|
||||
[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc.
|
||||
|
||||
## v2.7.6 disponible
|
||||
Version 2.7.6 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
|
||||
## v2.7.7 disponible
|
||||
Version 2.7.7 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
|
||||
|
||||
#### mise à jour depuis pre-v2.0
|
||||
L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
|
|
@ -1,5 +1,36 @@
|
|||
# Release Notes
|
||||
|
||||
## _v2.7.7 (20200519)_
|
||||
|
||||
**[BREAKING CHANGES]**
|
||||
- Fix Symphony protocol. (#1107, #1105)
|
||||
* Now 12 bits and bits are inverted. All previous codes will no longer work.
|
||||
- IRMQTTServer: Better handle power & mode operations for Home Assistant. (#1099, #1092)
|
||||
* When `MQTT_CLIMATE_HA_MODE` is enabled (default) this will break previous operation mode resumption when power is changed.
|
||||
|
||||
**[Bug Fixes]**
|
||||
- Set correct return type for `.calibrate()` (#1095, #1093)
|
||||
|
||||
**[Features]**
|
||||
- Add basic support for Carrier 40 & 64 bit protocols. (#1125, #1112, #1127)
|
||||
- Gree: Enable native support for Fahrenheit (#1124, #1121)
|
||||
- Gree: Add option to control display temp source. (#1120, #1118)
|
||||
- Add support for Multibrackets protocol. (#1106, #1103)
|
||||
- Add RawToPronto.py tool & improve `sendPronto()` precision (#1104, #1103)
|
||||
- Add support for `Doshisha` LED light protocol (#1115)
|
||||
- Introduce IRrecvDumpV3 with basic OTA update support (#1111)
|
||||
- Add detailed support for Delonghi A/C (#1098, #1096)
|
||||
- Improved support for SharpAc. (#1094, #1091)
|
||||
- Update auto_analyse to use new decode call structure. (#1102, #1097)
|
||||
- Added Blynk app example (#1090)
|
||||
|
||||
**[Misc]**
|
||||
- update auto_analyse script to use new param documentation (#1126)
|
||||
- Improve `raw_to_pronto_code.py` (#1122, #1103)
|
||||
- Use pattern rules in Makefiles to reduce specific rule (#1110)
|
||||
- Update list of supported Daikin models. (#1101)
|
||||
|
||||
|
||||
## _v2.7.6 (20200425)_
|
||||
|
||||
**[Features]**
|
|
@ -1,6 +1,6 @@
|
|||
<!--- WARNING: Do NOT edit this file directly.
|
||||
It is generated by './tools/scrape_supported_devices.py'.
|
||||
Last generated: Thu Apr 9 15:49:53 2020 --->
|
||||
Last generated: Tue 19 May 2020 11:48:47 +0000 --->
|
||||
# IR Protocols supported by this library
|
||||
|
||||
| Protocol | Brand | Model | A/C Model | Detailed A/C Support |
|
||||
|
@ -14,9 +14,11 @@
|
|||
| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Beko](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | BINR 070/071 split-type A/C<BR>BINR 070/071 split-type A/C<BR>RG57K7(B)/BGEF Remote<BR>RG57K7(B)/BGEF Remote | | Yes |
|
||||
| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | MS12FU-10HRDN1-QRD0GW(B) A/C<BR>MS12FU-10HRDN1-QRD0GW(B) A/C<BR>MSABAU-07HRFN1-QRD0GW A/C (circa 2016)<BR>MSABAU-07HRFN1-QRD0GW A/C (circa 2016)<BR>RG52D/BGE Remote<BR>RG52D/BGE Remote | | Yes |
|
||||
| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Tokio](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote<BR>AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | Yes |
|
||||
| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series A/C (DAIKIN128)<BR>ARC423A5 remote<BR>ARC433** remote<BR>ARC433B69 remote<BR>ARC477A1 remote<BR>ARC480A5 remote (DAIKIN152)<BR>BRC4C153 remote<BR>BRC52B63 remote (DAIKIN128)<BR>DGS01 remote (DAIKIN64)<BR>FFN-C/FCN-F Series A/C (DAIKIN64)<BR>FTE12HV2S A/C<BR>FTXB09AXVJU A/C (DAIKIN128)<BR>FTXB12AXVJU A/C (DAIKIN128)<BR>FTXZ25NV1B A/C<BR>FTXZ35NV1B A/C<BR>FTXZ50NV1B A/C | | Yes |
|
||||
| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series A/C (DAIKIN128)<BR>ARC423A5 remote<BR>ARC433** remote<BR>ARC433B69 remote<BR>ARC466A33 remote (DAIKIN)<BR>ARC477A1 remote<BR>ARC480A5 remote (DAIKIN152)<BR>BRC4C153 remote<BR>BRC52B63 remote (DAIKIN128)<BR>DGS01 remote (DAIKIN64)<BR>FFN-C/FCN-F Series A/C (DAIKIN64)<BR>FTE12HV2S A/C<BR>FTXB09AXVJU A/C (DAIKIN128)<BR>FTXB12AXVJU A/C (DAIKIN128)<BR>FTXM-M A/C (DAIKIN)<BR>FTXZ25NV1B A/C<BR>FTXZ35NV1B A/C<BR>FTXZ50NV1B A/C<BR>M Series A/C (DAIKIN) | | Yes |
|
||||
| [Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.cpp) | **[Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.h)** | PAC A95 | | Yes |
|
||||
| [Denon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Denon.cpp) | **Unknown** | | | - |
|
||||
| [Dish](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Dish.cpp) | **DISH NETWORK** | echostar 301 | | - |
|
||||
| [Doshisha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Doshisha.cpp) | **Doshisha** | CZ-S32D LED Light<BR>CZ-S38D LED Light<BR>CZ-S50D LED Light<BR>RCZ01 remote | | - |
|
||||
| [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[AUX](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | KFR-35GW/BpNFW=3 A/C<BR>YKR-T/011 remote | | Yes |
|
||||
| [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | Classic INV 17 / AXW12DCS A/C<BR>YKR-M/003E remote | | Yes |
|
||||
| [Epson](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Epson.cpp) | **Unknown** | | | - |
|
||||
|
@ -26,6 +28,7 @@
|
|||
| [GlobalCache](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GlobalCache.cpp) | **Unknown** | | | - |
|
||||
| [Goodweather](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Goodweather.cpp) | **[Goodweather](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Goodweather.h)** | ZH/JT-03 remote | | Yes |
|
||||
| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[EKOKAI](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | A/C | YAW1F<BR>YBOFB | Yes |
|
||||
| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | YAA1FBF remote<BR>YB1F2F remote | YAW1F<BR>YBOFB | Yes |
|
||||
| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | YBOFB remote<BR>YBOFB2 remote | YAW1F<BR>YBOFB | Yes |
|
||||
| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[RusClimate](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | EACS/I-09HAR_X/N3 A/C<BR>YAW1F remote | YAW1F<BR>YBOFB | Yes |
|
||||
| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Ultimate](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | Heat Pump | YAW1F<BR>YBOFB | Yes |
|
||||
|
@ -48,6 +51,7 @@
|
|||
| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | HC3000 Projector<BR>KM14A 0179213 remote<BR>MS-GK24VA A/C<BR>TV | | Yes |
|
||||
| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote<BR>KPOA remote<BR>MSH-A24WV / MUH-A24WV A/C<BR>PEAD-RP71JAA Ducted A/C | | Yes |
|
||||
| [MitsubishiHeavy](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.cpp) | **[Mitsubishi Heavy Industries](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.h)** | RKX502A001C remote<BR>RLA502A700B remote<BR>SRKxxZJ-S A/C<BR>SRKxxZM-S A/C<BR>SRKxxZMXA-S A/C | | Yes |
|
||||
| [Multibrackets](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Multibrackets.cpp) | **Multibrackets** | Motorized Swing mount large - 4500 | | - |
|
||||
| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Aloka](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SleepyLights LED Lamp | | - |
|
||||
| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | 42TL838 LCD TV | | - |
|
||||
| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Yamaha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | RAV561 remote<BR>RXV585B A/V Receiver | | - |
|
||||
|
@ -60,10 +64,14 @@
|
|||
| [RCMM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RCMM.cpp) | **Microsoft** | XBOX 360 | | - |
|
||||
| [Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.cpp) | **[Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.h)** | AR09FSSDAWKNFA A/C<BR>AR12HSSDBWKNEU A/C<BR>AR12KSFPEWQNET A/C<BR>AR12NXCXAWKXEU A/C<BR>DB63-03556X003 remote<BR>DB93-16761C remote<BR>IEC-R03 remote<BR>UA55H6300 TV | | Yes |
|
||||
| [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **Unknown** | | | - |
|
||||
| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C<BR>AY-ZP40KR A/C<BR>LC-52D62U TV | | Yes |
|
||||
| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C<BR>AH-XP10NRY A/C<BR>AY-ZP40KR A/C<BR>CRMC-820JBEZ remote<BR>LC-52D62U TV | | Yes |
|
||||
| [Sherwood](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sherwood.cpp) | **Sherwood** | RC-138 remote<BR>RD6505(B) Receiver | | - |
|
||||
| [Sony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sony.cpp) | **Sony** | HT-CT380 Soundbar (Uses 38kHz & 3 repeats) | | - |
|
||||
| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Blyss** | Owen-SW-5 3 Fan<BR>WP-YK8 090218 remote | | - |
|
||||
| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **SamHop** | SM3015 Fan Remote Control<BR>SM5021 Encoder chip<BR>SM5032 Decoder chip | | - |
|
||||
| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Satellite Electronic** | ID6 Remote<BR>JY199I Fan driver<BR>JY199I-L Fan driver | | - |
|
||||
| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Symphony** | Air Cooler 3Di | | - |
|
||||
| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Westinghouse** | 78095 Remote<BR>Ceiling fan | | - |
|
||||
| [Tcl](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.cpp) | **[Leberg](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.h)** | LBS-TOR07 A/C | | Yes |
|
||||
| [Teco](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.cpp) | **[Alaska](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.h)** | SAC9010QC A/C<BR>SAC9010QC remote | | Yes |
|
||||
| [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | Akita EVO II<BR>RAS 18SKP-ES<BR>RAS-B13N3KV2<BR>RAS-B13N3KVP-E<BR>WC-L03SE<BR>WH-TA04NE | | Yes |
|
||||
|
@ -89,6 +97,8 @@
|
|||
- AMCOR
|
||||
- ARGO
|
||||
- CARRIER_AC
|
||||
- CARRIER_AC40
|
||||
- CARRIER_AC64
|
||||
- COOLIX
|
||||
- DAIKIN
|
||||
- DAIKIN128
|
||||
|
@ -98,8 +108,10 @@
|
|||
- DAIKIN2
|
||||
- DAIKIN216
|
||||
- DAIKIN64
|
||||
- DELONGHI_AC
|
||||
- DENON
|
||||
- DISH
|
||||
- DOSHISHA
|
||||
- ELECTRA_AC
|
||||
- EPSON
|
||||
- FUJITSU_AC
|
||||
|
@ -130,6 +142,7 @@
|
|||
- MITSUBISHI_AC
|
||||
- MITSUBISHI_HEAVY_152
|
||||
- MITSUBISHI_HEAVY_88
|
||||
- MULTIBRACKETS
|
||||
- MWM
|
||||
- NEC
|
||||
- NEC_LIKE
|
|
@ -0,0 +1 @@
|
|||
Documentation goes here.
|
|
@ -0,0 +1 @@
|
|||
theme: jekyll-theme-slate
|
|
@ -0,0 +1,196 @@
|
|||
/*************************************************************
|
||||
Emulate a physical remote via an iOS and Android App.
|
||||
Copyright Gaurav Barwalia 2020
|
||||
|
||||
Download latest Blynk library here:
|
||||
https://github.com/blynkkk/blynk-library/releases/latest
|
||||
|
||||
Blynk is a platform with iOS and Android apps to control
|
||||
Arduino, Raspberry Pi and the likes over the Internet.
|
||||
You can easily build graphic interfaces for all your
|
||||
projects by simply dragging and dropping widgets.
|
||||
|
||||
Downloads, docs, tutorials: http://www.blynk.cc
|
||||
Sketch generator: http://examples.blynk.cc
|
||||
Blynk community: http://community.blynk.cc
|
||||
Follow us: http://www.fb.com/blynkapp
|
||||
http://twitter.com/blynk_app
|
||||
|
||||
Blynk library is licensed under MIT license
|
||||
This example code is in public domain.
|
||||
|
||||
*************************************************************
|
||||
This example runs directly on ESP8266 chip.
|
||||
|
||||
Note: This requires ESP8266 support package:
|
||||
https://github.com/esp8266/Arduino
|
||||
|
||||
Please be sure to select the right ESP8266 module
|
||||
in the Tools -> Board menu!
|
||||
|
||||
Change WiFi ssid, pass, and Blynk auth token to run :)
|
||||
Feel free to apply it to any other example. It's simple!
|
||||
*************************************************************/
|
||||
|
||||
/*
|
||||
// After decoding received below codes
|
||||
|
||||
// Power button
|
||||
|
||||
18:12:33.993 -> Protocol : NEC
|
||||
18:12:33.993 -> Code : 0x1FE50AF (32 Bits)
|
||||
18:12:33.993 -> uint16_t rawData[71] = {9040, 4452, 606, 532, 606, 534, 630, 508, 604, 534, 604, 534, 604, 534, 630, 506, 606, 1646, 632, 1620, 606, 1646, 632, 1620, 630, 1620, 632, 1620, 630, 1620, 606, 1646, 632, 506, 632, 506, 632, 1620, 632, 506, 632, 1620, 632, 506, 632, 508, 632, 506, 632, 506, 632, 1620, 632, 506, 632, 1624, 628, 506, 632, 1620, 632, 1618, 632, 1620, 632, 1620, 632, 39016, 9040, 2216, 630}; // NEC 1FE50AF
|
||||
18:12:34.027 -> uint32_t address = 0x80;
|
||||
18:12:34.027 -> uint32_t command = 0xA;
|
||||
18:12:34.027 -> uint64_t data = 0x1FE50AF;
|
||||
|
||||
//mute button
|
||||
|
||||
18:13:27.215 -> Protocol : NEC
|
||||
18:13:27.215 -> Code : 0x1FE30CF (32 Bits)
|
||||
18:13:27.215 -> uint16_t rawData[71] = {9094, 4398, 660, 478, 658, 480, 658, 480, 658, 480, 658, 480, 658, 480, 660, 480, 658, 1594, 658, 1594, 658, 1594, 658, 1594, 658, 1592, 658, 1594, 658, 1592, 658, 1594, 660, 480, 658, 480, 658, 480, 658, 1592, 658, 1592, 658, 480, 658, 480, 660, 478, 660, 478, 658, 1594, 658, 1592, 658, 480, 658, 480, 658, 1594, 658, 1592, 658, 1594, 658, 1594, 658, 38986, 9094, 2162, 658}; // NEC 1FE30CF
|
||||
18:13:27.285 -> uint32_t address = 0x80;
|
||||
18:13:27.285 -> uint32_t command = 0xC;
|
||||
18:13:27.285 -> uint64_t data = 0x1FE30CF;
|
||||
|
||||
//Vol. low
|
||||
|
||||
18:14:44.427 -> Protocol : NEC
|
||||
18:14:44.427 -> Code : 0x1FEC03F (32 Bits)
|
||||
18:14:44.427 -> uint16_t rawData[71] = {9120, 4374, 658, 478, 658, 480, 658, 480, 658, 480, 658, 482, 658, 478, 658, 480, 658, 1594, 658, 1594, 658, 1592, 660, 1594, 658, 1592, 658, 1594, 658, 1594, 658, 1592, 660, 480, 658, 1594, 658, 1594, 658, 480, 658, 480, 660, 480, 658, 480, 658, 480, 658, 480, 658, 480, 658, 480, 658, 1594, 660, 1592, 658, 1594, 658, 1594, 658, 1592, 658, 1594, 658, 39002, 9094, 2162, 658}; // NEC 1FEC03F
|
||||
18:14:44.497 -> uint32_t address = 0x80;
|
||||
18:14:44.497 -> uint32_t command = 0x3;
|
||||
18:14:44.497 -> uint64_t data = 0x1FEC03F;
|
||||
|
||||
//VOl. High
|
||||
|
||||
18:15:11.677 -> Protocol : NEC
|
||||
18:15:11.677 -> Code : 0x1FE40BF (32 Bits)
|
||||
18:15:11.677 -> uint16_t rawData[67] = {9068, 4426, 630, 506, 632, 508, 630, 508, 630, 508, 630, 508, 630, 508, 630, 508, 630, 1622, 630, 1622, 630, 1622, 630, 1622, 656, 1594, 630, 1622, 632, 1620, 630, 1622, 630, 508, 630, 508, 630, 1622, 630, 508, 630, 508, 630, 508, 630, 508, 630, 508, 630, 508, 630, 1622, 656, 482, 630, 1622, 630, 1622, 630, 1622, 630, 1622, 630, 1622, 632, 1620, 630}; // NEC 1FE40BF
|
||||
18:15:11.747 -> uint32_t address = 0x80;
|
||||
18:15:11.747 -> uint32_t command = 0x2;
|
||||
18:15:11.747 -> uint64_t data = 0x1FE40BF;
|
||||
|
||||
//Play/Pause
|
||||
|
||||
18:15:38.529 -> Protocol : NEC
|
||||
18:15:38.529 -> Code : 0x1FE32CD (32 Bits)
|
||||
18:15:38.529 -> uint16_t rawData[71] = {9092, 4400, 632, 504, 658, 480, 658, 480, 632, 506, 658, 480, 658, 480, 658, 482, 632, 1620, 658, 1594, 658, 1594, 632, 1618, 658, 1594, 658, 1594, 632, 1620, 632, 1618, 634, 506, 658, 480, 658, 480, 632, 1620, 658, 1598, 656, 478, 658, 478, 658, 1594, 658, 482, 632, 1618, 632, 1618, 634, 506, 632, 506, 658, 1594, 632, 1620, 658, 480, 632, 1620, 658, 38998, 9094, 2162, 660}; // NEC 1FE32CD
|
||||
18:15:38.564 -> uint32_t address = 0x80;
|
||||
18:15:38.564 -> uint32_t command = 0x4C;
|
||||
18:15:38.564 -> uint64_t data = 0x1FE32CD;
|
||||
|
||||
//Song Back
|
||||
|
||||
18:16:07.527 -> Protocol : NEC
|
||||
18:16:07.527 -> Code : 0x1FEA05F (32 Bits)
|
||||
18:16:07.562 -> uint16_t rawData[71] = {9590, 3902, 684, 452, 686, 456, 652, 480, 660, 480, 684, 456, 656, 480, 658, 480, 684, 1568, 658, 1594, 658, 1594, 686, 1566, 658, 1594, 684, 1568, 658, 1594, 658, 1594, 686, 454, 684, 1568, 686, 454, 658, 1594, 684, 454, 686, 454, 658, 480, 660, 480, 684, 454, 658, 482, 658, 1594, 682, 456, 658, 1596, 658, 1594, 686, 1568, 660, 1592, 684, 1568, 686, 38982, 9098, 2162, 684}; // NEC 1FEA05F
|
||||
18:16:07.597 -> uint32_t address = 0x80;
|
||||
18:16:07.597 -> uint32_t command = 0x5;
|
||||
18:16:07.597 -> uint64_t data = 0x1FEA05F;
|
||||
|
||||
//Song Forward
|
||||
|
||||
18:17:20.541 -> Protocol : NEC
|
||||
18:17:20.541 -> Code : 0x1FEE01F (32 Bits)
|
||||
18:17:20.575 -> uint16_t rawData[71] = {9068, 4424, 632, 506, 630, 506, 632, 508, 606, 532, 632, 506, 630, 508, 630, 508, 632, 1620, 632, 1620, 632, 1620, 604, 1646, 606, 1646, 630, 1622, 604, 1646, 632, 1620, 606, 534, 630, 1622, 604, 1646, 630, 1622, 604, 534, 630, 508, 604, 534, 606, 534, 630, 508, 630, 508, 606, 534, 606, 532, 630, 1622, 604, 1646, 632, 1620, 604, 1648, 604, 1646, 604, 39040, 9040, 2216, 604}; // NEC 1FEE01F
|
||||
18:17:20.610 -> uint32_t address = 0x80;
|
||||
18:17:20.610 -> uint32_t command = 0x7;
|
||||
18:17:20.610 -> uint64_t data = 0x1FEE01F;
|
||||
|
||||
*/
|
||||
|
||||
// check complete video tutorial here for program explanation https://www.youtube.com/watch?v=LqmkDKu54XY&t=17s
|
||||
|
||||
/* Comment this out to disable prints and save space */
|
||||
#define BLYNK_PRINT Serial
|
||||
|
||||
#if defined(ESP8266)
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <BlynkSimpleEsp8266.h>
|
||||
#else
|
||||
#include <WiFi.h>
|
||||
#endif // ESP8266
|
||||
#if defined(ESP32)
|
||||
#include <BlynkSimpleEsp32.h>
|
||||
#endif // ESP32
|
||||
|
||||
// IR library
|
||||
#include <IRremoteESP8266.h>
|
||||
#include <IRsend.h>
|
||||
|
||||
const uint16_t kIrLed = 4; // ESP8266 GPIO pin to use. Recommended: 4 (D2).
|
||||
IRsend irsend(kIrLed); // Set the GPIO to be used to sending the message.
|
||||
|
||||
// You should get Auth Token in the Blynk App.
|
||||
// Go to the Project Settings (nut icon).
|
||||
char auth[] = "YourAuthToken";
|
||||
|
||||
// Your WiFi credentials.
|
||||
// Set password to "" for open networks.
|
||||
char ssid[] = "YourNetworkName";
|
||||
char pass[] = "YourPassword";
|
||||
|
||||
BLYNK_WRITE(V51) { // Power button
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FE50AF);
|
||||
}
|
||||
}
|
||||
|
||||
BLYNK_WRITE(V52) { // Mute button
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FE30CF);
|
||||
}
|
||||
}
|
||||
|
||||
BLYNK_WRITE(V53) { // Song Forward
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FEE01F);
|
||||
}
|
||||
}
|
||||
|
||||
BLYNK_WRITE(V54) { // Song Backward
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FEA05F);
|
||||
delay(10); // double tap back button to back one song
|
||||
irsend.sendNEC(0x1FEA05F);
|
||||
}
|
||||
}
|
||||
|
||||
BLYNK_WRITE(V55) { // Volume --
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FEC03F);
|
||||
}
|
||||
}
|
||||
|
||||
BLYNK_WRITE(V56) { // Volume ++
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FE40BF);
|
||||
}
|
||||
}
|
||||
|
||||
BLYNK_WRITE(V57) { // Play/Pause
|
||||
if (param.asInt() == 0) {
|
||||
// Serial.println("NEC");
|
||||
irsend.sendNEC(0x1FE32CD);
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
#if defined(BLYNK_PRINT)
|
||||
// Debug console
|
||||
Serial.begin(115200);
|
||||
#endif // BLYNK_PRINT
|
||||
|
||||
Blynk.begin(auth, ssid, pass);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Blynk.run();
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
[platformio]
|
||||
src_dir = .
|
||||
|
||||
[env]
|
||||
lib_extra_dirs = ../../
|
||||
lib_ldf_mode = deep+
|
||||
lib_ignore = examples
|
||||
framework = arduino
|
||||
platform = espressif8266
|
||||
build_flags = ; -D_IR_LOCALE_=en-AU
|
||||
|
||||
[common]
|
||||
lib_deps_builtin =
|
||||
lib_deps_external =
|
||||
Blynk
|
||||
|
||||
[common_esp8266]
|
||||
lib_deps_external =
|
||||
${common.lib_deps_builtin}
|
||||
${common.lib_deps_external}
|
||||
|
||||
[common_esp32]
|
||||
lib_deps_external =
|
||||
${common.lib_deps_builtin}
|
||||
${common.lib_deps_external}
|
||||
|
||||
[env:nodemcuv2]
|
||||
board = nodemcuv2
|
||||
lib_deps = ${common_esp8266.lib_deps_external}
|
||||
|
||||
[env:esp32dev]
|
||||
platform = espressif32
|
||||
board = esp32dev
|
||||
lib_deps = ${common_esp32.lib_deps_external}
|
|
@ -102,11 +102,23 @@ const uint32_t kMqttReconnectTime = 5000; // Delay(ms) between reconnect tries.
|
|||
#define MQTT_CLIMATE_STAT "stat" // Sub-topic for the climate stat topics.
|
||||
// Enable sending/receiving climate via JSON. `true` cost ~5k of program space.
|
||||
#define MQTT_CLIMATE_JSON false
|
||||
|
||||
// Use Home Assistant-style operation modes.
|
||||
// i.e. Change the climate mode to "off" when turning the power "off".
|
||||
// TL;DR: Power and Mode are linked together. One changes the other.
|
||||
// i.e.
|
||||
// - When power is set to "off", the mode is set to "off".
|
||||
// - When the mode changes from "off" to something else, power is set to "on".
|
||||
// See: https://www.home-assistant.io/components/climate.mqtt/#modes
|
||||
// Change to false, if your home automation system doesn't like this.
|
||||
// *** WARNING ***
|
||||
// This setting will cause IRMQTTServer to forget what the previous operation
|
||||
// mode was. e.g. a power "on" -> "off" -> "on" will cause it to use the
|
||||
// default mode for your A/C, not the previous mode.
|
||||
// Typically this is "Auto" or "Cool" mode.
|
||||
// Change to false, if your home automation system doesn't like this, or if
|
||||
// you want IRMQTTServer to be the authoritative source for controling your
|
||||
// A/C.
|
||||
#define MQTT_CLIMATE_HA_MODE true
|
||||
|
||||
// Do we send an IR message when we reboot and recover the existing A/C state?
|
||||
// If set to `false` you may miss requested state changes while the ESP was
|
||||
// down. If set to `true`, it will resend the previous desired state sent to the
|
||||
|
@ -239,7 +251,7 @@ const uint16_t kJsonAcStateMaxSize = 1024; // Bytes
|
|||
// ----------------- End of User Configuration Section -------------------------
|
||||
|
||||
// Constants
|
||||
#define _MY_VERSION_ "v1.4.9"
|
||||
#define _MY_VERSION_ "v1.5.0"
|
||||
|
||||
const uint8_t kRebootTime = 15; // Seconds
|
||||
const uint8_t kQuickDisplayTime = 2; // Seconds
|
|
@ -2964,41 +2964,48 @@ void updateClimate(stdAc::state_t *state, const String str,
|
|||
*state = jsonToState(*state, payload.c_str());
|
||||
else
|
||||
#endif // MQTT_CLIMATE_JSON
|
||||
if (str.equals(prefix + KEY_PROTOCOL))
|
||||
if (str.equals(prefix + KEY_PROTOCOL)) {
|
||||
state->protocol = strToDecodeType(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_MODEL))
|
||||
} else if (str.equals(prefix + KEY_MODEL)) {
|
||||
state->model = IRac::strToModel(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_POWER))
|
||||
} else if (str.equals(prefix + KEY_POWER)) {
|
||||
state->power = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_MODE))
|
||||
#if MQTT_CLIMATE_HA_MODE
|
||||
if (!state->power) state->mode = stdAc::opmode_t::kOff;
|
||||
#endif // MQTT_CLIMATE_HA_MODE
|
||||
} else if (str.equals(prefix + KEY_MODE)) {
|
||||
state->mode = IRac::strToOpmode(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_TEMP))
|
||||
#if MQTT_CLIMATE_HA_MODE
|
||||
state->power = (state->mode != stdAc::opmode_t::kOff);
|
||||
#endif // MQTT_CLIMATE_HA_MODE
|
||||
} else if (str.equals(prefix + KEY_TEMP)) {
|
||||
state->degrees = payload.toFloat();
|
||||
else if (str.equals(prefix + KEY_FANSPEED))
|
||||
} else if (str.equals(prefix + KEY_FANSPEED)) {
|
||||
state->fanspeed = IRac::strToFanspeed(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_SWINGV))
|
||||
} else if (str.equals(prefix + KEY_SWINGV)) {
|
||||
state->swingv = IRac::strToSwingV(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_SWINGH))
|
||||
} else if (str.equals(prefix + KEY_SWINGH)) {
|
||||
state->swingh = IRac::strToSwingH(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_QUIET))
|
||||
} else if (str.equals(prefix + KEY_QUIET)) {
|
||||
state->quiet = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_TURBO))
|
||||
} else if (str.equals(prefix + KEY_TURBO)) {
|
||||
state->turbo = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_ECONO))
|
||||
} else if (str.equals(prefix + KEY_ECONO)) {
|
||||
state->econo = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_LIGHT))
|
||||
} else if (str.equals(prefix + KEY_LIGHT)) {
|
||||
state->light = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_BEEP))
|
||||
} else if (str.equals(prefix + KEY_BEEP)) {
|
||||
state->beep = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_FILTER))
|
||||
} else if (str.equals(prefix + KEY_FILTER)) {
|
||||
state->filter = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_CLEAN))
|
||||
} else if (str.equals(prefix + KEY_CLEAN)) {
|
||||
state->clean = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_CELSIUS))
|
||||
} else if (str.equals(prefix + KEY_CELSIUS)) {
|
||||
state->celsius = IRac::strToBool(payload.c_str());
|
||||
else if (str.equals(prefix + KEY_SLEEP))
|
||||
} else if (str.equals(prefix + KEY_SLEEP)) {
|
||||
state->sleep = payload.toInt();
|
||||
}
|
||||
}
|
||||
|
||||
bool sendClimate(const String topic_prefix, const bool retain,
|
||||
const bool forceMQTT, const bool forceIR,
|
|
@ -0,0 +1,71 @@
|
|||
// Copyright 2020 Christian Nilsson (@nikize)
|
||||
// Based on public Arduino BasicOTA example
|
||||
|
||||
#ifndef EXAMPLES_IRRECVDUMPV3_BASEOTA_H_
|
||||
#define EXAMPLES_IRRECVDUMPV3_BASEOTA_H_
|
||||
|
||||
#ifndef OTA_ENABLE
|
||||
#define OTA_ENABLE false
|
||||
#endif // OTA_ENABLE
|
||||
|
||||
#if OTA_ENABLE
|
||||
|
||||
#include <WiFi.h>
|
||||
#include <ESPmDNS.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <ArduinoOTA.h>
|
||||
|
||||
void OTAwifi() {
|
||||
// start default wifi (previously saved on the ESP) for OTA
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.begin();
|
||||
}
|
||||
|
||||
void OTAinit() {
|
||||
// See BasicOTA ESP example for source and settings
|
||||
|
||||
ArduinoOTA
|
||||
.onStart([]() {
|
||||
String type;
|
||||
if (ArduinoOTA.getCommand() == U_FLASH)
|
||||
type = "sketch";
|
||||
else
|
||||
type = "filesystem";
|
||||
|
||||
Serial.println("Start updating " + type);
|
||||
})
|
||||
.onEnd([]() {
|
||||
Serial.println("\nEnd");
|
||||
})
|
||||
.onProgress([](unsigned int progress, unsigned int total) {
|
||||
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
|
||||
})
|
||||
.onError([](ota_error_t error) {
|
||||
Serial.printf("Error[%u]: ", error);
|
||||
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
|
||||
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
|
||||
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
|
||||
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
|
||||
else if (error == OTA_END_ERROR) Serial.println("End Failed");
|
||||
});
|
||||
|
||||
ArduinoOTA.begin();
|
||||
Serial.println();
|
||||
if (WiFi.waitForConnectResult() == WL_CONNECTED) {
|
||||
Serial.print("IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
} else {
|
||||
Serial.println("Wifi Connection Failed.");
|
||||
}
|
||||
}
|
||||
|
||||
void OTAloopHandler() {
|
||||
ArduinoOTA.handle();
|
||||
}
|
||||
|
||||
#else // OTA_ENABLE
|
||||
void OTAwifi() {}
|
||||
void OTAinit() {}
|
||||
void OTAloopHandler() {}
|
||||
#endif // OTA_ENABLE
|
||||
#endif // EXAMPLES_IRRECVDUMPV3_BASEOTA_H_
|
|
@ -0,0 +1,166 @@
|
|||
/*
|
||||
* IRremoteESP8266: IRrecvDumpV3 - dump details of IR codes with IRrecv
|
||||
* An IR detector/demodulator must be connected to the input kRecvPin.
|
||||
*
|
||||
* Copyright 2009 Ken Shirriff, http://arcfn.com
|
||||
* Copyright 2017-2019 David Conran
|
||||
*
|
||||
* Example circuit diagram:
|
||||
* https://github.com/crankyoldgit/IRremoteESP8266/wiki#ir-receiving
|
||||
*
|
||||
* Changes:
|
||||
* Version 1.1 May, 2020
|
||||
* - Create DumpV3 from DumpV2
|
||||
* - Add OTA Base
|
||||
* Version 1.0 October, 2019
|
||||
* - Internationalisation (i18n) support.
|
||||
* - Stop displaying the legacy raw timing info.
|
||||
* Version 0.5 June, 2019
|
||||
* - Move A/C description to IRac.cpp.
|
||||
* Version 0.4 July, 2018
|
||||
* - Minor improvements and more A/C unit support.
|
||||
* Version 0.3 November, 2017
|
||||
* - Support for A/C decoding for some protocols.
|
||||
* Version 0.2 April, 2017
|
||||
* - Decode from a copy of the data so we can start capturing faster thus
|
||||
* reduce the likelihood of miscaptures.
|
||||
* Based on Ken Shirriff's IrsendDemo Version 0.1 July, 2009,
|
||||
*/
|
||||
|
||||
// Allow over air update
|
||||
// #define OTA_ENABLE true
|
||||
#include "BaseOTA.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <IRrecv.h>
|
||||
#include <IRremoteESP8266.h>
|
||||
#include <IRac.h>
|
||||
#include <IRtext.h>
|
||||
#include <IRutils.h>
|
||||
|
||||
// ==================== start of TUNEABLE PARAMETERS ====================
|
||||
// An IR detector/demodulator is connected to GPIO pin 14
|
||||
// e.g. D5 on a NodeMCU board.
|
||||
// Note: GPIO 16 won't work on the ESP8266 as it does not have interrupts.
|
||||
const uint16_t kRecvPin = 14;
|
||||
|
||||
// The Serial connection baud rate.
|
||||
// i.e. Status message will be sent to the PC at this baud rate.
|
||||
// Try to avoid slow speeds like 9600, as you will miss messages and
|
||||
// cause other problems. 115200 (or faster) is recommended.
|
||||
// NOTE: Make sure you set your Serial Monitor to the same speed.
|
||||
const uint32_t kBaudRate = 115200;
|
||||
|
||||
// As this program is a special purpose capture/decoder, let us use a larger
|
||||
// than normal buffer so we can handle Air Conditioner remote codes.
|
||||
const uint16_t kCaptureBufferSize = 1024;
|
||||
|
||||
// kTimeout is the Nr. of milli-Seconds of no-more-data before we consider a
|
||||
// message ended.
|
||||
// This parameter is an interesting trade-off. The longer the timeout, the more
|
||||
// complex a message it can capture. e.g. Some device protocols will send
|
||||
// multiple message packets in quick succession, like Air Conditioner remotes.
|
||||
// Air Coniditioner protocols often have a considerable gap (20-40+ms) between
|
||||
// packets.
|
||||
// The downside of a large timeout value is a lot of less complex protocols
|
||||
// send multiple messages when the remote's button is held down. The gap between
|
||||
// them is often also around 20+ms. This can result in the raw data be 2-3+
|
||||
// times larger than needed as it has captured 2-3+ messages in a single
|
||||
// capture. Setting a low timeout value can resolve this.
|
||||
// So, choosing the best kTimeout value for your use particular case is
|
||||
// quite nuanced. Good luck and happy hunting.
|
||||
// NOTE: Don't exceed kMaxTimeoutMs. Typically 130ms.
|
||||
#if DECODE_AC
|
||||
// Some A/C units have gaps in their protocols of ~40ms. e.g. Kelvinator
|
||||
// A value this large may swallow repeats of some protocols
|
||||
const uint8_t kTimeout = 50;
|
||||
#else // DECODE_AC
|
||||
// Suits most messages, while not swallowing many repeats.
|
||||
const uint8_t kTimeout = 15;
|
||||
#endif // DECODE_AC
|
||||
// Alternatives:
|
||||
// const uint8_t kTimeout = 90;
|
||||
// Suits messages with big gaps like XMP-1 & some aircon units, but can
|
||||
// accidentally swallow repeated messages in the rawData[] output.
|
||||
//
|
||||
// const uint8_t kTimeout = kMaxTimeoutMs;
|
||||
// This will set it to our currently allowed maximum.
|
||||
// Values this high are problematic because it is roughly the typical boundary
|
||||
// where most messages repeat.
|
||||
// e.g. It will stop decoding a message and start sending it to serial at
|
||||
// precisely the time when the next message is likely to be transmitted,
|
||||
// and may miss it.
|
||||
|
||||
// Set the smallest sized "UNKNOWN" message packets we actually care about.
|
||||
// This value helps reduce the false-positive detection rate of IR background
|
||||
// noise as real messages. The chances of background IR noise getting detected
|
||||
// as a message increases with the length of the kTimeout value. (See above)
|
||||
// The downside of setting this message too large is you can miss some valid
|
||||
// short messages for protocols that this library doesn't yet decode.
|
||||
//
|
||||
// Set higher if you get lots of random short UNKNOWN messages when nothing
|
||||
// should be sending a message.
|
||||
// Set lower if you are sure your setup is working, but it doesn't see messages
|
||||
// from your device. (e.g. Other IR remotes work.)
|
||||
// NOTE: Set this value very high to effectively turn off UNKNOWN detection.
|
||||
const uint16_t kMinUnknownSize = 12;
|
||||
|
||||
// Legacy (No longer supported!)
|
||||
//
|
||||
// Change to `true` if you miss/need the old "Raw Timing[]" display.
|
||||
#define LEGACY_TIMING_INFO false
|
||||
// ==================== end of TUNEABLE PARAMETERS ====================
|
||||
|
||||
// Use turn on the save buffer feature for more complete capture coverage.
|
||||
IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, true);
|
||||
decode_results results; // Somewhere to store the results
|
||||
|
||||
// This section of code runs only once at start-up.
|
||||
void setup() {
|
||||
OTAwifi(); // start default wifi (previously saved on the ESP) for OTA
|
||||
#if defined(ESP8266)
|
||||
Serial.begin(kBaudRate, SERIAL_8N1, SERIAL_TX_ONLY);
|
||||
#else // ESP8266
|
||||
Serial.begin(kBaudRate, SERIAL_8N1);
|
||||
#endif // ESP8266
|
||||
while (!Serial) // Wait for the serial connection to be establised.
|
||||
delay(50);
|
||||
Serial.printf("\n" D_STR_IRRECVDUMP_STARTUP "\n", kRecvPin);
|
||||
OTAinit(); // setup OTA handlers and show IP
|
||||
#if DECODE_HASH
|
||||
// Ignore messages with less than minimum on or off pulses.
|
||||
irrecv.setUnknownThreshold(kMinUnknownSize);
|
||||
#endif // DECODE_HASH
|
||||
irrecv.enableIRIn(); // Start the receiver
|
||||
}
|
||||
|
||||
// The repeating section of the code
|
||||
void loop() {
|
||||
// Check if the IR code has been received.
|
||||
if (irrecv.decode(&results)) {
|
||||
// Display a crude timestamp.
|
||||
uint32_t now = millis();
|
||||
Serial.printf(D_STR_TIMESTAMP " : %06u.%03u\n", now / 1000, now % 1000);
|
||||
// Check if we got an IR message that was to big for our capture buffer.
|
||||
if (results.overflow)
|
||||
Serial.printf(D_WARN_BUFFERFULL "\n", kCaptureBufferSize);
|
||||
// Display the library version the message was captured with.
|
||||
Serial.println(D_STR_LIBRARY " : v" _IRREMOTEESP8266_VERSION_ "\n");
|
||||
// Display the basic output of what we found.
|
||||
Serial.print(resultToHumanReadableBasic(&results));
|
||||
// Display any extra A/C info if we have it.
|
||||
String description = IRAcUtils::resultAcToString(&results);
|
||||
if (description.length()) Serial.println(D_STR_MESGDESC ": " + description);
|
||||
yield(); // Feed the WDT as the text output can take a while to print.
|
||||
#if LEGACY_TIMING_INFO
|
||||
// Output legacy RAW timing info of the result.
|
||||
Serial.println(resultToTimingInfo(&results));
|
||||
yield(); // Feed the WDT (again)
|
||||
#endif // LEGACY_TIMING_INFO
|
||||
// Output the results as source code
|
||||
Serial.println(resultToSourceCode(&results));
|
||||
Serial.println(); // Blank line between entries
|
||||
yield(); // Feed the WDT (again)
|
||||
}
|
||||
OTAloopHandler();
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
[platformio]
|
||||
src_dir = .
|
||||
|
||||
[env]
|
||||
; Default platform
|
||||
platform = espressif8266
|
||||
; Default board
|
||||
board = nodemcuv2
|
||||
framework = arduino
|
||||
lib_extra_dirs = ../../
|
||||
lib_ldf_mode = deep+
|
||||
lib_ignore = examples
|
||||
build_flags = ; -D_IR_LOCALE_=en-AU
|
||||
|
||||
[env:nodemcuv2]
|
||||
board = nodemcuv2
|
||||
; build_flags = -D_IR_LOCALE_=en-AU
|
||||
|
||||
[env:esp32dev]
|
||||
platform = espressif32
|
||||
board = esp32dev
|
||||
; build_flags = -D_IR_LOCALE_=en-AU
|
||||
|
||||
[env:de-CH]
|
||||
build_flags = -D_IR_LOCALE_=de-CH ; German (Swiss)
|
||||
|
||||
[env:de-DE]
|
||||
build_flags = -D_IR_LOCALE_=de-DE ; German
|
||||
|
||||
[env:en-AU]
|
||||
build_flags = -D_IR_LOCALE_=en-AU ; English (Australian) (Default)
|
||||
|
||||
[env:en-IE]
|
||||
build_flags = -D_IR_LOCALE_=en-IE ; English (Irish)
|
||||
|
||||
[env:en-UK]
|
||||
build_flags = -D_IR_LOCALE_=en-UK ; English (UK)
|
||||
|
||||
[env:en-US]
|
||||
build_flags = -D_IR_LOCALE_=en-US ; English (Simplified) (USA)
|
||||
|
||||
[env:es-ES]
|
||||
build_flags = -D_IR_LOCALE_=es-ES ; Spanish
|
||||
|
||||
[env:fr-FR]
|
||||
build_flags = -D_IR_LOCALE_=fr-FR ; French
|
||||
|
||||
[env:it-IT]
|
||||
build_flags = -D_IR_LOCALE_=it-IT ; Italian
|
||||
|
||||
[env:zh-CN]
|
||||
build_flags = -D_IR_LOCALE_=zh-CN ; Chinese (Simplified)
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -31,6 +31,7 @@ IRDaikin2 KEYWORD1
|
|||
IRDaikin216 KEYWORD1
|
||||
IRDaikin64 KEYWORD1
|
||||
IRDaikinESP KEYWORD1
|
||||
IRDelonghiAc KEYWORD1
|
||||
IRElectraAc KEYWORD1
|
||||
IRFujitsuAC KEYWORD1
|
||||
IRGoodweatherAc KEYWORD1
|
||||
|
@ -126,6 +127,7 @@ checkZjsSig KEYWORD2
|
|||
checkZmsSig KEYWORD2
|
||||
checksum KEYWORD2
|
||||
clearOnTimerFlag KEYWORD2
|
||||
clearPowerSpecial KEYWORD2
|
||||
clearSensorTemp KEYWORD2
|
||||
clearSleepTimerFlag KEYWORD2
|
||||
cmpStates KEYWORD2
|
||||
|
@ -153,6 +155,8 @@ decodeAmcor KEYWORD2
|
|||
decodeArgo KEYWORD2
|
||||
decodeCOOLIX KEYWORD2
|
||||
decodeCarrierAC KEYWORD2
|
||||
decodeCarrierAC40 KEYWORD2
|
||||
decodeCarrierAC64 KEYWORD2
|
||||
decodeDISH KEYWORD2
|
||||
decodeDaikin KEYWORD2
|
||||
decodeDaikin128 KEYWORD2
|
||||
|
@ -162,7 +166,9 @@ decodeDaikin176 KEYWORD2
|
|||
decodeDaikin2 KEYWORD2
|
||||
decodeDaikin216 KEYWORD2
|
||||
decodeDaikin64 KEYWORD2
|
||||
decodeDelonghiAc KEYWORD2
|
||||
decodeDenon KEYWORD2
|
||||
decodeDoshisha KEYWORD2
|
||||
decodeElectraAC KEYWORD2
|
||||
decodeEpson KEYWORD2
|
||||
decodeFujitsuAC KEYWORD2
|
||||
|
@ -191,6 +197,7 @@ decodeMitsubishi136 KEYWORD2
|
|||
decodeMitsubishi2 KEYWORD2
|
||||
decodeMitsubishiAC KEYWORD2
|
||||
decodeMitsubishiHeavy KEYWORD2
|
||||
decodeMultibrackets KEYWORD2
|
||||
decodeNEC KEYWORD2
|
||||
decodeNeoclima KEYWORD2
|
||||
decodeNikai KEYWORD2
|
||||
|
@ -217,6 +224,7 @@ decodeVestelAc KEYWORD2
|
|||
decodeWhirlpoolAC KEYWORD2
|
||||
decodeWhynter KEYWORD2
|
||||
defaultBits KEYWORD2
|
||||
delonghiac KEYWORD2
|
||||
disableIRIn KEYWORD2
|
||||
disableOffTimer KEYWORD2
|
||||
disableOnTimer KEYWORD2
|
||||
|
@ -229,6 +237,7 @@ enableOffTimer KEYWORD2
|
|||
enableOnTimer KEYWORD2
|
||||
enableSleepTimer KEYWORD2
|
||||
enableTimer KEYWORD2
|
||||
encodeDoshisha KEYWORD2
|
||||
encodeJVC KEYWORD2
|
||||
encodeLG KEYWORD2
|
||||
encodeMagiQuest KEYWORD2
|
||||
|
@ -252,6 +261,7 @@ get3D KEYWORD2
|
|||
get8CHeat KEYWORD2
|
||||
getBeep KEYWORD2
|
||||
getBit KEYWORD2
|
||||
getBoost KEYWORD2
|
||||
getBreeze KEYWORD2
|
||||
getBufSize KEYWORD2
|
||||
getButton KEYWORD2
|
||||
|
@ -265,7 +275,9 @@ getCurrTime KEYWORD2
|
|||
getCurrentDay KEYWORD2
|
||||
getCurrentTime KEYWORD2
|
||||
getDisplay KEYWORD2
|
||||
getDisplayTempSource KEYWORD2
|
||||
getEcono KEYWORD2
|
||||
getEconoToggle KEYWORD2
|
||||
getEye KEYWORD2
|
||||
getEyeAuto KEYWORD2
|
||||
getFan KEYWORD2
|
||||
|
@ -299,9 +311,9 @@ getOnTimer KEYWORD2
|
|||
getOnTimerEnabled KEYWORD2
|
||||
getOutsideQuiet KEYWORD2
|
||||
getPower KEYWORD2
|
||||
getPowerSpecial KEYWORD2
|
||||
getPowerToggle KEYWORD2
|
||||
getPowerful KEYWORD2
|
||||
getPreviousPower KEYWORD2
|
||||
getPurify KEYWORD2
|
||||
getQuiet KEYWORD2
|
||||
getRClevel KEYWORD2
|
||||
|
@ -314,6 +326,7 @@ getSilent KEYWORD2
|
|||
getSleep KEYWORD2
|
||||
getSleepTime KEYWORD2
|
||||
getSleepTimerEnabled KEYWORD2
|
||||
getSpecial KEYWORD2
|
||||
getSpeed KEYWORD2
|
||||
getStartClock KEYWORD2
|
||||
getStateLength KEYWORD2
|
||||
|
@ -331,12 +344,16 @@ getSwingVerticalPosition KEYWORD2
|
|||
getTemp KEYWORD2
|
||||
getTempOffset KEYWORD2
|
||||
getTempRaw KEYWORD2
|
||||
getTempUnit KEYWORD2
|
||||
getTime KEYWORD2
|
||||
getTimer KEYWORD2
|
||||
getTimerEnabled KEYWORD2
|
||||
getTimerTime KEYWORD2
|
||||
getTimerType KEYWORD2
|
||||
getTolerance KEYWORD2
|
||||
getTurbo KEYWORD2
|
||||
getUseCelsius KEYWORD2
|
||||
getUseFahrenheit KEYWORD2
|
||||
getVane KEYWORD2
|
||||
getWeeklyTimerEnable KEYWORD2
|
||||
getWiFi KEYWORD2
|
||||
|
@ -362,6 +379,7 @@ isOffTimerActive KEYWORD2
|
|||
isOffTimerEnabled KEYWORD2
|
||||
isOnTimerActive KEYWORD2
|
||||
isOnTimerEnabled KEYWORD2
|
||||
isPowerSpecial KEYWORD2
|
||||
isProtocolSupported KEYWORD2
|
||||
isSpecialState KEYWORD2
|
||||
isSwingVToggle KEYWORD2
|
||||
|
@ -380,6 +398,7 @@ matchAtLeast KEYWORD2
|
|||
matchBytes KEYWORD2
|
||||
matchData KEYWORD2
|
||||
matchGeneric KEYWORD2
|
||||
matchGenericConstBitTime KEYWORD2
|
||||
matchManchester KEYWORD2
|
||||
matchMark KEYWORD2
|
||||
matchSpace KEYWORD2
|
||||
|
@ -417,6 +436,8 @@ sendAmcor KEYWORD2
|
|||
sendArgo KEYWORD2
|
||||
sendCOOLIX KEYWORD2
|
||||
sendCarrierAC KEYWORD2
|
||||
sendCarrierAC40 KEYWORD2
|
||||
sendCarrierAC64 KEYWORD2
|
||||
sendDISH KEYWORD2
|
||||
sendDaikin KEYWORD2
|
||||
sendDaikin128 KEYWORD2
|
||||
|
@ -427,7 +448,9 @@ sendDaikin2 KEYWORD2
|
|||
sendDaikin216 KEYWORD2
|
||||
sendDaikin64 KEYWORD2
|
||||
sendData KEYWORD2
|
||||
sendDelonghiAc KEYWORD2
|
||||
sendDenon KEYWORD2
|
||||
sendDoshisha KEYWORD2
|
||||
sendElectraAC KEYWORD2
|
||||
sendEpson KEYWORD2
|
||||
sendExtended KEYWORD2
|
||||
|
@ -464,6 +487,7 @@ sendMitsubishi2 KEYWORD2
|
|||
sendMitsubishiAC KEYWORD2
|
||||
sendMitsubishiHeavy152 KEYWORD2
|
||||
sendMitsubishiHeavy88 KEYWORD2
|
||||
sendMultibrackets KEYWORD2
|
||||
sendNEC KEYWORD2
|
||||
sendNeoclima KEYWORD2
|
||||
sendNikai KEYWORD2
|
||||
|
@ -503,6 +527,7 @@ setAuto KEYWORD2
|
|||
setBeep KEYWORD2
|
||||
setBit KEYWORD2
|
||||
setBits KEYWORD2
|
||||
setBoost KEYWORD2
|
||||
setBreeze KEYWORD2
|
||||
setButton KEYWORD2
|
||||
setClean KEYWORD2
|
||||
|
@ -514,7 +539,9 @@ setCurrTime KEYWORD2
|
|||
setCurrentDay KEYWORD2
|
||||
setCurrentTime KEYWORD2
|
||||
setDisplay KEYWORD2
|
||||
setDisplayTempSource KEYWORD2
|
||||
setEcono KEYWORD2
|
||||
setEconoToggle KEYWORD2
|
||||
setEye KEYWORD2
|
||||
setEyeAuto KEYWORD2
|
||||
setFan KEYWORD2
|
||||
|
@ -552,9 +579,9 @@ setOnTimerActive KEYWORD2
|
|||
setOnTimerEnabled KEYWORD2
|
||||
setOutsideQuiet KEYWORD2
|
||||
setPower KEYWORD2
|
||||
setPowerSpecial KEYWORD2
|
||||
setPowerToggle KEYWORD2
|
||||
setPowerful KEYWORD2
|
||||
setPreviousPower KEYWORD2
|
||||
setPurify KEYWORD2
|
||||
setQuiet KEYWORD2
|
||||
setRaw KEYWORD2
|
||||
|
@ -565,6 +592,7 @@ setSensorTemp KEYWORD2
|
|||
setSensorTempRaw KEYWORD2
|
||||
setSilent KEYWORD2
|
||||
setSleep KEYWORD2
|
||||
setSpecial KEYWORD2
|
||||
setSpeed KEYWORD2
|
||||
setStartClock KEYWORD2
|
||||
setStopClock KEYWORD2
|
||||
|
@ -578,6 +606,7 @@ setSwingVToggle KEYWORD2
|
|||
setSwingVertical KEYWORD2
|
||||
setTemp KEYWORD2
|
||||
setTempRaw KEYWORD2
|
||||
setTempUnit KEYWORD2
|
||||
setTime KEYWORD2
|
||||
setTimer KEYWORD2
|
||||
setTimerActive KEYWORD2
|
||||
|
@ -586,6 +615,7 @@ setTolerance KEYWORD2
|
|||
setTurbo KEYWORD2
|
||||
setUnknownThreshold KEYWORD2
|
||||
setUseCelsius KEYWORD2
|
||||
setUseFahrenheit KEYWORD2
|
||||
setVane KEYWORD2
|
||||
setWeeklyTimerEnable KEYWORD2
|
||||
setWiFi KEYWORD2
|
||||
|
@ -666,6 +696,8 @@ ARRAH2E LITERAL1
|
|||
ARREB1E LITERAL1
|
||||
ARRY4 LITERAL1
|
||||
CARRIER_AC LITERAL1
|
||||
CARRIER_AC40 LITERAL1
|
||||
CARRIER_AC64 LITERAL1
|
||||
CARRIER_AC_BITS LITERAL1
|
||||
COOLIX LITERAL1
|
||||
COOLIX_BITS LITERAL1
|
||||
|
@ -695,6 +727,8 @@ DECODE_AIWA_RC_T501 LITERAL1
|
|||
DECODE_AMCOR LITERAL1
|
||||
DECODE_ARGO LITERAL1
|
||||
DECODE_CARRIER_AC LITERAL1
|
||||
DECODE_CARRIER_AC40 LITERAL1
|
||||
DECODE_CARRIER_AC64 LITERAL1
|
||||
DECODE_COOLIX LITERAL1
|
||||
DECODE_DAIKIN LITERAL1
|
||||
DECODE_DAIKIN128 LITERAL1
|
||||
|
@ -704,8 +738,10 @@ DECODE_DAIKIN176 LITERAL1
|
|||
DECODE_DAIKIN2 LITERAL1
|
||||
DECODE_DAIKIN216 LITERAL1
|
||||
DECODE_DAIKIN64 LITERAL1
|
||||
DECODE_DELONGHI_AC LITERAL1
|
||||
DECODE_DENON LITERAL1
|
||||
DECODE_DISH LITERAL1
|
||||
DECODE_DOSHISHA LITERAL1
|
||||
DECODE_ELECTRA_AC LITERAL1
|
||||
DECODE_EPSON LITERAL1
|
||||
DECODE_FUJITSU_AC LITERAL1
|
||||
|
@ -736,6 +772,7 @@ DECODE_MITSUBISHI136 LITERAL1
|
|||
DECODE_MITSUBISHI2 LITERAL1
|
||||
DECODE_MITSUBISHIHEAVY LITERAL1
|
||||
DECODE_MITSUBISHI_AC LITERAL1
|
||||
DECODE_MULTIBRACKETS LITERAL1
|
||||
DECODE_MWM LITERAL1
|
||||
DECODE_NEC LITERAL1
|
||||
DECODE_NEOCLIMA LITERAL1
|
||||
|
@ -763,6 +800,7 @@ DECODE_TROTEC LITERAL1
|
|||
DECODE_VESTEL_AC LITERAL1
|
||||
DECODE_WHIRLPOOL_AC LITERAL1
|
||||
DECODE_WHYNTER LITERAL1
|
||||
DELONGHI_AC LITERAL1
|
||||
DENON LITERAL1
|
||||
DENON_48_BITS LITERAL1
|
||||
DENON_BITS LITERAL1
|
||||
|
@ -771,6 +809,7 @@ DG11J13A LITERAL1
|
|||
DG11J191 LITERAL1
|
||||
DISH LITERAL1
|
||||
DISH_BITS LITERAL1
|
||||
DOSHISHA LITERAL1
|
||||
ELECTRA_AC LITERAL1
|
||||
ENABLE_NOISE_FILTER_OPTION LITERAL1
|
||||
EPSON LITERAL1
|
||||
|
@ -963,6 +1002,7 @@ MITSUBISHI_AC_VANE_AUTO_MOVE LITERAL1
|
|||
MITSUBISHI_BITS LITERAL1
|
||||
MITSUBISHI_HEAVY_152 LITERAL1
|
||||
MITSUBISHI_HEAVY_88 LITERAL1
|
||||
MULTIBRACKETS LITERAL1
|
||||
MWM LITERAL1
|
||||
NEC LITERAL1
|
||||
NEC_BITS LITERAL1
|
||||
|
@ -1003,6 +1043,8 @@ SEND_AIWA_RC_T501 LITERAL1
|
|||
SEND_AMCOR LITERAL1
|
||||
SEND_ARGO LITERAL1
|
||||
SEND_CARRIER_AC LITERAL1
|
||||
SEND_CARRIER_AC40 LITERAL1
|
||||
SEND_CARRIER_AC64 LITERAL1
|
||||
SEND_COOLIX LITERAL1
|
||||
SEND_DAIKIN LITERAL1
|
||||
SEND_DAIKIN128 LITERAL1
|
||||
|
@ -1012,8 +1054,10 @@ SEND_DAIKIN176 LITERAL1
|
|||
SEND_DAIKIN2 LITERAL1
|
||||
SEND_DAIKIN216 LITERAL1
|
||||
SEND_DAIKIN64 LITERAL1
|
||||
SEND_DELONGHI_AC LITERAL1
|
||||
SEND_DENON LITERAL1
|
||||
SEND_DISH LITERAL1
|
||||
SEND_DOSHISHA LITERAL1
|
||||
SEND_ELECTRA_AC LITERAL1
|
||||
SEND_EPSON LITERAL1
|
||||
SEND_FUJITSU_AC LITERAL1
|
||||
|
@ -1043,6 +1087,7 @@ SEND_MITSUBISHI136 LITERAL1
|
|||
SEND_MITSUBISHI2 LITERAL1
|
||||
SEND_MITSUBISHIHEAVY LITERAL1
|
||||
SEND_MITSUBISHI_AC LITERAL1
|
||||
SEND_MULTIBRACKETS LITERAL1
|
||||
SEND_MWM LITERAL1
|
||||
SEND_NEC LITERAL1
|
||||
SEND_NEOCLIMA LITERAL1
|
||||
|
@ -1252,8 +1297,24 @@ kBottomStr LITERAL1
|
|||
kBreezeStr LITERAL1
|
||||
kButtonStr LITERAL1
|
||||
kCancelStr LITERAL1
|
||||
kCarrierAc40BitMark LITERAL1
|
||||
kCarrierAc40Bits LITERAL1
|
||||
kCarrierAc40HdrMark LITERAL1
|
||||
kCarrierAc40HdrSpace LITERAL1
|
||||
kCarrierAc40MinRepeat LITERAL1
|
||||
kCarrierAc40OneSpace LITERAL1
|
||||
kCarrierAc40ZeroSpace LITERAL1
|
||||
kCarrierAc64BitMark LITERAL1
|
||||
kCarrierAc64Bits LITERAL1
|
||||
kCarrierAc64Gap LITERAL1
|
||||
kCarrierAc64HdrMark LITERAL1
|
||||
kCarrierAc64HdrSpace LITERAL1
|
||||
kCarrierAc64MinRepeat LITERAL1
|
||||
kCarrierAc64OneSpace LITERAL1
|
||||
kCarrierAc64ZeroSpace LITERAL1
|
||||
kCarrierAcBitMark LITERAL1
|
||||
kCarrierAcBits LITERAL1
|
||||
kCarrierAcFreq LITERAL1
|
||||
kCarrierAcGap LITERAL1
|
||||
kCarrierAcHdrMark LITERAL1
|
||||
kCarrierAcHdrSpace LITERAL1
|
||||
|
@ -1596,6 +1657,7 @@ kDaikin64SleepBit LITERAL1
|
|||
kDaikin64SwingVBit LITERAL1
|
||||
kDaikin64TempOffset LITERAL1
|
||||
kDaikin64TempSize LITERAL1
|
||||
kDaikin64ToleranceDelta LITERAL1
|
||||
kDaikin64ZeroSpace LITERAL1
|
||||
kDaikinAuto LITERAL1
|
||||
kDaikinBeepLoud LITERAL1
|
||||
|
@ -1701,6 +1763,51 @@ kDayStr LITERAL1
|
|||
kDaysStr LITERAL1
|
||||
kDefaultESP32Timer LITERAL1
|
||||
kDefaultMessageGap LITERAL1
|
||||
kDelonghiAcAuto LITERAL1
|
||||
kDelonghiAcBitMark LITERAL1
|
||||
kDelonghiAcBits LITERAL1
|
||||
kDelonghiAcBoostBit LITERAL1
|
||||
kDelonghiAcChecksumOffset LITERAL1
|
||||
kDelonghiAcChecksumSize LITERAL1
|
||||
kDelonghiAcCool LITERAL1
|
||||
kDelonghiAcDefaultRepeat LITERAL1
|
||||
kDelonghiAcDry LITERAL1
|
||||
kDelonghiAcFan LITERAL1
|
||||
kDelonghiAcFanAuto LITERAL1
|
||||
kDelonghiAcFanHigh LITERAL1
|
||||
kDelonghiAcFanLow LITERAL1
|
||||
kDelonghiAcFanMedium LITERAL1
|
||||
kDelonghiAcFanOffset LITERAL1
|
||||
kDelonghiAcFanSize LITERAL1
|
||||
kDelonghiAcFreq LITERAL1
|
||||
kDelonghiAcGap LITERAL1
|
||||
kDelonghiAcHdrMark LITERAL1
|
||||
kDelonghiAcHdrSpace LITERAL1
|
||||
kDelonghiAcHoursSize LITERAL1
|
||||
kDelonghiAcMinsSize LITERAL1
|
||||
kDelonghiAcModeOffset LITERAL1
|
||||
kDelonghiAcModeSize LITERAL1
|
||||
kDelonghiAcOffTimerEnableBit LITERAL1
|
||||
kDelonghiAcOffTimerHoursOffset LITERAL1
|
||||
kDelonghiAcOffTimerMinsOffset LITERAL1
|
||||
kDelonghiAcOnTimerEnableBit LITERAL1
|
||||
kDelonghiAcOnTimerHoursOffset LITERAL1
|
||||
kDelonghiAcOnTimerMinsOffset LITERAL1
|
||||
kDelonghiAcOneSpace LITERAL1
|
||||
kDelonghiAcOverhead LITERAL1
|
||||
kDelonghiAcPowerBit LITERAL1
|
||||
kDelonghiAcSleepBit LITERAL1
|
||||
kDelonghiAcTempAutoDryMode LITERAL1
|
||||
kDelonghiAcTempFanMode LITERAL1
|
||||
kDelonghiAcTempMaxC LITERAL1
|
||||
kDelonghiAcTempMaxF LITERAL1
|
||||
kDelonghiAcTempMinC LITERAL1
|
||||
kDelonghiAcTempMinF LITERAL1
|
||||
kDelonghiAcTempOffset LITERAL1
|
||||
kDelonghiAcTempSize LITERAL1
|
||||
kDelonghiAcTempUnitBit LITERAL1
|
||||
kDelonghiAcTimerMax LITERAL1
|
||||
kDelonghiAcZeroSpace LITERAL1
|
||||
kDenon48Bits LITERAL1
|
||||
kDenonBitMark LITERAL1
|
||||
kDenonBitMarkTicks LITERAL1
|
||||
|
@ -1734,6 +1841,15 @@ kDishRptSpaceTicks LITERAL1
|
|||
kDishTick LITERAL1
|
||||
kDishZeroSpace LITERAL1
|
||||
kDishZeroSpaceTicks LITERAL1
|
||||
kDisplayTempStr LITERAL1
|
||||
kDoshishaBitMark LITERAL1
|
||||
kDoshishaBits LITERAL1
|
||||
kDoshishaFreq LITERAL1
|
||||
kDoshishaHdrMark LITERAL1
|
||||
kDoshishaHdrSpace LITERAL1
|
||||
kDoshishaOneSpace LITERAL1
|
||||
kDoshishaOverhead LITERAL1
|
||||
kDoshishaZeroSpace LITERAL1
|
||||
kDownStr LITERAL1
|
||||
kDry LITERAL1
|
||||
kDryStr LITERAL1
|
||||
|
@ -1909,6 +2025,12 @@ kGreeBlockFooter LITERAL1
|
|||
kGreeBlockFooterBits LITERAL1
|
||||
kGreeCool LITERAL1
|
||||
kGreeDefaultRepeat LITERAL1
|
||||
kGreeDisplayTempInside LITERAL1
|
||||
kGreeDisplayTempOff LITERAL1
|
||||
kGreeDisplayTempOffset LITERAL1
|
||||
kGreeDisplayTempOutside LITERAL1
|
||||
kGreeDisplayTempSet LITERAL1
|
||||
kGreeDisplayTempSize LITERAL1
|
||||
kGreeDry LITERAL1
|
||||
kGreeFan LITERAL1
|
||||
kGreeFanAuto LITERAL1
|
||||
|
@ -1922,8 +2044,10 @@ kGreeHdrSpace LITERAL1
|
|||
kGreeHeat LITERAL1
|
||||
kGreeIFeelOffset LITERAL1
|
||||
kGreeLightOffset LITERAL1
|
||||
kGreeMaxTemp LITERAL1
|
||||
kGreeMinTemp LITERAL1
|
||||
kGreeMaxTempC LITERAL1
|
||||
kGreeMaxTempF LITERAL1
|
||||
kGreeMinTempC LITERAL1
|
||||
kGreeMinTempF LITERAL1
|
||||
kGreeMsgSpace LITERAL1
|
||||
kGreeOneSpace LITERAL1
|
||||
kGreePower1Offset LITERAL1
|
||||
|
@ -1942,6 +2066,8 @@ kGreeSwingMiddleUp LITERAL1
|
|||
kGreeSwingSize LITERAL1
|
||||
kGreeSwingUp LITERAL1
|
||||
kGreeSwingUpAuto LITERAL1
|
||||
kGreeTempExtraDegreeFOffset LITERAL1
|
||||
kGreeTempOffset LITERAL1
|
||||
kGreeTempSize LITERAL1
|
||||
kGreeTimerEnabledOffset LITERAL1
|
||||
kGreeTimerHalfHrOffset LITERAL1
|
||||
|
@ -1951,6 +2077,7 @@ kGreeTimerMax LITERAL1
|
|||
kGreeTimerTensHrOffset LITERAL1
|
||||
kGreeTimerTensHrSize LITERAL1
|
||||
kGreeTurboOffset LITERAL1
|
||||
kGreeUseFahrenheitOffset LITERAL1
|
||||
kGreeWiFiOffset LITERAL1
|
||||
kGreeXfanOffset LITERAL1
|
||||
kGreeZeroSpace LITERAL1
|
||||
|
@ -2191,6 +2318,7 @@ kInaxMinRepeat LITERAL1
|
|||
kInaxOneSpace LITERAL1
|
||||
kInaxTick LITERAL1
|
||||
kInaxZeroSpace LITERAL1
|
||||
kInsideStr LITERAL1
|
||||
kIonStr LITERAL1
|
||||
kJvcBitMark LITERAL1
|
||||
kJvcBitMarkTicks LITERAL1
|
||||
|
@ -2661,6 +2789,13 @@ kModeStr LITERAL1
|
|||
kModelStr LITERAL1
|
||||
kMouldStr LITERAL1
|
||||
kMoveStr LITERAL1
|
||||
kMultibracketsBits LITERAL1
|
||||
kMultibracketsDefaultRepeat LITERAL1
|
||||
kMultibracketsFooterSpace LITERAL1
|
||||
kMultibracketsFreq LITERAL1
|
||||
kMultibracketsHdrMark LITERAL1
|
||||
kMultibracketsTick LITERAL1
|
||||
kMultibracketsTolerance LITERAL1
|
||||
kNAStr LITERAL1
|
||||
kNECBits LITERAL1
|
||||
kNecBitMark LITERAL1
|
||||
|
@ -2917,6 +3052,22 @@ kRcmmRptLength LITERAL1
|
|||
kRcmmRptLengthTicks LITERAL1
|
||||
kRcmmTick LITERAL1
|
||||
kRcmmTolerance LITERAL1
|
||||
kRcz01ChannelMask LITERAL1
|
||||
kRcz01CheckExpected LITERAL1
|
||||
kRcz01CheckMask LITERAL1
|
||||
kRcz01CommandLevel1 LITERAL1
|
||||
kRcz01CommandLevel2 LITERAL1
|
||||
kRcz01CommandLevel3 LITERAL1
|
||||
kRcz01CommandLevel4 LITERAL1
|
||||
kRcz01CommandLevelDown LITERAL1
|
||||
kRcz01CommandLevelUp LITERAL1
|
||||
kRcz01CommandMask LITERAL1
|
||||
kRcz01CommandNightLight LITERAL1
|
||||
kRcz01CommandOff LITERAL1
|
||||
kRcz01CommandOn LITERAL1
|
||||
kRcz01CommandSwitchChannel LITERAL1
|
||||
kRcz01CommandTimmer30 LITERAL1
|
||||
kRcz01CommandTimmer60 LITERAL1
|
||||
kRepeat LITERAL1
|
||||
kRepeatStr LITERAL1
|
||||
kRight LITERAL1
|
||||
|
@ -3023,20 +3174,21 @@ kSensorStr LITERAL1
|
|||
kSensorTempStr LITERAL1
|
||||
kSetStr LITERAL1
|
||||
kSharpAcAuto LITERAL1
|
||||
kSharpAcBitCleanOffset LITERAL1
|
||||
kSharpAcBitIonOffset LITERAL1
|
||||
kSharpAcBitMark LITERAL1
|
||||
kSharpAcBitPowerOffset LITERAL1
|
||||
kSharpAcBitPreviousPowerOffset LITERAL1
|
||||
kSharpAcBitTimerEnabled LITERAL1
|
||||
kSharpAcBitTimerType LITERAL1
|
||||
kSharpAcBits LITERAL1
|
||||
kSharpAcButtonFan LITERAL1
|
||||
kSharpAcButtonOffset LITERAL1
|
||||
kSharpAcButtonPowerMode LITERAL1
|
||||
kSharpAcButtonSize LITERAL1
|
||||
kSharpAcButtonTemp LITERAL1
|
||||
kSharpAcByteButton LITERAL1
|
||||
kSharpAcByteClean LITERAL1
|
||||
kSharpAcByteFan LITERAL1
|
||||
kSharpAcByteIon LITERAL1
|
||||
kSharpAcByteMode LITERAL1
|
||||
kSharpAcBytePower LITERAL1
|
||||
kSharpAcBytePowerSpecial LITERAL1
|
||||
kSharpAcByteSpecial LITERAL1
|
||||
kSharpAcByteSwing LITERAL1
|
||||
kSharpAcByteTemp LITERAL1
|
||||
kSharpAcByteTimer LITERAL1
|
||||
kSharpAcCool LITERAL1
|
||||
kSharpAcDefaultRepeat LITERAL1
|
||||
kSharpAcDry LITERAL1
|
||||
|
@ -3054,8 +3206,35 @@ kSharpAcHeat LITERAL1
|
|||
kSharpAcMaxTemp LITERAL1
|
||||
kSharpAcMinTemp LITERAL1
|
||||
kSharpAcModeSize LITERAL1
|
||||
kSharpAcOffTimerType LITERAL1
|
||||
kSharpAcOnTimerType LITERAL1
|
||||
kSharpAcOneSpace LITERAL1
|
||||
kSharpAcPowerOff LITERAL1
|
||||
kSharpAcPowerOn LITERAL1
|
||||
kSharpAcPowerOnFromOff LITERAL1
|
||||
kSharpAcPowerSetSpecialOff LITERAL1
|
||||
kSharpAcPowerSetSpecialOffset LITERAL1
|
||||
kSharpAcPowerSetSpecialOn LITERAL1
|
||||
kSharpAcPowerSpecialSize LITERAL1
|
||||
kSharpAcPowerTimerSetting LITERAL1
|
||||
kSharpAcPowerUnknown LITERAL1
|
||||
kSharpAcSpecialFan LITERAL1
|
||||
kSharpAcSpecialPower LITERAL1
|
||||
kSharpAcSpecialSwing LITERAL1
|
||||
kSharpAcSpecialTempEcono LITERAL1
|
||||
kSharpAcSpecialTimer LITERAL1
|
||||
kSharpAcSpecialTimerHalfHour LITERAL1
|
||||
kSharpAcSpecialTurbo LITERAL1
|
||||
kSharpAcStateLength LITERAL1
|
||||
kSharpAcSwingNoToggle LITERAL1
|
||||
kSharpAcSwingOffset LITERAL1
|
||||
kSharpAcSwingSize LITERAL1
|
||||
kSharpAcSwingToggle LITERAL1
|
||||
kSharpAcTimerHoursMax LITERAL1
|
||||
kSharpAcTimerHoursOff LITERAL1
|
||||
kSharpAcTimerHoursOffset LITERAL1
|
||||
kSharpAcTimerHoursSize LITERAL1
|
||||
kSharpAcTimerIncrement LITERAL1
|
||||
kSharpAcZeroSpace LITERAL1
|
||||
kSharpAddressBits LITERAL1
|
||||
kSharpAddressMask LITERAL1
|
||||
|
@ -3117,7 +3296,6 @@ kSwingVToggleStr LITERAL1
|
|||
kSymphonyBits LITERAL1
|
||||
kSymphonyDefaultRepeat LITERAL1
|
||||
kSymphonyFooterGap LITERAL1
|
||||
kSymphonyFooterMark LITERAL1
|
||||
kSymphonyOneMark LITERAL1
|
||||
kSymphonyOneSpace LITERAL1
|
||||
kSymphonyZeroMark LITERAL1
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "IRremoteESP8266",
|
||||
"version": "2.7.6",
|
||||
"version": "2.7.7",
|
||||
"keywords": "infrared, ir, remote, esp8266, esp32",
|
||||
"description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)",
|
||||
"repository":
|
||||
|
@ -37,6 +37,11 @@
|
|||
"name": "Massimiliano Pinto",
|
||||
"url": "https://github.com/pintomax/",
|
||||
"maintainer": true
|
||||
},
|
||||
{
|
||||
"name": "Christian Nilsson",
|
||||
"url": "https://github.com/NiKiZe",
|
||||
"maintainer": true
|
||||
}
|
||||
],
|
||||
"frameworks": "arduino",
|
|
@ -1,7 +1,7 @@
|
|||
name=IRremoteESP8266
|
||||
version=2.7.6
|
||||
version=2.7.7
|
||||
author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff
|
||||
maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto
|
||||
maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto, Christian Nilsson
|
||||
sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32)
|
||||
paragraph=This library enables you to send and receive infra-red signals on an ESP8266 or an ESP32.
|
||||
category=Device Control
|
|
@ -126,6 +126,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) {
|
|||
#if SEND_DAIKIN64
|
||||
case decode_type_t::DAIKIN64:
|
||||
#endif
|
||||
#if SEND_DELONGHI_AC
|
||||
case decode_type_t::DELONGHI_AC:
|
||||
#endif
|
||||
#if SEND_ELECTRA_AC
|
||||
case decode_type_t::ELECTRA_AC:
|
||||
#endif
|
||||
|
@ -488,6 +491,22 @@ void IRac::daikin64(IRDaikin64 *ac,
|
|||
}
|
||||
#endif // SEND_DAIKIN64
|
||||
|
||||
#if SEND_DELONGHI_AC
|
||||
void IRac::delonghiac(IRDelonghiAc *ac,
|
||||
const bool on, const stdAc::opmode_t mode, const bool celsius,
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const bool turbo, const int16_t sleep) {
|
||||
ac->begin();
|
||||
ac->setPower(on);
|
||||
ac->setMode(ac->convertMode(mode));
|
||||
ac->setTemp(degrees, !celsius);
|
||||
ac->setFan(ac->convertFan(fan));
|
||||
ac->setBoost(turbo);
|
||||
ac->setSleep(sleep >= 0);
|
||||
ac->send();
|
||||
}
|
||||
#endif // SEND_DELONGHI_AC
|
||||
|
||||
#if SEND_ELECTRA_AC
|
||||
void IRac::electra(IRElectraAc *ac,
|
||||
const bool on, const stdAc::opmode_t mode,
|
||||
|
@ -600,15 +619,15 @@ void IRac::goodweather(IRGoodweatherAc *ac,
|
|||
|
||||
#if SEND_GREE
|
||||
void IRac::gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
|
||||
const bool on, const stdAc::opmode_t mode, const float degrees,
|
||||
const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
|
||||
const bool turbo, const bool light, const bool clean,
|
||||
const int16_t sleep) {
|
||||
const bool on, const stdAc::opmode_t mode, const bool celsius,
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const stdAc::swingv_t swingv, const bool turbo,
|
||||
const bool light, const bool clean, const int16_t sleep) {
|
||||
ac->begin();
|
||||
ac->setModel(model);
|
||||
ac->setPower(on);
|
||||
ac->setMode(ac->convertMode(mode));
|
||||
ac->setTemp(degrees);
|
||||
ac->setTemp(degrees, !celsius);
|
||||
ac->setFan(ac->convertFan(fan));
|
||||
ac->setSwingVertical(swingv == stdAc::swingv_t::kAuto, // Set auto flag.
|
||||
ac->convertSwingV(swingv));
|
||||
|
@ -1059,25 +1078,38 @@ void IRac::samsung(IRSamsungAc *ac,
|
|||
void IRac::sharp(IRSharpAc *ac,
|
||||
const bool on, const bool prev_power,
|
||||
const stdAc::opmode_t mode,
|
||||
const float degrees, const stdAc::fanspeed_t fan) {
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const stdAc::swingv_t swingv, const bool turbo,
|
||||
const bool filter, const bool clean) {
|
||||
ac->begin();
|
||||
ac->setPower(on, prev_power);
|
||||
ac->setMode(ac->convertMode(mode));
|
||||
ac->setTemp(degrees);
|
||||
ac->setFan(ac->convertFan(fan));
|
||||
// No Vertical swing setting available.
|
||||
ac->setSwingToggle(swingv != stdAc::swingv_t::kOff);
|
||||
// Econo deliberately not used as it cycles through 3 modes uncontrolably.
|
||||
// ac->setEconoToggle(econo);
|
||||
ac->setIon(filter);
|
||||
// No Horizontal swing setting available.
|
||||
// No Quiet setting available.
|
||||
// No Turbo setting available.
|
||||
// No Light setting available.
|
||||
// No Econo setting available.
|
||||
// No Filter setting available.
|
||||
// No Clean setting available.
|
||||
// No Beep setting available.
|
||||
// No Sleep setting available.
|
||||
// No Clock setting available.
|
||||
// Do setMode() again as it can affect fan speed and temp.
|
||||
ac->setMode(ac->convertMode(mode));
|
||||
// Clean after mode, as it can affect the mode, temp & fan speed.
|
||||
if (clean) {
|
||||
// A/C needs to be off before we can enter clean mode.
|
||||
ac->setPower(false, prev_power);
|
||||
ac->send();
|
||||
}
|
||||
ac->setClean(clean);
|
||||
if (turbo) {
|
||||
ac->send(); // Send the current state.
|
||||
// Set up turbo mode as it needs to be sent after everything else.
|
||||
ac->setTurbo(true);
|
||||
}
|
||||
ac->send();
|
||||
}
|
||||
#endif // SEND_SHARP_AC
|
||||
|
@ -1284,8 +1316,9 @@ stdAc::state_t IRac::handleToggles(const stdAc::state_t desired,
|
|||
case decode_type_t::ELECTRA_AC:
|
||||
result.light = desired.light ^ prev->light;
|
||||
break;
|
||||
case decode_type_t::MIDEA:
|
||||
case decode_type_t::HITACHI_AC424:
|
||||
case decode_type_t::MIDEA:
|
||||
case decode_type_t::SHARP_AC:
|
||||
if ((desired.swingv == stdAc::swingv_t::kOff) ^
|
||||
(prev->swingv == stdAc::swingv_t::kOff)) // It changed, so toggle.
|
||||
result.swingv = stdAc::swingv_t::kAuto;
|
||||
|
@ -1459,6 +1492,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
|
|||
break;
|
||||
}
|
||||
#endif // SEND_DAIKIN64
|
||||
#if SEND_DELONGHI_AC
|
||||
case DELONGHI_AC:
|
||||
{
|
||||
IRDelonghiAc ac(_pin, _inverted, _modulation);
|
||||
delonghiac(&ac, send.power, send.mode, send.celsius, degC, send.fanspeed,
|
||||
send.turbo, send.sleep);
|
||||
break;
|
||||
}
|
||||
#endif // SEND_DELONGHI_AC
|
||||
#if SEND_ELECTRA_AC
|
||||
case ELECTRA_AC:
|
||||
{
|
||||
|
@ -1493,9 +1535,9 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
|
|||
{
|
||||
IRGreeAC ac(_pin, (gree_ac_remote_model_t)send.model, _inverted,
|
||||
_modulation);
|
||||
gree(&ac, (gree_ac_remote_model_t)send.model, send.power, send.mode, degC,
|
||||
send.fanspeed, send.swingv, send.turbo, send.light, send.clean,
|
||||
send.sleep);
|
||||
gree(&ac, (gree_ac_remote_model_t)send.model, send.power, send.mode,
|
||||
send.celsius, send.degrees, send.fanspeed, send.swingv, send.turbo,
|
||||
send.light, send.clean, send.sleep);
|
||||
break;
|
||||
}
|
||||
#endif // SEND_GREE
|
||||
|
@ -1660,7 +1702,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
|
|||
IRSharpAc ac(_pin, _inverted, _modulation);
|
||||
bool prev_power = !send.power;
|
||||
if (prev != NULL) prev_power = prev->power;
|
||||
sharp(&ac, send.power, prev_power, send.mode, degC, send.fanspeed);
|
||||
sharp(&ac, send.power, prev_power, send.mode, degC, send.fanspeed,
|
||||
send.swingv, send.turbo, send.filter, send.clean);
|
||||
break;
|
||||
}
|
||||
#endif // SEND_SHARP_AC
|
||||
|
@ -2107,7 +2150,14 @@ namespace IRAcUtils {
|
|||
ac.setRaw(result->value); // Daikin64 uses value instead of state.
|
||||
return ac.toString();
|
||||
}
|
||||
#endif // DECODE_DAIKIN216
|
||||
#endif // DECODE_DAIKIN64
|
||||
#if DECODE_DELONGHI_AC
|
||||
case decode_type_t::DELONGHI_AC: {
|
||||
IRDelonghiAc ac(kGpioUnused);
|
||||
ac.setRaw(result->value); // DelonghiAc uses value instead of state.
|
||||
return ac.toString();
|
||||
}
|
||||
#endif // DECODE_DELONGHI_AC
|
||||
#if DECODE_ELECTRA_AC
|
||||
case decode_type_t::ELECTRA_AC: {
|
||||
IRElectraAc ac(0);
|
||||
|
@ -2420,6 +2470,14 @@ namespace IRAcUtils {
|
|||
break;
|
||||
}
|
||||
#endif // DECODE_DAIKIN64
|
||||
#if DECODE_DELONGHI_AC
|
||||
case decode_type_t::DELONGHI_AC: {
|
||||
IRDelonghiAc ac(kGpioUnused);
|
||||
ac.setRaw(decode->value); // Uses value instead of state.
|
||||
*result = ac.toCommon();
|
||||
break;
|
||||
}
|
||||
#endif // DECODE_DELONGHI_AC
|
||||
#if DECODE_ELECTRA_AC
|
||||
case decode_type_t::ELECTRA_AC: {
|
||||
IRElectraAc ac(kGpioUnused);
|
|
@ -11,6 +11,7 @@
|
|||
#include "ir_Argo.h"
|
||||
#include "ir_Coolix.h"
|
||||
#include "ir_Daikin.h"
|
||||
#include "ir_Delonghi.h"
|
||||
#include "ir_Fujitsu.h"
|
||||
#include "ir_Electra.h"
|
||||
#include "ir_Goodweather.h"
|
||||
|
@ -174,6 +175,12 @@ void daikin216(IRDaikin216 *ac,
|
|||
const bool quiet, const bool turbo,
|
||||
const int16_t sleep = -1, const int16_t clock = -1);
|
||||
#endif // SEND_DAIKIN64
|
||||
#if SEND_DELONGHI_AC
|
||||
void delonghiac(IRDelonghiAc *ac,
|
||||
const bool on, const stdAc::opmode_t mode, const bool celsius,
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const bool turbo, const int16_t sleep = -1);
|
||||
#endif // SEND_DELONGHI_AC
|
||||
#if SEND_ELECTRA_AC
|
||||
void electra(IRElectraAc *ac,
|
||||
const bool on, const stdAc::opmode_t mode,
|
||||
|
@ -201,10 +208,10 @@ void electra(IRElectraAc *ac,
|
|||
#endif // SEND_GOODWEATHER
|
||||
#if SEND_GREE
|
||||
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
|
||||
const bool on, const stdAc::opmode_t mode, const float degrees,
|
||||
const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
|
||||
const bool turbo, const bool light, const bool clean,
|
||||
const int16_t sleep = -1);
|
||||
const bool on, const stdAc::opmode_t mode, const bool celsius,
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const stdAc::swingv_t swingv, const bool turbo, const bool light,
|
||||
const bool clean, const int16_t sleep = -1);
|
||||
#endif // SEND_GREE
|
||||
#if SEND_HAIER_AC
|
||||
void haier(IRHaierAC *ac,
|
||||
|
@ -325,7 +332,9 @@ void electra(IRElectraAc *ac,
|
|||
#if SEND_SHARP_AC
|
||||
void sharp(IRSharpAc *ac,
|
||||
const bool on, const bool prev_power, const stdAc::opmode_t mode,
|
||||
const float degrees, const stdAc::fanspeed_t fan);
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const stdAc::swingv_t swingv, const bool turbo, const bool filter,
|
||||
const bool clean);
|
||||
#endif // SEND_SHARP_AC
|
||||
#if SEND_TCL112AC
|
||||
void tcl112(IRTcl112Ac *ac,
|
|
@ -789,6 +789,26 @@ bool IRrecv::decode(decode_results *results, irparams_t *save,
|
|||
DPRINTLN("Attempting Airwell decode");
|
||||
if (decodeAirwell(results, offset)) return true;
|
||||
#endif // DECODE_AIRWELL
|
||||
#if DECODE_DELONGHI_AC
|
||||
DPRINTLN("Attempting Delonghi AC decode");
|
||||
if (decodeDelonghiAc(results, offset)) return true;
|
||||
#endif // DECODE_DELONGHI_AC
|
||||
#if DECODE_DOSHISHA
|
||||
DPRINTLN("Attempting Doshisha decode");
|
||||
if (decodeDoshisha(results, offset)) return true;
|
||||
#endif // DECODE_DOSHISHA
|
||||
#if DECODE_MULTIBRACKETS
|
||||
DPRINTLN("Attempting Multibrackets decode");
|
||||
if (decodeMultibrackets(results, offset)) return true;
|
||||
#endif // DECODE_MULTIBRACKETS
|
||||
#if DECODE_CARRIER_AC40
|
||||
DPRINTLN("Attempting Carrier 40bit decode");
|
||||
if (decodeCarrierAC40(results, offset)) return true;
|
||||
#endif // DECODE_CARRIER_AC40
|
||||
#if DECODE_CARRIER_AC64
|
||||
DPRINTLN("Attempting Carrier 64bit decode");
|
||||
if (decodeCarrierAC64(results, offset)) return true;
|
||||
#endif // DECODE_CARRIER_AC64
|
||||
// Typically new protocols are added above this line.
|
||||
}
|
||||
#if DECODE_HASH
|
||||
|
@ -1297,6 +1317,92 @@ uint16_t IRrecv::matchGeneric(volatile uint16_t *data_ptr,
|
|||
tolerance, excess, MSBfirst);
|
||||
}
|
||||
|
||||
// Match & decode a generic/typical constant bit time <= 64bit IR message.
|
||||
// The data is stored at result_ptr.
|
||||
// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip
|
||||
// that requirement.
|
||||
//
|
||||
// Args:
|
||||
// data_ptr: A pointer to where we are at in the capture buffer.
|
||||
// result_ptr: A pointer to where to start storing the bits we decoded.
|
||||
// remaining: The size of the capture buffer are remaining.
|
||||
// nbits: Nr. of data bits we expect.
|
||||
// hdrmark: Nr. of uSeconds for the expected header mark signal.
|
||||
// hdrspace: Nr. of uSeconds for the expected header space signal.
|
||||
// one: Nr. of uSeconds in an expected mark signal for a '1' bit.
|
||||
// zero: Nr. of uSeconds in an expected mark signal for a '0' bit.
|
||||
// footermark: Nr. of uSeconds for the expected footer mark signal.
|
||||
// footerspace: Nr. of uSeconds for the expected footer space/gap signal.
|
||||
// atleast: Is the match on the footerspace a matchAtLeast or matchSpace?
|
||||
// tolerance: Percentage error margin to allow. (Def: kUseDefTol)
|
||||
// excess: Nr. of useconds. (Def: kMarkExcess)
|
||||
// MSBfirst: Bit order to save the data in. (Def: true)
|
||||
// Returns:
|
||||
// A uint16_t: If successful, how many buffer entries were used. Otherwise 0.
|
||||
//
|
||||
// Note: one + zero add up to the total time for a bit.
|
||||
// e.g. mark(one) + space(zero) is a `1`, mark(zero) + space(one) is a `0`.
|
||||
uint16_t IRrecv::matchGenericConstBitTime(volatile uint16_t *data_ptr,
|
||||
uint64_t *result_ptr,
|
||||
const uint16_t remaining,
|
||||
const uint16_t nbits,
|
||||
const uint16_t hdrmark,
|
||||
const uint32_t hdrspace,
|
||||
const uint16_t one,
|
||||
const uint32_t zero,
|
||||
const uint16_t footermark,
|
||||
const uint32_t footerspace,
|
||||
const bool atleast,
|
||||
const uint8_t tolerance,
|
||||
const int16_t excess,
|
||||
const bool MSBfirst) {
|
||||
uint16_t offset = 0;
|
||||
uint64_t result = 0;
|
||||
// If we expect a footermark, then this can be processed like normal.
|
||||
if (footermark)
|
||||
return _matchGeneric(data_ptr, result_ptr, NULL, true, remaining, nbits,
|
||||
hdrmark, hdrspace, one, zero, zero, one,
|
||||
footermark, footerspace, atleast,
|
||||
tolerance, excess, MSBfirst);
|
||||
// Overwise handle like normal, except for the last bit. and no footer.
|
||||
uint16_t bits = (nbits > 0) ? nbits - 1 : 0; // Make sure we don't underflow.
|
||||
offset = _matchGeneric(data_ptr, &result, NULL, true, remaining, bits,
|
||||
hdrmark, hdrspace, one, zero, zero, one, 0, 0, false,
|
||||
tolerance, excess, true);
|
||||
if (!offset) return 0; // Didn't match.
|
||||
// Now for the last bit.
|
||||
if (remaining <= offset) return 0; // Not enough buffer.
|
||||
result <<= 1;
|
||||
bool last_bit = 0;
|
||||
// Is the mark a '1' or a `0`?
|
||||
if (matchMark(*(data_ptr + offset), one, tolerance, excess)) { // 1
|
||||
last_bit = 1;
|
||||
result |= 1;
|
||||
} else if (matchMark(*(data_ptr + offset), zero, tolerance, excess)) { // 0
|
||||
last_bit = 0;
|
||||
} else {
|
||||
return 0; // It's neither, so fail.
|
||||
}
|
||||
offset++;
|
||||
uint32_t expected_space = (last_bit ? zero : one) + footerspace;
|
||||
// If we are not at the end of the buffer, check for at least the expected
|
||||
// space value.
|
||||
if (remaining > offset) {
|
||||
if (atleast) {
|
||||
if (!matchAtLeast(*(data_ptr + offset), expected_space, tolerance,
|
||||
excess))
|
||||
return false;
|
||||
} else {
|
||||
if (!matchSpace(*(data_ptr + offset), expected_space, tolerance))
|
||||
return false;
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
if (!MSBfirst) result = reverseBits(result, nbits);
|
||||
*result_ptr = result;
|
||||
return offset;
|
||||
}
|
||||
|
||||
// Match & decode a Manchester Code <= 64bit IR message.
|
||||
// The data is stored at result_ptr.
|
||||
// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip
|
|
@ -221,6 +221,20 @@ class IRrecv {
|
|||
const uint8_t tolerance = kUseDefTol,
|
||||
const int16_t excess = kMarkExcess,
|
||||
const bool MSBfirst = true);
|
||||
uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr,
|
||||
uint64_t *result_ptr,
|
||||
const uint16_t remaining,
|
||||
const uint16_t nbits,
|
||||
const uint16_t hdrmark,
|
||||
const uint32_t hdrspace,
|
||||
const uint16_t one,
|
||||
const uint32_t zero,
|
||||
const uint16_t footermark,
|
||||
const uint32_t footerspace,
|
||||
const bool atleast = false,
|
||||
const uint8_t tolerance = kUseDefTol,
|
||||
const int16_t excess = kMarkExcess,
|
||||
const bool MSBfirst = true);
|
||||
uint16_t matchManchester(volatile const uint16_t *data_ptr,
|
||||
uint64_t *result_ptr,
|
||||
const uint16_t remaining,
|
||||
|
@ -471,7 +485,19 @@ class IRrecv {
|
|||
bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
|
||||
const uint16_t nbits = kCarrierAcBits,
|
||||
const bool strict = true);
|
||||
#endif
|
||||
#endif // DECODE_CARRIER_AC
|
||||
#if DECODE_CARRIER_AC40
|
||||
bool decodeCarrierAC40(decode_results *results,
|
||||
uint16_t offset = kStartOffset,
|
||||
const uint16_t nbits = kCarrierAc40Bits,
|
||||
const bool strict = true);
|
||||
#endif // DECODE_CARRIER_AC40
|
||||
#if DECODE_CARRIER_AC64
|
||||
bool decodeCarrierAC64(decode_results *results,
|
||||
uint16_t offset = kStartOffset,
|
||||
const uint16_t nbits = kCarrierAc64Bits,
|
||||
const bool strict = true);
|
||||
#endif // DECODE_CARRIER_AC64
|
||||
#if DECODE_GOODWEATHER
|
||||
bool decodeGoodweather(decode_results *results,
|
||||
uint16_t offset = kStartOffset,
|
||||
|
@ -593,6 +619,22 @@ class IRrecv {
|
|||
const uint16_t nbits = kAirwellBits,
|
||||
const bool strict = true);
|
||||
#endif // DECODE_AIRWELL
|
||||
#if DECODE_DELONGHI_AC
|
||||
bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
|
||||
const uint16_t nbits = kDelonghiAcBits,
|
||||
const bool strict = true);
|
||||
#endif // DECODE_DELONGHI_AC
|
||||
#if DECODE_DOSHISHA
|
||||
bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
|
||||
const uint16_t nbits = kDoshishaBits,
|
||||
const bool strict = true);
|
||||
#endif // DECODE_DOSHISHA
|
||||
#if DECODE_MULTIBRACKETS
|
||||
bool decodeMultibrackets(decode_results *results,
|
||||
uint16_t offset = kStartOffset,
|
||||
const uint16_t nbits = kMultibracketsBits,
|
||||
const bool strict = true);
|
||||
#endif // DECODE_MULTIBRACKETS
|
||||
};
|
||||
|
||||
#endif // IRRECV_H_
|
|
@ -52,7 +52,7 @@
|
|||
#endif // UNIT_TEST
|
||||
|
||||
// Library Version
|
||||
#define _IRREMOTEESP8266_VERSION_ "2.7.6"
|
||||
#define _IRREMOTEESP8266_VERSION_ "2.7.7"
|
||||
|
||||
// Set the language & locale for the library. See the `locale` dir for options.
|
||||
#ifndef _IR_LOCALE_
|
||||
|
@ -383,6 +383,20 @@
|
|||
#define SEND_CARRIER_AC _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_CARRIER_AC
|
||||
|
||||
#ifndef DECODE_CARRIER_AC40
|
||||
#define DECODE_CARRIER_AC40 _IR_ENABLE_DEFAULT_
|
||||
#endif // DECODE_CARRIER_AC40
|
||||
#ifndef SEND_CARRIER_AC40
|
||||
#define SEND_CARRIER_AC40 _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_CARRIER_AC40
|
||||
|
||||
#ifndef DECODE_CARRIER_AC64
|
||||
#define DECODE_CARRIER_AC64 _IR_ENABLE_DEFAULT_
|
||||
#endif // DECODE_CARRIER_AC64
|
||||
#ifndef SEND_CARRIER_AC64
|
||||
#define SEND_CARRIER_AC64 _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_CARRIER_AC64
|
||||
|
||||
#ifndef DECODE_HAIER_AC
|
||||
#define DECODE_HAIER_AC _IR_ENABLE_DEFAULT_
|
||||
#endif // DECODE_HAIER_AC
|
||||
|
@ -600,6 +614,27 @@
|
|||
#define SEND_AIRWELL _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_AIRWELL
|
||||
|
||||
#ifndef DECODE_DELONGHI_AC
|
||||
#define DECODE_DELONGHI_AC _IR_ENABLE_DEFAULT_
|
||||
#endif // DECODE_DELONGHI_AC
|
||||
#ifndef SEND_DELONGHI_AC
|
||||
#define SEND_DELONGHI_AC _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_DELONGHI_AC
|
||||
|
||||
#ifndef DECODE_DOSHISHA
|
||||
#define DECODE_DOSHISHA _IR_ENABLE_DEFAULT_
|
||||
#endif // DECODE_DOSHISHA
|
||||
#ifndef SEND_DOSHISHA
|
||||
#define SEND_DOSHISHA _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_DOSHISHA
|
||||
|
||||
#ifndef DECODE_MULTIBRACKETS
|
||||
#define DECODE_MULTIBRACKETS _IR_ENABLE_DEFAULT_
|
||||
#endif // DECODE_MULTIBRACKETS
|
||||
#ifndef SEND_MULTIBRACKETS
|
||||
#define SEND_MULTIBRACKETS _IR_ENABLE_DEFAULT_
|
||||
#endif // SEND_MULTIBRACKETS
|
||||
|
||||
#if (DECODE_ARGO || DECODE_DAIKIN || DECODE_FUJITSU_AC || DECODE_GREE || \
|
||||
DECODE_KELVINATOR || DECODE_MITSUBISHI_AC || DECODE_TOSHIBA_AC || \
|
||||
DECODE_TROTEC || DECODE_HAIER_AC || DECODE_HITACHI_AC || \
|
||||
|
@ -727,8 +762,13 @@ enum decode_type_t {
|
|||
HITACHI_AC3,
|
||||
DAIKIN64,
|
||||
AIRWELL,
|
||||
DELONGHI_AC, // 80
|
||||
DOSHISHA,
|
||||
MULTIBRACKETS,
|
||||
CARRIER_AC40,
|
||||
CARRIER_AC64,
|
||||
// Add new entries before this one, and update it to point to the last entry.
|
||||
kLastDecodeType = AIRWELL,
|
||||
kLastDecodeType = CARRIER_AC64,
|
||||
};
|
||||
|
||||
// Message lengths & required repeat values
|
||||
|
@ -750,6 +790,10 @@ const uint16_t kCoolixBits = 24;
|
|||
const uint16_t kCoolixDefaultRepeat = kSingleRepeat;
|
||||
const uint16_t kCarrierAcBits = 32;
|
||||
const uint16_t kCarrierAcMinRepeat = kNoRepeat;
|
||||
const uint16_t kCarrierAc40Bits = 40;
|
||||
const uint16_t kCarrierAc40MinRepeat = 2;
|
||||
const uint16_t kCarrierAc64Bits = 64;
|
||||
const uint16_t kCarrierAc64MinRepeat = kNoRepeat;
|
||||
const uint16_t kDaikinStateLength = 35;
|
||||
const uint16_t kDaikinBits = kDaikinStateLength * 8;
|
||||
const uint16_t kDaikinStateLengthShort = kDaikinStateLength - 8;
|
||||
|
@ -775,11 +819,14 @@ const uint16_t kDaikin176DefaultRepeat = kNoRepeat;
|
|||
const uint16_t kDaikin216StateLength = 27;
|
||||
const uint16_t kDaikin216Bits = kDaikin216StateLength * 8;
|
||||
const uint16_t kDaikin216DefaultRepeat = kNoRepeat;
|
||||
const uint16_t kDelonghiAcBits = 64;
|
||||
const uint16_t kDelonghiAcDefaultRepeat = kNoRepeat;
|
||||
const uint16_t kDenonBits = 15;
|
||||
const uint16_t kDenon48Bits = 48;
|
||||
const uint16_t kDenonLegacyBits = 14;
|
||||
const uint16_t kDishBits = 16;
|
||||
const uint16_t kDishMinRepeat = 3;
|
||||
const uint16_t kDoshishaBits = 40;
|
||||
const uint16_t kEpsonBits = 32;
|
||||
const uint16_t kEpsonMinRepeat = 2;
|
||||
const uint16_t kElectraAcStateLength = 13;
|
||||
|
@ -852,6 +899,8 @@ const uint16_t kMitsubishiHeavy88MinRepeat = kNoRepeat;
|
|||
const uint16_t kMitsubishiHeavy152StateLength = 19;
|
||||
const uint16_t kMitsubishiHeavy152Bits = kMitsubishiHeavy152StateLength * 8;
|
||||
const uint16_t kMitsubishiHeavy152MinRepeat = kNoRepeat;
|
||||
const uint16_t kMultibracketsBits = 8;
|
||||
const uint16_t kMultibracketsDefaultRepeat = kSingleRepeat;
|
||||
const uint16_t kNikaiBits = 24;
|
||||
const uint16_t kNECBits = 32;
|
||||
const uint16_t kNeoclimaStateLength = 12;
|
||||
|
@ -897,8 +946,8 @@ const uint16_t kSony15Bits = 15;
|
|||
const uint16_t kSony20Bits = 20;
|
||||
const uint16_t kSonyMinBits = 12;
|
||||
const uint16_t kSonyMinRepeat = 2;
|
||||
const uint16_t kSymphonyBits = 11;
|
||||
const uint16_t kSymphonyDefaultRepeat = kSingleRepeat;
|
||||
const uint16_t kSymphonyBits = 12;
|
||||
const uint16_t kSymphonyDefaultRepeat = 3;
|
||||
const uint16_t kTcl112AcStateLength = 14;
|
||||
const uint16_t kTcl112AcBits = kTcl112AcStateLength * 8;
|
||||
const uint16_t kTcl112AcDefaultRepeat = kNoRepeat;
|
|
@ -607,13 +607,15 @@ uint16_t IRsend::minRepeats(const decode_type_t protocol) {
|
|||
case MITSUBISHI:
|
||||
case MITSUBISHI2:
|
||||
case MITSUBISHI_AC:
|
||||
case MULTIBRACKETS:
|
||||
case SHERWOOD:
|
||||
case SYMPHONY:
|
||||
case TOSHIBA_AC:
|
||||
return kSingleRepeat;
|
||||
// Special
|
||||
case AIRWELL:
|
||||
return kAirwellMinRepeats;
|
||||
case CARRIER_AC40:
|
||||
return kCarrierAc40MinRepeat;
|
||||
case DISH:
|
||||
return kDishMinRepeat;
|
||||
case EPSON:
|
||||
|
@ -622,6 +624,8 @@ uint16_t IRsend::minRepeats(const decode_type_t protocol) {
|
|||
return kSonyMinRepeat;
|
||||
case SONY_38K:
|
||||
return kSonyMinRepeat + 1;
|
||||
case SYMPHONY:
|
||||
return kSymphonyDefaultRepeat;
|
||||
default:
|
||||
return kNoRepeat;
|
||||
}
|
||||
|
@ -634,9 +638,10 @@ uint16_t IRsend::minRepeats(const decode_type_t protocol) {
|
|||
// int16_t: The number of bits.
|
||||
uint16_t IRsend::defaultBits(const decode_type_t protocol) {
|
||||
switch (protocol) {
|
||||
case SYMPHONY:
|
||||
return 11;
|
||||
case MULTIBRACKETS:
|
||||
return 8;
|
||||
case RC5:
|
||||
case SYMPHONY:
|
||||
return 12;
|
||||
case LASERTAG:
|
||||
case RC5X:
|
||||
|
@ -678,6 +683,10 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) {
|
|||
return 35;
|
||||
case SAMSUNG36:
|
||||
return 36;
|
||||
case CARRIER_AC40:
|
||||
return kCarrierAc40Bits; // 40
|
||||
case DOSHISHA:
|
||||
return kDoshishaBits; // 40
|
||||
case SANYO_LC7461:
|
||||
return kSanyoLC7461Bits; // 42
|
||||
case GOODWEATHER:
|
||||
|
@ -688,6 +697,8 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) {
|
|||
case VESTEL_AC:
|
||||
return 56;
|
||||
case AMCOR:
|
||||
case CARRIER_AC64:
|
||||
case DELONGHI_AC:
|
||||
case PIONEER:
|
||||
return 64;
|
||||
case ARGO:
|
||||
|
@ -790,6 +801,16 @@ bool IRsend::send(const decode_type_t type, const uint64_t data,
|
|||
sendCarrierAC(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_CARRIER_AC40
|
||||
case CARRIER_AC40:
|
||||
sendCarrierAC40(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif // SEND_CARRIER_AC40
|
||||
#if SEND_CARRIER_AC64
|
||||
case CARRIER_AC64:
|
||||
sendCarrierAC64(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif // SEND_CARRIER_AC64
|
||||
#if SEND_COOLIX
|
||||
case COOLIX:
|
||||
sendCOOLIX(data, nbits, min_repeat);
|
||||
|
@ -800,6 +821,11 @@ bool IRsend::send(const decode_type_t type, const uint64_t data,
|
|||
sendDaikin64(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_DELONGHI_AC
|
||||
case DELONGHI_AC:
|
||||
sendDelonghiAc(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_DENON
|
||||
case DENON:
|
||||
sendDenon(data, nbits, min_repeat);
|
||||
|
@ -810,6 +836,11 @@ bool IRsend::send(const decode_type_t type, const uint64_t data,
|
|||
sendDISH(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_DOSHISHA
|
||||
case DOSHISHA:
|
||||
sendDoshisha(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_EPSON
|
||||
case EPSON:
|
||||
sendEpson(data, nbits, min_repeat);
|
||||
|
@ -883,6 +914,11 @@ bool IRsend::send(const decode_type_t type, const uint64_t data,
|
|||
sendMitsubishi2(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_MULTIBRACKETS
|
||||
case MULTIBRACKETS:
|
||||
sendMultibrackets(data, nbits, min_repeat);
|
||||
break;
|
||||
#endif
|
||||
#if SEND_NIKAI
|
||||
case NIKAI:
|
||||
sendNikai(data, nbits, min_repeat);
|
|
@ -466,6 +466,14 @@ class IRsend {
|
|||
void sendCarrierAC(uint64_t data, uint16_t nbits = kCarrierAcBits,
|
||||
uint16_t repeat = kCarrierAcMinRepeat);
|
||||
#endif
|
||||
#if SEND_CARRIER_AC40
|
||||
void sendCarrierAC40(uint64_t data, uint16_t nbits = kCarrierAc40Bits,
|
||||
uint16_t repeat = kCarrierAc40MinRepeat);
|
||||
#endif
|
||||
#if SEND_CARRIER_AC64
|
||||
void sendCarrierAC64(uint64_t data, uint16_t nbits = kCarrierAc64Bits,
|
||||
uint16_t repeat = kCarrierAc64MinRepeat);
|
||||
#endif
|
||||
#if (SEND_HAIER_AC || SEND_HAIER_AC_YRW02)
|
||||
void sendHaierAC(const unsigned char data[],
|
||||
const uint16_t nbytes = kHaierACStateLength,
|
||||
|
@ -573,6 +581,20 @@ class IRsend {
|
|||
void sendAirwell(uint64_t data, uint16_t nbits = kAirwellBits,
|
||||
uint16_t repeat = kAirwellMinRepeats);
|
||||
#endif
|
||||
#if SEND_DELONGHI_AC
|
||||
void sendDelonghiAc(uint64_t data, uint16_t nbits = kDelonghiAcBits,
|
||||
uint16_t repeat = kDelonghiAcDefaultRepeat);
|
||||
#endif
|
||||
#if SEND_DOSHISHA
|
||||
void sendDoshisha(const uint64_t data, uint16_t nbits = kDoshishaBits,
|
||||
const uint16_t repeat = kNoRepeat);
|
||||
uint64_t encodeDoshisha(const uint8_t command, const uint8_t channel = 0);
|
||||
#endif // SEND_DOSHISHA
|
||||
#if SEND_MULTIBRACKETS
|
||||
void sendMultibrackets(const uint64_t data,
|
||||
const uint16_t nbits = kMultibracketsBits,
|
||||
const uint16_t repeat = kMultibracketsDefaultRepeat);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
#ifdef UNIT_TEST
|
|
@ -1,4 +1,7 @@
|
|||
// Copyright 2019 - David Conran (@crankyoldgit)
|
||||
// Copyright 2019-2020 - David Conran (@crankyoldgit)
|
||||
|
||||
/// @warn If you add or remove an entry in this file, you should run:
|
||||
/// '../tools/generate_irtext_h.sh' to rebuild the `IRtext.h` file.
|
||||
|
||||
#ifndef UNIT_TEST
|
||||
#include <Arduino.h>
|
||||
|
@ -79,6 +82,7 @@ const PROGMEM char* kSlowStr = D_STR_SLOW;
|
|||
const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW;
|
||||
const PROGMEM char* kStepStr = D_STR_STEP;
|
||||
const PROGMEM char* kNAStr = D_STR_NA;
|
||||
const PROGMEM char* kInsideStr = D_STR_INSIDE;
|
||||
const PROGMEM char* kOutsideStr = D_STR_OUTSIDE;
|
||||
const PROGMEM char* kLoudStr = D_STR_LOUD;
|
||||
const PROGMEM char* kLowerStr = D_STR_LOWER;
|
||||
|
@ -131,6 +135,7 @@ const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE;
|
|||
const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET;
|
||||
const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE;
|
||||
const PROGMEM char* kPreviousPowerStr = D_STR_PREVIOUSPOWER;
|
||||
const PROGMEM char* kDisplayTempStr = D_STR_DISPLAYTEMP;
|
||||
const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP;
|
||||
const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER;
|
||||
const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE;
|
||||
|
@ -247,4 +252,10 @@ const PROGMEM char *kAllProtocolNamesStr =
|
|||
D_STR_HITACHI_AC3 "\x0"
|
||||
D_STR_DAIKIN64 "\x0"
|
||||
D_STR_AIRWELL "\x0"
|
||||
D_STR_DELONGHI_AC "\x0"
|
||||
D_STR_DOSHISHA "\x0"
|
||||
D_STR_MULTIBRACKETS "\x0"
|
||||
D_STR_CARRIER_AC40 "\x0"
|
||||
D_STR_CARRIER_AC64 "\x0"
|
||||
// New protocol strings should be added just above this line.
|
||||
"\x0"; // This string requires double null termination.
|
|
@ -41,6 +41,7 @@ extern const char* kCommaSpaceStr;
|
|||
extern const char* kCoolStr;
|
||||
extern const char* kDaysStr;
|
||||
extern const char* kDayStr;
|
||||
extern const char* kDisplayTempStr;
|
||||
extern const char* kDownStr;
|
||||
extern const char* kDryStr;
|
||||
extern const char* kEconoStr;
|
||||
|
@ -64,6 +65,7 @@ extern const char* kHoursStr;
|
|||
extern const char* kHourStr;
|
||||
extern const char* kHumidStr;
|
||||
extern const char* kIFeelStr;
|
||||
extern const char* kInsideStr;
|
||||
extern const char* kIonStr;
|
||||
extern const char* kLastStr;
|
||||
extern const char* kLeftMaxStr;
|