Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * TODO:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * - add smart card reader support for Conditional Access (CA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  * Card reader in Anysee is nothing more than ISO 7816 card reader.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  * There is no hardware CAM in any Anysee device sold.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * In my understanding it should be implemented by making own module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  * for ISO 7816 card reader, like dvb_ca_en50221 is implemented. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  * module registers serial interface that can be used to communicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  * with any ISO 7816 smart card.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  * Any help according to implement serial smart card reader support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  * is highly welcome!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #ifndef _DVB_USB_ANYSEE_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define _DVB_USB_ANYSEE_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define DVB_USB_LOG_PREFIX "anysee"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #include "dvb_usb.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #include <media/dvb_ca_en50221.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) enum cmd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	CMD_I2C_READ            = 0x33,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	CMD_I2C_WRITE           = 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	CMD_REG_READ            = 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	CMD_REG_WRITE           = 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	CMD_STREAMING_CTRL      = 0x12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	CMD_LED_AND_IR_CTRL     = 0x16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	CMD_GET_IR_CODE         = 0x41,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	CMD_GET_HW_INFO         = 0x19,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	CMD_SMARTCARD           = 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	CMD_CI                  = 0x37,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) struct anysee_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	u8 buf[64];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	u8 seq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	u8 hw; /* PCB ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	#define ANYSEE_I2C_CLIENT_MAX 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	struct i2c_client *i2c_client[ANYSEE_I2C_CLIENT_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	u8 fe_id:1; /* frondend ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	u8 has_ci:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	u8 has_tda18212:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	u8 ci_attached:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	struct dvb_ca_en50221 ci;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	unsigned long ci_cam_ready; /* jiffies */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define ANYSEE_HW_507T    2 /* E30 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define ANYSEE_HW_507CD   6 /* E30 Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define ANYSEE_HW_507DC  10 /* E30 C Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define ANYSEE_HW_507SI  11 /* E30 S2 Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define ANYSEE_HW_507FA  15 /* E30 Combo Plus / E30 C Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define ANYSEE_HW_508TC  18 /* E7 TC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define ANYSEE_HW_508S2  19 /* E7 S2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #define ANYSEE_HW_508T2C 20 /* E7 T2C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define ANYSEE_HW_508PTC 21 /* E7 PTC Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define ANYSEE_HW_508PS2 22 /* E7 PS2 Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define REG_IOA       0x80 /* Port A (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define REG_IOB       0x90 /* Port B (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define REG_IOC       0xa0 /* Port C (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define REG_IOD       0xb0 /* Port D (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define REG_IOE       0xb1 /* Port E (NOT bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define REG_OEA       0xb2 /* Port A Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define REG_OEB       0xb3 /* Port B Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define REG_OEC       0xb4 /* Port C Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define REG_OED       0xb5 /* Port D Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define REG_OEE       0xb6 /* Port E Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)  * USB API description (reverse engineered)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)  ***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) Transaction flow:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) BULK[00001] >>> REQUEST PACKET 64 bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) General reply packet(s) are always used if not own reply defined.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) | 00-63 | GENERAL REPLY PACKET #1 (PREVIOUS REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) |    00 | reply data (if any) from previous transaction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) |       | Just same reply packet as returned during previous transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) |       | Needed only if reply is missed in previous transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) |       | Just skip normally.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) | 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) |    00 | reply data (if any)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) | 00-63 | I2C WRITE REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) |    00 | 0x31 I2C write command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) |    01 | i2c address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) |    02 | data length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) |       | 0x02 (for typical I2C reg / val pair)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) |    03 | 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) | 04-   | data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) |   -59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) | 00-63 | I2C READ REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) |    00 | 0x33 I2C read command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) |    01 | i2c address + 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) |    02 | register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) |    03 | 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) |    04 | 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) |    05 | data length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) | 06-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) | 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) |    00 | 0xb1 register write command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) | 01-02 | register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) |    03 | 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) |    04 | value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) | 05-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) | 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) |    00 | 0xb0 register read command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) | 01-02 | register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) |    03 | 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) | 04-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) | 00-63 | LED CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) |    00 | 0x16 LED and IR control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) |    01 | 0x01 (LED)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) |    03 | 0x00 blink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) |       | 0x01 lights continuously
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) |    04 | blink interval
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) |       | 0x00 fastest (looks like LED lights continuously)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) |       | 0xff slowest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) | 05-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) | 00-63 | IR CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) |    00 | 0x16 LED and IR control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) |    01 | 0x02 (IR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) |    03 | 0x00 IR disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) |       | 0x01 IR enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) | 04-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) | 00-63 | STREAMING CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) |    00 | 0x12 streaming control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) |    01 | 0x00 streaming disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) |       | 0x01 streaming enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) |    02 | 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) | 03-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) | 00-63 | REMOTE CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) |    00 | 0x41 remote control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) | 00-63 | REMOTE CONTROL REPLY PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) |    00 | 0x00 code not received
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) |       | 0x01 code received
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) |    01 | remote control code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) | 02-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) | 00-63 | GET HARDWARE INFO REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) |    00 | 0x19 get hardware info command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) | 00-63 | GET HARDWARE INFO REPLY PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) |    00 | hardware id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) | 01-02 | firmware version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) | 03-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) | 00-63 | SMART CARD READER PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) |    00 | 0x34 smart card reader command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) |    xx |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) | xx-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) |    60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) */