Files
lcdproc/server/drivers/irtrans_remote.h
T

196 lines
3.8 KiB
C

/*
* irtrans driver
*
* Displays LCD screens, one after another; suitable for hard-copy
* terminals.
*
* Copyright (C) 1998-2007 <info@irtrans.de>
*
* Copyright (C) 2007 Phant0m <phantom@netkeke.com>
* porting the LCDproc 0.4.3 code to LCDproc 0.5.1
*
* Inspired by:
* TextMode driver (LCDproc authors)
* irtrans driver (Irtrans)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
typedef unsigned char byte;
typedef unsigned short word;
#define CONTROL_LED 4
#define USB_RXREADY 0
#define USB_TXENABLE 1
#define USB_WRITE 6
#define USB_READ 7
#define IR_LED 0
#define SBUS_DATA 1
#define SBUS_INPUT 2
#define SBUS_TERM 3
#define IR_INPUT 7
#ifndef AVR
#pragma pack(1)
#define CODE_LEN 176 // 2 Byte mehr für String-Ende 0
#else
#define CODE_LEN 174
#define USB
#endif
#define TIME_LEN 6
#define RAW_EXTRA TIME_LEN * 4 + 2
#define CODE_LENRAW (CODE_LEN + RAW_EXTRA - 2)
typedef struct {
byte len;
byte checksumme;
byte command;
byte address;
word target_mask;
byte ir_length;
byte transmit_freq;
byte mode;
word pause_len[TIME_LEN];
word pulse_len[TIME_LEN];
byte time_cnt;
byte ir_repeat;
byte repeat_pause;
byte data[CODE_LEN];
} IRDATA;
typedef struct {
byte len;
byte checksumme;
byte command;
byte address;
word target_mask;
byte ir_length;
byte transmit_freq;
byte mode;
byte data[CODE_LENRAW];
} IRRAW;
#define DEVMODE_PC 0
#define DEVMODE_SEND 1
#define DEVMODE_IR 2
#define DEVMODE_SBUS 4
#define DEVMODE_IRCODE 8
#define DEVMODE_SBUSCODE 16
#define DEVMODE_MASK 31
#define DEVMODE_STATUS 128
// IR Commands
#define SBUS_REPEAT 1
#define HOST_VERSION 2
#define HOST_NETWORK_STATUS 3
#define SBUS_SEND 4
#define SBUS_RESEND 5
#define HOST_SEND 6
#define HOST_RESEND 7
#define SBUS_LEARN 16
#define HOST_LEARNIR 18
#define SBUS_QUICKPARM 48
#define HOST_LEARNIRQUICK 50
#define SBUS_RAWMODE 80
#define HOST_LEARNIRRAW 82
#define SBUS_REPEATMODE 144
#define HOST_LEARNIRREPEAT 146
#define SBUS_RAWREPEATMODE 208
#define HOST_LEARNIRRAWREPEAT 210
#define SBUS_RESET 192
#define SBUS_PING 193
#define SBUS_PONG 194
#define SBUS_PARAMETER 196
#define HOST_SETMODE 197
#define ADRESS_MASK 15
#define ADRESS_LOCAL 16
#define ADRESS_ALL 32
#define START_BIT 1
#define REPEAT_START 2
#define START_MASK 3
#define RC5_DATA 4
#define RC6_DATA 8
#define RAW_DATA 16
#define LCD_DATA 32
#define LCD_BACKLIGHT 1
#define LCD_TEXT 2
#define DEFAULT_FREQ 39
#define RAW_FREQ 38
#define IR_CORRECT 8 // Entspricht 64 µs Korrektur
#define RCX_TOLERANCE 19 // Entspricht 152 µs Toleranz
#define IR_TOLERANCE 15 // Entspricht 120 µs Toleranz
#define RAW_TOLERANCE 20
typedef struct {
byte sbus_len;
byte sbus_checksumme;
byte sbus_command;
byte sbus_address;
byte mode;
word target_mask;
byte hotcode_len;
byte hotcode[100];
} MODE_BUFFER;
typedef struct {
byte sbus_len;
byte sbus_checksumme;
byte sbus_command;
byte sbus_address;
byte device_mode;
word send_mask;
byte version[10];
} STATUS_LINE;
typedef struct {
byte my_adress;
STATUS_LINE stat[16];
} STATUS_BUFFER;