 bool isDataValid; /* detected a start flag referring @IR_REMOTE_START_TIMING */
 unsigned long irData; /* received data from IR */
 byte irDataIdx; /* current receiving idex of data */
-const int pinIRRemote = 2; /* hardware IR pin foot */
+const int pinIRRemote = 11; /* hardware IR pin foot */
+unsigned long irDataLongCode; /* first data received while continue pulse flag received,
+                                  and the next 32bits data will be stored in irData*/
 
 void IRRemoteSetup()
 {

 * https://github.com/marduino/arduino/wiki
 * 
 * https://github.com/arduino/ArduinoCore-samd/blob/master/cores/arduino/main.cpp
 */

/* a start high pulse in micro-seconds indicates start transferring a set of bits */
#define IR_REMOTE_START_TIMING_MIN    3800
#define IR_REMOTE_START_TIMING_MAX    4700

/* a 'one' timing means to set a bit to 1, indicated by 1200micro-seconds high pulse */
#define IR_REMOTE_ONE_TIMING_MIN      900
#define IR_REMOTE_ONE_TIMING_MAX      1800

/* a 'zero' timing means to set a bit to 0, indicated by 600micro-seconds high pulse */
#define IR_REMOTE_ZERO_TIMING_MIN     300
#define IR_REMOTE_ZERO_TIMING_MAX     700

/* measurement time out, in case timeout, reset all status */

  if (irDataIdx >= IR_REMOTE_DATA_WIDTH)
  {
    Serial.print(irDataIdx);
    Serial.print("@data:");
    Serial.println(irData, HEX);
  }

  /* must reset to receive next pulse */
  pulseStartTiming = 0;
}
