diff --git a/libfprint/drivers/upektc.c b/libfprint/drivers/upektc.c index a254a14..271cffb 100644 --- a/libfprint/drivers/upektc.c +++ b/libfprint/drivers/upektc.c @@ -28,13 +28,25 @@ #include "upektc.h" #include "driver_ids.h" -#define EP_IN (2 | LIBUSB_ENDPOINT_IN) -#define EP_OUT (3 | LIBUSB_ENDPOINT_OUT) +#define UPEKTC_EP_IN (2 | LIBUSB_ENDPOINT_IN) +#define UPEKTC_EP_OUT (3 | LIBUSB_ENDPOINT_OUT) +#define UPEKET_EP_IN (1 | LIBUSB_ENDPOINT_IN) +#define UPEKET_EP_OUT (2 | LIBUSB_ENDPOINT_OUT) #define BULK_TIMEOUT 4000 struct upektc_dev { gboolean deactivating; + const struct setup_cmd *setup_commands; + size_t setup_commands_len; + int ep_in; + int ep_out; int init_idx; + int sum_threshold; +}; + +enum upektc_driver_data { + UPEKTC_2015, + UPEKTC_3001, }; static void start_capture(struct fp_img_dev *dev); @@ -55,7 +67,7 @@ static void upektc_next_init_cmd(struct fpi_ssm *ssm) struct upektc_dev *upekdev = dev->priv; upekdev->init_idx += 1; - if (upekdev->init_idx == array_n_elements(setup_commands)) + if (upekdev->init_idx == upekdev->setup_commands_len) fpi_ssm_mark_completed(ssm); else fpi_ssm_jump_to_state(ssm, WRITE_INIT); @@ -69,7 +81,7 @@ static void write_init_cb(struct libusb_transfer *transfer) if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { - if (setup_commands[upekdev->init_idx].response_len) + if (upekdev->setup_commands[upekdev->init_idx].response_len) fpi_ssm_next_state(ssm); else upektc_next_init_cmd(ssm); @@ -105,8 +117,8 @@ static void activate_run_state(struct fpi_ssm *ssm) fpi_ssm_mark_aborted(ssm, -ENOMEM); return; } - libusb_fill_bulk_transfer(transfer, dev->udev, EP_OUT, - (unsigned char*)setup_commands[upekdev->init_idx].cmd, + libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_out, + (unsigned char*)upekdev->setup_commands[upekdev->init_idx].cmd, UPEKTC_CMD_LEN, write_init_cb, ssm, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); if (r < 0) { @@ -125,9 +137,9 @@ static void activate_run_state(struct fpi_ssm *ssm) break; } - data = g_malloc(setup_commands[upekdev->init_idx].response_len); - libusb_fill_bulk_transfer(transfer, dev->udev, EP_IN, data, - setup_commands[upekdev->init_idx].response_len, + data = g_malloc(upekdev->setup_commands[upekdev->init_idx].response_len); + libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_in, data, + upekdev->setup_commands[upekdev->init_idx].response_len, read_init_data_cb, ssm, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); @@ -155,7 +167,7 @@ static void activate_sm_complete(struct fpi_ssm *ssm) /****** FINGER PRESENCE DETECTION ******/ -static int finger_present(unsigned char *img, size_t len) +static int finger_present(unsigned char *img, size_t len, int sum_threshold) { int i, sum; @@ -168,12 +180,13 @@ static int finger_present(unsigned char *img, size_t len) } fp_dbg("finger_present: sum is %d\n", sum); - return sum < SUM_THRESHOLD ? 0 : 1; + return sum < sum_threshold ? 0 : 1; } static void finger_det_data_cb(struct libusb_transfer *transfer) { struct fp_img_dev *dev = transfer->user_data; + struct upektc_dev *upekdev = dev->priv; unsigned char *data = transfer->buffer; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { @@ -186,7 +199,7 @@ static void finger_det_data_cb(struct libusb_transfer *transfer) fpi_imgdev_session_error(dev, -EPROTO); } - if (finger_present(data, IMAGE_SIZE)) { + if (finger_present(data, IMAGE_SIZE, upekdev->sum_threshold)) { /* finger present, start capturing */ fpi_imgdev_report_finger_status(dev, TRUE); start_capture(dev); @@ -206,6 +219,7 @@ static void finger_det_cmd_cb(struct libusb_transfer *t) unsigned char *data; int r; struct fp_img_dev *dev = t->user_data; + struct upektc_dev *upekdev = dev->priv; if (t->status != LIBUSB_TRANSFER_COMPLETED) { fp_dbg("req transfer status %d\n", t->status); @@ -224,7 +238,7 @@ static void finger_det_cmd_cb(struct libusb_transfer *t) } data = g_malloc(IMAGE_SIZE); - libusb_fill_bulk_transfer(transfer, dev->udev, EP_IN, data, IMAGE_SIZE, + libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_in, data, IMAGE_SIZE, finger_det_data_cb, dev, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); @@ -254,7 +268,7 @@ static void start_finger_detection(struct fp_img_dev *dev) fpi_imgdev_session_error(dev, -ENOMEM); return; } - libusb_fill_bulk_transfer(transfer, dev->udev, EP_OUT, + libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_out, (unsigned char *)scan_cmd, UPEKTC_CMD_LEN, finger_det_cmd_cb, dev, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); @@ -315,6 +329,7 @@ out: static void capture_run_state(struct fpi_ssm *ssm) { struct fp_img_dev *dev = ssm->priv; + struct upektc_dev *upekdev = dev->priv; int r; switch (ssm->cur_state) { @@ -325,7 +340,7 @@ static void capture_run_state(struct fpi_ssm *ssm) fpi_ssm_mark_aborted(ssm, -ENOMEM); return; } - libusb_fill_bulk_transfer(transfer, dev->udev, EP_OUT, + libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_out, (unsigned char *)scan_cmd, UPEKTC_CMD_LEN, capture_cmd_cb, ssm, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); @@ -346,7 +361,7 @@ static void capture_run_state(struct fpi_ssm *ssm) } data = g_malloc(IMAGE_SIZE); - libusb_fill_bulk_transfer(transfer, dev->udev, EP_IN, data, IMAGE_SIZE, + libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_in, data, IMAGE_SIZE, capture_read_data_cb, ssm, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); @@ -422,6 +437,7 @@ static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) { /* TODO check that device has endpoints we're using */ int r; + struct upektc_dev *upekdev; r = libusb_claim_interface(dev->udev, 0); if (r < 0) { @@ -429,7 +445,29 @@ static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) return r; } - dev->priv = g_malloc0(sizeof(struct upektc_dev)); + dev->priv = upekdev = g_malloc0(sizeof(struct upektc_dev)); + switch (driver_data) { + case UPEKTC_2015: + upekdev->ep_in = UPEKTC_EP_IN; + upekdev->ep_out = UPEKTC_EP_OUT; + upekdev->setup_commands = upektc_setup_commands; + upekdev->setup_commands_len = array_n_elements(upektc_setup_commands); + upekdev->sum_threshold = UPEKTC_SUM_THRESHOLD; + break; + case UPEKTC_3001: + upekdev->ep_in = UPEKET_EP_IN; + upekdev->ep_out = UPEKET_EP_OUT; + upekdev->setup_commands = upeket_setup_commands; + upekdev->setup_commands_len = array_n_elements(upeket_setup_commands); + upekdev->sum_threshold = UPEKET_SUM_THRESHOLD; + break; + default: + fp_err("Device variant %d is not known\n", driver_data); + g_free(upekdev); + dev->priv = NULL; + return -ENODEV; + break; + } fpi_imgdev_open_complete(dev, 0); return 0; } @@ -442,7 +480,8 @@ static void dev_deinit(struct fp_img_dev *dev) } static const struct usb_id id_table[] = { - { .vendor = 0x0483, .product = 0x2015 }, + { .vendor = 0x0483, .product = 0x2015, .driver_data = UPEKTC_2015 }, + { .vendor = 0x147e, .product = 0x3001, .driver_data = UPEKTC_3001 }, { 0, 0, 0, }, }; @@ -450,7 +489,7 @@ struct fp_img_driver upektc_driver = { .driver = { .id = UPEKTC_ID, .name = FP_COMPONENT, - .full_name = "UPEK TouchChip", + .full_name = "UPEK TouchChip/Eikon Touch 300", .id_table = id_table, .scan_type = FP_SCAN_TYPE_PRESS, }, diff --git a/libfprint/drivers/upektc.h b/libfprint/drivers/upektc.h index a198018..143916e 100644 --- a/libfprint/drivers/upektc.h +++ b/libfprint/drivers/upektc.h @@ -1,6 +1,8 @@ /* * UPEK TouchChip driver for libfprint + * * Copyright (C) 2012 Vasily Khoruzhick + * Copyright (C) 2012 Moganeshwaran Rajasegaran * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -24,14 +26,15 @@ #define IMAGE_WIDTH 208 #define IMAGE_HEIGHT 288 #define IMAGE_SIZE (IMAGE_WIDTH * IMAGE_HEIGHT) -#define SUM_THRESHOLD 10000 +#define UPEKTC_SUM_THRESHOLD 10000 +#define UPEKET_SUM_THRESHOLD 5000 struct setup_cmd { unsigned char cmd[0x40]; int response_len; }; -static const struct setup_cmd setup_commands[] = { +static const struct setup_cmd upektc_setup_commands[] = { { .cmd = { 0x03, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x00, 0x01, @@ -723,6 +726,1205 @@ static const struct setup_cmd setup_commands[] = { } }; +static const struct setup_cmd upeket_setup_commands[] = { + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF3, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x98, 0xf1, 0x12, 0x00, + 0x03, 0xd4, 0xa9, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x14, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0xf1, 0x12, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x90, 0xf1, 0x12, 0x00, + 0xac, 0x0d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xf7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0xf1, 0x12, 0x00, + 0x92, 0xc5, 0xa9, 0x00, 0x48, 0xf1, 0x12, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xa2, 0xc5, 0xa9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x98, 0xf1, 0x12, 0x00, + 0x03, 0xd4, 0xa9, 0x00, 0x64, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xf7, 0xcd, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xf8, 0xa9, 0x00, + 0x28, 0xf1, 0x12, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xbb, 0xc4, 0xa9, 0x00, 0x02, 0xfa, 0x3f, 0x05, + 0x05, 0x02, 0x05, 0x23, 0x27, 0xe5, 0x13, 0x10, + 0x08, 0xff, 0x04, 0x6c, 0xc1, 0x41, 0x1c, 0x4c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0xf1, 0x12, 0x00, 0x89, 0xae, 0xa9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8b, 0x00, 0x00, 0x00, 0x3a, 0x8c, 0xf1, 0x12, + 0x00, 0x64, 0xa8, 0xa7, 0x00, 0x84, 0xf1, 0x12, + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf1, 0x12, + 0x00, 0x51, 0xa6, 0xa7, 0x00, 0xf8, 0x00, 0x00, + 0x00, 0x7e, 0xa6, 0xa7, 0x00, 0x24, 0x5a, 0xac, + 0x00, 0x01, 0xf1, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, 0xff, 0x7c, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, 0xff, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x0d, 0xff, 0x00, + 0x34, 0xf1, 0x12, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf1, 0x12, 0x00, 0x57, 0xcc, 0xa9, 0x00, + 0x34, 0xf1, 0x12, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xbd, 0xcc, 0xa9, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0x34, 0xf1, 0x12, 0x00, 0x3a, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x0a, 0x37, 0x6a, 0x3d, + 0x73, 0x3d, 0x71, 0x0e, 0x01, 0x0e, 0x81, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x12, 0x00, + 0x57, 0xcc, 0xa9, 0x00, 0x34, 0xf1, 0x12, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xbd, 0xcc, 0xa9, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x34, 0xf1, 0x12, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, 0xff, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x3d, 0x51, 0x0e, + 0x01, 0x0e, 0x81, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf1, 0x12, 0x00, 0x57, 0xcc, 0xa9, 0x00, + 0x34, 0xf1, 0x12, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xbd, 0xcc, 0xa9, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0x34, 0xf1, 0x12, 0x00, 0x3a, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, 0xff, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x04, 0x78, 0x3A, 0x34, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x1A, 0x80, + 0x7C, 0x04, 0xF1, 0x12, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x48, 0x00, 0x00, 0x00, 0xCC, 0xEF, 0x12, + 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xB0, 0xEF, 0x12, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x84, 0x21, 0x15, 0x00, 0x48, 0x00, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x04, 0xB2, 0x3A, 0x0B, 0x88, 0x01, + 0xB4, 0x01, 0x20, 0x91, 0x04, 0x07, 0x02, 0x24, + 0x20, 0xE2, 0x15, 0x0D, 0x10, 0x0F, 0x10, 0x11, + 0x11, 0x11, 0x11, 0x11, 0x12, 0x13, 0x13, 0x13, + 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, + 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, + 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x04, 0xEC, 0x3A, 0x0B, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, + 0x1E, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1F, 0x1F, 0x20, + 0x20, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x20, 0x21, + 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x21, + 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x21, + 0x21, 0x22, 0x21, 0x22, 0x21, 0x22, 0x22, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0x26, 0x3A, 0x0B, 0x22, 0x22, + 0x22, 0x21, 0x22, 0x22, 0x22, 0x21, 0x22, 0x22, + 0x22, 0x21, 0x22, 0x21, 0x22, 0x21, 0x21, 0x21, + 0x22, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, + 0x22, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0x60, 0x3A, 0x0B, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, + 0x1E, 0x1E, 0x1E, 0x1E, 0x1D, 0x1D, 0x1D, 0x1D, + 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1C, 0x1D, 0x1D, + 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1B, 0x1B, 0x1C, 0x1C, 0x1B, 0x1B, 0x1B, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0x9A, 0x3A, 0x0B, 0x1B, 0x1B, + 0x1B, 0x1A, 0x1B, 0x1B, 0x1A, 0x1A, 0x1A, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1A, 0x19, 0x1A, 0x1A, 0x1A, + 0x1A, 0x19, 0x1A, 0x1A, 0x1A, 0x19, 0x19, 0x19, + 0x19, 0x19, 0x19, 0x18, 0x19, 0x18, 0x18, 0x19, + 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x16, 0x15, + 0x15, 0x16, 0x15, 0x16, 0x15, 0x15, 0x14, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0xD4, 0x2C, 0x0B, 0x14, 0x15, + 0x14, 0x14, 0x14, 0x13, 0x13, 0x13, 0x12, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6E, 0x12, 0x00, 0x2B, 0xC5, 0xA9, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x7C, 0xEF, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x01, 0x68, 0x0A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xD0, 0xFD, 0x7F, 0xDC, 0x6D, 0x12, 0x00, + 0x2A, 0x26, 0x80, 0x7C, 0x98, 0x6D, 0x12, 0x00, + 0x00, 0x26, 0x80, 0x7C, 0xB8, 0x00, 0x00, 0x00, + 0x0C, 0x80, 0x01, 0x10, 0x90, 0x3E, 0x94, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x03, 0xB4, 0x3A, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, + 0x1E, 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, 0x1D, 0x1D, 0x1D, + 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1C, 0x1D, + 0x1D, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x03, 0xEE, 0x06, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x85, 0xB7, 0xA9, 0x00, + 0xB8, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, + 0x18, 0x70, 0x12, 0x00, 0x2B, 0xC5, 0xA9, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xD4, 0xF0, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x07, 0x00, 0x20, 0x00, 0x3a, 0x32, 0x2b, 0x07, + 0x2e, 0x29, 0x07, 0x2b, 0x27, 0x07, 0x27, 0x25, + 0x07, 0x23, 0x23, 0x07, 0x20, 0x21, 0x07, 0x1c, + 0x1d, 0x07, 0x19, 0x1a, 0x07, 0x15, 0x17, 0x07, + 0x12, 0x15, 0x07, 0x0e, 0x14, 0x07, 0x12, 0x17, + 0x07, 0x15, 0x19, 0x07, 0x19, 0x1c, 0x07, 0x1c, + 0x1f, 0x07, 0x20, 0x23, 0x07, 0x23, 0x25, 0x07, + 0x27, 0x27, 0x07, 0x2b, 0x29, 0x07, 0x2e, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x07, 0x00, 0x20, 0x3a, 0x26, 0x2b, 0x07, 0x32, + 0x2d, 0x07, 0x32, 0x2f, 0x07, 0x2e, 0x2d, 0x07, + 0x2b, 0x2b, 0x07, 0x27, 0x29, 0x07, 0x23, 0x27, + 0x07, 0x20, 0x25, 0x07, 0x1c, 0x22, 0x07, 0x19, + 0x1e, 0x07, 0x15, 0x1b, 0x07, 0x12, 0x19, 0x07, + 0x0e, 0x16, 0x07, 0x07, 0x19, 0x1c, 0x07, 0x1c, + 0x1f, 0x07, 0x20, 0x23, 0x07, 0x23, 0x25, 0x07, + 0x27, 0x27, 0x07, 0x2b, 0x29, 0x07, 0x2e, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x81, 0x0e, + 0x81, 0x09, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x07, 0x00, 0x20, 0x3a, + 0x26, 0x2b, 0x07, 0x32, 0x2d, 0x07, 0x32, 0x2f, + 0x07, 0x2e, 0x2d, 0x07, 0x2b, 0x2b, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + 0x1c, 0x22, 0x07, 0x19, 0x1e, 0x07, 0x15, 0x1b, + 0x07, 0x12, 0x19, 0x07, 0x0e, 0x16, 0x07, 0x07, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, 0xff, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x85, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x20, 0x3a, 0x26, 0x2b, 0x07, 0x32, + 0x2d, 0x07, 0x32, 0x2f, 0x07, 0x2e, 0x2d, 0x07, + 0x2b, 0x2b, 0x07, 0x29, 0x07, 0x23, 0x27, 0x07, + 0x20, 0x25, 0x07, 0x1c, 0x22, 0x07, 0x19, 0x1e, + 0x07, 0x15, 0x1b, 0x07, 0x12, 0x19, 0x07, 0x1f, + 0x0e, 0x16, 0x07, 0x07, 0x19, 0x1c, 0x07, 0x1c, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x62, 0x62, + 0x51, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x3a, 0x41, 0x0e, 0x2b, 0x00, 0x00, 0x00, 0x00, + 0x78, 0xf1, 0x12, 0x00, 0x1a, 0xaa, 0xa7, 0x1f, + 0x00, 0x3a, 0x09, 0x00, 0x00, 0x00, 0x12, 0x41, + 0x0e, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4c, 0xf1, 0x12, 0x00, 0x89, 0xae, + 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x20, 0x6C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x20, 0x3A, 0x26, 0x2B, 0x07, 0x32, + 0x2D, 0x07, 0x32, 0x2F, 0x07, 0x2E, 0x2D, 0x07, + 0x2B, 0x2B, 0x07, 0x27, 0x29, 0x07, 0x23, 0x27, + 0x07, 0x20, 0x25, 0x07, 0x1C, 0x22, 0x07, 0x19, + 0x1E, 0x07, 0x15, 0x1B, 0x07, 0x12, 0x19, 0x07, + 0x0E, 0x16, 0x07, 0x07, 0x19, 0x1C, 0x07, 0x1C, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF9, 0x6C, 0x6C, + 0x6C, 0x6C, 0x40, 0x40, 0x2E, 0x6D, 0x64, 0xED, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4C, 0xF1, 0x12, 0x00, 0x89, 0xAE, 0xA9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE8, 0x3D, 0xAC, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0xF1, 0x12, 0x00, + 0x14, 0xAB, 0xA7, 0x00, 0x03, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF9, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x07, 0x00, 0x20, 0x3A, + 0x26, 0x2B, 0x07, 0x32, 0x2D, 0x07, 0x32, 0x2F, + 0x07, 0x2E, 0x2D, 0x07, 0x2B, 0x2B, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + 0x1C, 0x22, 0x07, 0x19, 0x1E, 0x07, 0x15, 0x1B, + 0x07, 0x12, 0x19, 0x07, 0x0E, 0x16, 0x07, 0x07, + 0x19, 0x1C, 0x07, 0x1C, 0xBA, 0xEC, 0x64, 0xED, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x16, 0x1C, 0x13, 0x1B, + 0x0B, 0x1A, 0x0A, 0x30, 0x08, 0x09, 0x6D, 0x08, + 0xA7, 0x00, 0x9E, 0x00, 0x1E, 0x0C, 0x08, 0x1D, + 0x04, 0x23, 0x42, 0x2F, 0x07, 0x2E, 0x2D, 0x07, + 0x2B, 0x2B, 0x07, 0x27, 0x29, 0x07, 0x23, 0x27, + 0x07, 0x20, 0x25, 0x07, 0x1C, 0x22, 0x07, 0x19, + 0x1E, 0x07, 0x15, 0x1B, 0x07, 0x12, 0x19, 0x07, + 0x0E, 0x16, 0x07, 0x07, 0x19, 0x1C, 0x07, 0x1C, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x0D, 0xFF, 0x30, + 0x08, 0x09, 0x6D, 0x08, 0xA7, 0x00, 0x9E, 0x00, + 0x1E, 0x0C, 0x08, 0x1D, 0x04, 0x23, 0x42, 0x2F, + 0x07, 0x2E, 0x2D, 0x07, 0x2B, 0x2B, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + 0x1C, 0x22, 0x07, 0x19, 0x1E, 0x07, 0x15, 0x1B, + 0x07, 0x12, 0x19, 0x07, 0x0E, 0x16, 0x07, 0x07, + 0x19, 0x1C, 0x07, 0x1C, 0xBA, 0xEC, 0x64, 0xED, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF7, 0x64, 0xED, + 0x00, 0x00, 0x00, 0x00, 0x7C, 0xF1, 0x12, 0x00, + 0x1A, 0xAA, 0xA7, 0x00, 0x3A, 0x00, 0x00, 0x00, + 0x2A, 0x6D, 0x64, 0xED, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0xF1, 0x12, 0x00, + 0x89, 0xAE, 0xA9, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE8, 0x3D, 0xAC, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF7, 0xA9, 0x00, + 0x02, 0xFA, 0x3F, 0x05, 0x05, 0xC2, 0x85, 0xA6, + 0xA7, 0x6D, 0x10, 0x10, 0x08, 0xFF, 0x85, 0x6C, + 0x00, 0x00, 0xCF, 0x00, 0x01, 0x00, 0x00, 0x1F, + 0x01, 0x01, 0x0A, 0x0B, 0x13, 0x04, 0x6C, 0x6C, + 0x6C, 0x6C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, + 0x42, 0x42, 0x42, 0x42, 0x6C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF7, 0xF3, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x0D, 0xFF, 0x30, + 0x08, 0x09, 0x6D, 0x08, 0xA7, 0x00, 0x9E, 0x00, + 0x1E, 0x0C, 0x08, 0x1D, 0x04, 0x23, 0x42, 0x2F, + 0x07, 0x2E, 0x2D, 0x07, 0x2B, 0x2B, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + 0x1C, 0x22, 0x07, 0x19, 0x1E, 0x07, 0x15, 0x1B, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE8, 0x3D, 0xAC, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5C, 0xF1, 0x12, 0x00, 0x14, 0xAB, 0xA7, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x5C, 0xF1, 0x12, 0x00, + 0x20, 0xAB, 0xA7, 0x00, 0x58, 0xF1, 0x12, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x99, 0xA9, 0xA7, 0x00, + 0xE8, 0x3D, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF0, 0x8F, 0x2F, + 0x07, 0x2E, 0x2D, 0x07, 0x2B, 0x2B, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + 0x1C, 0x22, 0x07, 0x19, 0x1E, 0x07, 0x15, 0x1B, + 0x07, 0x12, 0x19, 0x07, 0x82, 0xEC, 0x64, 0xED, + 0x24, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEA, 0x3D, 0xAC, 0x00, 0xBD, 0xCC, 0xA9, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xCF, + 0x00, 0x01, 0x00, 0x00, 0x1F, 0x01, 0x01, 0x00, + 0x0C, 0xCF, 0xA9, 0x00, 0x74, 0x70, 0x12, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x1C, 0xCF, 0xA9, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF0, 0x8F, 0x2F, + 0x07, 0x2E, 0x2D, 0x07, 0x2B, 0x2B, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x85, 0x09, + 0xED, 0x09, 0x6D, 0x2F, 0x07, 0x2E, 0x2D, 0x07, + 0x2B, 0x2B, 0x07, 0x27, 0x29, 0x07, 0x23, 0x27, + 0x07, 0x20, 0x25, 0x07, 0x1C, 0x22, 0x07, 0x19, + 0x8A, 0xEC, 0x64, 0xED, 0x1C, 0xF1, 0x12, 0x00, + 0xFA, 0xCB, 0xA9, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x72, 0xF1, 0x12, 0x00, + 0xBD, 0xCC, 0xA9, 0x00, 0x0A, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x09, 0xED, 0x2F, + 0x07, 0x2E, 0x2D, 0x07, 0x2B, 0x2B, 0x07, 0x27, + 0x29, 0x07, 0x23, 0x27, 0x07, 0x20, 0x25, 0x07, + 0x1C, 0x22, 0x07, 0x19, 0x8A, 0xEC, 0x64, 0xED, + 0x1C, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x72, 0xF1, 0x12, 0x00, 0xBD, 0xCC, 0xA9, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0xBD, 0xCC, 0xA9, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF3, 0x00, 0x00, + 0x8C, 0xF1, 0x12, 0x00, 0x1A, 0xAA, 0xA7, 0x00, + 0x3A, 0x00, 0x00, 0x00, 0x5A, 0x6D, 0x64, 0xED, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0xF1, 0x12, 0x00, 0x89, 0xAE, 0xA9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE8, 0x3D, 0xAC, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7C, 0xF1, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x84, 0x00, 0x00, 0x00, 0x32, 0x02, 0xE0, 0xAD, + 0x00, 0xFC, 0xDF, 0xAD, 0x00, 0xDB, 0xDF, 0xAD, + 0x00, 0xBA, 0xDF, 0xAD, 0x00, 0x99, 0xDF, 0x6F, + 0x44, 0xC2, 0xE8, 0x20, 0x65, 0x73, 0x83, 0xAC, + 0xD7, 0x88, 0x6D, 0x59, 0x61, 0xE0, 0x3B, 0x3D, + 0xB7, 0xF4, 0xDE, 0xAD, 0x00, 0xD3, 0xDE, 0xAD, + 0x00, 0xB2, 0xDE, 0xAD, 0x00, 0x91, 0xDE, 0x00, + 0xA6, 0xEC, 0x64, 0xED, 0xA2, 0xEC, 0x64, 0xED, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x06, 0x1A, 0x0A, 0x1B, + 0x0B, 0x1C, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x92, 0xD5, 0x90, 0x7C, 0xBB, 0x9B, 0x80, 0x7C, + 0xB8, 0x00, 0x00, 0x00, 0xAC, 0x70, 0x12, 0x00, + 0x85, 0xB7, 0xA9, 0x00, 0xB8, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xCF, + 0x00, 0x01, 0x00, 0x00, 0x1F, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, + 0x4C, 0x70, 0x12, 0x00, 0xEB, 0xC4, 0xA9, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x68, 0x70, 0x12, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xE8, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB0, 0x70, 0x12, 0x00, + 0x0C, 0xCF, 0xA9, 0x00, 0x68, 0x70, 0x12, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0x0D, 0x00, 0x00, + 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0xD0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xA6, 0xB5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x6F, 0x44, 0xC2, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x04, 0x78, 0x3A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xD0, 0xFD, 0x7F, 0x94, 0xF0, 0x12, + 0x00, 0x2A, 0x26, 0x80, 0x7C, 0x50, 0xF0, 0x12, + 0x00, 0x00, 0x26, 0x80, 0x7C, 0x08, 0x00, 0x00, + 0x00, 0x0C, 0x80, 0x01, 0x10, 0x90, 0x3E, 0x94, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x69, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x04, 0xB2, 0x3A, 0x0B, 0x88, 0x01, + 0xB4, 0x01, 0x20, 0x91, 0x04, 0x07, 0x02, 0x24, + 0x20, 0xE2, 0x15, 0x0D, 0x10, 0x0F, 0x10, 0x11, + 0x11, 0x11, 0x11, 0x11, 0x12, 0x13, 0x13, 0x13, + 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, + 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, + 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x04, 0xEC, 0x3A, 0x0B, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, + 0x1E, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1F, 0x1F, 0x20, + 0x20, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x20, 0x21, + 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x21, + 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x21, + 0x21, 0x22, 0x21, 0x22, 0x21, 0x22, 0x22, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0x26, 0x3A, 0x0B, 0x22, 0x22, + 0x22, 0x21, 0x22, 0x22, 0x22, 0x21, 0x22, 0x22, + 0x22, 0x21, 0x22, 0x21, 0x22, 0x21, 0x21, 0x21, + 0x22, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, + 0x22, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0x60, 0x3A, 0x0B, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, + 0x1E, 0x1E, 0x1E, 0x1E, 0x1D, 0x1D, 0x1D, 0x1D, + 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1C, 0x1D, 0x1D, + 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1B, 0x1B, 0x1C, 0x1C, 0x1B, 0x1B, 0x1B, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0x9A, 0x3A, 0x0B, 0x1B, 0x1B, + 0x1B, 0x1A, 0x1B, 0x1B, 0x1A, 0x1A, 0x1A, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1A, 0x19, 0x1A, 0x1A, 0x1A, + 0x1A, 0x19, 0x1A, 0x1A, 0x1A, 0x19, 0x19, 0x19, + 0x19, 0x19, 0x19, 0x18, 0x19, 0x18, 0x18, 0x19, + 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x16, 0x15, + 0x15, 0x16, 0x15, 0x16, 0x15, 0x15, 0x14, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x05, 0xD4, 0x2C, 0x0B, 0x14, 0x15, + 0x14, 0x14, 0x14, 0x13, 0x13, 0x13, 0x12, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6F, 0x12, 0x00, 0x2B, 0xC5, 0xA9, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x2C, 0xF0, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF7, 0x1C, 0x1C, + 0x1B, 0x1B, 0x1C, 0x1C, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1A, 0x1B, 0x1B, 0x1A, 0x1A, + 0x1A, 0x1B, 0x1B, 0x1B, 0x1B, 0x1A, 0x19, 0x1A, + 0x1A, 0x1A, 0x1A, 0x19, 0x1A, 0x1A, 0x1A, 0x19, + 0x19, 0x19, 0x19, 0x19, 0x19, 0x18, 0x19, 0x18, + 0x18, 0x19, 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF7, 0xF3, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x04, 0x3D, 0x40, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0xED, 0x64, 0xED, + 0xD4, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x0A, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0xED, 0x64, 0xED, 0xD4, 0xF1, 0x12, 0x00, + 0xFA, 0xCB, 0xA9, 0x00, 0x03, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x8B, 0x00, 0x00, 0xA8, 0x3A, 0x00, 0x00, 0x00, + 0x00, 0xDC, 0x00, 0xEA, 0x00, 0x20, 0xED, 0x12, + 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0xDC, 0xFD, + 0x7F, 0x20, 0xED, 0x12, 0x00, 0x05, 0x00, 0x00, + 0x00, 0xA0, 0x20, 0x15, 0x00, 0xC8, 0x00, 0x00, + 0x01, 0x43, 0x00, 0x3A, 0x00, 0x5C, 0x00, 0x44, + 0x00, 0x6F, 0x00, 0x63, 0x00, 0x75, 0x00, 0x6D, + 0x00, 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x00, 0xE2, 0x3A, 0x0B, 0x07, 0xA5, + 0x03, 0x2F, 0x63, 0x97, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x01, 0x1C, 0x3A, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x75, 0xB3, 0x05, + 0xE2, 0xBC, 0x74, 0x68, 0xAD, 0xAC, 0x7B, 0xB1, + 0xF8, 0x52, 0xD5, 0x8F, 0xF7, 0x03, 0x00, 0x00, + 0x06, 0xA5, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x01, 0x56, 0x3A, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x01, 0x90, 0x3A, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0xA5, 0x00, 0x22, 0x8E, 0xA3, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4C, 0xA5, 0xC8, 0xC8, 0x41, 0x50, 0x52, 0x39, + 0x07, 0x01, 0x00, 0x5F, 0x00, 0x00, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x01, 0xCA, 0x3A, 0x0B, 0x01, 0x48, + 0x34, 0x33, 0x00, 0x00, 0x00, 0x00, 0x76, 0x3E, + 0x84, 0x10, 0x2E, 0x48, 0x54, 0x0D, 0x98, 0x4C, + 0x14, 0x12, 0x72, 0x7A, 0x88, 0x0F, 0x9F, 0x84, + 0x98, 0x03, 0x52, 0xA6, 0xA4, 0x0A, 0x6E, 0xA8, + 0x54, 0x0C, 0x13, 0xB6, 0xE8, 0x0A, 0x77, 0xC0, + 0x94, 0x04, 0x73, 0xC6, 0x14, 0x07, 0x80, 0xCA, + 0xA8, 0x08, 0x31, 0xD2, 0x44, 0x09, 0x1E, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x02, 0x04, 0x3A, 0x0B, 0x74, 0x09, + 0x7A, 0xE4, 0x78, 0x17, 0xA5, 0xE4, 0x24, 0x09, + 0x45, 0xE8, 0x68, 0x07, 0xBA, 0xEC, 0xE8, 0x05, + 0xC2, 0xF0, 0x58, 0x16, 0x78, 0xF6, 0x98, 0x15, + 0x7C, 0xFC, 0xB8, 0x19, 0xAD, 0xFC, 0x74, 0x09, + 0x8C, 0x02, 0x39, 0x0D, 0x36, 0x06, 0x99, 0x06, + 0x9B, 0x08, 0x09, 0x0B, 0xA1, 0x0C, 0x25, 0x19, + 0x57, 0x10, 0x29, 0x05, 0x1A, 0x1C, 0x45, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x02, 0x3E, 0x3A, 0x0B, 0x55, 0x1E, + 0x69, 0x16, 0xA4, 0x24, 0xB9, 0x09, 0x1C, 0x44, + 0x55, 0x08, 0x9C, 0x44, 0xC9, 0x0B, 0x9F, 0x4A, + 0xF9, 0x19, 0x4C, 0x4C, 0xF9, 0x13, 0x5E, 0x50, + 0x09, 0x13, 0xB7, 0x6A, 0x09, 0x0A, 0x7C, 0x7A, + 0x75, 0x0F, 0x0E, 0x7E, 0x95, 0x00, 0x81, 0xA6, + 0x99, 0x0E, 0xC0, 0xAE, 0xE5, 0x19, 0xA0, 0xCC, + 0x35, 0x0D, 0x63, 0xE2, 0x85, 0x1F, 0x8E, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x02, 0x78, 0x3A, 0x0B, 0x35, 0x1D, + 0xC1, 0xE8, 0xA9, 0x0C, 0x7A, 0x06, 0xCA, 0x0E, + 0xAD, 0x12, 0xD6, 0x1C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x02, 0xB2, 0x2A, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x6C, 0x12, 0x00, 0x2B, 0xC5, 0xA9, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xFC, 0xEC, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF1, 0x42, 0x42, + 0x40, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xCE, 0x6D, 0x64, 0xED, 0x00, 0x00, 0x00, 0x00, + 0x30, 0xF2, 0x12, 0x00, 0x1A, 0xAA, 0xA7, 0x00, + 0x3A, 0x00, 0x00, 0x00, 0xF6, 0x6D, 0x64, 0xED, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0xF2, 0x12, 0x00, 0x89, 0xAE, 0xA9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF1, 0x01, 0x00, + 0x1C, 0xCF, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x8B, 0x00, 0x00, 0xFC, 0x3A, 0x1E, 0xDC, 0x74, + 0x09, 0x7A, 0xE4, 0x78, 0x17, 0xA5, 0xE4, 0x24, + 0x09, 0x45, 0xE8, 0x68, 0x07, 0xBA, 0xEC, 0xE8, + 0x05, 0xC2, 0xF0, 0x58, 0x16, 0x78, 0xF6, 0x98, + 0x15, 0x7C, 0xFC, 0xB8, 0x19, 0xAD, 0xFC, 0x74, + 0x09, 0x8C, 0x02, 0x39, 0x0D, 0x36, 0x06, 0x99, + 0x06, 0x9B, 0x08, 0x09, 0x0B, 0xA1, 0x0C, 0x25, + 0x19, 0x57, 0x10, 0x29, 0x05, 0x1A, 0x1C, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x8B, 0x00, 0x01, 0x36, 0x2E, 0x0B, 0x06, 0xA5, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2B, 0xC5, 0xA9, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xD8, 0xEE, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF0, 0xAC, 0x00, + 0xF0, 0xF1, 0x12, 0x00, 0x6A, 0xB1, 0xA7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xA5, 0x00, 0x01, + 0x00, 0x00, 0x12, 0x00, 0x14, 0xAB, 0xA7, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0C, 0xF2, 0x12, 0x00, + 0x20, 0xAB, 0xA7, 0x00, 0x08, 0xF2, 0x12, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x99, 0xA9, 0xA7, 0x00, + 0xE8, 0x3D, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF0, 0x8F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0xED, 0x64, 0xED, + 0xD4, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEA, 0x3D, 0xAC, 0x00, 0xBD, 0xCC, 0xA9, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF7, 0x12, 0x00, + 0x88, 0xC4, 0xA9, 0x00, 0xD8, 0xF1, 0x12, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xBB, 0xC4, 0xA9, 0x00, + 0x02, 0x00, 0x3F, 0x05, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEA, 0x6D, 0x64, 0xED, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0xF2, 0x12, 0x00, + 0x89, 0xAE, 0xA9, 0x00, 0x03, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xF7, 0xA9, 0x00, + 0x02, 0xFA, 0x3F, 0x05, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF7, 0xF3, 0x00, + 0x0C, 0xCF, 0xA9, 0x00, 0x24, 0x71, 0x12, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x1C, 0xCF, 0xA9, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF0, 0x8F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x01, 0xFB, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF1, 0x12, 0x00, + 0x89, 0xAE, 0xA9, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE8, 0x3D, 0xAC, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0xF2, 0x12, 0x00, 0x14, 0xAB, 0xA7, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0C, 0xF2, 0x12, 0x00, + 0x20, 0xAB, 0xA7, 0x00, 0x08, 0xF2, 0x12, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0xFB, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0xF0, 0x8F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0xED, 0x64, 0xED, + 0xD4, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x07, 0xA4, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0xED, 0x64, 0xED, + 0xD4, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x42, 0xED, 0x64, 0xED, + 0xE4, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xCF, + 0x00, 0x01, 0x00, 0x00, 0x1F, 0x01, 0x01, 0x00, + 0xEB, 0xC4, 0xA9, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x24, 0x71, 0x12, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xE8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6C, 0x71, 0x12, 0x00, 0x0C, 0xCF, 0xA9, 0x00, + 0x24, 0x71, 0x12, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x1C, 0xCF, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x21, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x36, 0xED, 0x64, 0xED, + 0xB0, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0xF2, 0x12, 0x00, 0xBD, 0xCC, 0xA9, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0xED, 0x64, 0xED, 0xFC, 0xF1, 0x12, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x06, 0xF2, 0x12, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, + { + .cmd = { + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x36, 0xED, 0x64, 0xED, + 0xB0, 0xF1, 0x12, 0x00, 0xFA, 0xCB, 0xA9, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0xF2, 0x12, 0x00, 0xBD, 0xCC, 0xA9, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0xED, 0x64, 0xED, 0xFC, 0xF1, 0x12, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x06, 0xF2, 0x12, 0x00, + }, + .response_len = 0x00 + }, + { + .cmd = { + 0x82, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x01, 0x02, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3D, 0x3F, 0xFF, 0x00, + }, + .response_len = 0x40 + }, +}; + static const unsigned char scan_cmd[0x40] = { 0x0e, 0x00, 0x03, 0xa8, 0x00, 0xb6, 0xbb, 0xbb, 0xb8, 0xb7, 0xb8, 0xb5, 0xb8, 0xb9, 0xb8, 0xb9,