First release of porting 'Infrared Multiprotocol' library from mikrocontroller.net

Dependents:   IRMP_Receiver

IRMP - Infrared Multiprotocol Decoder

This library is a mbed version of the famous IRMP code, developed by members of the german forum http://mikrocontroller.net. It can receive and analyze a large number of infrared remote codes. In the original version there is also code for an IR transmitter, this will be added to this lib soon.

Base for this initial release is version 2.9.7 from 2015/11. A detailed description for this lib can be found here : https://www.mikrocontroller.net/articles/IRMP_-_english.

The code was originally written for AVR mikrocontrollers and has been ported to different platforms already. It works also great with the mbed target as it can use the unique I/O and ticker code.

Actually, the code uses the static C functions and is not ported to C++ yet to maintain compatibility to the original library. This requres the DigitalIn Pinname setting in the irmpconfig.h.

The required hardware is e.g. just an TSOP31238 (for 38 kHz modulated IR) or similar.

Information

How to use

  • import this library
  • edit irmpconfig.h and turn on the desired protocols
  • change F_INTERRUPTS if necessary, check the protocol table for the minimum necessary frequency
  • search for 'IRMP_PIN' in the irmpconfig and replace with your hardware input

The irmp_ISR() must be called cyclic with a fixed frequency, a simple task for the mbed ticker. In the main program the result is checked by calling irmp_get_data(). This function returns the decoded protocol, address, command and flags like key pressed or released.

Information

Tested platforms

  • simple LPC1347 board, works fine
  • EA LPC4088 QuickStart Board works fine
  • LPCXpresso1549 bad, there is a (known?) issue with slow Ticker ISR processing, ISR consumes >30µs instead of 3 µs
  • STM32F103 board: bad, also known problems with Ticker implementation
  • Test results with other boards are welcome.

Sample code

prints the information about decoded signals to stdout. The ISR contains additional code for performance mesuring which can be omitted in controlling applications.

Import programIRMP_Receiver

Sample code for IRMP library

Sample for decoding and performance test

#include "mbed.h"
#include "irmp.h"

#define LED_ON  0
#define LED_OFF 1

// LED as test output
DigitalOut led(LED1, LED_OFF);
DigitalOut flash(LED2, LED_OFF);

// cyclic interrupt for IRMP ISR worker
Ticker t;

// only for performance test
Timer   timerPerfTest;
int     timeISRMax = 0;
float   timeISRAvg;
int     timeISRAvgSum = 0;
int     countISRCalls = 0;

// this ISR must be called cyclic
void irmpISR(void)
{
    int t1 = timerPerfTest.read_us();               // read performance timer

    irmp_ISR();                                     // call irmp ISR

    int timeISR = timerPerfTest.read_us() - t1;     // calc time spent in worker ISR
    if (timeISR > timeISRMax)                       // store maximum
        timeISRMax = timeISR;
    timeISRAvgSum += timeISR;                       // sum for avg
    countISRCalls++;
}

int main() {
    printf("IRMP on mbed\n");

    led = LED_OFF;
    timerPerfTest.start();

    // irmp_data holds result of received IR code
    IRMP_DATA irmp_data;

    irmp_init();                                                            // initialize irmp
    t.attach_us(&irmpISR, 1E6 / F_INTERRUPTS);                              // call ISR 15.000 / s

    // infinite loop, interrupts will blink PORTD pins and handle UART communications.
    while (1)
    {
        flash = !flash;     // test output. flashes at 15/2 kHz, you will not see it blinking

        // check for received IR commands
        if (irmp_get_data (&irmp_data))
        {
            // ir signal decoded, do something here...
            // irmp_data.protocol is the protocol, see irmp.h
            // irmp_data.address is the address/manufacturer code of ir sender
            // irmp_data.command is the command code
            // irm_data.flags is press/release information
            // irmp_protocol_names[irmp_data.protocol] is the protocol name (if enabled, see irmpconfig.h)
            // printf("proto %d addr %d cmd %d\n", irmp_data.protocol, irmp_data.address, irmp_data.command );

            // sample decoding, turn LED on / off
            if (irmp_data.protocol == IRMP_RC5_PROTOCOL && irmp_data.address == 5)      // old RC5 VCR Remote. TV uses address 0
            {
                if (irmp_data.flags == 0)       // switch only on button press
                {
                    switch (irmp_data.command)
                    {
                    case 0:     // Key '0'
                        led = LED_OFF;
                        break;
                    case 1:     // Key '1'
                        led = LED_ON;
                        break;
                    case 53:        // Key 'play'
                        printf("bring me a beer!\n");
                        break;
                    case 54:        // Key 'stop'
                        timeISRAvg = (float)timeISRAvgSum / countISRCalls;
                        timeISRAvgSum = 0;
                        countISRCalls = 0;
                        printf("ISR max / avg runtime [microseconds] : %d / %5.2f\n", timeISRMax, timeISRAvg);
                        timeISRMax = 0;
                        break;
                    }
                }
            }

            // log to stdout
            printf("proto %d addr %d cmd %d flags %x name %s\n", irmp_data.protocol, irmp_data.address, irmp_data.command, irmp_data.flags, irmp_protocol_names[irmp_data.protocol] );
        }
    }

}
Committer:
JojoS
Date:
Sat Jan 09 14:15:56 2016 +0000
Revision:
0:a0715ea739cb
First release of 'Infrared Receiver Multi Protocol'  IRMP porting from mikrocontroller.net

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JojoS 0:a0715ea739cb 1 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 2 * irmpprotocols.h - irmp protocols
JojoS 0:a0715ea739cb 3 *
JojoS 0:a0715ea739cb 4 * DO NOT INCLUDE THIS FILE, WILL BE INCLUDED BY IRMP.H or IRSND.H!
JojoS 0:a0715ea739cb 5 *
JojoS 0:a0715ea739cb 6 * Copyright (c) 2013-2015 Frank Meyer - frank(at)fli4l.de
JojoS 0:a0715ea739cb 7 *
JojoS 0:a0715ea739cb 8 * $Id: irmpprotocols.h,v 1.44 2015/11/30 09:31:54 fm Exp $
JojoS 0:a0715ea739cb 9 *
JojoS 0:a0715ea739cb 10 * This program is free software; you can redistribute it and/or modify
JojoS 0:a0715ea739cb 11 * it under the terms of the GNU General Public License as published by
JojoS 0:a0715ea739cb 12 * the Free Software Foundation; either version 2 of the License, or
JojoS 0:a0715ea739cb 13 * (at your option) any later version.
JojoS 0:a0715ea739cb 14 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 15 */
JojoS 0:a0715ea739cb 16
JojoS 0:a0715ea739cb 17 #ifndef _IRMP_PROTOCOLS_H_
JojoS 0:a0715ea739cb 18 #define _IRMP_PROTOCOLS_H_
JojoS 0:a0715ea739cb 19
JojoS 0:a0715ea739cb 20 #if !defined(_IRMP_H_) && !defined(_IRSND_H_)
JojoS 0:a0715ea739cb 21 # error please include only irmp.h or irsnd.h, not irmpprotocols.h
JojoS 0:a0715ea739cb 22 #endif
JojoS 0:a0715ea739cb 23
JojoS 0:a0715ea739cb 24 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 25 * IR protocols:
JojoS 0:a0715ea739cb 26 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 27 */
JojoS 0:a0715ea739cb 28 #define IRMP_SIRCS_PROTOCOL 1 // Sony
JojoS 0:a0715ea739cb 29 #define IRMP_NEC_PROTOCOL 2 // NEC, Pioneer, JVC, Toshiba, NoName etc.
JojoS 0:a0715ea739cb 30 #define IRMP_SAMSUNG_PROTOCOL 3 // Samsung
JojoS 0:a0715ea739cb 31 #define IRMP_MATSUSHITA_PROTOCOL 4 // Matsushita
JojoS 0:a0715ea739cb 32 #define IRMP_KASEIKYO_PROTOCOL 5 // Kaseikyo (Panasonic etc)
JojoS 0:a0715ea739cb 33 #define IRMP_RECS80_PROTOCOL 6 // Philips, Thomson, Nordmende, Telefunken, Saba
JojoS 0:a0715ea739cb 34 #define IRMP_RC5_PROTOCOL 7 // Philips etc
JojoS 0:a0715ea739cb 35 #define IRMP_DENON_PROTOCOL 8 // Denon, Sharp
JojoS 0:a0715ea739cb 36 #define IRMP_RC6_PROTOCOL 9 // Philips etc
JojoS 0:a0715ea739cb 37 #define IRMP_SAMSUNG32_PROTOCOL 10 // Samsung32: no sync pulse at bit 16, length 32 instead of 37
JojoS 0:a0715ea739cb 38 #define IRMP_APPLE_PROTOCOL 11 // Apple, very similar to NEC
JojoS 0:a0715ea739cb 39 #define IRMP_RECS80EXT_PROTOCOL 12 // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba
JojoS 0:a0715ea739cb 40 #define IRMP_NUBERT_PROTOCOL 13 // Nubert
JojoS 0:a0715ea739cb 41 #define IRMP_BANG_OLUFSEN_PROTOCOL 14 // Bang & Olufsen
JojoS 0:a0715ea739cb 42 #define IRMP_GRUNDIG_PROTOCOL 15 // Grundig
JojoS 0:a0715ea739cb 43 #define IRMP_NOKIA_PROTOCOL 16 // Nokia
JojoS 0:a0715ea739cb 44 #define IRMP_SIEMENS_PROTOCOL 17 // Siemens, e.g. Gigaset
JojoS 0:a0715ea739cb 45 #define IRMP_FDC_PROTOCOL 18 // FDC keyboard
JojoS 0:a0715ea739cb 46 #define IRMP_RCCAR_PROTOCOL 19 // RC Car
JojoS 0:a0715ea739cb 47 #define IRMP_JVC_PROTOCOL 20 // JVC (NEC with 16 bits)
JojoS 0:a0715ea739cb 48 #define IRMP_RC6A_PROTOCOL 21 // RC6A, e.g. Kathrein, XBOX
JojoS 0:a0715ea739cb 49 #define IRMP_NIKON_PROTOCOL 22 // Nikon
JojoS 0:a0715ea739cb 50 #define IRMP_RUWIDO_PROTOCOL 23 // Ruwido, e.g. T-Home Mediareceiver
JojoS 0:a0715ea739cb 51 #define IRMP_IR60_PROTOCOL 24 // IR60 (SDA2008)
JojoS 0:a0715ea739cb 52 #define IRMP_KATHREIN_PROTOCOL 25 // Kathrein
JojoS 0:a0715ea739cb 53 #define IRMP_NETBOX_PROTOCOL 26 // Netbox keyboard (bitserial)
JojoS 0:a0715ea739cb 54 #define IRMP_NEC16_PROTOCOL 27 // NEC with 16 bits (incl. sync)
JojoS 0:a0715ea739cb 55 #define IRMP_NEC42_PROTOCOL 28 // NEC with 42 bits
JojoS 0:a0715ea739cb 56 #define IRMP_LEGO_PROTOCOL 29 // LEGO Power Functions RC
JojoS 0:a0715ea739cb 57 #define IRMP_THOMSON_PROTOCOL 30 // Thomson
JojoS 0:a0715ea739cb 58 #define IRMP_BOSE_PROTOCOL 31 // BOSE
JojoS 0:a0715ea739cb 59 #define IRMP_A1TVBOX_PROTOCOL 32 // A1 TV Box
JojoS 0:a0715ea739cb 60 #define IRMP_ORTEK_PROTOCOL 33 // ORTEK - Hama
JojoS 0:a0715ea739cb 61 #define IRMP_TELEFUNKEN_PROTOCOL 34 // Telefunken (1560)
JojoS 0:a0715ea739cb 62 #define IRMP_ROOMBA_PROTOCOL 35 // iRobot Roomba vacuum cleaner
JojoS 0:a0715ea739cb 63 #define IRMP_RCMM32_PROTOCOL 36 // Fujitsu-Siemens (Activy remote control)
JojoS 0:a0715ea739cb 64 #define IRMP_RCMM24_PROTOCOL 37 // Fujitsu-Siemens (Activy keyboard)
JojoS 0:a0715ea739cb 65 #define IRMP_RCMM12_PROTOCOL 38 // Fujitsu-Siemens (Activy keyboard)
JojoS 0:a0715ea739cb 66 #define IRMP_SPEAKER_PROTOCOL 39 // Another loudspeaker protocol, similar to Nubert
JojoS 0:a0715ea739cb 67 #define IRMP_LGAIR_PROTOCOL 40 // LG air conditioner
JojoS 0:a0715ea739cb 68 #define IRMP_SAMSUNG48_PROTOCOL 41 // air conditioner with SAMSUNG protocol (48 bits)
JojoS 0:a0715ea739cb 69 #define IRMP_MERLIN_PROTOCOL 42 // Merlin (Pollin 620 185)
JojoS 0:a0715ea739cb 70 #define IRMP_PENTAX_PROTOCOL 43 // Pentax camera
JojoS 0:a0715ea739cb 71 #define IRMP_FAN_PROTOCOL 44 // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit
JojoS 0:a0715ea739cb 72 #define IRMP_S100_PROTOCOL 45 // very similar to RC5, but 14 instead of 13 data bits
JojoS 0:a0715ea739cb 73 #define IRMP_ACP24_PROTOCOL 46 // Stiebel Eltron ACP24 air conditioner
JojoS 0:a0715ea739cb 74 #define IRMP_TECHNICS_PROTOCOL 47 // Technics, similar to Matsushita, but 22 instead of 24 bits
JojoS 0:a0715ea739cb 75 #define IRMP_PANASONIC_PROTOCOL 48 // Panasonic (Beamer), start bits similar to KASEIKYO
JojoS 0:a0715ea739cb 76
JojoS 0:a0715ea739cb 77 #define IRMP_RADIO1_PROTOCOL 49 // Radio protocol (experimental status), do not use it yet!
JojoS 0:a0715ea739cb 78
JojoS 0:a0715ea739cb 79 #define IRMP_N_PROTOCOLS 50 // number of supported protocols
JojoS 0:a0715ea739cb 80
JojoS 0:a0715ea739cb 81 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 82 * timing constants:
JojoS 0:a0715ea739cb 83 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 84 */
JojoS 0:a0715ea739cb 85 // fm 22.09.2011: may not be more than 16000L, otherwise some JVC codes will not be accepted
JojoS 0:a0715ea739cb 86 #define IRMP_TIMEOUT_TIME 15500.0e-6 // timeout after 15.5 ms darkness
JojoS 0:a0715ea739cb 87 #define IRMP_TIMEOUT_TIME_MS 15500L // timeout after 15.5 ms darkness
JojoS 0:a0715ea739cb 88
JojoS 0:a0715ea739cb 89 #if IRMP_SUPPORT_NIKON_PROTOCOL == 1
JojoS 0:a0715ea739cb 90 # define IRMP_TIMEOUT_NIKON_TIME 29500.0e-6 // 2nd timeout after 29.5 ms darkness (only for NIKON!)
JojoS 0:a0715ea739cb 91 # define IRMP_TIMEOUT_NIKON_TIME_MS 29500L // 2nd timeout after 29.5 ms darkness
JojoS 0:a0715ea739cb 92 typedef uint16_t PAUSE_LEN;
JojoS 0:a0715ea739cb 93 # define IRMP_TIMEOUT_NIKON_LEN (PAUSE_LEN)(F_INTERRUPTS * IRMP_TIMEOUT_NIKON_TIME + 0.5)
JojoS 0:a0715ea739cb 94 #else
JojoS 0:a0715ea739cb 95 # if (F_INTERRUPTS * IRMP_TIMEOUT_TIME_MS) / 1000000 >= 254
JojoS 0:a0715ea739cb 96 typedef uint16_t PAUSE_LEN;
JojoS 0:a0715ea739cb 97 # else
JojoS 0:a0715ea739cb 98 typedef uint8_t PAUSE_LEN;
JojoS 0:a0715ea739cb 99 # endif
JojoS 0:a0715ea739cb 100 #endif
JojoS 0:a0715ea739cb 101
JojoS 0:a0715ea739cb 102 #define IRMP_TIMEOUT_LEN (PAUSE_LEN)(F_INTERRUPTS * IRMP_TIMEOUT_TIME + 0.5)
JojoS 0:a0715ea739cb 103
JojoS 0:a0715ea739cb 104 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 105 * flags of struct IRMP_PARAMETER:
JojoS 0:a0715ea739cb 106 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 107 */
JojoS 0:a0715ea739cb 108 #define IRMP_PARAM_FLAG_IS_MANCHESTER 0x01
JojoS 0:a0715ea739cb 109 #define IRMP_PARAM_FLAG_1ST_PULSE_IS_1 0x02
JojoS 0:a0715ea739cb 110 #define IRMP_PARAM_FLAG_IS_SERIAL 0x04
JojoS 0:a0715ea739cb 111
JojoS 0:a0715ea739cb 112 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 113 * SIRCS:
JojoS 0:a0715ea739cb 114 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 115 */
JojoS 0:a0715ea739cb 116 #define SIRCS_START_BIT_PULSE_TIME 2400.0e-6 // 2400 usec pulse
JojoS 0:a0715ea739cb 117 #define SIRCS_START_BIT_PAUSE_TIME 600.0e-6 // 600 usec pause
JojoS 0:a0715ea739cb 118 #define SIRCS_1_PULSE_TIME 1200.0e-6 // 1200 usec pulse
JojoS 0:a0715ea739cb 119 #define SIRCS_0_PULSE_TIME 600.0e-6 // 600 usec pulse
JojoS 0:a0715ea739cb 120 #define SIRCS_PAUSE_TIME 600.0e-6 // 600 usec pause
JojoS 0:a0715ea739cb 121 #define SIRCS_FRAMES 3 // SIRCS sends each frame 3 times
JojoS 0:a0715ea739cb 122 #define SIRCS_AUTO_REPETITION_PAUSE_TIME 25.0e-3 // auto repetition after 25ms
JojoS 0:a0715ea739cb 123 #define SIRCS_FRAME_REPEAT_PAUSE_TIME 25.0e-3 // frame repeat after 25ms
JojoS 0:a0715ea739cb 124 #define SIRCS_ADDRESS_OFFSET 15 // skip 15 bits
JojoS 0:a0715ea739cb 125 #define SIRCS_ADDRESS_LEN 5 // read up to 5 address bits
JojoS 0:a0715ea739cb 126 #define SIRCS_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 127 #define SIRCS_COMMAND_LEN 15 // read 12-15 command bits
JojoS 0:a0715ea739cb 128 #define SIRCS_MINIMUM_DATA_LEN 12 // minimum data length
JojoS 0:a0715ea739cb 129 #define SIRCS_COMPLETE_DATA_LEN 20 // complete length - may be up to 20
JojoS 0:a0715ea739cb 130 #define SIRCS_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 131 #define SIRCS_LSB 1 // LSB...MSB
JojoS 0:a0715ea739cb 132 #define SIRCS_FLAGS 0 // flags
JojoS 0:a0715ea739cb 133
JojoS 0:a0715ea739cb 134 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 135 * NEC & NEC42 & NEC16 & LGAIR:
JojoS 0:a0715ea739cb 136 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 137 */
JojoS 0:a0715ea739cb 138 #define NEC_START_BIT_PULSE_TIME 9000.0e-6 // 9000 usec pulse
JojoS 0:a0715ea739cb 139 #define NEC_START_BIT_PAUSE_TIME 4500.0e-6 // 4500 usec pause
JojoS 0:a0715ea739cb 140 #define NEC_REPEAT_START_BIT_PAUSE_TIME 2250.0e-6 // 2250 usec pause
JojoS 0:a0715ea739cb 141 #define NEC_PULSE_TIME 560.0e-6 // 560 usec pulse
JojoS 0:a0715ea739cb 142 #define NEC_1_PAUSE_TIME 1690.0e-6 // 1690 usec pause
JojoS 0:a0715ea739cb 143 #define NEC_0_PAUSE_TIME 560.0e-6 // 560 usec pause
JojoS 0:a0715ea739cb 144 #define NEC_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms
JojoS 0:a0715ea739cb 145 #define NEC_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 146 #define NEC_ADDRESS_LEN 16 // read 16 address bits
JojoS 0:a0715ea739cb 147 #define NEC_COMMAND_OFFSET 16 // skip 16 bits (8 address + 8 /address)
JojoS 0:a0715ea739cb 148 #define NEC_COMMAND_LEN 16 // read 16 bits (8 command + 8 /command)
JojoS 0:a0715ea739cb 149 #define NEC_COMPLETE_DATA_LEN 32 // complete length
JojoS 0:a0715ea739cb 150 #define NEC_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 151 #define NEC_LSB 1 // LSB...MSB
JojoS 0:a0715ea739cb 152 #define NEC_FLAGS 0 // flags
JojoS 0:a0715ea739cb 153
JojoS 0:a0715ea739cb 154 #define NEC42_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 155 #define NEC42_ADDRESS_LEN 13 // read 13 address bits
JojoS 0:a0715ea739cb 156 #define NEC42_COMMAND_OFFSET 26 // skip 26 bits (2 x 13 address bits)
JojoS 0:a0715ea739cb 157 #define NEC42_COMMAND_LEN 8 // read 8 command bits
JojoS 0:a0715ea739cb 158 #define NEC42_COMPLETE_DATA_LEN 42 // complete length (2 x 13 + 2 x 8)
JojoS 0:a0715ea739cb 159
JojoS 0:a0715ea739cb 160 #define LGAIR_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 161 #define LGAIR_ADDRESS_LEN 8 // read 8 address bits
JojoS 0:a0715ea739cb 162 #define LGAIR_COMMAND_OFFSET 8 // skip 8 bits (8 address)
JojoS 0:a0715ea739cb 163 #define LGAIR_COMMAND_LEN 16 // read 16 bits (16 command)
JojoS 0:a0715ea739cb 164 #define LGAIR_COMPLETE_DATA_LEN 28 // complete length (8 address + 16 command + 4 checksum)
JojoS 0:a0715ea739cb 165
JojoS 0:a0715ea739cb 166 #define NEC16_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 167 #define NEC16_ADDRESS_LEN 8 // read 8 address bits
JojoS 0:a0715ea739cb 168 #define NEC16_COMMAND_OFFSET 8 // skip 8 bits (8 address)
JojoS 0:a0715ea739cb 169 #define NEC16_COMMAND_LEN 8 // read 8 bits (8 command)
JojoS 0:a0715ea739cb 170 #define NEC16_COMPLETE_DATA_LEN 16 // complete length
JojoS 0:a0715ea739cb 171
JojoS 0:a0715ea739cb 172 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 173 * SAMSUNG & SAMSUNG32 & SAMSUNG48:
JojoS 0:a0715ea739cb 174 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 175 */
JojoS 0:a0715ea739cb 176 #define SAMSUNG_START_BIT_PULSE_TIME 4500.0e-6 // 4500 usec pulse
JojoS 0:a0715ea739cb 177 #define SAMSUNG_START_BIT_PAUSE_TIME 4500.0e-6 // 4500 usec pause
JojoS 0:a0715ea739cb 178 #define SAMSUNG_PULSE_TIME 550.0e-6 // 550 usec pulse
JojoS 0:a0715ea739cb 179 #define SAMSUNG_1_PAUSE_TIME 1500.0e-6 // 1550 usec pause
JojoS 0:a0715ea739cb 180 #define SAMSUNG_0_PAUSE_TIME 500.0e-6 // 500 usec pause
JojoS 0:a0715ea739cb 181
JojoS 0:a0715ea739cb 182 #define SAMSUNG_FRAME_REPEAT_PAUSE_TIME 25.0e-3 // frame repeat after 25ms
JojoS 0:a0715ea739cb 183 #define SAMSUNG_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 184 #define SAMSUNG_ADDRESS_LEN 16 // read 16 address bits
JojoS 0:a0715ea739cb 185 #define SAMSUNG_ID_OFFSET 17 // skip 16 + 1 sync bit
JojoS 0:a0715ea739cb 186 #define SAMSUNG_ID_LEN 4 // read 4 id bits
JojoS 0:a0715ea739cb 187 #define SAMSUNG_COMMAND_OFFSET 21 // skip 16 + 1 sync + 4 data bits
JojoS 0:a0715ea739cb 188 #define SAMSUNG_COMMAND_LEN 16 // read 16 command bits
JojoS 0:a0715ea739cb 189 #define SAMSUNG_COMPLETE_DATA_LEN 37 // complete length
JojoS 0:a0715ea739cb 190 #define SAMSUNG_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 191 #define SAMSUNG_LSB 1 // LSB...MSB?
JojoS 0:a0715ea739cb 192 #define SAMSUNG_FLAGS 0 // flags
JojoS 0:a0715ea739cb 193
JojoS 0:a0715ea739cb 194 #define SAMSUNG32_COMMAND_OFFSET 16 // skip 16 bits
JojoS 0:a0715ea739cb 195 #define SAMSUNG32_COMMAND_LEN 16 // read 16 command bits
JojoS 0:a0715ea739cb 196 #define SAMSUNG32_COMPLETE_DATA_LEN 32 // complete length
JojoS 0:a0715ea739cb 197 #define SAMSUNG32_FRAMES 1 // SAMSUNG32 sends one frame
JojoS 0:a0715ea739cb 198 #define SAMSUNG32_AUTO_REPETITION_PAUSE_TIME 47.0e-3 // repetition after 47 ms
JojoS 0:a0715ea739cb 199 #define SAMSUNG32_FRAME_REPEAT_PAUSE_TIME 47.0e-3 // frame repeat after 47ms
JojoS 0:a0715ea739cb 200
JojoS 0:a0715ea739cb 201 #define SAMSUNG48_COMMAND_OFFSET 16 // skip 16 bits
JojoS 0:a0715ea739cb 202 #define SAMSUNG48_COMMAND_LEN 32 // read 32 command bits
JojoS 0:a0715ea739cb 203 #define SAMSUNG48_COMPLETE_DATA_LEN 48 // complete length
JojoS 0:a0715ea739cb 204 #define SAMSUNG48_FRAMES 2 // SAMSUNG48 sends each frame 2 times
JojoS 0:a0715ea739cb 205 #define SAMSUNG48_AUTO_REPETITION_PAUSE_TIME 5.0e-3 // repetition after 5 ms
JojoS 0:a0715ea739cb 206 #define SAMSUNG48_FRAME_REPEAT_PAUSE_TIME 47.0e-3 // frame repeat after 47ms
JojoS 0:a0715ea739cb 207
JojoS 0:a0715ea739cb 208 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 209 * MATSUSHITA:
JojoS 0:a0715ea739cb 210 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 211 */
JojoS 0:a0715ea739cb 212 #define MATSUSHITA_START_BIT_PULSE_TIME 3488.0e-6 // 3488 usec pulse
JojoS 0:a0715ea739cb 213 #define MATSUSHITA_START_BIT_PAUSE_TIME 3488.0e-6 // 3488 usec pause
JojoS 0:a0715ea739cb 214 #define MATSUSHITA_PULSE_TIME 872.0e-6 // 872 usec pulse
JojoS 0:a0715ea739cb 215 #define MATSUSHITA_1_PAUSE_TIME 2616.0e-6 // 2616 usec pause
JojoS 0:a0715ea739cb 216 #define MATSUSHITA_0_PAUSE_TIME 872.0e-6 // 872 usec pause
JojoS 0:a0715ea739cb 217 #define MATSUSHITA_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms
JojoS 0:a0715ea739cb 218 #define MATSUSHITA_ADDRESS_OFFSET 12 // skip 12 bits
JojoS 0:a0715ea739cb 219 #define MATSUSHITA_ADDRESS_LEN 12 // read 12 address bits
JojoS 0:a0715ea739cb 220 #define MATSUSHITA_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 221 #define MATSUSHITA_COMMAND_LEN 12 // read 12 bits (6 custom + 6 command)
JojoS 0:a0715ea739cb 222 #define MATSUSHITA_COMPLETE_DATA_LEN 24 // complete length
JojoS 0:a0715ea739cb 223 #define MATSUSHITA_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 224 #define MATSUSHITA_LSB 1 // LSB...MSB?
JojoS 0:a0715ea739cb 225 #define MATSUSHITA_FLAGS 0 // flags
JojoS 0:a0715ea739cb 226
JojoS 0:a0715ea739cb 227 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 228 * TECHNICS: same timings as MATSUSHITA
JojoS 0:a0715ea739cb 229 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 230 */
JojoS 0:a0715ea739cb 231 #define TECHNICS_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 232 #define TECHNICS_COMMAND_LEN 11 // read 11 bits
JojoS 0:a0715ea739cb 233 #define TECHNICS_COMPLETE_DATA_LEN 22 // complete length
JojoS 0:a0715ea739cb 234
JojoS 0:a0715ea739cb 235 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 236 * KASEIKYO:
JojoS 0:a0715ea739cb 237 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 238 */
JojoS 0:a0715ea739cb 239 #define KASEIKYO_START_BIT_PULSE_TIME 3380.0e-6 // 3380 usec pulse
JojoS 0:a0715ea739cb 240 #define KASEIKYO_START_BIT_PAUSE_TIME 1690.0e-6 // 1690 usec pause
JojoS 0:a0715ea739cb 241 #define KASEIKYO_PULSE_TIME 423.0e-6 // 525 usec pulse
JojoS 0:a0715ea739cb 242 #define KASEIKYO_1_PAUSE_TIME 1269.0e-6 // 525 usec pause
JojoS 0:a0715ea739cb 243 #define KASEIKYO_0_PAUSE_TIME 423.0e-6 // 1690 usec pause
JojoS 0:a0715ea739cb 244 #define KASEIKYO_AUTO_REPETITION_PAUSE_TIME 74.0e-3 // repetition after 74 ms
JojoS 0:a0715ea739cb 245 #define KASEIKYO_FRAME_REPEAT_PAUSE_TIME 74.0e-3 // frame repeat after 74 ms
JojoS 0:a0715ea739cb 246 #define KASEIKYO_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 247 #define KASEIKYO_ADDRESS_LEN 16 // read 16 address bits
JojoS 0:a0715ea739cb 248 #define KASEIKYO_COMMAND_OFFSET 28 // skip 28 bits (16 manufacturer & 4 parity & 8 genre)
JojoS 0:a0715ea739cb 249 #define KASEIKYO_COMMAND_LEN 12 // read 12 command bits (10 real command & 2 id)
JojoS 0:a0715ea739cb 250 #define KASEIKYO_COMPLETE_DATA_LEN 48 // complete length
JojoS 0:a0715ea739cb 251 #define KASEIKYO_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 252 #define KASEIKYO_LSB 1 // LSB...MSB?
JojoS 0:a0715ea739cb 253 #define KASEIKYO_FRAMES 1 // KASEIKYO sends 1 frame
JojoS 0:a0715ea739cb 254 #define KASEIKYO_FLAGS 0 // flags
JojoS 0:a0715ea739cb 255
JojoS 0:a0715ea739cb 256 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 257 * PANASONIC (Beamer), start bit timings similar to KASEIKYO
JojoS 0:a0715ea739cb 258 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 259 */
JojoS 0:a0715ea739cb 260 #define PANASONIC_START_BIT_PULSE_TIME 3600.0e-6 // 3600 usec pulse
JojoS 0:a0715ea739cb 261 #define PANASONIC_START_BIT_PAUSE_TIME 1600.0e-6 // 1690 usec pause
JojoS 0:a0715ea739cb 262 #define PANASONIC_PULSE_TIME 565.0e-6 // 565 usec pulse
JojoS 0:a0715ea739cb 263 #define PANASONIC_1_PAUSE_TIME 1140.0e-6 // 1140 usec pause
JojoS 0:a0715ea739cb 264 #define PANASONIC_0_PAUSE_TIME 316.0e-6 // 316 usec pause
JojoS 0:a0715ea739cb 265 #define PANASONIC_AUTO_REPETITION_PAUSE_TIME 40.0e-3 // repetition after 40 ms?
JojoS 0:a0715ea739cb 266 #define PANASONIC_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40 ms
JojoS 0:a0715ea739cb 267 #define PANASONIC_ADDRESS_OFFSET 24 // skip 24 bits: 010000000000010000000001
JojoS 0:a0715ea739cb 268 #define PANASONIC_ADDRESS_LEN 16 // read 16 address bits
JojoS 0:a0715ea739cb 269 #define PANASONIC_COMMAND_OFFSET 40 // skip 40 bits
JojoS 0:a0715ea739cb 270 #define PANASONIC_COMMAND_LEN 16 // read 16 command bits
JojoS 0:a0715ea739cb 271 #define PANASONIC_COMPLETE_DATA_LEN 56 // complete length
JojoS 0:a0715ea739cb 272 #define PANASONIC_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 273 #define PANASONIC_LSB 1 // LSB...MSB?
JojoS 0:a0715ea739cb 274 #define PANASONIC_FRAMES 1 // PANASONIC sends 1 frame
JojoS 0:a0715ea739cb 275 #define PANASONIC_FLAGS 0 // flags
JojoS 0:a0715ea739cb 276
JojoS 0:a0715ea739cb 277 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 278 * RECS80:
JojoS 0:a0715ea739cb 279 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 280 */
JojoS 0:a0715ea739cb 281 #define RECS80_START_BIT_PULSE_TIME 158.0e-6 // 158 usec pulse
JojoS 0:a0715ea739cb 282 #define RECS80_START_BIT_PAUSE_TIME 7432.0e-6 // 7432 usec pause
JojoS 0:a0715ea739cb 283 #define RECS80_PULSE_TIME 158.0e-6 // 158 usec pulse
JojoS 0:a0715ea739cb 284 #define RECS80_1_PAUSE_TIME 7432.0e-6 // 7432 usec pause
JojoS 0:a0715ea739cb 285 #define RECS80_0_PAUSE_TIME 4902.0e-6 // 4902 usec pause
JojoS 0:a0715ea739cb 286 #define RECS80_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 287 #define RECS80_ADDRESS_OFFSET 1 // skip 1 bit (toggle bit)
JojoS 0:a0715ea739cb 288 #define RECS80_ADDRESS_LEN 3 // read 3 address bits
JojoS 0:a0715ea739cb 289 #define RECS80_COMMAND_OFFSET 4 // skip 4 bits (1 toggle + 3 address)
JojoS 0:a0715ea739cb 290 #define RECS80_COMMAND_LEN 6 // read 6 command bits
JojoS 0:a0715ea739cb 291 #define RECS80_COMPLETE_DATA_LEN 10 // complete length
JojoS 0:a0715ea739cb 292 #define RECS80_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 293 #define RECS80_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 294 #define RECS80_FLAGS 0 // flags
JojoS 0:a0715ea739cb 295
JojoS 0:a0715ea739cb 296 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 297 * RC5:
JojoS 0:a0715ea739cb 298 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 299 */
JojoS 0:a0715ea739cb 300 #define RC5_BIT_TIME 889.0e-6 // 889 usec pulse/pause
JojoS 0:a0715ea739cb 301 #define RC5_FRAME_REPEAT_PAUSE_TIME 88.9e-3 // frame repeat after 88.9ms
JojoS 0:a0715ea739cb 302
JojoS 0:a0715ea739cb 303 #define RC5_ADDRESS_OFFSET 1 // skip 1 bit (2nd start)
JojoS 0:a0715ea739cb 304 #define RC5_ADDRESS_LEN 6 // read 1 toggle bit (for key repetition detection) + 5 address bits
JojoS 0:a0715ea739cb 305 #define RC5_COMMAND_OFFSET 7 // skip 5 bits (2nd start + 1 toggle + 5 address)
JojoS 0:a0715ea739cb 306 #define RC5_COMMAND_LEN 6 // read 6 command bits
JojoS 0:a0715ea739cb 307 #define RC5_COMPLETE_DATA_LEN 13 // complete length
JojoS 0:a0715ea739cb 308 #define RC5_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 309 #define RC5_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 310 #define RC5_FLAGS IRMP_PARAM_FLAG_IS_MANCHESTER // flags
JojoS 0:a0715ea739cb 311
JojoS 0:a0715ea739cb 312 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 313 * S100: very similar to RC5, but 14 insted of 13 bits
JojoS 0:a0715ea739cb 314 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 315 */
JojoS 0:a0715ea739cb 316 #define S100_BIT_TIME 889.0e-6 // 889 usec pulse/pause
JojoS 0:a0715ea739cb 317 #define S100_FRAME_REPEAT_PAUSE_TIME 88.9e-3 // frame repeat after 88.9ms
JojoS 0:a0715ea739cb 318
JojoS 0:a0715ea739cb 319 #define S100_ADDRESS_OFFSET 1 // skip 1 bit (2nd start)
JojoS 0:a0715ea739cb 320 #define S100_ADDRESS_LEN 6 // read 1 toggle bit (for key repetition detection) + 5 address bits
JojoS 0:a0715ea739cb 321 #define S100_COMMAND_OFFSET 7 // skip 5 bits (2nd start + 1 toggle + 5 address)
JojoS 0:a0715ea739cb 322 #define S100_COMMAND_LEN 7 // read 7 command bits
JojoS 0:a0715ea739cb 323 #define S100_COMPLETE_DATA_LEN 14 // complete length
JojoS 0:a0715ea739cb 324 #define S100_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 325 #define S100_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 326 #define S100_FLAGS IRMP_PARAM_FLAG_IS_MANCHESTER // flags
JojoS 0:a0715ea739cb 327
JojoS 0:a0715ea739cb 328 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 329 * DENON:
JojoS 0:a0715ea739cb 330 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 331 */
JojoS 0:a0715ea739cb 332 #define DENON_PULSE_TIME 310.0e-6 // 310 usec pulse in practice, 275 in theory
JojoS 0:a0715ea739cb 333 #define DENON_1_PAUSE_TIME 1780.0e-6 // 1780 usec pause in practice, 1900 in theory
JojoS 0:a0715ea739cb 334 #define DENON_0_PAUSE_TIME 745.0e-6 // 745 usec pause in practice, 775 in theory
JojoS 0:a0715ea739cb 335 #define DENON_FRAMES 2 // DENON sends each frame 2 times
JojoS 0:a0715ea739cb 336 #define DENON_AUTO_REPETITION_PAUSE_TIME 45.0e-3 // inverted repetition after 45ms
JojoS 0:a0715ea739cb 337 #define DENON_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 338 #define DENON_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 339 #define DENON_ADDRESS_LEN 5 // read 5 address bits
JojoS 0:a0715ea739cb 340 #define DENON_COMMAND_OFFSET 5 // skip 5
JojoS 0:a0715ea739cb 341 #define DENON_COMMAND_LEN 10 // read 10 command bits
JojoS 0:a0715ea739cb 342 #define DENON_COMPLETE_DATA_LEN 15 // complete length
JojoS 0:a0715ea739cb 343 #define DENON_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 344 #define DENON_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 345 #define DENON_FLAGS 0 // flags
JojoS 0:a0715ea739cb 346
JojoS 0:a0715ea739cb 347 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 348 * RC6:
JojoS 0:a0715ea739cb 349 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 350 */
JojoS 0:a0715ea739cb 351 #define RC6_START_BIT_PULSE_TIME 2666.0e-6 // 2.666 msec pulse
JojoS 0:a0715ea739cb 352 #define RC6_START_BIT_PAUSE_TIME 889.0e-6 // 889 usec pause
JojoS 0:a0715ea739cb 353 #define RC6_TOGGLE_BIT_TIME 889.0e-6 // 889 msec pulse/pause
JojoS 0:a0715ea739cb 354 #define RC6_BIT_TIME 444.0e-6 // 444 usec pulse/pause
JojoS 0:a0715ea739cb 355 #define RC6_BIT_2_TIME 889.0e-6 // 889 usec pulse/pause
JojoS 0:a0715ea739cb 356 #define RC6_BIT_3_TIME 1333.0e-6 // 1333 usec pulse/pause
JojoS 0:a0715ea739cb 357 #define RC6_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 358 #define RC6_ADDRESS_OFFSET 5 // skip "1" + 3 mode bits + 1 toggle bit
JojoS 0:a0715ea739cb 359 #define RC6_ADDRESS_LEN 8 // read 8 address bits
JojoS 0:a0715ea739cb 360 #define RC6_COMMAND_OFFSET 13 // skip 12 bits ("1" + 3 mode + 1 toggle + 8 address)
JojoS 0:a0715ea739cb 361 #define RC6_COMMAND_LEN 8 // read 8 command bits
JojoS 0:a0715ea739cb 362 #define RC6_COMPLETE_DATA_LEN_SHORT 21 // complete length
JojoS 0:a0715ea739cb 363 #define RC6_COMPLETE_DATA_LEN_LONG 36 // complete length
JojoS 0:a0715ea739cb 364 #define RC6_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 365 #define RC6_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 366 #define RC6_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags
JojoS 0:a0715ea739cb 367
JojoS 0:a0715ea739cb 368 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 369 * RECS80EXT:
JojoS 0:a0715ea739cb 370 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 371 */
JojoS 0:a0715ea739cb 372 #define RECS80EXT_START_BIT_PULSE_TIME 158.0e-6 // 158 usec pulse
JojoS 0:a0715ea739cb 373 #define RECS80EXT_START_BIT_PAUSE_TIME 3637.0e-6 // 3637 usec pause
JojoS 0:a0715ea739cb 374 #define RECS80EXT_PULSE_TIME 158.0e-6 // 158 usec pulse
JojoS 0:a0715ea739cb 375 #define RECS80EXT_1_PAUSE_TIME 7432.0e-6 // 7432 usec pause
JojoS 0:a0715ea739cb 376 #define RECS80EXT_0_PAUSE_TIME 4902.0e-6 // 4902 usec pause
JojoS 0:a0715ea739cb 377 #define RECS80EXT_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 378 #define RECS80EXT_ADDRESS_OFFSET 2 // skip 2 bits (2nd start + 1 toggle)
JojoS 0:a0715ea739cb 379 #define RECS80EXT_ADDRESS_LEN 4 // read 4 address bits
JojoS 0:a0715ea739cb 380 #define RECS80EXT_COMMAND_OFFSET 6 // skip 6 bits (2nd start + 1 toggle + 4 address)
JojoS 0:a0715ea739cb 381 #define RECS80EXT_COMMAND_LEN 6 // read 6 command bits
JojoS 0:a0715ea739cb 382 #define RECS80EXT_COMPLETE_DATA_LEN 12 // complete length
JojoS 0:a0715ea739cb 383 #define RECS80EXT_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 384 #define RECS80EXT_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 385 #define RECS80EXT_FLAGS 0 // flags
JojoS 0:a0715ea739cb 386
JojoS 0:a0715ea739cb 387 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 388 * NUBERT:
JojoS 0:a0715ea739cb 389 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 390 */
JojoS 0:a0715ea739cb 391 #define NUBERT_START_BIT_PULSE_TIME 1340.0e-6 // 1340 usec pulse
JojoS 0:a0715ea739cb 392 #define NUBERT_START_BIT_PAUSE_TIME 340.0e-6 // 340 usec pause
JojoS 0:a0715ea739cb 393 #define NUBERT_1_PULSE_TIME 1340.0e-6 // 1340 usec pulse
JojoS 0:a0715ea739cb 394 #define NUBERT_1_PAUSE_TIME 340.0e-6 // 340 usec pause
JojoS 0:a0715ea739cb 395 #define NUBERT_0_PULSE_TIME 500.0e-6 // 500 usec pulse
JojoS 0:a0715ea739cb 396 #define NUBERT_0_PAUSE_TIME 1300.0e-6 // 1300 usec pause
JojoS 0:a0715ea739cb 397 #define NUBERT_FRAMES 2 // Nubert sends 2 frames
JojoS 0:a0715ea739cb 398 #define NUBERT_AUTO_REPETITION_PAUSE_TIME 35.0e-3 // auto repetition after 35ms
JojoS 0:a0715ea739cb 399 #define NUBERT_FRAME_REPEAT_PAUSE_TIME 35.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 400 #define NUBERT_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 401 #define NUBERT_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 402 #define NUBERT_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 403 #define NUBERT_COMMAND_LEN 10 // read 10 bits
JojoS 0:a0715ea739cb 404 #define NUBERT_COMPLETE_DATA_LEN 10 // complete length
JojoS 0:a0715ea739cb 405 #define NUBERT_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 406 #define NUBERT_LSB 0 // MSB?
JojoS 0:a0715ea739cb 407 #define NUBERT_FLAGS 0 // flags
JojoS 0:a0715ea739cb 408
JojoS 0:a0715ea739cb 409 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 410 * FAN: (ventilator)
JojoS 0:a0715ea739cb 411 *
JojoS 0:a0715ea739cb 412 * Similar to NUBERT, but
JojoS 0:a0715ea739cb 413 * - has data bit instead of stop bit
JojoS 0:a0715ea739cb 414 * - has NO frame repetition
JojoS 0:a0715ea739cb 415 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 416 */
JojoS 0:a0715ea739cb 417 #define FAN_START_BIT_PULSE_TIME 1280.0e-6 // 1280 usec pulse
JojoS 0:a0715ea739cb 418 #define FAN_START_BIT_PAUSE_TIME 380.0e-6 // 380 usec pause
JojoS 0:a0715ea739cb 419 #define FAN_1_PULSE_TIME 1280.0e-6 // 1280 usec pulse
JojoS 0:a0715ea739cb 420 #define FAN_1_PAUSE_TIME 380.0e-6 // 380 usec pause
JojoS 0:a0715ea739cb 421 #define FAN_0_PULSE_TIME 380.0e-6 // 380 usec pulse
JojoS 0:a0715ea739cb 422 #define FAN_0_PAUSE_TIME 1280.0e-6 // 1280 usec pause
JojoS 0:a0715ea739cb 423 #define FAN_FRAMES 1 // FAN sends only 1 frame (NUBERT sends 2)
JojoS 0:a0715ea739cb 424 #define FAN_AUTO_REPETITION_PAUSE_TIME 6.6e-3 // auto repetition after 6.6ms
JojoS 0:a0715ea739cb 425 #define FAN_FRAME_REPEAT_PAUSE_TIME 6.6e-3 // frame repeat after 6.6ms
JojoS 0:a0715ea739cb 426 #define FAN_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 427 #define FAN_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 428 #define FAN_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 429 #define FAN_COMMAND_LEN 11 // read 10 bits
JojoS 0:a0715ea739cb 430 #define FAN_COMPLETE_DATA_LEN 11 // complete length
JojoS 0:a0715ea739cb 431 #define FAN_STOP_BIT 0 // has NO stop bit (fm: this seems to be wrong)
JojoS 0:a0715ea739cb 432 #define FAN_LSB 0 // MSB
JojoS 0:a0715ea739cb 433 #define FAN_FLAGS 0 // flags
JojoS 0:a0715ea739cb 434
JojoS 0:a0715ea739cb 435 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 436 * SPEAKER:
JojoS 0:a0715ea739cb 437 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 438 */
JojoS 0:a0715ea739cb 439 #define SPEAKER_START_BIT_PULSE_TIME 440.0e-6 // 440 usec pulse
JojoS 0:a0715ea739cb 440 #define SPEAKER_START_BIT_PAUSE_TIME 1250.0e-6 // 1250 usec pause
JojoS 0:a0715ea739cb 441 #define SPEAKER_1_PULSE_TIME 1250.0e-6 // 1250 usec pulse
JojoS 0:a0715ea739cb 442 #define SPEAKER_1_PAUSE_TIME 440.0e-6 // 440 usec pause
JojoS 0:a0715ea739cb 443 #define SPEAKER_0_PULSE_TIME 440.0e-6 // 440 usec pulse
JojoS 0:a0715ea739cb 444 #define SPEAKER_0_PAUSE_TIME 1250.0e-6 // 1250 usec pause
JojoS 0:a0715ea739cb 445 #define SPEAKER_FRAMES 2 // SPEAKER sends 2 frames
JojoS 0:a0715ea739cb 446 #define SPEAKER_AUTO_REPETITION_PAUSE_TIME 35.0e-3 // auto repetition after 35ms
JojoS 0:a0715ea739cb 447 #define SPEAKER_FRAME_REPEAT_PAUSE_TIME 35.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 448 #define SPEAKER_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 449 #define SPEAKER_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 450 #define SPEAKER_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 451 #define SPEAKER_COMMAND_LEN 10 // read 10 bits
JojoS 0:a0715ea739cb 452 #define SPEAKER_COMPLETE_DATA_LEN 10 // complete length
JojoS 0:a0715ea739cb 453 #define SPEAKER_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 454 #define SPEAKER_LSB 0 // MSB?
JojoS 0:a0715ea739cb 455 #define SPEAKER_FLAGS 0 // flags
JojoS 0:a0715ea739cb 456
JojoS 0:a0715ea739cb 457 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 458 * BANG_OLUFSEN:
JojoS 0:a0715ea739cb 459 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 460 */
JojoS 0:a0715ea739cb 461 #define BANG_OLUFSEN_START_BIT1_PULSE_TIME 200.0e-6 // 200 usec pulse
JojoS 0:a0715ea739cb 462 #define BANG_OLUFSEN_START_BIT1_PAUSE_TIME 3125.0e-6 // 3125 usec pause
JojoS 0:a0715ea739cb 463 #define BANG_OLUFSEN_START_BIT2_PULSE_TIME 200.0e-6 // 200 usec pulse
JojoS 0:a0715ea739cb 464 #define BANG_OLUFSEN_START_BIT2_PAUSE_TIME 3125.0e-6 // 3125 usec pause
JojoS 0:a0715ea739cb 465 #define BANG_OLUFSEN_START_BIT3_PULSE_TIME 200.0e-6 // 200 usec pulse
JojoS 0:a0715ea739cb 466 #define BANG_OLUFSEN_START_BIT3_PAUSE_TIME 15625.0e-6 // 15625 usec pause
JojoS 0:a0715ea739cb 467 #define BANG_OLUFSEN_START_BIT4_PULSE_TIME 200.0e-6 // 200 usec pulse
JojoS 0:a0715ea739cb 468 #define BANG_OLUFSEN_START_BIT4_PAUSE_TIME 3125.0e-6 // 3125 usec pause
JojoS 0:a0715ea739cb 469 #define BANG_OLUFSEN_PULSE_TIME 200.0e-6 // 200 usec pulse
JojoS 0:a0715ea739cb 470 #define BANG_OLUFSEN_1_PAUSE_TIME 9375.0e-6 // 9375 usec pause
JojoS 0:a0715ea739cb 471 #define BANG_OLUFSEN_0_PAUSE_TIME 3125.0e-6 // 3125 usec pause
JojoS 0:a0715ea739cb 472 #define BANG_OLUFSEN_R_PAUSE_TIME 6250.0e-6 // 6250 usec pause (repeat last bit)
JojoS 0:a0715ea739cb 473 #define BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME 12500.0e-6 // 12500 usec pause (trailer bit)
JojoS 0:a0715ea739cb 474 #define BANG_OLUFSEN_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 475 #define BANG_OLUFSEN_ADDRESS_OFFSET 0 // no address bits
JojoS 0:a0715ea739cb 476 #define BANG_OLUFSEN_ADDRESS_LEN 0 // no address bits
JojoS 0:a0715ea739cb 477 #define BANG_OLUFSEN_COMMAND_OFFSET 3 // skip startbits 2, 3, 4
JojoS 0:a0715ea739cb 478 #define BANG_OLUFSEN_COMMAND_LEN 16 // read 16 command bits
JojoS 0:a0715ea739cb 479 #define BANG_OLUFSEN_COMPLETE_DATA_LEN 20 // complete length: startbits 2, 3, 4 + 16 data bits + trailer bit
JojoS 0:a0715ea739cb 480 #define BANG_OLUFSEN_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 481 #define BANG_OLUFSEN_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 482 #define BANG_OLUFSEN_FLAGS 0 // flags
JojoS 0:a0715ea739cb 483
JojoS 0:a0715ea739cb 484 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 485 * GRUNDIG & NOKIA
JojoS 0:a0715ea739cb 486 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 487 */
JojoS 0:a0715ea739cb 488 #define GRUNDIG_NOKIA_IR60_BIT_TIME 528.0e-6 // 528 usec pulse/pause
JojoS 0:a0715ea739cb 489 #define GRUNDIG_NOKIA_IR60_PRE_PAUSE_TIME 2639.0e-6 // 2639 usec pause after pre bit
JojoS 0:a0715ea739cb 490 #define GRUNDIG_NOKIA_IR60_FRAME_REPEAT_PAUSE_TIME 117.76e-3 // info frame repeat after 117.76 ms
JojoS 0:a0715ea739cb 491 #define GRUNDIG_NOKIA_IR60_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 492 #define GRUNDIG_NOKIA_IR60_LSB 1 // MSB...LSB
JojoS 0:a0715ea739cb 493 #define GRUNDIG_NOKIA_IR60_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags
JojoS 0:a0715ea739cb 494
JojoS 0:a0715ea739cb 495 #define GRUNDIG_FRAMES 2 // GRUNDIG sends each frame 1+1 times
JojoS 0:a0715ea739cb 496 #define GRUNDIG_AUTO_REPETITION_PAUSE_TIME 20.0e-3 // repetition after 20ms
JojoS 0:a0715ea739cb 497 #define GRUNDIG_ADDRESS_OFFSET 0 // no address
JojoS 0:a0715ea739cb 498 #define GRUNDIG_ADDRESS_LEN 0 // no address
JojoS 0:a0715ea739cb 499 #define GRUNDIG_COMMAND_OFFSET 1 // skip 1 start bit
JojoS 0:a0715ea739cb 500 #define GRUNDIG_COMMAND_LEN 9 // read 9 command bits
JojoS 0:a0715ea739cb 501 #define GRUNDIG_COMPLETE_DATA_LEN 10 // complete length: 1 start bit + 9 data bits
JojoS 0:a0715ea739cb 502
JojoS 0:a0715ea739cb 503 #define NOKIA_FRAMES 3 // NOKIA sends each frame 1 + 1 + 1 times
JojoS 0:a0715ea739cb 504 #define NOKIA_AUTO_REPETITION_PAUSE_TIME 20.0e-3 // repetition after 20ms
JojoS 0:a0715ea739cb 505 #define NOKIA_ADDRESS_OFFSET 9 // skip 9 bits (1 start bit + 8 data bits)
JojoS 0:a0715ea739cb 506 #define NOKIA_ADDRESS_LEN 8 // 7 address bits
JojoS 0:a0715ea739cb 507 #define NOKIA_COMMAND_OFFSET 1 // skip 1 bit (1 start bit)
JojoS 0:a0715ea739cb 508 #define NOKIA_COMMAND_LEN 8 // read 8 command bits
JojoS 0:a0715ea739cb 509 #define NOKIA_COMPLETE_DATA_LEN 17 // complete length: 1 start bit + 8 address bits + 8 command bits
JojoS 0:a0715ea739cb 510
JojoS 0:a0715ea739cb 511 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 512 * IR60:
JojoS 0:a0715ea739cb 513 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 514 */
JojoS 0:a0715ea739cb 515 #define IR60_FRAMES 2 // IR60 sends each frame 1+1 times
JojoS 0:a0715ea739cb 516 #define IR60_AUTO_REPETITION_PAUSE_TIME 22.2e-3 // repetition after 22.2ms
JojoS 0:a0715ea739cb 517 #define IR60_TIMEOUT_TIME 5000.0e-6 // timeout grundig frame, switch to IR60
JojoS 0:a0715ea739cb 518 #define IR60_ADDRESS_OFFSET 0 // skip 1 bits
JojoS 0:a0715ea739cb 519 #define IR60_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 520 #define IR60_COMMAND_OFFSET 0 // skip 1 bit (start bit after pre bit, always 1)
JojoS 0:a0715ea739cb 521 #define IR60_COMMAND_LEN 7 // read 6 command bits
JojoS 0:a0715ea739cb 522 #define IR60_COMPLETE_DATA_LEN 7 // complete length
JojoS 0:a0715ea739cb 523
JojoS 0:a0715ea739cb 524 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 525 * SIEMENS & RUWIDO:
JojoS 0:a0715ea739cb 526 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 527 */
JojoS 0:a0715ea739cb 528
JojoS 0:a0715ea739cb 529 #if 0
JojoS 0:a0715ea739cb 530 #define SIEMENS_OR_RUWIDO_START_BIT_PULSE_TIME 275.0e-6 // 275 usec pulse
JojoS 0:a0715ea739cb 531 #define SIEMENS_OR_RUWIDO_START_BIT_PAUSE_TIME 550.0e-6 // 550 usec pause
JojoS 0:a0715ea739cb 532 #define SIEMENS_OR_RUWIDO_BIT_PULSE_TIME 275.0e-6 // 275 usec short pulse
JojoS 0:a0715ea739cb 533 #define SIEMENS_OR_RUWIDO_BIT_PULSE_TIME_2 550.0e-6 // 550 usec long pulse
JojoS 0:a0715ea739cb 534 #define SIEMENS_OR_RUWIDO_BIT_PAUSE_TIME 275.0e-6 // 275 usec short pause
JojoS 0:a0715ea739cb 535 #define SIEMENS_OR_RUWIDO_BIT_PAUSE_TIME_2 550.0e-6 // 550 usec long pause
JojoS 0:a0715ea739cb 536 #else
JojoS 0:a0715ea739cb 537 #define SIEMENS_OR_RUWIDO_START_BIT_PULSE_TIME 370.0e-6 // 370 usec pulse
JojoS 0:a0715ea739cb 538 #define SIEMENS_OR_RUWIDO_START_BIT_PAUSE_TIME 550.0e-6 // 550 usec pause
JojoS 0:a0715ea739cb 539 #define SIEMENS_OR_RUWIDO_BIT_PULSE_TIME 370.0e-6 // 370 usec short pulse
JojoS 0:a0715ea739cb 540 #define SIEMENS_OR_RUWIDO_BIT_PULSE_TIME_2 680.0e-6 // 680 usec long pulse
JojoS 0:a0715ea739cb 541 #define SIEMENS_OR_RUWIDO_BIT_PAUSE_TIME 275.0e-6 // 275 usec short pause
JojoS 0:a0715ea739cb 542 #define SIEMENS_OR_RUWIDO_BIT_PAUSE_TIME_2 550.0e-6 // 550 usec long pause
JojoS 0:a0715ea739cb 543 #endif
JojoS 0:a0715ea739cb 544
JojoS 0:a0715ea739cb 545 #define SIEMENS_OR_RUWIDO_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 546 #define SIEMENS_OR_RUWIDO_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 547 #define SIEMENS_OR_RUWIDO_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 548 #define SIEMENS_OR_RUWIDO_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags
JojoS 0:a0715ea739cb 549
JojoS 0:a0715ea739cb 550 #define RUWIDO_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 551 #define RUWIDO_ADDRESS_LEN 9 // read 9 address bits
JojoS 0:a0715ea739cb 552 #define RUWIDO_COMMAND_OFFSET 9 // skip 9 bits
JojoS 0:a0715ea739cb 553 #define RUWIDO_COMMAND_LEN 8 // read 7 + 1 command bits, last bit is only check bit
JojoS 0:a0715ea739cb 554 #define RUWIDO_COMPLETE_DATA_LEN 17 // complete length
JojoS 0:a0715ea739cb 555
JojoS 0:a0715ea739cb 556 #define SIEMENS_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 557 #define SIEMENS_ADDRESS_LEN 11 // read 11 bits
JojoS 0:a0715ea739cb 558 #define SIEMENS_COMMAND_OFFSET 11 // skip 11 bits
JojoS 0:a0715ea739cb 559 #define SIEMENS_COMMAND_LEN 11 // read 10 + 1 command bits, last bit is only check bit
JojoS 0:a0715ea739cb 560 #define SIEMENS_COMPLETE_DATA_LEN 22 // complete length
JojoS 0:a0715ea739cb 561
JojoS 0:a0715ea739cb 562 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 563 * FDC:
JojoS 0:a0715ea739cb 564 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 565 */
JojoS 0:a0715ea739cb 566 #define FDC_START_BIT_PULSE_TIME 2085.0e-6 // 2085 usec pulse
JojoS 0:a0715ea739cb 567 #define FDC_START_BIT_PAUSE_TIME 966.0e-6 // 966 usec pause
JojoS 0:a0715ea739cb 568 #define FDC_PULSE_TIME 300.0e-6 // 300 usec pulse
JojoS 0:a0715ea739cb 569 #define FDC_1_PAUSE_TIME 715.0e-6 // 715 usec pause
JojoS 0:a0715ea739cb 570 #define FDC_0_PAUSE_TIME 220.0e-6 // 220 usec pause
JojoS 0:a0715ea739cb 571 #define FDC_FRAME_REPEAT_PAUSE_TIME 60.0e-3 // frame repeat after 60ms
JojoS 0:a0715ea739cb 572 #define FDC_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 573 #define FDC_ADDRESS_LEN 14 // read 14 address bits, but use only 6, shift 8 into command
JojoS 0:a0715ea739cb 574 #define FDC_COMMAND_OFFSET 20 // skip 20 bits
JojoS 0:a0715ea739cb 575 #define FDC_COMMAND_LEN 12 // read 12 bits
JojoS 0:a0715ea739cb 576 #define FDC_COMPLETE_DATA_LEN 40 // complete length
JojoS 0:a0715ea739cb 577 #define FDC_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 578 #define FDC_LSB 1 // LSB...MSB
JojoS 0:a0715ea739cb 579 #define FDC_FLAGS 0 // flags
JojoS 0:a0715ea739cb 580
JojoS 0:a0715ea739cb 581 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 582 * RCCAR:
JojoS 0:a0715ea739cb 583 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 584 */
JojoS 0:a0715ea739cb 585 #define RCCAR_START_BIT_PULSE_TIME 2000.0e-6 // 2000 usec pulse
JojoS 0:a0715ea739cb 586 #define RCCAR_START_BIT_PAUSE_TIME 2000.0e-6 // 2000 usec pause
JojoS 0:a0715ea739cb 587 #define RCCAR_PULSE_TIME 600.0e-6 // 360 usec pulse
JojoS 0:a0715ea739cb 588 #define RCCAR_1_PAUSE_TIME 450.0e-6 // 650 usec pause
JojoS 0:a0715ea739cb 589 #define RCCAR_0_PAUSE_TIME 900.0e-6 // 180 usec pause
JojoS 0:a0715ea739cb 590 #define RCCAR_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms
JojoS 0:a0715ea739cb 591 #define RCCAR_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 592 #define RCCAR_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 593 #define RCCAR_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 594 #define RCCAR_COMMAND_LEN 13 // read 13 bits
JojoS 0:a0715ea739cb 595 #define RCCAR_COMPLETE_DATA_LEN 13 // complete length
JojoS 0:a0715ea739cb 596 #define RCCAR_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 597 #define RCCAR_LSB 1 // LSB...MSB
JojoS 0:a0715ea739cb 598 #define RCCAR_FLAGS 0 // flags
JojoS 0:a0715ea739cb 599
JojoS 0:a0715ea739cb 600 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 601 * JVC:
JojoS 0:a0715ea739cb 602 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 603 */
JojoS 0:a0715ea739cb 604 #define JVC_START_BIT_PULSE_TIME 9000.0e-6 // 9000 usec pulse
JojoS 0:a0715ea739cb 605 #define JVC_START_BIT_PAUSE_TIME 4500.0e-6 // 4500 usec pause
JojoS 0:a0715ea739cb 606 #define JVC_PULSE_TIME 560.0e-6 // 560 usec pulse
JojoS 0:a0715ea739cb 607 #define JVC_1_PAUSE_TIME 1690.0e-6 // 1690 usec pause
JojoS 0:a0715ea739cb 608 #define JVC_0_PAUSE_TIME 560.0e-6 // 560 usec pause
JojoS 0:a0715ea739cb 609 #define JVC_FRAME_REPEAT_PAUSE_TIME 22.0e-3 // frame repeat after 22ms
JojoS 0:a0715ea739cb 610 #define JVC_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 611 #define JVC_ADDRESS_LEN 4 // read 4 address bits
JojoS 0:a0715ea739cb 612 #define JVC_COMMAND_OFFSET 4 // skip 4 bits
JojoS 0:a0715ea739cb 613 #define JVC_COMMAND_LEN 12 // read 12 bits
JojoS 0:a0715ea739cb 614 #define JVC_COMPLETE_DATA_LEN 16 // complete length
JojoS 0:a0715ea739cb 615 #define JVC_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 616 #define JVC_LSB 1 // LSB...MSB
JojoS 0:a0715ea739cb 617 #define JVC_FLAGS 0 // flags
JojoS 0:a0715ea739cb 618
JojoS 0:a0715ea739cb 619 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 620 * NIKON:
JojoS 0:a0715ea739cb 621 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 622 */
JojoS 0:a0715ea739cb 623 #define NIKON_START_BIT_PULSE_TIME 2200.0e-6 // 2200 usec pulse
JojoS 0:a0715ea739cb 624 #define NIKON_START_BIT_PAUSE_TIME 27100.0e-6 // 27100 usec pause
JojoS 0:a0715ea739cb 625 #define NIKON_PULSE_TIME 500.0e-6 // 500 usec pulse
JojoS 0:a0715ea739cb 626 #define NIKON_1_PAUSE_TIME 3500.0e-6 // 3500 usec pause
JojoS 0:a0715ea739cb 627 #define NIKON_0_PAUSE_TIME 1500.0e-6 // 1500 usec pause
JojoS 0:a0715ea739cb 628 #define NIKON_FRAME_REPEAT_PAUSE_TIME 60.0e-3 // frame repeat after 60ms
JojoS 0:a0715ea739cb 629 #define NIKON_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 630 #define NIKON_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 631 #define NIKON_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 632 #define NIKON_COMMAND_LEN 2 // read 2 bits
JojoS 0:a0715ea739cb 633 #define NIKON_COMPLETE_DATA_LEN 2 // complete length
JojoS 0:a0715ea739cb 634 #define NIKON_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 635 #define NIKON_LSB 0 // LSB...MSB
JojoS 0:a0715ea739cb 636 #define NIKON_FLAGS 0 // flags
JojoS 0:a0715ea739cb 637
JojoS 0:a0715ea739cb 638 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 639 * KATHREIN:
JojoS 0:a0715ea739cb 640 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 641 */
JojoS 0:a0715ea739cb 642 #define KATHREIN_START_BIT_PULSE_TIME 210.0e-6 // 1340 usec pulse
JojoS 0:a0715ea739cb 643 #define KATHREIN_START_BIT_PAUSE_TIME 6218.0e-6 // 340 usec pause
JojoS 0:a0715ea739cb 644 #define KATHREIN_1_PULSE_TIME 210.0e-6 // 1340 usec pulse
JojoS 0:a0715ea739cb 645 #define KATHREIN_1_PAUSE_TIME 3000.0e-6 // 340 usec pause
JojoS 0:a0715ea739cb 646 #define KATHREIN_0_PULSE_TIME 210.0e-6 // 500 usec pulse
JojoS 0:a0715ea739cb 647 #define KATHREIN_0_PAUSE_TIME 1400.0e-6 // 1300 usec pause
JojoS 0:a0715ea739cb 648 #define KATHREIN_SYNC_BIT_PAUSE_LEN_TIME 4600.0e-6 // 4600 usec sync (on 6th and/or 8th bit)
JojoS 0:a0715ea739cb 649 #define KATHREIN_FRAMES 1 // Kathrein sends 1 frame
JojoS 0:a0715ea739cb 650 #define KATHREIN_AUTO_REPETITION_PAUSE_TIME 35.0e-3 // auto repetition after 35ms
JojoS 0:a0715ea739cb 651 #define KATHREIN_FRAME_REPEAT_PAUSE_TIME 35.0e-3 // frame repeat after 35ms
JojoS 0:a0715ea739cb 652 #define KATHREIN_ADDRESS_OFFSET 1 // skip 1 bits
JojoS 0:a0715ea739cb 653 #define KATHREIN_ADDRESS_LEN 4 // read 4 address bits
JojoS 0:a0715ea739cb 654 #define KATHREIN_COMMAND_OFFSET 5 // skip 5 bits
JojoS 0:a0715ea739cb 655 #define KATHREIN_COMMAND_LEN 7 // read 7 bits
JojoS 0:a0715ea739cb 656 #define KATHREIN_COMPLETE_DATA_LEN 13 // complete length
JojoS 0:a0715ea739cb 657 #define KATHREIN_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 658 #define KATHREIN_LSB 0 // MSB
JojoS 0:a0715ea739cb 659 #define KATHREIN_FLAGS 0 // flags
JojoS 0:a0715ea739cb 660
JojoS 0:a0715ea739cb 661 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 662 * NETBOX:
JojoS 0:a0715ea739cb 663 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 664 */
JojoS 0:a0715ea739cb 665 #define NETBOX_START_BIT_PULSE_TIME 2400.0e-6 // 2400 usec pulse
JojoS 0:a0715ea739cb 666 #define NETBOX_START_BIT_PAUSE_TIME 800.0e-6 // 800 usec pause
JojoS 0:a0715ea739cb 667 #define NETBOX_PULSE_TIME 800.0e-6 // 800 usec pulse
JojoS 0:a0715ea739cb 668 #define NETBOX_PAUSE_TIME 800.0e-6 // 800 usec pause
JojoS 0:a0715ea739cb 669 #define NETBOX_FRAMES 1 // Netbox sends 1 frame
JojoS 0:a0715ea739cb 670 #define NETBOX_AUTO_REPETITION_PAUSE_TIME 35.0e-3 // auto repetition after 35ms
JojoS 0:a0715ea739cb 671 #define NETBOX_FRAME_REPEAT_PAUSE_TIME 35.0e-3 // frame repeat after 35ms
JojoS 0:a0715ea739cb 672 #define NETBOX_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 673 #define NETBOX_ADDRESS_LEN 3 // read 3 address bits
JojoS 0:a0715ea739cb 674 #define NETBOX_COMMAND_OFFSET 3 // skip 3 bits
JojoS 0:a0715ea739cb 675 #define NETBOX_COMMAND_LEN 13 // read 13 bits
JojoS 0:a0715ea739cb 676 #define NETBOX_COMPLETE_DATA_LEN 16 // complete length
JojoS 0:a0715ea739cb 677 #define NETBOX_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 678 #define NETBOX_LSB 1 // LSB
JojoS 0:a0715ea739cb 679 #define NETBOX_FLAGS IRMP_PARAM_FLAG_IS_SERIAL // flags
JojoS 0:a0715ea739cb 680
JojoS 0:a0715ea739cb 681 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 682 * LEGO:
JojoS 0:a0715ea739cb 683 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 684 */
JojoS 0:a0715ea739cb 685 #define LEGO_START_BIT_PULSE_TIME 158.0e-6 // 158 usec pulse ( 6 x 1/38kHz)
JojoS 0:a0715ea739cb 686 #define LEGO_START_BIT_PAUSE_TIME 1026.0e-6 // 1026 usec pause (39 x 1/38kHz)
JojoS 0:a0715ea739cb 687 #define LEGO_PULSE_TIME 158.0e-6 // 158 usec pulse ( 6 x 1/38kHz)
JojoS 0:a0715ea739cb 688 #define LEGO_1_PAUSE_TIME 553.0e-6 // 553 usec pause (21 x 1/38kHz)
JojoS 0:a0715ea739cb 689 #define LEGO_0_PAUSE_TIME 263.0e-6 // 263 usec pause (10 x 1/38kHz)
JojoS 0:a0715ea739cb 690 #define LEGO_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms
JojoS 0:a0715ea739cb 691 #define LEGO_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 692 #define LEGO_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 693 #define LEGO_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 694 #define LEGO_COMMAND_LEN 16 // read 16 bits (12 command + 4 CRC)
JojoS 0:a0715ea739cb 695 #define LEGO_COMPLETE_DATA_LEN 16 // complete length
JojoS 0:a0715ea739cb 696 #define LEGO_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 697 #define LEGO_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 698 #define LEGO_FLAGS 0 // flags
JojoS 0:a0715ea739cb 699
JojoS 0:a0715ea739cb 700 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 701 * THOMSON:
JojoS 0:a0715ea739cb 702 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 703 */
JojoS 0:a0715ea739cb 704 #define THOMSON_PULSE_TIME 550.0e-6 // 550 usec pulse
JojoS 0:a0715ea739cb 705 #define THOMSON_1_PAUSE_TIME 4500.0e-6 // 4500 usec pause
JojoS 0:a0715ea739cb 706 #define THOMSON_0_PAUSE_TIME 2000.0e-6 // 2000 usec pause
JojoS 0:a0715ea739cb 707 #define THOMSON_FRAMES 1 // THOMSON sends 1 frame
JojoS 0:a0715ea739cb 708 #define THOMSON_AUTO_REPETITION_PAUSE_TIME 35.0e-3 // repetition after 35ms
JojoS 0:a0715ea739cb 709 #define THOMSON_FRAME_REPEAT_PAUSE_TIME 35.0e-3 // frame repeat after 35ms
JojoS 0:a0715ea739cb 710 #define THOMSON_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 711 #define THOMSON_ADDRESS_LEN 4 // read 4 address bits
JojoS 0:a0715ea739cb 712 #define THOMSON_COMMAND_OFFSET 5 // skip 4 address bits + 1 toggle bit
JojoS 0:a0715ea739cb 713 #define THOMSON_COMMAND_LEN 7 // read 7 command bits
JojoS 0:a0715ea739cb 714 #define THOMSON_COMPLETE_DATA_LEN 12 // complete length
JojoS 0:a0715ea739cb 715 #define THOMSON_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 716 #define THOMSON_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 717 #define THOMSON_FLAGS 0 // flags
JojoS 0:a0715ea739cb 718
JojoS 0:a0715ea739cb 719 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 720 * BOSE:
JojoS 0:a0715ea739cb 721 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 722 */
JojoS 0:a0715ea739cb 723 #define BOSE_START_BIT_PULSE_TIME 1060.0e-6 // 1060 usec pulse
JojoS 0:a0715ea739cb 724 #define BOSE_START_BIT_PAUSE_TIME 1425.0e-6 // 1425 usec pause
JojoS 0:a0715ea739cb 725 #define BOSE_PULSE_TIME 550.0e-6 // 550 usec pulse
JojoS 0:a0715ea739cb 726 #define BOSE_1_PAUSE_TIME 1425.0e-6 // 1425 usec pause
JojoS 0:a0715ea739cb 727 #define BOSE_0_PAUSE_TIME 437.0e-6 // 437 usec pause
JojoS 0:a0715ea739cb 728 #define BOSE_FRAMES 1
JojoS 0:a0715ea739cb 729 #define BOSE_AUTO_REPETITION_PAUSE_TIME 40.0e-3 // repetition after 40ms?
JojoS 0:a0715ea739cb 730 #define BOSE_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms?
JojoS 0:a0715ea739cb 731 #define BOSE_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 732 #define BOSE_ADDRESS_LEN 0 // read 16 address bits
JojoS 0:a0715ea739cb 733 #define BOSE_COMMAND_OFFSET 0 // skip 16 bits (8 address + 8 /address)
JojoS 0:a0715ea739cb 734 #define BOSE_COMMAND_LEN 16 // read 16 bits (8 command + 8 /command)
JojoS 0:a0715ea739cb 735 #define BOSE_COMPLETE_DATA_LEN 16 // complete length
JojoS 0:a0715ea739cb 736 #define BOSE_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 737 #define BOSE_LSB 1 // LSB...MSB
JojoS 0:a0715ea739cb 738 #define BOSE_FLAGS 0 // flags
JojoS 0:a0715ea739cb 739
JojoS 0:a0715ea739cb 740 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 741 * A1TVBOX:
JojoS 0:a0715ea739cb 742 * In reality A1 TV Box has no start bit with 300/340 usec. There are 2 start bits "10" with 250us pulse + 150us pause + 150us pause + 250us pulse
JojoS 0:a0715ea739cb 743 * This is not very easy to detect, because 1st and 2nd pause of both start bits are closely spaced.
JojoS 0:a0715ea739cb 744 * So IRMP looks for pseudo start bit with 300/340 usec and ignores the second half of the 2nd bit (250us pulse)
JojoS 0:a0715ea739cb 745 * This method only works because the first data bit (which is the 3rd bit) following is always "1":
JojoS 0:a0715ea739cb 746 * IRMP treats the first "long" pulse (250us of 2nd start bit + 250us of 1st data bit) of this "1" as a first _short_ pulse.
JojoS 0:a0715ea739cb 747 * This is a bug in IRMP's manchester decoder, but a good feature here ;-)
JojoS 0:a0715ea739cb 748 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 749 */
JojoS 0:a0715ea739cb 750 #define A1TVBOX_START_BIT_PULSE_TIME 300.0e-6 // 300 usec pulse
JojoS 0:a0715ea739cb 751 #define A1TVBOX_START_BIT_PAUSE_TIME 340.0e-6 // 340 usec pause
JojoS 0:a0715ea739cb 752 #define A1TVBOX_BIT_PULSE_TIME 250.0e-6 // 250 usec pulse
JojoS 0:a0715ea739cb 753 #define A1TVBOX_BIT_PAUSE_TIME 150.0e-6 // 150 usec pulse
JojoS 0:a0715ea739cb 754 #define A1TVBOX_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 755 #define A1TVBOX_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 756 #define A1TVBOX_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1 ) // flags
JojoS 0:a0715ea739cb 757 #define A1TVBOX_FRAMES 1 // A1TVBOX sends each frame 1 times
JojoS 0:a0715ea739cb 758 #define A1TVBOX_ADDRESS_OFFSET 1 // skip 1 bits
JojoS 0:a0715ea739cb 759 #define A1TVBOX_ADDRESS_LEN 8 // read 8 address bits
JojoS 0:a0715ea739cb 760 #define A1TVBOX_COMMAND_OFFSET 9 // skip 9 bits (start bit + address)
JojoS 0:a0715ea739cb 761 #define A1TVBOX_COMMAND_LEN 8 // read 8 command bits
JojoS 0:a0715ea739cb 762 #define A1TVBOX_COMPLETE_DATA_LEN 17 // complete length incl. start bit
JojoS 0:a0715ea739cb 763 #define A1TVBOX_FRAME_REPEAT_PAUSE_TIME 50.0e-3 // 50 msec pause between frames, don't know if it is correct
JojoS 0:a0715ea739cb 764
JojoS 0:a0715ea739cb 765 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 766 * MERLIN:
JojoS 0:a0715ea739cb 767 * See notes for A1TVBOX
JojoS 0:a0715ea739cb 768 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 769 */
JojoS 0:a0715ea739cb 770 #define MERLIN_START_BIT_PULSE_TIME 210.0e-6 // 210 usec pulse
JojoS 0:a0715ea739cb 771 #define MERLIN_START_BIT_PAUSE_TIME 420.0e-6 // 429 usec pause
JojoS 0:a0715ea739cb 772 #define MERLIN_BIT_PULSE_TIME 210.0e-6 // 210 usec pulse
JojoS 0:a0715ea739cb 773 #define MERLIN_BIT_PAUSE_TIME 210.0e-6 // 210 usec pulse
JojoS 0:a0715ea739cb 774 #define MERLIN_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 775 #define MERLIN_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 776 #define MERLIN_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1 ) // flags
JojoS 0:a0715ea739cb 777 #define MERLIN_FRAMES 1 // MERLIN sends each frame 1 times
JojoS 0:a0715ea739cb 778 #define MERLIN_ADDRESS_OFFSET 1 // skip 1 bits
JojoS 0:a0715ea739cb 779 #define MERLIN_ADDRESS_LEN 8 // read 8 address bits
JojoS 0:a0715ea739cb 780 #define MERLIN_COMMAND_OFFSET 8 // skip 9 bits (start bit + address)
JojoS 0:a0715ea739cb 781 #define MERLIN_COMMAND_LEN 10 // read 8 command bits
JojoS 0:a0715ea739cb 782 #define MERLIN_COMPLETE_DATA_LEN 19 // complete length incl. start bit
JojoS 0:a0715ea739cb 783 #define MERLIN_FRAME_REPEAT_PAUSE_TIME 50.0e-3 // 50 msec pause between frames, don't know if it is correct
JojoS 0:a0715ea739cb 784
JojoS 0:a0715ea739cb 785 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 786 * ORTEK (Hama): 6 address bits + 2 frame type bits + 6 command bits + 1 parity bit + 1 unknown bit + "1" + "0"
JojoS 0:a0715ea739cb 787 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 788 */
JojoS 0:a0715ea739cb 789 #define ORTEK_START_BIT_PULSE_TIME 2000.0e-6 // 2000 usec pulse
JojoS 0:a0715ea739cb 790 #define ORTEK_START_BIT_PAUSE_TIME 1000.0e-6 // 1000 usec pause
JojoS 0:a0715ea739cb 791 #define ORTEK_BIT_TIME 500.0e-6 // 500 usec pulse/pause
JojoS 0:a0715ea739cb 792 #define ORTEK_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms
JojoS 0:a0715ea739cb 793 #define ORTEK_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 794 #define ORTEK_ADDRESS_LEN 8 // read 6 address bits + 2 special bits
JojoS 0:a0715ea739cb 795 #define ORTEK_COMMAND_OFFSET 8 // skip 6 address bits + 2 special bits
JojoS 0:a0715ea739cb 796 #define ORTEK_COMMAND_LEN 6 // read 6 command bits
JojoS 0:a0715ea739cb 797 #define ORTEK_COMPLETE_DATA_LEN 18 // complete length
JojoS 0:a0715ea739cb 798 #define ORTEK_STOP_BIT 0 // has no stop bit
JojoS 0:a0715ea739cb 799 #define ORTEK_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 800 #define ORTEK_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags
JojoS 0:a0715ea739cb 801
JojoS 0:a0715ea739cb 802 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 803 * TELEFUNKEN:
JojoS 0:a0715ea739cb 804 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 805 */
JojoS 0:a0715ea739cb 806 #define TELEFUNKEN_START_BIT_PULSE_TIME 600.0e-6 // 600 usec pulse
JojoS 0:a0715ea739cb 807 #define TELEFUNKEN_START_BIT_PAUSE_TIME 1500.0e-6 // 1500 usec pause
JojoS 0:a0715ea739cb 808 #define TELEFUNKEN_PULSE_TIME 600.0e-6 // 600 usec pulse
JojoS 0:a0715ea739cb 809 #define TELEFUNKEN_1_PAUSE_TIME 1500.0e-6 // 1500 usec pause
JojoS 0:a0715ea739cb 810 #define TELEFUNKEN_0_PAUSE_TIME 600.0e-6 // 600 usec pause
JojoS 0:a0715ea739cb 811 #define TELEFUNKEN_FRAME_REPEAT_PAUSE_TIME 22.0e-3 // frame repeat after XX ms ?????
JojoS 0:a0715ea739cb 812 #define TELEFUNKEN_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 813 #define TELEFUNKEN_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 814 #define TELEFUNKEN_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 815 #define TELEFUNKEN_COMMAND_LEN 15 // read 15 bits
JojoS 0:a0715ea739cb 816 #define TELEFUNKEN_COMPLETE_DATA_LEN 15 // complete length
JojoS 0:a0715ea739cb 817 #define TELEFUNKEN_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 818 #define TELEFUNKEN_LSB 0 // LSB...MSB
JojoS 0:a0715ea739cb 819 #define TELEFUNKEN_FLAGS 0 // flags
JojoS 0:a0715ea739cb 820
JojoS 0:a0715ea739cb 821 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 822 * ROOMBA
JojoS 0:a0715ea739cb 823 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 824 */
JojoS 0:a0715ea739cb 825 #define ROOMBA_START_BIT_PULSE_TIME 2790.0e-6 // 2790 usec pulse
JojoS 0:a0715ea739cb 826 #define ROOMBA_START_BIT_PAUSE_TIME 930.0e-6 // 930 usec pause
JojoS 0:a0715ea739cb 827 #define ROOMBA_0_PULSE_TIME 930.0e-6 // 930 usec pulse
JojoS 0:a0715ea739cb 828 #define ROOMBA_1_PULSE_TIME 2790.0e-6 // 2790 usec pulse
JojoS 0:a0715ea739cb 829 #define ROOMBA_0_PAUSE_TIME 2790.0e-6 // 2790 usec pause
JojoS 0:a0715ea739cb 830 #define ROOMBA_1_PAUSE_TIME 930.0e-6 // 930 usec pause
JojoS 0:a0715ea739cb 831 #define ROOMBA_FRAME_REPEAT_PAUSE_TIME 18.0e-3 // frame repeat after 18ms
JojoS 0:a0715ea739cb 832 #define ROOMBA_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 833 #define ROOMBA_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 834 #define ROOMBA_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 835 #define ROOMBA_COMMAND_LEN 7 // read 7 bits
JojoS 0:a0715ea739cb 836 #define ROOMBA_COMPLETE_DATA_LEN 7 // complete length
JojoS 0:a0715ea739cb 837 #define ROOMBA_STOP_BIT 0 // has stop bit (fm: sure?)
JojoS 0:a0715ea739cb 838 #define ROOMBA_LSB 0 // MSB...LSB
JojoS 0:a0715ea739cb 839 #define ROOMBA_FLAGS 0 // flags
JojoS 0:a0715ea739cb 840 #define ROOMBA_FRAMES 8 // ROOMBA sends 8 frames (this is a lie, but more comfortable)
JojoS 0:a0715ea739cb 841
JojoS 0:a0715ea739cb 842 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 843 * RC-MM (32, 24, or 12 bit)
JojoS 0:a0715ea739cb 844 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 845 */
JojoS 0:a0715ea739cb 846 #define RCMM32_START_BIT_PULSE_TIME 500.0e-6 // 500 usec pulse
JojoS 0:a0715ea739cb 847 #define RCMM32_START_BIT_PAUSE_TIME 220.0e-6 // 220 usec pause
JojoS 0:a0715ea739cb 848 #define RCMM32_PULSE_TIME 230.0e-6 // 230 usec pulse
JojoS 0:a0715ea739cb 849 #define RCMM32_00_PAUSE_TIME 220.0e-6 // 220 usec pause
JojoS 0:a0715ea739cb 850 #define RCMM32_01_PAUSE_TIME 370.0e-6 // 370 usec pause
JojoS 0:a0715ea739cb 851 #define RCMM32_10_PAUSE_TIME 540.0e-6 // 540 usec pause
JojoS 0:a0715ea739cb 852 #define RCMM32_11_PAUSE_TIME 720.0e-6 // 720 usec pause
JojoS 0:a0715ea739cb 853
JojoS 0:a0715ea739cb 854 #define RCMM32_FRAME_REPEAT_PAUSE_TIME 80.0e-3 // frame repeat after 80 ms
JojoS 0:a0715ea739cb 855 #define RCMM32_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 856 #define RCMM32_ADDRESS_LEN 16 // read 16 address bits
JojoS 0:a0715ea739cb 857 #define RCMM32_COMMAND_OFFSET 17 // skip 17 bits
JojoS 0:a0715ea739cb 858 #define RCMM32_COMMAND_LEN 15 // read 15 bits
JojoS 0:a0715ea739cb 859 #define RCMM32_COMPLETE_DATA_LEN 32 // complete length
JojoS 0:a0715ea739cb 860 #define RCMM32_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 861 #define RCMM32_LSB 0 // LSB...MSB
JojoS 0:a0715ea739cb 862 #define RCMM32_FLAGS 0 // flags
JojoS 0:a0715ea739cb 863
JojoS 0:a0715ea739cb 864 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 865 * PENTAX:
JojoS 0:a0715ea739cb 866 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 867 */
JojoS 0:a0715ea739cb 868 #define PENTAX_START_BIT_PULSE_TIME 13000.0e-6 // 13 msec pulse
JojoS 0:a0715ea739cb 869 #define PENTAX_START_BIT_PAUSE_TIME 3000.0e-6 // 3 msec pause
JojoS 0:a0715ea739cb 870 #define PENTAX_PULSE_TIME 1000.0e-6 // 1 msec pulse
JojoS 0:a0715ea739cb 871 #define PENTAX_1_PAUSE_TIME 3000.0e-6 // 3 msec pause
JojoS 0:a0715ea739cb 872 #define PENTAX_0_PAUSE_TIME 1000.0e-6 // 1 msec pause
JojoS 0:a0715ea739cb 873 #define PENTAX_FRAME_REPEAT_PAUSE_TIME 60.0e-3 // frame repeat after 60ms
JojoS 0:a0715ea739cb 874 #define PENTAX_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 875 #define PENTAX_ADDRESS_LEN 0 // read 0 address bits
JojoS 0:a0715ea739cb 876 #define PENTAX_COMMAND_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 877 #define PENTAX_COMMAND_LEN 6 // read 6 bits
JojoS 0:a0715ea739cb 878 #define PENTAX_COMPLETE_DATA_LEN 6 // complete length
JojoS 0:a0715ea739cb 879 #define PENTAX_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 880 #define PENTAX_LSB 0 // LSB...MSB
JojoS 0:a0715ea739cb 881 #define PENTAX_FLAGS 0 // flags
JojoS 0:a0715ea739cb 882
JojoS 0:a0715ea739cb 883 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 884 * ACP24: Stiebel Eltron ACP24 air conditioner
JojoS 0:a0715ea739cb 885 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 886 */
JojoS 0:a0715ea739cb 887 #define ACP24_START_BIT_PULSE_TIME 390.0e-6 // 390 usec pulse
JojoS 0:a0715ea739cb 888 #define ACP24_START_BIT_PAUSE_TIME 950.0e-6 // 950 usec pause
JojoS 0:a0715ea739cb 889 #define ACP24_PULSE_TIME 390.0e-6 // 390 usec pulse
JojoS 0:a0715ea739cb 890 #define ACP24_1_PAUSE_TIME 1300.0e-6 // 1300 usec pause
JojoS 0:a0715ea739cb 891 #define ACP24_0_PAUSE_TIME 950.0e-6 // 950 usec pause
JojoS 0:a0715ea739cb 892 #define ACP24_FRAME_REPEAT_PAUSE_TIME 22.0e-3 // frame repeat after 22ms?
JojoS 0:a0715ea739cb 893 #define ACP24_ADDRESS_OFFSET 0 // skip 0 bits
JojoS 0:a0715ea739cb 894 #define ACP24_ADDRESS_LEN 0 // read 6 address bits
JojoS 0:a0715ea739cb 895 #define ACP24_COMMAND_OFFSET 0 // skip 6 bits
JojoS 0:a0715ea739cb 896 #define ACP24_COMMAND_LEN 0 // read 0 bits (70 bits will be read and compressed by special routine)
JojoS 0:a0715ea739cb 897 #define ACP24_COMPLETE_DATA_LEN 70 // complete length
JojoS 0:a0715ea739cb 898 #define ACP24_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 899 #define ACP24_LSB 0 // LSB...MSB
JojoS 0:a0715ea739cb 900 #define ACP24_FLAGS 0 // flags
JojoS 0:a0715ea739cb 901
JojoS 0:a0715ea739cb 902 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 903 * RADIO1 - e.g. Tevion
JojoS 0:a0715ea739cb 904 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 905 */
JojoS 0:a0715ea739cb 906 #define RADIO1_START_BIT_PULSE_TIME 3000.0e-6 // 3000 usec pulse
JojoS 0:a0715ea739cb 907 #define RADIO1_START_BIT_PAUSE_TIME 7000.0e-6 // 7000 usec pulse
JojoS 0:a0715ea739cb 908 #define RADIO1_0_PULSE_TIME 500.0e-6 // 500 usec pulse
JojoS 0:a0715ea739cb 909 #define RADIO1_0_PAUSE_TIME 1000.0e-6 // 1000 usec pause
JojoS 0:a0715ea739cb 910 #define RADIO1_1_PULSE_TIME 1000.0e-6 // 1000 usec pulse
JojoS 0:a0715ea739cb 911 #define RADIO1_1_PAUSE_TIME 500.0e-6 // 500 usec pause
JojoS 0:a0715ea739cb 912
JojoS 0:a0715ea739cb 913 #define RADIO1_FRAME_REPEAT_PAUSE_TIME 25.0e-3 // frame repeat after 25ms
JojoS 0:a0715ea739cb 914 #define RADIO1_ADDRESS_OFFSET 4 // skip 4 bits
JojoS 0:a0715ea739cb 915 #define RADIO1_ADDRESS_LEN 16 // read 16 address bits
JojoS 0:a0715ea739cb 916 #define RADIO1_COMMAND_OFFSET 20 // skip 4 + 16 bits
JojoS 0:a0715ea739cb 917 #define RADIO1_COMMAND_LEN 3 // read 3 command bits
JojoS 0:a0715ea739cb 918 #define RADIO1_COMPLETE_DATA_LEN 23 // complete length
JojoS 0:a0715ea739cb 919 #define RADIO1_STOP_BIT 1 // has stop bit
JojoS 0:a0715ea739cb 920 #define RADIO1_LSB 1 // LSB...MSB?
JojoS 0:a0715ea739cb 921 #define RADIO1_FLAGS 0 // flags
JojoS 0:a0715ea739cb 922
JojoS 0:a0715ea739cb 923 /*---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 924 * Frame Repetitions:
JojoS 0:a0715ea739cb 925 *---------------------------------------------------------------------------------------------------------------------------------------------------
JojoS 0:a0715ea739cb 926 */
JojoS 0:a0715ea739cb 927 #define AUTO_FRAME_REPETITION_TIME 80.0e-3 // SIRCS/SAMSUNG32/NUBERT: automatic repetition after 25-50ms
JojoS 0:a0715ea739cb 928
JojoS 0:a0715ea739cb 929 #endif // _IRMP_PROTOCOLS_H_
JojoS 0:a0715ea739cb 930