Skip to content
Snippets Groups Projects
Select Git revision
  • 50aa1a8519e3fd02c3cc7f00bb5f2fa200a8cd43
  • master default protected
2 results

destroy-all-demo-instances.py

Blame
  • Forked from Sebastian Rieger / cloud-computing-msc-ai-examples
    Source project has a limited visibility.
    ir_Whynter.cpp 2.78 KiB
    #include "IRremote.h"
    #include "IRremoteInt.h"
    
    //==============================================================================
    //               W   W  H   H  Y   Y N   N TTTTT EEEEE  RRRRR
    //               W   W  H   H   Y Y  NN  N   T   E      R   R
    //               W W W  HHHHH    Y   N N N   T   EEE    RRRR
    //               W W W  H   H    Y   N  NN   T   E      R  R
    //                WWW   H   H    Y   N   N   T   EEEEE  R   R
    //==============================================================================
    
    #define WHYNTER_BITS          32
    #define WHYNTER_HDR_MARK    2850
    #define WHYNTER_HDR_SPACE   2850
    #define WHYNTER_BIT_MARK     750
    #define WHYNTER_ONE_MARK     750
    #define WHYNTER_ONE_SPACE   2150
    #define WHYNTER_ZERO_MARK    750
    #define WHYNTER_ZERO_SPACE   750
    
    //+=============================================================================
    #if SEND_WHYNTER
    void  IRsend::sendWhynter (unsigned long data,  int nbits)
    {
    	// Set IR carrier frequency
    	enableIROut(38);
    
    	// Start
    	mark(WHYNTER_ZERO_MARK);
    	space(WHYNTER_ZERO_SPACE);
    
    	// Header
    	mark(WHYNTER_HDR_MARK);
    	space(WHYNTER_HDR_SPACE);
    
    	// Data
    	for (unsigned long  mask = 1UL << (nbits - 1);  mask;  mask >>= 1) {
    		if (data & mask) {
    			mark(WHYNTER_ONE_MARK);
    			space(WHYNTER_ONE_SPACE);
    		} else {
    			mark(WHYNTER_ZERO_MARK);
    			space(WHYNTER_ZERO_SPACE);
    		}
    	}
    
    	// Footer
    	mark(WHYNTER_ZERO_MARK);
    	space(WHYNTER_ZERO_SPACE);  // Always end with the LED off
    }
    #endif
    
    //+=============================================================================
    #if DECODE_WHYNTER
    bool  IRrecv::decodeWhynter (decode_results *results)
    {
    	long  data   = 0;
    	int   offset = 1;  // skip initial space
    
    	// Check we have the right amount of data
    	if (irparams.rawlen < (2 * WHYNTER_BITS) + 6)  return false ;
    
    	// Sequence begins with a bit mark and a zero space
    	if (!MATCH_MARK (results->rawbuf[offset++], WHYNTER_BIT_MARK  ))  return false ;
    	if (!MATCH_SPACE(results->rawbuf[offset++], WHYNTER_ZERO_SPACE))  return false ;
    
    	// header mark and space
    	if (!MATCH_MARK (results->rawbuf[offset++], WHYNTER_HDR_MARK ))  return false ;
    	if (!MATCH_SPACE(results->rawbuf[offset++], WHYNTER_HDR_SPACE))  return false ;
    
    	// data bits
    	for (int i = 0;  i < WHYNTER_BITS;  i++) {
    		if (!MATCH_MARK(results->rawbuf[offset++], WHYNTER_BIT_MARK))  return false ;
    
    		if      (MATCH_SPACE(results->rawbuf[offset], WHYNTER_ONE_SPACE ))  data = (data << 1) | 1 ;
    		else if (MATCH_SPACE(results->rawbuf[offset], WHYNTER_ZERO_SPACE))  data = (data << 1) | 0 ;
    		else                                                                return false ;
    		offset++;
    	}
    
    	// trailing mark
    	if (!MATCH_MARK(results->rawbuf[offset], WHYNTER_BIT_MARK))  return false ;
    
    	// Success
    	results->bits = WHYNTER_BITS;
    	results->value = data;
    	results->decode_type = WHYNTER;
    	return true;
    }
    #endif