Infrared remote library for Arduino: send and receive infrared signals with multiple protocols Port from Arduino-IRremote https://github.com/z3t0/Arduino-IRremote

Dependents:   Lilnija_29012017 NucleoF042K6_IRReceiver

Committer:
yuhki50
Date:
Thu Mar 10 15:39:34 2016 +0000
Revision:
7:c82a0d54a024
Parent:
3:17440cf7ab90
change USECPERTICK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuhki50 0:70c8e56bac45 1
yuhki50 0:70c8e56bac45 2 //******************************************************************************
yuhki50 0:70c8e56bac45 3 // IRremote
yuhki50 0:70c8e56bac45 4 // Version 2.0.1 June, 2015
yuhki50 0:70c8e56bac45 5 // Copyright 2009 Ken Shirriff
yuhki50 0:70c8e56bac45 6 // For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
yuhki50 0:70c8e56bac45 7 // Edited by Mitra to add new controller SANYO
yuhki50 0:70c8e56bac45 8 //
yuhki50 0:70c8e56bac45 9 // Interrupt code based on NECIRrcv by Joe Knapp
yuhki50 0:70c8e56bac45 10 // http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556
yuhki50 0:70c8e56bac45 11 // Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/
yuhki50 0:70c8e56bac45 12 //
yuhki50 0:70c8e56bac45 13 // JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
yuhki50 0:70c8e56bac45 14 // LG added by Darryl Smith (based on the JVC protocol)
yuhki50 0:70c8e56bac45 15 // Whynter A/C ARC-110WD added by Francesco Meschia
yuhki50 0:70c8e56bac45 16 //******************************************************************************
yuhki50 0:70c8e56bac45 17
yuhki50 0:70c8e56bac45 18 #ifndef IRremote_h
yuhki50 0:70c8e56bac45 19 #define IRremote_h
yuhki50 0:70c8e56bac45 20
yuhki50 0:70c8e56bac45 21 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 22 // The ISR header contains several useful macros the user may wish to use
yuhki50 0:70c8e56bac45 23 //
yuhki50 0:70c8e56bac45 24 #include "IRremoteInt.h"
yuhki50 0:70c8e56bac45 25
yuhki50 0:70c8e56bac45 26 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 27 // Supported IR protocols
yuhki50 0:70c8e56bac45 28 // Each protocol you include costs memory and, during decode, costs time
yuhki50 0:70c8e56bac45 29 // Disable (set to 0) all the protocols you do not need/want!
yuhki50 0:70c8e56bac45 30 //
yuhki50 0:70c8e56bac45 31 #define DECODE_RC5 1
yuhki50 0:70c8e56bac45 32 #define SEND_RC5 1
yuhki50 0:70c8e56bac45 33
yuhki50 0:70c8e56bac45 34 #define DECODE_RC6 1
yuhki50 0:70c8e56bac45 35 #define SEND_RC6 1
yuhki50 0:70c8e56bac45 36
yuhki50 0:70c8e56bac45 37 #define DECODE_NEC 1
yuhki50 0:70c8e56bac45 38 #define SEND_NEC 1
yuhki50 0:70c8e56bac45 39
yuhki50 0:70c8e56bac45 40 #define DECODE_SONY 1
yuhki50 0:70c8e56bac45 41 #define SEND_SONY 1
yuhki50 0:70c8e56bac45 42
yuhki50 0:70c8e56bac45 43 #define DECODE_PANASONIC 1
yuhki50 0:70c8e56bac45 44 #define SEND_PANASONIC 1
yuhki50 0:70c8e56bac45 45
yuhki50 0:70c8e56bac45 46 #define DECODE_JVC 1
yuhki50 0:70c8e56bac45 47 #define SEND_JVC 1
yuhki50 0:70c8e56bac45 48
yuhki50 0:70c8e56bac45 49 #define DECODE_SAMSUNG 1
yuhki50 0:70c8e56bac45 50 #define SEND_SAMSUNG 1
yuhki50 0:70c8e56bac45 51
yuhki50 0:70c8e56bac45 52 #define DECODE_WHYNTER 1
yuhki50 0:70c8e56bac45 53 #define SEND_WHYNTER 1
yuhki50 0:70c8e56bac45 54
yuhki50 0:70c8e56bac45 55 #define DECODE_AIWA_RC_T501 1
yuhki50 0:70c8e56bac45 56 #define SEND_AIWA_RC_T501 1
yuhki50 0:70c8e56bac45 57
yuhki50 0:70c8e56bac45 58 #define DECODE_LG 1
yuhki50 0:70c8e56bac45 59 #define SEND_LG 1
yuhki50 0:70c8e56bac45 60
yuhki50 0:70c8e56bac45 61 #define DECODE_SANYO 1
yuhki50 0:70c8e56bac45 62 #define SEND_SANYO 0 // NOT WRITTEN
yuhki50 0:70c8e56bac45 63
yuhki50 0:70c8e56bac45 64 #define DECODE_MITSUBISHI 1
yuhki50 0:70c8e56bac45 65 #define SEND_MITSUBISHI 0 // NOT WRITTEN
yuhki50 0:70c8e56bac45 66
yuhki50 0:70c8e56bac45 67 #define DECODE_DISH 0 // NOT WRITTEN
yuhki50 0:70c8e56bac45 68 #define SEND_DISH 1
yuhki50 0:70c8e56bac45 69
yuhki50 0:70c8e56bac45 70 #define DECODE_SHARP 0 // NOT WRITTEN
yuhki50 0:70c8e56bac45 71 #define SEND_SHARP 1
yuhki50 0:70c8e56bac45 72
yuhki50 0:70c8e56bac45 73 #define DECODE_DENON 1
yuhki50 0:70c8e56bac45 74 #define SEND_DENON 1
yuhki50 0:70c8e56bac45 75
yuhki50 0:70c8e56bac45 76 #define DECODE_PRONTO 0 // This function doe not logically make sense
yuhki50 0:70c8e56bac45 77 #define SEND_PRONTO 1
yuhki50 0:70c8e56bac45 78
yuhki50 0:70c8e56bac45 79 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 80 // When sending a Pronto code we request to send either the "once" code
yuhki50 0:70c8e56bac45 81 // or the "repeat" code
yuhki50 0:70c8e56bac45 82 // If the code requested does not exist we can request to fallback on the
yuhki50 0:70c8e56bac45 83 // other code (the one we did not explicitly request)
yuhki50 0:70c8e56bac45 84 //
yuhki50 0:70c8e56bac45 85 // I would suggest that "fallback" will be the standard calling method
yuhki50 0:70c8e56bac45 86 // The last paragraph on this page discusses the rationale of this idea:
yuhki50 0:70c8e56bac45 87 // http://www.remotecentral.com/features/irdisp2.htm
yuhki50 0:70c8e56bac45 88 //
yuhki50 0:70c8e56bac45 89 #define PRONTO_ONCE false
yuhki50 0:70c8e56bac45 90 #define PRONTO_REPEAT true
yuhki50 0:70c8e56bac45 91 #define PRONTO_FALLBACK true
yuhki50 0:70c8e56bac45 92 #define PRONTO_NOFALLBACK false
yuhki50 0:70c8e56bac45 93
yuhki50 0:70c8e56bac45 94 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 95 // An enumerated list of all supported formats
yuhki50 0:70c8e56bac45 96 // You do NOT need to remove entries from this list when disabling protocols!
yuhki50 0:70c8e56bac45 97 //
yuhki50 0:70c8e56bac45 98 typedef
yuhki50 0:70c8e56bac45 99 enum {
yuhki50 0:70c8e56bac45 100 UNKNOWN = -1,
yuhki50 0:70c8e56bac45 101 UNUSED = 0,
yuhki50 0:70c8e56bac45 102 RC5,
yuhki50 0:70c8e56bac45 103 RC6,
yuhki50 0:70c8e56bac45 104 NEC,
yuhki50 0:70c8e56bac45 105 SONY,
yuhki50 0:70c8e56bac45 106 PANASONIC,
yuhki50 0:70c8e56bac45 107 JVC,
yuhki50 0:70c8e56bac45 108 SAMSUNG,
yuhki50 0:70c8e56bac45 109 WHYNTER,
yuhki50 0:70c8e56bac45 110 AIWA_RC_T501,
yuhki50 0:70c8e56bac45 111 LG,
yuhki50 0:70c8e56bac45 112 SANYO,
yuhki50 0:70c8e56bac45 113 MITSUBISHI,
yuhki50 0:70c8e56bac45 114 DISH,
yuhki50 0:70c8e56bac45 115 SHARP,
yuhki50 0:70c8e56bac45 116 DENON,
yuhki50 0:70c8e56bac45 117 PRONTO,
yuhki50 0:70c8e56bac45 118 }
yuhki50 0:70c8e56bac45 119 decode_type_t;
yuhki50 0:70c8e56bac45 120
yuhki50 0:70c8e56bac45 121 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 122 // Set DEBUG to 1 for lots of lovely debug output
yuhki50 0:70c8e56bac45 123 //
yuhki50 0:70c8e56bac45 124 #define DEBUG 0
yuhki50 0:70c8e56bac45 125
yuhki50 0:70c8e56bac45 126 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 127 // Debug directives
yuhki50 0:70c8e56bac45 128 //
yuhki50 0:70c8e56bac45 129 #if DEBUG
yuhki50 0:70c8e56bac45 130 # define DBG_PRINT(...) Serial.print(__VA_ARGS__)
yuhki50 0:70c8e56bac45 131 # define DBG_PRINTLN(...) Serial.println(__VA_ARGS__)
yuhki50 0:70c8e56bac45 132 #else
yuhki50 0:70c8e56bac45 133 # define DBG_PRINT(...)
yuhki50 0:70c8e56bac45 134 # define DBG_PRINTLN(...)
yuhki50 0:70c8e56bac45 135 #endif
yuhki50 0:70c8e56bac45 136
yuhki50 0:70c8e56bac45 137 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 138 // Mark & Space matching functions
yuhki50 0:70c8e56bac45 139 //
yuhki50 0:70c8e56bac45 140 int MATCH (int measured, int desired) ;
yuhki50 0:70c8e56bac45 141 int MATCH_MARK (int measured_ticks, int desired_us) ;
yuhki50 0:70c8e56bac45 142 int MATCH_SPACE (int measured_ticks, int desired_us) ;
yuhki50 0:70c8e56bac45 143
yuhki50 0:70c8e56bac45 144 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 145 // Results returned from the decoder
yuhki50 0:70c8e56bac45 146 //
yuhki50 0:70c8e56bac45 147 class decode_results
yuhki50 0:70c8e56bac45 148 {
yuhki50 0:70c8e56bac45 149 public:
yuhki50 0:70c8e56bac45 150 decode_type_t decode_type; // UNKNOWN, NEC, SONY, RC5, ...
yuhki50 0:70c8e56bac45 151 unsigned int address; // Used by Panasonic & Sharp [16-bits]
yuhki50 0:70c8e56bac45 152 unsigned long value; // Decoded value [max 32-bits]
yuhki50 0:70c8e56bac45 153 int bits; // Number of bits in decoded value
yuhki50 3:17440cf7ab90 154 unsigned int *rawbuf; // Raw intervals in 50uS ticks
yuhki50 0:70c8e56bac45 155 int rawlen; // Number of records in rawbuf
yuhki50 0:70c8e56bac45 156 int overflow; // true iff IR raw code too long
yuhki50 0:70c8e56bac45 157 };
yuhki50 0:70c8e56bac45 158
yuhki50 0:70c8e56bac45 159 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 160 // Decoded value for NEC when a repeat code is received
yuhki50 0:70c8e56bac45 161 //
yuhki50 0:70c8e56bac45 162 #define REPEAT 0xFFFFFFFF
yuhki50 0:70c8e56bac45 163
yuhki50 0:70c8e56bac45 164 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 165 // Main class for receiving IR
yuhki50 0:70c8e56bac45 166 //
yuhki50 0:70c8e56bac45 167 class IRrecv
yuhki50 0:70c8e56bac45 168 {
yuhki50 0:70c8e56bac45 169 public:
yuhki50 3:17440cf7ab90 170 IRrecv (PinName recvpin) ;
yuhki50 0:70c8e56bac45 171 int decode (decode_results *results) ;
yuhki50 0:70c8e56bac45 172 void enableIRIn ( ) ;
yuhki50 3:17440cf7ab90 173 void disableIRIn ( ) ;
yuhki50 0:70c8e56bac45 174 bool isIdle ( ) ;
yuhki50 0:70c8e56bac45 175 void resume ( ) ;
yuhki50 0:70c8e56bac45 176
yuhki50 0:70c8e56bac45 177 private:
yuhki50 3:17440cf7ab90 178 void timer_isr ();
yuhki50 0:70c8e56bac45 179 long decodeHash (decode_results *results) ;
yuhki50 0:70c8e56bac45 180 int compare (unsigned int oldval, unsigned int newval) ;
yuhki50 0:70c8e56bac45 181
yuhki50 0:70c8e56bac45 182 //......................................................................
yuhki50 0:70c8e56bac45 183 # if (DECODE_RC5 || DECODE_RC6)
yuhki50 0:70c8e56bac45 184 // This helper function is shared by RC5 and RC6
yuhki50 0:70c8e56bac45 185 int getRClevel (decode_results *results, int *offset, int *used, int t1) ;
yuhki50 0:70c8e56bac45 186 # endif
yuhki50 0:70c8e56bac45 187 # if DECODE_RC5
yuhki50 0:70c8e56bac45 188 bool decodeRC5 (decode_results *results) ;
yuhki50 0:70c8e56bac45 189 # endif
yuhki50 0:70c8e56bac45 190 # if DECODE_RC6
yuhki50 0:70c8e56bac45 191 bool decodeRC6 (decode_results *results) ;
yuhki50 0:70c8e56bac45 192 # endif
yuhki50 0:70c8e56bac45 193 //......................................................................
yuhki50 0:70c8e56bac45 194 # if DECODE_NEC
yuhki50 0:70c8e56bac45 195 bool decodeNEC (decode_results *results) ;
yuhki50 0:70c8e56bac45 196 # endif
yuhki50 0:70c8e56bac45 197 //......................................................................
yuhki50 0:70c8e56bac45 198 # if DECODE_SONY
yuhki50 0:70c8e56bac45 199 bool decodeSony (decode_results *results) ;
yuhki50 0:70c8e56bac45 200 # endif
yuhki50 0:70c8e56bac45 201 //......................................................................
yuhki50 0:70c8e56bac45 202 # if DECODE_PANASONIC
yuhki50 0:70c8e56bac45 203 bool decodePanasonic (decode_results *results) ;
yuhki50 0:70c8e56bac45 204 # endif
yuhki50 0:70c8e56bac45 205 //......................................................................
yuhki50 0:70c8e56bac45 206 # if DECODE_JVC
yuhki50 0:70c8e56bac45 207 bool decodeJVC (decode_results *results) ;
yuhki50 0:70c8e56bac45 208 # endif
yuhki50 0:70c8e56bac45 209 //......................................................................
yuhki50 0:70c8e56bac45 210 # if DECODE_SAMSUNG
yuhki50 0:70c8e56bac45 211 bool decodeSAMSUNG (decode_results *results) ;
yuhki50 0:70c8e56bac45 212 # endif
yuhki50 0:70c8e56bac45 213 //......................................................................
yuhki50 0:70c8e56bac45 214 # if DECODE_WHYNTER
yuhki50 0:70c8e56bac45 215 bool decodeWhynter (decode_results *results) ;
yuhki50 0:70c8e56bac45 216 # endif
yuhki50 0:70c8e56bac45 217 //......................................................................
yuhki50 0:70c8e56bac45 218 # if DECODE_AIWA_RC_T501
yuhki50 0:70c8e56bac45 219 bool decodeAiwaRCT501 (decode_results *results) ;
yuhki50 0:70c8e56bac45 220 # endif
yuhki50 0:70c8e56bac45 221 //......................................................................
yuhki50 0:70c8e56bac45 222 # if DECODE_LG
yuhki50 0:70c8e56bac45 223 bool decodeLG (decode_results *results) ;
yuhki50 0:70c8e56bac45 224 # endif
yuhki50 0:70c8e56bac45 225 //......................................................................
yuhki50 0:70c8e56bac45 226 # if DECODE_SANYO
yuhki50 0:70c8e56bac45 227 bool decodeSanyo (decode_results *results) ;
yuhki50 0:70c8e56bac45 228 # endif
yuhki50 0:70c8e56bac45 229 //......................................................................
yuhki50 0:70c8e56bac45 230 # if DECODE_MITSUBISHI
yuhki50 0:70c8e56bac45 231 bool decodeMitsubishi (decode_results *results) ;
yuhki50 0:70c8e56bac45 232 # endif
yuhki50 0:70c8e56bac45 233 //......................................................................
yuhki50 0:70c8e56bac45 234 # if DECODE_DISH
yuhki50 0:70c8e56bac45 235 bool decodeDish (decode_results *results) ; // NOT WRITTEN
yuhki50 0:70c8e56bac45 236 # endif
yuhki50 0:70c8e56bac45 237 //......................................................................
yuhki50 0:70c8e56bac45 238 # if DECODE_SHARP
yuhki50 0:70c8e56bac45 239 bool decodeSharp (decode_results *results) ; // NOT WRITTEN
yuhki50 0:70c8e56bac45 240 # endif
yuhki50 0:70c8e56bac45 241 //......................................................................
yuhki50 0:70c8e56bac45 242 # if DECODE_DENON
yuhki50 0:70c8e56bac45 243 bool decodeDenon (decode_results *results) ;
yuhki50 0:70c8e56bac45 244 # endif
yuhki50 3:17440cf7ab90 245
yuhki50 3:17440cf7ab90 246 DigitalIn _recvpin;
yuhki50 3:17440cf7ab90 247 Ticker _ticker;
yuhki50 3:17440cf7ab90 248 irparams_t irparams;
yuhki50 0:70c8e56bac45 249 } ;
yuhki50 0:70c8e56bac45 250
yuhki50 0:70c8e56bac45 251 //------------------------------------------------------------------------------
yuhki50 0:70c8e56bac45 252 // Main class for sending IR
yuhki50 0:70c8e56bac45 253 //
yuhki50 0:70c8e56bac45 254 class IRsend
yuhki50 0:70c8e56bac45 255 {
yuhki50 0:70c8e56bac45 256 public:
yuhki50 3:17440cf7ab90 257 IRsend (PinName sendpin) : _pwm(sendpin) { }
yuhki50 0:70c8e56bac45 258
yuhki50 0:70c8e56bac45 259 void custom_delay_usec (unsigned long uSecs);
yuhki50 0:70c8e56bac45 260 void enableIROut (int khz) ;
yuhki50 0:70c8e56bac45 261 void mark (unsigned int usec) ;
yuhki50 0:70c8e56bac45 262 void space (unsigned int usec) ;
yuhki50 0:70c8e56bac45 263 void sendRaw (unsigned int buf[], unsigned int len, unsigned int hz) ;
yuhki50 0:70c8e56bac45 264
yuhki50 0:70c8e56bac45 265 //......................................................................
yuhki50 0:70c8e56bac45 266 # if SEND_RC5
yuhki50 0:70c8e56bac45 267 void sendRC5 (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 268 # endif
yuhki50 0:70c8e56bac45 269 # if SEND_RC6
yuhki50 0:70c8e56bac45 270 void sendRC6 (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 271 # endif
yuhki50 0:70c8e56bac45 272 //......................................................................
yuhki50 0:70c8e56bac45 273 # if SEND_NEC
yuhki50 0:70c8e56bac45 274 void sendNEC (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 275 # endif
yuhki50 0:70c8e56bac45 276 //......................................................................
yuhki50 0:70c8e56bac45 277 # if SEND_SONY
yuhki50 0:70c8e56bac45 278 void sendSony (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 279 # endif
yuhki50 0:70c8e56bac45 280 //......................................................................
yuhki50 0:70c8e56bac45 281 # if SEND_PANASONIC
yuhki50 0:70c8e56bac45 282 void sendPanasonic (unsigned int address, unsigned long data) ;
yuhki50 0:70c8e56bac45 283 # endif
yuhki50 0:70c8e56bac45 284 //......................................................................
yuhki50 0:70c8e56bac45 285 # if SEND_JVC
yuhki50 0:70c8e56bac45 286 // JVC does NOT repeat by sending a separate code (like NEC does).
yuhki50 0:70c8e56bac45 287 // The JVC protocol repeats by skipping the header.
yuhki50 0:70c8e56bac45 288 // To send a JVC repeat signal, send the original code value
yuhki50 0:70c8e56bac45 289 // and set 'repeat' to true
yuhki50 0:70c8e56bac45 290 void sendJVC (unsigned long data, int nbits, bool repeat) ;
yuhki50 0:70c8e56bac45 291 # endif
yuhki50 0:70c8e56bac45 292 //......................................................................
yuhki50 0:70c8e56bac45 293 # if SEND_SAMSUNG
yuhki50 0:70c8e56bac45 294 void sendSAMSUNG (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 295 # endif
yuhki50 0:70c8e56bac45 296 //......................................................................
yuhki50 0:70c8e56bac45 297 # if SEND_WHYNTER
yuhki50 0:70c8e56bac45 298 void sendWhynter (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 299 # endif
yuhki50 0:70c8e56bac45 300 //......................................................................
yuhki50 0:70c8e56bac45 301 # if SEND_AIWA_RC_T501
yuhki50 0:70c8e56bac45 302 void sendAiwaRCT501 (int code) ;
yuhki50 0:70c8e56bac45 303 # endif
yuhki50 0:70c8e56bac45 304 //......................................................................
yuhki50 0:70c8e56bac45 305 # if SEND_LG
yuhki50 0:70c8e56bac45 306 void sendLG (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 307 # endif
yuhki50 0:70c8e56bac45 308 //......................................................................
yuhki50 0:70c8e56bac45 309 # if SEND_SANYO
yuhki50 0:70c8e56bac45 310 void sendSanyo ( ) ; // NOT WRITTEN
yuhki50 0:70c8e56bac45 311 # endif
yuhki50 0:70c8e56bac45 312 //......................................................................
yuhki50 0:70c8e56bac45 313 # if SEND_MISUBISHI
yuhki50 0:70c8e56bac45 314 void sendMitsubishi ( ) ; // NOT WRITTEN
yuhki50 0:70c8e56bac45 315 # endif
yuhki50 0:70c8e56bac45 316 //......................................................................
yuhki50 0:70c8e56bac45 317 # if SEND_DISH
yuhki50 0:70c8e56bac45 318 void sendDISH (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 319 # endif
yuhki50 0:70c8e56bac45 320 //......................................................................
yuhki50 0:70c8e56bac45 321 # if SEND_SHARP
yuhki50 0:70c8e56bac45 322 void sendSharpRaw (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 323 void sendSharp (unsigned int address, unsigned int command) ;
yuhki50 0:70c8e56bac45 324 # endif
yuhki50 0:70c8e56bac45 325 //......................................................................
yuhki50 0:70c8e56bac45 326 # if SEND_DENON
yuhki50 0:70c8e56bac45 327 void sendDenon (unsigned long data, int nbits) ;
yuhki50 0:70c8e56bac45 328 # endif
yuhki50 0:70c8e56bac45 329 //......................................................................
yuhki50 0:70c8e56bac45 330 # if SEND_PRONTO
yuhki50 0:70c8e56bac45 331 void sendPronto (char* code, bool repeat, bool fallback) ;
yuhki50 0:70c8e56bac45 332 # endif
yuhki50 3:17440cf7ab90 333
yuhki50 3:17440cf7ab90 334 PwmOut _pwm;
yuhki50 0:70c8e56bac45 335 } ;
yuhki50 0:70c8e56bac45 336
yuhki50 0:70c8e56bac45 337 #endif