X-Git-Url: http://cloudbase.mooo.com/gitweb/irmp.git/blobdiff_plain/a7054daf46ab0ee2310b26be519161d5a0320211..c7c9a4a1320292cd9a71e01ad571626cfa4a30d3:/irmp.h diff --git a/irmp.h b/irmp.h index 91283aa..909cc73 100644 --- a/irmp.h +++ b/irmp.h @@ -3,7 +3,7 @@ * * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de * - * $Id: irmp.h,v 1.23 2010/06/02 13:18:03 fm Exp $ + * $Id: irmp.h,v 1.34 2010/06/15 15:47:21 fm Exp $ * * ATMEGA88 @ 8 MHz * @@ -43,6 +43,12 @@ extern "C" #define IRMP_GRUNDIG_PROTOCOL 15 // Grundig #define IRMP_NOKIA_PROTOCOL 16 // Nokia #define IRMP_SIEMENS_PROTOCOL 17 // Siemens, e.g. Gigaset +#define IRMP_FDC_PROTOCOL 18 // FDC keyboard +#define IRMP_RCCAR_PROTOCOL 19 // RC Car + +// some flags of struct IRMP_PARAMETER: +#define IRMP_PARAM_FLAG_IS_MANCHESTER 0x01 +#define IRMP_PARAM_FLAG_1ST_PULSE_IS_1 0x02 #define SIRCS_START_BIT_PULSE_TIME 2400.0e-6 // 2400 usec pulse #define SIRCS_START_BIT_PAUSE_TIME 600.0e-6 // 600 usec pause @@ -60,6 +66,7 @@ extern "C" #define SIRCS_COMPLETE_DATA_LEN 20 // complete length - may be up to 20 #define SIRCS_STOP_BIT 0 // has no stop bit #define SIRCS_LSB 1 // LSB...MSB +#define SIRCS_FLAGS 0 // flags #define NEC_START_BIT_PULSE_TIME 9000.0e-6 // 9000 usec pulse #define NEC_START_BIT_PAUSE_TIME 4500.0e-6 // 4500 usec pause @@ -75,6 +82,7 @@ extern "C" #define NEC_COMPLETE_DATA_LEN 32 // complete length #define NEC_STOP_BIT 1 // has stop bit #define NEC_LSB 1 // LSB...MSB +#define NEC_FLAGS 0 // flags #define SAMSUNG_START_BIT_PULSE_TIME 4500.0e-6 // 4500 usec pulse #define SAMSUNG_START_BIT_PAUSE_TIME 4500.0e-6 // 4500 usec pause @@ -91,6 +99,7 @@ extern "C" #define SAMSUNG_COMPLETE_DATA_LEN 37 // complete length #define SAMSUNG_STOP_BIT 1 // has stop bit #define SAMSUNG_LSB 1 // LSB...MSB? +#define SAMSUNG_FLAGS 0 // flags #define SAMSUNG32_COMMAND_OFFSET 16 // skip 16 bits #define SAMSUNG32_COMMAND_LEN 16 // read 16 command bits @@ -112,6 +121,7 @@ extern "C" #define MATSUSHITA_COMPLETE_DATA_LEN 24 // complete length #define MATSUSHITA_STOP_BIT 1 // has stop bit #define MATSUSHITA_LSB 1 // LSB...MSB? +#define MATSUSHITA_FLAGS 0 // flags #define KASEIKYO_START_BIT_PULSE_TIME 3380.0e-6 // 3380 usec pulse #define KASEIKYO_START_BIT_PAUSE_TIME 1690.0e-6 // 1690 usec pause @@ -126,6 +136,7 @@ extern "C" #define KASEIKYO_COMPLETE_DATA_LEN 48 // complete length #define KASEIKYO_STOP_BIT 1 // has stop bit #define KASEIKYO_LSB 1 // LSB...MSB? +#define KASEIKYO_FLAGS 0 // flags #define RECS80_START_BIT_PULSE_TIME 158.0e-6 // 158 usec pulse #define RECS80_START_BIT_PAUSE_TIME 7432.0e-6 // 7432 usec pause @@ -140,6 +151,7 @@ extern "C" #define RECS80_COMPLETE_DATA_LEN 11 // complete length #define RECS80_STOP_BIT 1 // has stop bit #define RECS80_LSB 0 // MSB...LSB +#define RECS80_FLAGS 0 // flags #define RC5_BIT_TIME 889.0e-6 // 889 usec pulse/pause #define RC5_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms @@ -150,10 +162,11 @@ extern "C" #define RC5_COMPLETE_DATA_LEN 13 // complete length #define RC5_STOP_BIT 0 // has no stop bit #define RC5_LSB 0 // MSB...LSB +#define RC5_FLAGS IRMP_PARAM_FLAG_IS_MANCHESTER // flags #define DENON_PULSE_TIME 275.0e-6 // 275 usec pulse #define DENON_1_PAUSE_TIME 1900.0e-6 // 1900 usec pause -#define DENON_0_PAUSE_TIME 1050.0e-6 // 1050 usec pause +#define DENON_0_PAUSE_TIME 775.0e-6 // 775 usec pause #define DENON_FRAMES 2 // DENON sends each frame 2 times #define DENON_AUTO_REPETITION_PAUSE_TIME 65.0e-3 // inverted repetition after 65ms #define DENON_FRAME_REPEAT_PAUSE_TIME 65.0e-3 // frame repeat after 65ms @@ -164,6 +177,7 @@ extern "C" #define DENON_COMPLETE_DATA_LEN 15 // complete length #define DENON_STOP_BIT 1 // has stop bit #define DENON_LSB 0 // MSB...LSB +#define DENON_FLAGS 0 // flags #define RC6_START_BIT_PULSE_TIME 2666.0e-6 // 2.666 msec pulse #define RC6_START_BIT_PAUSE_TIME 889.0e-6 // 889 usec pause @@ -178,6 +192,7 @@ extern "C" #define RC6_COMPLETE_DATA_LEN_LONG 36 // complete length #define RC6_STOP_BIT 0 // has no stop bit #define RC6_LSB 0 // MSB...LSB +#define RC6_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags #define RECS80EXT_START_BIT_PULSE_TIME 158.0e-6 // 158 usec pulse #define RECS80EXT_START_BIT_PAUSE_TIME 3637.0e-6 // 3637 usec pause @@ -192,6 +207,7 @@ extern "C" #define RECS80EXT_COMPLETE_DATA_LEN 12 // complete length #define RECS80EXT_STOP_BIT 1 // has stop bit #define RECS80EXT_LSB 0 // MSB...LSB +#define RECS80EXT_FLAGS 0 // flags #define NUBERT_START_BIT_PULSE_TIME 1340.0e-6 // 1340 usec pulse #define NUBERT_START_BIT_PAUSE_TIME 340.0e-6 // 340 usec pause @@ -209,6 +225,7 @@ extern "C" #define NUBERT_COMPLETE_DATA_LEN 10 // complete length #define NUBERT_STOP_BIT 1 // has stop bit #define NUBERT_LSB 0 // MSB? +#define NUBERT_FLAGS 0 // flags #define BANG_OLUFSEN_START_BIT1_PULSE_TIME 200.0e-6 // 200 usec pulse #define BANG_OLUFSEN_START_BIT1_PAUSE_TIME 3125.0e-6 // 3125 usec pause @@ -231,12 +248,14 @@ extern "C" #define BANG_OLUFSEN_COMPLETE_DATA_LEN 20 // complete length: startbits 2, 3, 4 + 16 data bits + trailer bit #define BANG_OLUFSEN_STOP_BIT 1 // has stop bit #define BANG_OLUFSEN_LSB 0 // MSB...LSB +#define BANG_OLUFSEN_FLAGS 0 // flags #define GRUNDIG_OR_NOKIA_BIT_TIME 528.0e-6 // 528 usec pulse/pause #define GRUNDIG_OR_NOKIA_PRE_PAUSE_TIME 2639.0e-6 // 2639 usec pause after pre bit #define GRUNDIG_OR_NOKIA_FRAME_REPEAT_PAUSE_TIME 117.76e-3 // info frame repeat after 117.76 ms #define GRUNDIG_OR_NOKIA_STOP_BIT 0 // has no stop bit #define GRUNDIG_OR_NOKIA_LSB 1 // MSB...LSB +#define GRUNDIG_OR_NOKIA_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags #define GRUNDIG_FRAMES 2 // GRUNDIG sends each frame 1+1 times #define GRUNDIG_AUTO_REPETITION_PAUSE_TIME 20.0e-3 // repetition after 20ms @@ -263,6 +282,37 @@ extern "C" #define SIEMENS_COMPLETE_DATA_LEN 23 // complete length #define SIEMENS_STOP_BIT 0 // has no stop bit #define SIEMENS_LSB 0 // MSB...LSB +#define SIEMENS_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1) // flags + +#define FDC_START_BIT_PULSE_TIME 2120.0e-6 // 2120 usec pulse +#define FDC_START_BIT_PAUSE_TIME 900.0e-6 // 900 usec pause +#define FDC_PULSE_TIME 360.0e-6 // 360 usec pulse +#define FDC_1_PAUSE_TIME 650.0e-6 // 650 usec pause +#define FDC_0_PAUSE_TIME 180.0e-6 // 180 usec pause +#define FDC_FRAME_REPEAT_PAUSE_TIME 60.0e-3 // frame repeat after 60ms +#define FDC_ADDRESS_OFFSET 0 // skip 0 bits +#define FDC_ADDRESS_LEN 8 // read 8 address bits +#define FDC_COMMAND_OFFSET 24 // skip 24 bits (8 address bits + 12 status bits + 4 repeat bits) +#define FDC_COMMAND_LEN 8 // read 8 bits +#define FDC_COMPLETE_DATA_LEN 40 // complete length +#define FDC_STOP_BIT 1 // has stop bit +#define FDC_LSB 1 // LSB...MSB +#define FDC_FLAGS 0 // flags + +#define RCCAR_START_BIT_PULSE_TIME 2000.0e-6 // 2000 usec pulse +#define RCCAR_START_BIT_PAUSE_TIME 2000.0e-6 // 2000 usec pause +#define RCCAR_PULSE_TIME 600.0e-6 // 360 usec pulse +#define RCCAR_1_PAUSE_TIME 450.0e-6 // 650 usec pause +#define RCCAR_0_PAUSE_TIME 900.0e-6 // 180 usec pause +#define RCCAR_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms +#define RCCAR_ADDRESS_OFFSET 0 // skip 0 bits +#define RCCAR_ADDRESS_LEN 0 // read 0 address bits +#define RCCAR_COMMAND_OFFSET 0 // skip 0 bits +#define RCCAR_COMMAND_LEN 13 // read 13 bits +#define RCCAR_COMPLETE_DATA_LEN 13 // complete length +#define RCCAR_STOP_BIT 1 // has stop bit +#define RCCAR_LSB 1 // LSB...MSB +#define RCCAR_FLAGS 0 // flags #define AUTO_FRAME_REPETITION_TIME 50.0e-3 // SIRCS/SAMSUNG32/NUBERT: automatic repetition after 25-50ms @@ -298,7 +348,7 @@ extern uint8_t irmp_get_data (IRMP_DATA *); * ISR routine * @details ISR routine, called 10000 times per second */ -extern void irmp_ISR (void); +extern uint8_t irmp_ISR (void); #ifdef __cplusplus }