Skip to content
Snippets Groups Projects
Select Git revision
  • 324c548bebf35ed0cb69a1e0be2abd7d6591ac5f
  • master default protected
  • develop protected
  • feature/lfp
  • feature/add-documentation
  • 0.2.2
  • 0.2.1
  • 0.2.0
  • 0.1.0
9 results

nest_controller.py

Blame
  • ir_Sharp.cpp 2.23 KiB
    #include "IRremote.h"
    #include "IRremoteInt.h"
    
    //==============================================================================
    //                       SSSS  H   H   AAA   RRRR   PPPP
    //                      S      H   H  A   A  R   R  P   P
    //                       SSS   HHHHH  AAAAA  RRRR   PPPP
    //                          S  H   H  A   A  R  R   P
    //                      SSSS   H   H  A   A  R   R  P
    //==============================================================================
    
    // Sharp and DISH support by Todd Treece: http://unionbridge.org/design/ircommand
    //
    // The send function has the necessary repeat built in because of the need to
    // invert the signal.
    //
    // Sharp protocol documentation:
    //   http://www.sbprojects.com/knowledge/ir/sharp.htm
    //
    // Here is the LIRC file I found that seems to match the remote codes from the
    // oscilloscope:
    //   Sharp LCD TV:
    //   http://lirc.sourceforge.net/remotes/sharp/GA538WJSA
    
    #define SHARP_BITS             15
    #define SHARP_BIT_MARK        245
    #define SHARP_ONE_SPACE      1805
    #define SHARP_ZERO_SPACE      795
    #define SHARP_GAP          600000
    #define SHARP_RPT_SPACE      3000
    
    #define SHARP_TOGGLE_MASK  0x3FF
    
    //+=============================================================================
    #if SEND_SHARP
    void  IRsend::sendSharpRaw (unsigned long data,  int nbits)
    {
    	enableIROut(38);
    
    	// Sending codes in bursts of 3 (normal, inverted, normal) makes transmission
    	// much more reliable. That's the exact behaviour of CD-S6470 remote control.
    	for (int n = 0;  n < 3;  n++) {
    		for (unsigned long  mask = 1UL << (nbits - 1);  mask;  mask >>= 1) {
    			if (data & mask) {
    				mark(SHARP_BIT_MARK);
    				space(SHARP_ONE_SPACE);
    			} else {
    				mark(SHARP_BIT_MARK);
    				space(SHARP_ZERO_SPACE);
    			}
    		}
    
    		mark(SHARP_BIT_MARK);
    		space(SHARP_ZERO_SPACE);
    		delay(40);
    
    		data = data ^ SHARP_TOGGLE_MASK;
    	}
    }
    #endif
    
    //+=============================================================================
    // Sharp send compatible with data obtained through decodeSharp()
    //                                                  ^^^^^^^^^^^^^ FUNCTION MISSING!
    //
    #if SEND_SHARP
    void  IRsend::sendSharp (unsigned int address,  unsigned int command)
    {
    	sendSharpRaw((address << 10) | (command << 2) | 2, SHARP_BITS);
    }
    #endif