2 * Copyright (c) 2007, IRTrans GmbH
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of IRTrans GmbH nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
16 * THIS SOFTWARE IS PROVIDED BY IRTrans GmbH ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL IRTrans GmbH BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 typedef unsigned char uint8_t;
32 typedef unsigned int uint32_t;
33 typedef unsigned short uint16_t;
36 typedef short int16_t;
38 typedef unsigned int uint32_t;
44 typedef UINT8
uint8_t;
46 typedef UINT16
uint16_t;
47 typedef INT16
int16_t;
49 typedef UINT32
uint32_t;
54 typedef uint16_t word
;
62 #define CODE_LEN 176 // 2 Byte mehr für String-Ende 0
74 #define VCC_THRESHOLD 180
76 #define VCC_THRESHOLD 210
79 #define LAN_TIMEOUT_VAL 60
82 #define RAW_EXTRA TIME_LEN * 4 + 2
83 #define CODE_LENRAW (CODE_LEN + RAW_EXTRA - 2)
84 #define OLD_LENRAW (CODE_LEN + (6 * 4 + 2) - 2)
95 word target_mask
; // 4
98 byte transmit_freq
; // 7
101 int16_t pause_len
[TIME_LEN
]; // 9
102 int16_t pulse_len
[TIME_LEN
]; // 25
104 byte ir_repeat
; // 42
105 byte repeat_pause
; // 43
107 byte data
[CODE_LEN
]; // 44
126 #define IR_MAGIC 0x7a8e
130 #define FLASH_TYPE_LAN 0xff01
131 #define FLASH_TYPE_IRDB 0xff02
132 #define FLASH_TYPE_IRDBAUX 0xff03
134 #define SENDMASK_LEN 16
136 #define COMMAND_LAN 200
137 #define COMMAND_FLASH_START 201
138 #define COMMAND_FLASH_DATA 202
139 #define COMMAND_FLASH_END 203
140 #define COMMAND_FLASH_ACK 204
141 #define COMMAND_FLASH_CANCEL 205
142 #define COMMAND_FLASH_HTML 206
143 #define COMMAND_SEND_RS232 207
144 #define COMMAND_FLASH_ACK_1 208
145 #define COMMAND_FLASH_ACK_2 209
146 #define COMMAND_FLASH_CRC 210
147 #define COMMAND_FLASH_IR 211
149 #define COMMAND_LAN_SENDSTRING 's'
150 #define COMMAND_LAN_PING 'p'
151 #define COMMAND_LAN_SENDCCF 'c'
156 #define RESULT_IR_BROADCAST 230
157 #define RESULT_GETVERSION 231
158 #define RESULT_DEVSTATUS 232
159 #define RESULT_EEPROM 233
160 #define RESULT_RESET 234
161 #define RESULT_IRDBSTATUS 235
162 #define RESULT_REMOTELIST 236
163 #define RESULT_COMMANDLIST 237
164 #define RESULT_IR_RECEIVE 238
165 #define RESULT_UDP_FORMAT 239
166 #define RESULT_FLASH 240
167 #define RESULT_ALIVE 241
168 #define RESULT_LEARN 242
169 #define RESULT_READ_EEPROM 243
170 #define RESULT_WAKE_ON_LAN 244
171 #define RESULT_PING_OK 245
172 #define RESULT_IR_HOSTBROADCAST 246
173 #define RESULT_IR_BROADCAST_LED 247
174 #define RESULT_AUX_FORMAT 248
175 #define RESULT_ANALOG_INPUT 249
178 #define ADR_LANPARM 256
179 #define LEN_LANPARM (sizeof (LAN_PARAMETER)-3) // LEN = 21
180 #define ADR_SYSPARM (ADR_LANPARM+LEN_LANPARM)
181 #define LEN_SYSPARM (sizeof (SYS_PARAMETER)-4) // LEN = 191 -> capabilities not stored in EEPROM
182 #define ADR_WAKEMAC (ADR_LANPARM+LEN_LANPARM+164)
183 #define ADR_TIMER (ADR_SYSPARM+LEN_SYSPARM)
184 #define LEN_TIMER sizeof (TIMER_ENTRY_GET) // LEN = 117
202 uint8_t ircommand
[21];
214 uint8_t ircommand
[21];
224 uint8_t cmd_str
[80 + 20 + 10];
234 uint8_t ircommand
[121];
264 #define FLASH_TABLE_LEN ((sizeof (FLASH_TABLE) + 1) / 2)
277 uint32_t sendmask
[SENDMASK_LEN
];
285 uint32_t sendmask
[SENDMASK_LEN
];
306 uint8_t ir_version
[8];
307 uint32_t ir_capabilities
;
309 uint8_t lan_version
[8];
314 uint32_t access_ip
[8]; // 0 // Erlaubte Input IPs
315 uint32_t access_mask
[8]; // 32 // Netmask dazu
316 uint32_t ir_relay_from
[16]; // 64 // IR Relay von diesen Adressen erlaubt
317 uint32_t ir_relay_to
[8]; // 128 // Output wird zusätzlich zum Broadcast an diese IPs gesendet
318 uint32_t udp_str_adr
; // 160
319 uint8_t wakeonlan_mac
[6]; // 164 // Zielhost für WakeOnLAN Pakete (PowerOn)
320 int8_t password
[12]; // 170
321 uint8_t broadcast_relay
; // 182
322 uint8_t udp_format_len
; // 183
323 uint16_t udp_port
; // 184
325 uint32_t ntp_ip
; // 187
326 uint32_t ir_relay_led
; // 191
327 uint32_t capabilities
; // 195
332 SYS_PARAMETER sysparm
;
340 SYS_PARAMETER sysparm
;
341 } SYS_PARAMETER_STORE
;
354 uint8_t fallback_flag
;
359 uint8_t eeprom_device_mode
;
360 uint8_t eeprom_extended_mode
;
361 uint8_t eeprom_extended_mode2
;
369 uint8_t fallback_flag
;
374 } LAN_PARAMETER_STORE
;
409 byte data
[CODE_LENRAW
];
424 byte data
[MAXLCDLEN
];
429 uint8_t count_buffer
;
432 int8_t remotes
[3][80];
437 uint8_t count_buffer
;
440 int8_t commands
[12][20];
444 uint32_t target_mask
;
445 uint32_t source_mask
;
453 int16_t count_buffer
;
455 int16_t count_remaining
;
456 int8_t remotes
[3][80];
463 int16_t count_buffer
;
465 int16_t count_remaining
;
466 REMOTELINE remotes
[3];
467 } REMOTEBUFFER_SHORT
;
474 int16_t count_buffer
;
476 int16_t count_remaining
;
477 int8_t commands
[12][20];
478 } COMMANDBUFFER_SHORT
;
481 #define BROADCAST_UDP 1
482 #define BROADCAST_AUX 2
501 uint8_t ircommand
[141];
508 uint16_t command_num
;
528 #define DEVMODE_SEND 1
530 #define DEVMODE_SBUS 4
531 #define DEVMODE_IGNORETOG 8
532 #define DEVMODE_SBUSCODE 16
533 #define DEVMODE_RAW 32
534 #define DEVMODE_RAWFAST 64
535 #define DEVMODE_REPEAT 128
537 // Extended Mode Flags
538 #define INTERNAL_LEDS 1
539 #define EXTERNAL_LEDS 2
540 #define STANDARD_RCV 4
543 #define SELF_REPEAT 32
544 #define INTERNAL_REPEAT 64
545 #define SBUS_UART 128 // Set: SBUS läuft über UART
547 // Extended Mode2 Flags
548 #define LRN_TIMEOUT_MASK 7 // Bit 0-2
549 #define SBUS_BAUD_MASK 24 // Bit 3-4
550 #define RS232_BAUD_MASK 96 // Bit 5-6
551 #define RS232_RTS_CTS 128 // Bit 7
554 #define LOCAL_MODE 16
555 #define RECEIVE_ALL 17
556 #define QUICK_MODE 32
558 #define REPEAT_MODE 128
560 #define SBUS_MODE 512
561 #define INSTANT_MODE 1024
562 #define IDLE_WAIT 2048
564 #define LONG_LEARN_MODE 16
565 #define RECEIVER_SELECT_MASK 96
566 #define RECEIVER_SELECT_38 32
567 #define RECEIVER_SELECT_455 64
570 #define LONG_CODE_FLAG 128
571 #define LONG_CODE_LEN 8
572 #define USE_LONG_CODES 1
573 #define LONG_CODE_MODE_CAL 2
575 // Bereiche der Command Codes durch LEARN blockiert:
588 // Hier LEARN Command Codes
589 #define SBUS_LEARN 16
590 #define HOST_LEARNIR 18
591 #define SBUS_QUICKPARM 48
592 #define HOST_LEARNIRQUICK 50
593 #define SBUS_RAWMODE 80
594 #define HOST_LEARNIRRAW 82
595 #define SBUS_REPEATMODE 144
596 #define HOST_LEARNIRREPEAT 146
597 #define SBUS_RAWREPEATMODE 208
598 #define HOST_LEARNIRRAWREPEAT 210
601 // Hier Standard Command Codes
602 #define SBUS_REPEAT 1
603 #define HOST_VERSION 2
604 #define HOST_NETWORK_STATUS 3
606 #define SBUS_RESEND 5
608 #define HOST_RESEND 7
610 #define LAN_REPEAT 32
611 #define PUT_SERIAL_DATA 33
612 #define READ_ANALOG_INPUTS 34
614 #define ASCII_SEND 100 // 'd'
616 #define SBUS_RESET 192
617 #define SBUS_PING 193
618 #define SBUS_PONG 194
619 #define SBUS_PARAMETER 196
620 #define HOST_SETMODE 197
622 #define SET_TRANSLATE_DATA 200
623 #define SBUS_TRANSLATE_DATA 201
624 #define READ_TRANSLATE_DATA 202
625 #define START_FLASH_MODE 203
626 #define TRANSFER_FLASH 204
627 #define SBUS_SET_MODE2 206
628 #define HOST_SET_MODE2 207
630 #define HOST_STORE_LANPARM 224
631 #define HOST_READ_LANPARM 225
632 #define HOST_STORE_FLASH 226
633 #define HOST_READ_FLASH 227
634 #define SEND_IRDB_STRING 228
635 #define SEND_IRDB_BLOCK 229
636 #define RESEND_IRDB_BLOCK 230
637 #define IRDB_REMLIST 231
638 #define IRDB_COMLIST 232
639 //#define HOST_STORE_UDPSTR 233
640 #define PING_IR_CONTROLLER 234
641 #define SET_POWER_LED 235
642 #define TEST_IRDB_BLOCK 236
643 #define GET_TIMER_PARAMETER 237
644 #define STORE_TIMER_PARAMETER 238
647 #define SEND SBUS_SEND
648 #define LEARN SBUS_LEARN
649 #define SETMODE SBUS_PARAMETER
651 #define ADRESS_MASK 15
652 #define ADRESS_LOCAL 16
653 #define ADRESS_ALL 32
654 #define ADRESS_LAN 64
658 #define REPEAT_START 2
665 #define NO_TOGGLE_H 64
666 #define MACRO_DATA 32
669 #define LCD_BACKLIGHT 1
674 #define LCD_SETTIME 8
675 #define LCD_DISPLAYTIME 16
676 #define LCD_DEFINECHAR 12
677 #define LCD_BRIGHTNESS 20
678 #define LCD_REFRESHDATE 24
685 #define NON_IRMODE 224
687 #define SWITCH_DATA 96
689 #define SHORT_PULSE 50
690 #define IR_CORRECT_455 1 // Entspricht 8 µs Korrektur
696 #define IR_CORRECT IR_CORRECT_455
699 #define IR_CORRECT 8 // Entspricht 64 µs Korrektur
700 #define IR_CORRECT_LOW 4 // Entspricht 24 µs Korrektur für kurze Pulse
702 #define IR_CORRECT_LOW 0 // Entspricht 24 µs Korrektur für kurze Pulse
707 #define IR_TOLERANCE_BO 50 // Entspricht 280 µs Toleranz
708 #define IR_TOLERANCE 15 // Entspricht 120 µs Toleranz
709 #define RCX_TOLERANCE 19 // Entspricht 152 µs Toleranz
710 #define MAX_IR_REPEAT 5
711 #define RAW_TOLERANCE 20
713 #define EXT_LED_SELECT_1 4
714 #define EXT_LED_SELECT_2 8
715 #define EXT_LED_SELECT_3 12
716 #define EXT_LED_SELECT_4 16
717 #define EXT_LED_SELECT_5 20
718 #define EXT_LED_SELECT_6 24
719 #define EXT_LED_SELECT_7 28
720 #define EXT_LED_SELECT_8 32
722 #define EXT_LED_SELECT_MASK 60
732 #define FN_POWERON 16
734 #define FN_CALIBRATE 64
735 #define FN_SOFTID 128
736 #define FN_EEPROM 256
737 #define FN_TRANSL 512
738 #define FN_HWCARR 1024
739 #define FN_DUALRCV 2048
740 #define FN_SBUS_UART 4096
741 #define FN_FLASH128 8192
742 #define FN_DUALSND 16384
743 #define FN_DISP1 32768
744 #define FN_DISP2 0x10000
745 #define FN_DISP3 0x20000
746 #define FN_CLOCK 0x40000
747 #define FN_DEBOUNCE 0x80000
748 #define FN_BOOTLOADER 0x100000
749 #define FN_DUALPOWERON 0x200000
750 #define FN_USBWAKEUP 0x400000
751 #define FN_NOSCROLL 0x800000
752 #define FN_LAN 0x1000000
753 #define FN_IRDB 0x2000000
754 #define FN_LARGECPU 0x4000000
755 #define FN_MULTIRELAY4 0x8000000
756 #define FN_MULTISEND4 0x10000000
757 #define FN_MULTISEND8 0x20000000
758 #define FN_MULTISEND2 0x40000000
759 #define FN_HTML 0x80000000
762 #define FUNCTION_FLASH_MASK ~(FN_SBUS_UART | FN_CLOCK | FN_DEBOUNCE | FN_DUALPOWERON | FN_USBWAKEUP | FN_NOSCROLL | FN_TRANSL | FN_CALIBRATE)
772 byte sbus_checksumme
;
778 byte hotcode
[CODE_LENRAW
];
783 byte sbus_checksumme
;
798 byte sbus_checksumme
;
805 uint32_t capabilities
;
816 byte sbus_checksumme
;
823 uint32_t capabilities
;
832 byte sbus_checksumme
;
839 uint32_t capabilities
;
845 byte sbus_checksumme
;
857 byte sbus_checksumme
;
868 byte sbus_checksumme
;
878 STATUS_LINE stat
[16];
883 STATUS_LINE_1 stat
[16];
888 STATUS_LINE_2 stat
[16];
893 STATUS_LINE_3 stat
[16];
898 STATUS_LINE_4 stat
[16];
906 #define LOGIN_NEEDED 128
907 #define DYNAMIC_LEN 64
908 #define EXTERNAL_FILE 32
909 #define RQ_DATA_CURRENT 16
910 #define MENU_NEEDED 8
912 #define CONTENT_MASK 7
914 #define CONTENT_HTML 1
915 #define CONTENT_PLAIN 2
916 #define CONTENT_GIF 3
917 #define CONTENT_JPEG 4
931 HTTP_DIRENTRY dir
[1];
934 #define IRTRANS_PORT 21000