new driver irtrans (Phant0m / Aron Parsons)
This commit is contained in:
@@ -0,0 +1,323 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#define IRTRANS_PROTOCOL_VERSION 208
|
||||
|
||||
#define COMMAND_SEND 1
|
||||
#define COMMAND_LRNREM 2
|
||||
#define COMMAND_LRNTIM 3
|
||||
#define COMMAND_LRNCOM 4
|
||||
#define COMMAND_CLOSE 5
|
||||
#define COMMAND_STATUS 6
|
||||
#define COMMAND_RESEND 7
|
||||
#define COMMAND_LRNRAW 8
|
||||
#define COMMAND_LRNRPT 9
|
||||
#define COMMAND_LRNTOG 10
|
||||
#define COMMAND_SETSTAT 11
|
||||
#define COMMAND_LRNLONG 12
|
||||
#define COMMAND_LRNRAWRPT 13
|
||||
#define COMMAND_RELOAD 14
|
||||
#define COMMAND_LCD 15
|
||||
#define COMMAND_LEARNSTAT 16
|
||||
#define COMMAND_TEMP 17
|
||||
#define COMMAND_GETREMOTES 18
|
||||
#define COMMAND_GETCOMMANDS 19
|
||||
#define COMMAND_STORETRANS 20
|
||||
#define COMMAND_LOADTRANS 21
|
||||
#define COMMAND_SAVETRANS 22
|
||||
#define COMMAND_FLASHTRANS 23
|
||||
#define COMMAND_FUNCTIONS 24
|
||||
#define COMMAND_TESTCOM 25
|
||||
#define COMMAND_LONGSEND 26
|
||||
#define COMMAND_SHUTDOWN 27
|
||||
#define COMMAND_SENDCCF 28
|
||||
#define COMMAND_LCDINIT 29
|
||||
#define COMMAND_SETSWITCH 30
|
||||
#define COMMAND_STATUSEX 31
|
||||
#define COMMAND_RESET 32
|
||||
#define STATUS_MESSAGE 1
|
||||
#define STATUS_TIMING 2
|
||||
#define STATUS_DEVICEMODE 3
|
||||
#define STATUS_RECEIVE 4
|
||||
#define STATUS_LEARN 5
|
||||
#define STATUS_REMOTELIST 6
|
||||
#define STATUS_COMMANDLIST 7
|
||||
#define STATUS_TRANSLATE 8
|
||||
#define STATUS_FUNCTION 9
|
||||
#define STATUS_DEVICEMODEEX 10
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct {
|
||||
uint8_t mode;
|
||||
uint8_t time_cnt;
|
||||
uint8_t ir_repeat;
|
||||
uint8_t repeat_pause;
|
||||
uint16_t pause_len[TIME_LEN];
|
||||
uint16_t pulse_len[TIME_LEN];
|
||||
uint8_t data[CODE_LEN];
|
||||
} TIMINGDATA;
|
||||
|
||||
typedef struct {
|
||||
uint8_t netcommand;
|
||||
uint8_t mode;
|
||||
uint16_t timeout;
|
||||
int32_t adress;
|
||||
int8_t remote[80];
|
||||
int8_t command[20];
|
||||
uint8_t trasmit_freq;
|
||||
} OLD_NETWORKCOMMAND;
|
||||
|
||||
typedef struct {
|
||||
uint8_t netcommand;
|
||||
uint8_t mode;
|
||||
uint8_t lcdcommand;
|
||||
uint8_t timeout;
|
||||
int32_t adress;
|
||||
uint8_t wid;
|
||||
uint8_t hgt;
|
||||
int8_t framebuffer[200];
|
||||
} OLD_LCDCOMMAND;
|
||||
|
||||
typedef struct {
|
||||
uint8_t netcommand;
|
||||
uint8_t mode;
|
||||
uint16_t timeout;
|
||||
int32_t adress;
|
||||
int32_t protocol_version;
|
||||
int8_t remote[80];
|
||||
int8_t command[20];
|
||||
uint8_t trasmit_freq;
|
||||
} NETWORKCOMMAND;
|
||||
|
||||
typedef struct {
|
||||
uint8_t netcommand;
|
||||
uint8_t mode;
|
||||
uint16_t timeout;
|
||||
int32_t adress;
|
||||
int32_t protocol_version;
|
||||
uint16_t sendmask[32];
|
||||
uint16_t pronto_data[256];
|
||||
} CCFCOMMAND;
|
||||
|
||||
typedef struct {
|
||||
uint8_t netcommand;
|
||||
uint8_t mode;
|
||||
uint8_t lcdcommand;
|
||||
uint8_t timeout;
|
||||
int32_t adress;
|
||||
int32_t protocol_version;
|
||||
uint8_t wid;
|
||||
uint8_t hgt;
|
||||
int8_t framebuffer[200];
|
||||
} LCDCOMMAND;
|
||||
|
||||
typedef struct {
|
||||
uint8_t netcommand;
|
||||
uint8_t mode;
|
||||
uint16_t timeout;
|
||||
int32_t adress;
|
||||
int32_t protocol_version;
|
||||
int32_t number;
|
||||
uint8_t setup;
|
||||
uint8_t type;
|
||||
uint8_t accelerator_timeout;
|
||||
uint8_t accelerator_repeat;
|
||||
uint16_t wait_timeout;
|
||||
uint8_t remote_num;
|
||||
uint8_t group_num;
|
||||
int8_t remote[80];
|
||||
int8_t command[20];
|
||||
int32_t source_mask;
|
||||
int32_t target_mask;
|
||||
} TRANSLATECOMMAND;
|
||||
|
||||
typedef struct {
|
||||
int32_t send_mask;
|
||||
uint8_t device_mode;
|
||||
uint8_t extended_mode;
|
||||
uint16_t switch_mode;
|
||||
uint16_t features;
|
||||
int8_t version[10];
|
||||
int8_t remote[80];
|
||||
int8_t command[20];
|
||||
} MODELINE;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
uint8_t align[2];
|
||||
int8_t data[16384];
|
||||
} STATUSBUFFER;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int32_t serno;
|
||||
int32_t functions;
|
||||
} FUNCTIONBUFFER;
|
||||
|
||||
typedef struct {
|
||||
int32_t target_mask;
|
||||
int32_t source_mask;
|
||||
int8_t name[80];
|
||||
} REMOTELINE;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t offset;
|
||||
int16_t count_buffer;
|
||||
int16_t count_total;
|
||||
int16_t count_remaining;
|
||||
REMOTELINE remotes[40];
|
||||
} REMOTEBUFFER;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t offset;
|
||||
int16_t count_buffer;
|
||||
int16_t count_total;
|
||||
int16_t count_remaining;
|
||||
int8_t commands[200][20];
|
||||
} COMMANDBUFFER;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t offset;
|
||||
int16_t count_buffer;
|
||||
int16_t count_total;
|
||||
int16_t count_remaining;
|
||||
TRANSLATECOMMAND trdata[30];
|
||||
} TRANSLATEBUFFER;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
uint8_t align[2];
|
||||
MODELINE stat[16];
|
||||
} NETWORKMODE;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
uint8_t align;
|
||||
uint8_t count;
|
||||
uint8_t dev_adr[8];
|
||||
MODELINE stat[8][16];
|
||||
} NETWORKMODEEX;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
uint16_t netstatus;
|
||||
uint16_t statuslevel;
|
||||
uint8_t align[2];
|
||||
int8_t message[256];
|
||||
} NETWORKSTATUS;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
uint8_t align[2];
|
||||
TIMINGDATA timing;
|
||||
} NETWORKTIMING;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
uint16_t command_num;
|
||||
int8_t remote[80];
|
||||
int8_t command[20];
|
||||
int8_t data[200];
|
||||
} NETWORKRECV;
|
||||
|
||||
typedef struct {
|
||||
uint32_t clientid;
|
||||
int16_t statuslen;
|
||||
int16_t statustype;
|
||||
int16_t adress;
|
||||
int16_t learnok;
|
||||
int8_t remote[80];
|
||||
int16_t num_timings;
|
||||
int16_t num_commands;
|
||||
int8_t received[CODE_LEN];
|
||||
} NETWORKLEARNSTAT;
|
||||
|
||||
typedef struct {
|
||||
SOCKET fd;
|
||||
int32_t type;
|
||||
uint32_t clientid;
|
||||
uint32_t callno;
|
||||
int8_t ip[20];
|
||||
WSAEVENT event;
|
||||
FILE *fp;
|
||||
int32_t timing;
|
||||
uint8_t resend_load;
|
||||
IRDATA ird;
|
||||
NETWORKLEARNSTAT learnstatus;
|
||||
int8_t restdata[sizeof(LCDCOMMAND)];
|
||||
int32_t restlen;
|
||||
int32_t restread;
|
||||
}
|
||||
NETWORKCLIENT;
|
||||
|
||||
#define TCP_PORT 21000
|
||||
#define LIRC_PORT 8765
|
||||
#define UDP_PORT 6510
|
||||
#define WEB_PORT 80
|
||||
#define ALTERNATE_WEB 8080
|
||||
|
||||
#ifdef WIN32
|
||||
#define CLIENT_COUNT MAXIMUM_WAIT_OBJECTS - 3
|
||||
#endif /*
|
||||
*/
|
||||
|
||||
#ifdef LINUX
|
||||
#define CLIENT_COUNT 64
|
||||
#endif /*
|
||||
*/
|
||||
Reference in New Issue
Block a user