Add backend for the M721
This commit is contained in:
parent
4d9bf966e5
commit
6f0a4adf4d
13 changed files with 2518 additions and 4 deletions
|
@ -25,7 +25,7 @@ dpi2_enable=1
|
|||
dpi3_enable=1
|
||||
dpi4_enable=1
|
||||
dpi5_enable=0
|
||||
# There is only on implemented format to specify the DPI:
|
||||
# There is only one implemented format to specify the DPI:
|
||||
# 1. raw bytecode: 0x[04-8c][00-01]
|
||||
# Note: specifying the actual DPI is unsupported due to a lack of information
|
||||
# Note: the older DPI format (04-8c) is no longer supported.
|
||||
|
|
|
@ -38,8 +38,7 @@ dpi5=5000
|
|||
# usb report rate (125, 250, 500, 1000) Hz
|
||||
report_rate=500
|
||||
|
||||
# button mapping: this will not work for your mouse
|
||||
# keymap.md for full details
|
||||
# button mapping, keymap.md for full details
|
||||
button_left=left
|
||||
button_right=right
|
||||
button_middle=middle
|
||||
|
|
119
examples/example_m721.ini
Normal file
119
examples/example_m721.ini
Normal file
|
@ -0,0 +1,119 @@
|
|||
# Example configuration for the M721
|
||||
#
|
||||
# 5 different profiles (1-5) are stored on the mouse
|
||||
# if a particular option is not specified a default value will be used
|
||||
|
||||
[profile1]
|
||||
# led mode:
|
||||
# breathing, breathing_rainbow, rainbow, static, wave, alternating, reactive, reactive_button, flashing, off, random
|
||||
lightmode=static
|
||||
# led color
|
||||
color=50ff00
|
||||
# led brightness level (1-3)
|
||||
brightness=2
|
||||
# led animation speed (1-8)
|
||||
speed=1
|
||||
|
||||
# scrollspeed (1-3f)
|
||||
scrollspeed=1
|
||||
|
||||
# Each profile has 5 dpi levels (1-5) that can be individually set and enabled/disabled
|
||||
# Set dpiX_enable=0 to disable a particular dpi level
|
||||
# It is not possible to disable all DPI levels, at least one will remain enabled
|
||||
dpi1_enable=0
|
||||
dpi2_enable=1
|
||||
dpi3_enable=1
|
||||
dpi4_enable=1
|
||||
dpi5_enable=0
|
||||
# There are two formats to specify the DPI:
|
||||
# 1. (currently not implemented for the M721) actual DPI: 100-10000 (resolution is 100 (100-5000) or 200 (5200-10000))
|
||||
# 2. raw bytecode: 0x[04-8c][00-01]
|
||||
# Note: the older DPI format (04-8c) is no longer supported.
|
||||
dpi1=0x0400
|
||||
dpi2=0x1600
|
||||
dpi3=0x2d00
|
||||
dpi4=0x4300
|
||||
dpi5=0x8c00
|
||||
|
||||
# usb report rate (125, 250, 500, 1000) Hz
|
||||
report_rate=500
|
||||
|
||||
# keymap.md for full details
|
||||
button_left=left
|
||||
button_right=right
|
||||
button_middle=middle
|
||||
button_forward=forward
|
||||
button_backward=backward
|
||||
button_fire=fire:mouse_left:3:0
|
||||
button_dpi=dpi-cycle
|
||||
button_lightmode=led_mode_switch
|
||||
scroll_up=scroll_up
|
||||
scroll_down=scroll_down
|
||||
|
||||
[profile2]
|
||||
lightmode=breathing
|
||||
color=5000ff
|
||||
brightness=3
|
||||
scrollspeed=1
|
||||
dpi1=0x1600
|
||||
dpi2=0x1600
|
||||
|
||||
[profile3]
|
||||
|
||||
[profile4]
|
||||
|
||||
[profile5]
|
||||
|
||||
|
||||
# Macro definitions
|
||||
# Each macro (1-15) is defined in its own section, starting with ";## macro"
|
||||
# Each action is prefixed by ";# "
|
||||
# A tab ('\t') is used to separate the action from the value
|
||||
# There are 4 different possible actions:
|
||||
# down (key)
|
||||
# up (key)
|
||||
# delay (time in 10ms)
|
||||
# move_(left/right/up/down) (1-120)
|
||||
|
||||
;## macro1
|
||||
;# down m
|
||||
;# up m
|
||||
;# down a
|
||||
;# up a
|
||||
;# down c
|
||||
;# up c
|
||||
;# down r
|
||||
;# up r
|
||||
;# down o
|
||||
;# up o
|
||||
;# down 1
|
||||
;# up 1
|
||||
|
||||
;## macro2
|
||||
;# down m
|
||||
;# up m
|
||||
;# down a
|
||||
;# up a
|
||||
;# down c
|
||||
;# up c
|
||||
;# down r
|
||||
;# up r
|
||||
;# down o
|
||||
;# up o
|
||||
;# down 2
|
||||
;# up 2
|
||||
|
||||
;## macro3
|
||||
;# down m
|
||||
;# up m
|
||||
;# down a
|
||||
;# up a
|
||||
;# down c
|
||||
;# up c
|
||||
;# down r
|
||||
;# up r
|
||||
;# down o
|
||||
;# up o
|
||||
;# down 3
|
||||
;# up 3
|
||||
|
54
include/m721/constructor.cpp
Normal file
54
include/m721/constructor.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
// Constructor, set the default settings
|
||||
mouse_m721::mouse_m721(){
|
||||
|
||||
//default settings
|
||||
_s_profile = profile_1;
|
||||
_s_scrollspeeds.fill( 0x01 );
|
||||
_s_lightmodes.fill( lightmode_static );
|
||||
_s_colors.fill( {0xff, 0xff, 0xff} );
|
||||
_s_brightness_levels.fill( 0x03 );
|
||||
_s_speed_levels.fill( 0x08 );
|
||||
|
||||
// dpi
|
||||
_s_dpi_enabled.fill( {true, true, true, true, true} );
|
||||
_s_dpi_levels.fill( {{ {0x04, 0x00}, {0x16, 0x00}, {0x2d, 0x00}, {0x43, 0x00}, {0x8c, 0x00} }} );
|
||||
|
||||
// button mapping
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
for( int j = 0; j < 8; j++ ){
|
||||
_s_keymap_data[i][j][0] = _c_data_settings_3[35+(8*i)+j][8];
|
||||
_s_keymap_data[i][j][1] = _c_data_settings_3[35+(8*i)+j][9];
|
||||
_s_keymap_data[i][j][2] = _c_data_settings_3[35+(8*i)+j][10];
|
||||
_s_keymap_data[i][j][3] = _c_data_settings_3[35+(8*i)+j][11];
|
||||
}
|
||||
}
|
||||
_s_report_rates.fill( r_125Hz );
|
||||
int count = 0;
|
||||
for( auto &i : _s_macro_data ){
|
||||
std::copy(std::begin(_c_data_macros_2), std::end(_c_data_macros_2), std::begin(i));
|
||||
i[2] = _c_data_macros_codes[count][0];
|
||||
i[3] = _c_data_macros_codes[count][1];
|
||||
count++;
|
||||
}
|
||||
|
||||
}
|
781
include/m721/data.cpp
Normal file
781
include/m721/data.cpp
Normal file
|
@ -0,0 +1,781 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains internal constants and lookup tables
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
const std::string mouse_m721::_c_name = "721";
|
||||
|
||||
// usb device vars
|
||||
const uint16_t mouse_m721::_c_mouse_vid = 0x04d9;
|
||||
const uint16_t mouse_m721::_c_mouse_pid = 0xfc5c;
|
||||
|
||||
// Names of the physical buttons, TODO!
|
||||
std::map< int, std::string > mouse_m721::_c_button_names = {
|
||||
{ 0, "button_left" },
|
||||
{ 1, "button_right" },
|
||||
{ 2, "button_middle" },
|
||||
{ 3, "button_fire" },
|
||||
{ 4, "button_forward" },
|
||||
{ 5, "button_backward" },
|
||||
{ 6, "button_lightmode" },
|
||||
{ 7, "button_dpi" },
|
||||
{ 8, "scroll_up" },
|
||||
{ 9, "scroll_down" } };
|
||||
|
||||
// Mapping of real DPI values to bytecode, TODO!
|
||||
std::map< unsigned int, std::array<uint8_t, 2> > mouse_m721::_c_dpi_codes = {
|
||||
/*{ 100, {0x02, 0x00} },
|
||||
{ 200, {0x04, 0x00} },
|
||||
{ 300, {0x06, 0x00} },
|
||||
{ 400, {0x08, 0x00} },
|
||||
{ 500, {0x0b, 0x00} },
|
||||
{ 600, {0x0d, 0x00} },
|
||||
{ 700, {0x0f, 0x00} },
|
||||
{ 800, {0x12, 0x00} },
|
||||
{ 900, {0x14, 0x00} },
|
||||
{ 1000, {0x16, 0x00} },
|
||||
{ 1100, {0x19, 0x00} },
|
||||
{ 1200, {0x1b, 0x00} },
|
||||
{ 1300, {0x1d, 0x00} },
|
||||
{ 1400, {0x20, 0x00} },
|
||||
{ 1500, {0x22, 0x00} },
|
||||
{ 1600, {0x24, 0x00} },
|
||||
{ 1700, {0x27, 0x00} },
|
||||
{ 1800, {0x29, 0x00} },
|
||||
{ 1900, {0x2b, 0x00} },
|
||||
{ 2000, {0x2e, 0x00} },
|
||||
{ 2100, {0x30, 0x00} },
|
||||
{ 2200, {0x32, 0x00} },
|
||||
{ 2300, {0x34, 0x00} },
|
||||
{ 2400, {0x37, 0x00} },
|
||||
{ 2500, {0x39, 0x00} },
|
||||
{ 2600, {0x3b, 0x00} },
|
||||
{ 2700, {0x3e, 0x00} },
|
||||
{ 2800, {0x40, 0x00} },
|
||||
{ 2900, {0x42, 0x00} },
|
||||
{ 3000, {0x45, 0x00} },
|
||||
{ 3100, {0x47, 0x00} },
|
||||
{ 3200, {0x49, 0x00} },
|
||||
{ 3300, {0x4c, 0x00} },
|
||||
{ 3400, {0x4e, 0x00} },
|
||||
{ 3500, {0x50, 0x00} },
|
||||
{ 3600, {0x53, 0x00} },
|
||||
{ 3700, {0x55, 0x00} },
|
||||
{ 3800, {0x57, 0x00} },
|
||||
{ 3900, {0x5a, 0x00} },
|
||||
{ 4000, {0x5c, 0x00} },
|
||||
{ 4100, {0x5e, 0x00} },
|
||||
{ 4200, {0x61, 0x00} },
|
||||
{ 4300, {0x63, 0x00} },
|
||||
{ 4400, {0x65, 0x00} },
|
||||
{ 4500, {0x68, 0x00} },
|
||||
{ 4600, {0x6a, 0x00} },
|
||||
{ 4700, {0x6c, 0x00} },
|
||||
{ 4800, {0x6f, 0x00} },
|
||||
{ 4900, {0x71, 0x00} },
|
||||
{ 5000, {0x73, 0x00} },
|
||||
{ 5200, {0x3b, 0x01} },
|
||||
{ 5400, {0x3e, 0x01} },
|
||||
{ 5600, {0x40, 0x01} },
|
||||
{ 5800, {0x42, 0x01} },
|
||||
{ 6000, {0x45, 0x01} },
|
||||
{ 6200, {0x47, 0x01} },
|
||||
{ 6400, {0x49, 0x01} },
|
||||
{ 6600, {0x4c, 0x01} },
|
||||
{ 6800, {0x4e, 0x01} },
|
||||
{ 7000, {0x50, 0x01} },
|
||||
{ 7200, {0x53, 0x01} },
|
||||
{ 7400, {0x55, 0x01} },
|
||||
{ 7600, {0x57, 0x01} },
|
||||
{ 7800, {0x5a, 0x01} },
|
||||
{ 8000, {0x5c, 0x01} },
|
||||
{ 8200, {0x5e, 0x01} },
|
||||
{ 8400, {0x61, 0x01} },
|
||||
{ 8600, {0x63, 0x01} },
|
||||
{ 8800, {0x65, 0x01} },
|
||||
{ 9000, {0x68, 0x01} },
|
||||
{ 9200, {0x6a, 0x01} },
|
||||
{ 9400, {0x6c, 0x01} },
|
||||
{ 9600, {0x6f, 0x01} },
|
||||
{ 9800, {0x71, 0x01} },
|
||||
{ 10000, {0x73, 0x01} }*/
|
||||
};
|
||||
|
||||
//usb data packets
|
||||
uint8_t mouse_m721::_c_data_s_profile[6][16] = {
|
||||
{0x02, 0xf3, 0x2c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
};
|
||||
|
||||
// used for changing the settings, part 1/3
|
||||
uint8_t mouse_m721::_c_data_settings_1[15][16] = {
|
||||
{0x02, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x3e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x46, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x49, 0x04, 0x06, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x4f, 0x04, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x51, 0x04, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x08, 0x01, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x57, 0x04, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x59, 0x04, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x08, 0x01, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x5f, 0x04, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x61, 0x04, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x08, 0x01, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x67, 0x04, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x69, 0x04, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x08, 0x01, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x6f, 0x04, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x32, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x38, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
};
|
||||
|
||||
// used for changing the settings, part 2/3
|
||||
uint8_t mouse_m721::_c_data_settings_2[64] = {
|
||||
0x03, 0xf3, 0x20, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// used for changing the settings, part 3/3
|
||||
uint8_t mouse_m721::_c_data_settings_3[90][16] = {
|
||||
{0x02, 0xf3, 0x42, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xb2, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x62, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x12, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xb4, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x64, 0x02, 0x04, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x14, 0x03, 0x04, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x4a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x0a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xba, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x6a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x1a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x50, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xc0, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x70, 0x02, 0x04, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x20, 0x03, 0x04, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x56, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x16, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xc6, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x76, 0x02, 0x04, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x26, 0x03, 0x04, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x5c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x1c, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xcc, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x7c, 0x02, 0x04, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x2c, 0x03, 0x04, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x2c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x82, 0x00, 0x04, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x86, 0x00, 0x04, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x8a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x96, 0x00, 0x04, 0x00, 0x00, 0x00, 0x99, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x8e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x92, 0x00, 0x04, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x9a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x9b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x9e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xaa, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xae, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x42, 0x01, 0x04, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x46, 0x01, 0x04, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x4a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x56, 0x01, 0x04, 0x00, 0x00, 0x00, 0x99, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x4e, 0x01, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x52, 0x01, 0x04, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x5a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x5e, 0x01, 0x04, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x6a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x6e, 0x01, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xf2, 0x01, 0x04, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xf6, 0x01, 0x04, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xfa, 0x01, 0x04, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x06, 0x02, 0x04, 0x00, 0x00, 0x00, 0x99, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xfe, 0x01, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x0a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x0e, 0x02, 0x04, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x1a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x1e, 0x02, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xa2, 0x02, 0x04, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xa6, 0x02, 0x04, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xaa, 0x02, 0x04, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xb6, 0x02, 0x04, 0x00, 0x00, 0x00, 0x99, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xae, 0x02, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xb2, 0x02, 0x04, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xba, 0x02, 0x04, 0x00, 0x00, 0x00, 0x90, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xbe, 0x02, 0x04, 0x00, 0x00, 0x00, 0x90, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xca, 0x02, 0x04, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0xce, 0x02, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x52, 0x03, 0x04, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x56, 0x03, 0x04, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x5a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x66, 0x03, 0x04, 0x00, 0x00, 0x00, 0x99, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x5e, 0x03, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x62, 0x03, 0x04, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x6a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x6e, 0x03, 0x04, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x7a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf3, 0x7e, 0x03, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf1, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
};
|
||||
|
||||
uint8_t mouse_m721::_c_data_macros_1[16] =
|
||||
{0x02, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
|
||||
uint8_t mouse_m721::_c_data_macros_2[256] = {
|
||||
0x04, 0xf3, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
uint8_t mouse_m721::_c_data_macros_3[16] =
|
||||
{0x02, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
|
||||
uint8_t mouse_m721::_c_data_macros_codes[15][2] = {
|
||||
{0x78, 0x04},
|
||||
{0x40, 0x05},
|
||||
{0x08, 0x06},
|
||||
{0xd0, 0x06},
|
||||
{0x98, 0x07},
|
||||
{0x60, 0x08},
|
||||
{0x28, 0x09},
|
||||
{0xf0, 0x09},
|
||||
{0xb8, 0x0a},
|
||||
{0x80, 0x0b},
|
||||
{0x48, 0x0c},
|
||||
{0x10, 0x0d},
|
||||
{0xd8, 0x0d},
|
||||
{0xa0, 0x0e},
|
||||
{0x68, 0x0f} };
|
||||
|
||||
uint8_t mouse_m721::_c_data_read_1[9][16] = {
|
||||
{0x02, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x2c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x49, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x51, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x59, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x61, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x69, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x32, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x38, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
};
|
||||
|
||||
uint8_t mouse_m721::_c_data_read_2[85][64] = {
|
||||
{0x03, 0xf2, 0x42, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x02, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xb2, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x62, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x12, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x78, 0x04, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xaa, 0x04, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xdc, 0x04, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x0e, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x40, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x72, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xa4, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xd6, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x08, 0x06, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x3a, 0x06, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x6c, 0x06, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x9e, 0x06, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xd0, 0x06, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x02, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x34, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x66, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x98, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xca, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xfc, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x2e, 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x60, 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x92, 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xc4, 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xf6, 0x08, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x28, 0x09, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x5a, 0x09, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x8c, 0x09, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xbe, 0x09, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xf0, 0x09, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x22, 0x0a, 0x32, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x54, 0x0a, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x86, 0x0a, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xb8, 0x0a, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xea, 0x0a, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x1c, 0x0b, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x4e, 0x0b, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x80, 0x0b, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xb2, 0x0b, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xe4, 0x0b, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x16, 0x0c, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x48, 0x0c, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x7a, 0x0c, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xac, 0x0c, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xde, 0x0c, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x10, 0x0d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x42, 0x0d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x74, 0x0d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xa6, 0x0d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xd8, 0x0d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x0a, 0x0e, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x3c, 0x0e, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x6e, 0x0e, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xa0, 0x0e, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xd2, 0x0e, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x04, 0x0f, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x36, 0x0f, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x68, 0x0f, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x9a, 0x0f, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xcc, 0x0f, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xfe, 0x0f, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x30, 0x10, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x62, 0x10, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x94, 0x10, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xc6, 0x10, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xf8, 0x10, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x2a, 0x11, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x5c, 0x11, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x8e, 0x11, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xc0, 0x11, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xf2, 0x11, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x24, 0x12, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x56, 0x12, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x88, 0x12, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xba, 0x12, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xec, 0x12, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x1e, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x50, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0x82, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xb4, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
|
||||
{0x03, 0xf2, 0xe6, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
|
||||
|
||||
uint8_t mouse_m721::_c_data_read_3[46][16] = {
|
||||
{0x02, 0xf2, 0x82, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x86, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x8a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x96, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x8e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x92, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x9a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x9e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xaa, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x42, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x46, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x4a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x56, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x4e, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x52, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x5a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x5e, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x6a, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xf2, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xf6, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xfa, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x06, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xfe, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x0a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x0e, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x1a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xa2, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xa6, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xaa, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xb6, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xae, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xb2, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xba, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xbe, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0xca, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x52, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x56, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x5a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x66, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x5e, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x62, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x6a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x6e, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf2, 0x7a, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x02, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
};
|
125
include/m721/getters.cpp
Normal file
125
include/m721/getters.cpp
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
mouse_m721::rd_profile mouse_m721::get_profile(){
|
||||
return _s_profile;
|
||||
}
|
||||
|
||||
uint8_t mouse_m721::get_scrollspeed( rd_profile profile ){
|
||||
return _s_scrollspeeds[profile];
|
||||
}
|
||||
|
||||
mouse_m721::rd_lightmode mouse_m721::get_lightmode( rd_profile profile ){
|
||||
return _s_lightmodes[profile];
|
||||
}
|
||||
|
||||
void mouse_m721::get_color( rd_profile profile, std::array<uint8_t, 3> &color ){
|
||||
color = _s_colors[profile];
|
||||
}
|
||||
|
||||
uint8_t mouse_m721::get_brightness( rd_profile profile ){
|
||||
return _s_brightness_levels[profile];
|
||||
}
|
||||
|
||||
uint8_t mouse_m721::get_speed( rd_profile profile ){
|
||||
return _s_speed_levels[profile];
|
||||
}
|
||||
|
||||
bool mouse_m721::get_dpi_enable( rd_profile profile, int level ){
|
||||
|
||||
// check DPI level bounds
|
||||
if( level < _c_level_min || level > _c_level_max )
|
||||
return false;
|
||||
|
||||
return _s_dpi_enabled[profile][level];
|
||||
}
|
||||
|
||||
int mouse_m721::get_dpi( rd_profile profile, int level, std::array<uint8_t, 2>& dpi ){
|
||||
|
||||
// check DPI level bounds
|
||||
if( level < _c_level_min || level > _c_level_max )
|
||||
return 1;
|
||||
|
||||
dpi[0] = _s_dpi_levels[profile][level][0];
|
||||
dpi[1] = _s_dpi_levels[profile][level][1];
|
||||
return 0;
|
||||
}
|
||||
|
||||
mouse_m721::rd_report_rate mouse_m721::get_report_rate( rd_profile profile ){
|
||||
return _s_report_rates[profile];
|
||||
}
|
||||
|
||||
int mouse_m721::get_key_mapping_raw( mouse_m721::rd_profile profile, int key, std::array<uint8_t, 4>& mapping ){
|
||||
|
||||
// valid key ?
|
||||
if( _c_button_names[key] == "" )
|
||||
return 1;
|
||||
|
||||
mapping[0] = _s_keymap_data[profile][key][0];
|
||||
mapping[1] = _s_keymap_data[profile][key][1];
|
||||
mapping[2] = _s_keymap_data[profile][key][2];
|
||||
mapping[3] = _s_keymap_data[profile][key][3];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::get_key_mapping( mouse_m721::rd_profile profile, int key, std::string& mapping ){
|
||||
|
||||
// valid key ?
|
||||
if( _c_button_names[key] == "" )
|
||||
return 1;
|
||||
|
||||
std::array< uint8_t, 4 > bytes = {
|
||||
_s_keymap_data[profile][key][0],
|
||||
_s_keymap_data[profile][key][1],
|
||||
_s_keymap_data[profile][key][2],
|
||||
_s_keymap_data[profile][key][3]
|
||||
};
|
||||
|
||||
_i_decode_button_mapping( bytes, mapping );
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::get_macro_raw( int number, std::array<uint8_t, 256>& macro ){
|
||||
|
||||
//check if macro_number is valid
|
||||
if( number < 1 || number > 15 )
|
||||
return 1;
|
||||
|
||||
std::copy( _s_macro_data[number-1].begin(), _s_macro_data[number-1].end(), macro.begin() );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::get_macro( int number, std::string& macro ){
|
||||
|
||||
std::stringstream output;
|
||||
|
||||
// macro undefined?
|
||||
if( _s_macro_data[number-1][8] == 0 && _s_macro_data[number-1][9] == 0 && _s_macro_data[number-1][10] == 0 )
|
||||
return 0;
|
||||
|
||||
std::vector< uint8_t > macro_bytes;
|
||||
std::copy( _s_macro_data[number-1].begin(), _s_macro_data[number-1].end(), std::back_inserter(macro_bytes) );
|
||||
|
||||
_i_decode_macro( macro_bytes, output, "", 8 );
|
||||
macro = output.str();
|
||||
return 0;
|
||||
}
|
183
include/m721/helpers.cpp
Normal file
183
include/m721/helpers.cpp
Normal file
|
@ -0,0 +1,183 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
//helper functions
|
||||
|
||||
//init libusb and open mouse
|
||||
int mouse_m721::open_mouse(){
|
||||
return _i_open_mouse( _c_mouse_vid, _c_mouse_pid );
|
||||
}
|
||||
|
||||
// init libusb and open mouse by bus and device
|
||||
int mouse_m721::open_mouse_bus_device( uint8_t bus, uint8_t device ){
|
||||
return _i_open_mouse_bus_device( bus, device );
|
||||
}
|
||||
|
||||
//close mouse
|
||||
int mouse_m721::close_mouse(){
|
||||
return _i_close_mouse();
|
||||
}
|
||||
|
||||
// print current configuration
|
||||
int mouse_m721::print_settings( std::ostream& output ){
|
||||
|
||||
// print configuration
|
||||
output << "# Configuration created by mouse_m721::print_settings().\n";
|
||||
output << "# Currently active profile: " << _s_profile << "\n";
|
||||
|
||||
for( int i = 1; i < 6; i++ ){
|
||||
|
||||
// section header
|
||||
output << "\n[profile" << i << "]\n";
|
||||
|
||||
output << "\n# LED settings\n";
|
||||
|
||||
// color
|
||||
output << "color=";
|
||||
output << std::setfill('0') << std::setw(2) << std::hex << (int)_s_colors[i-1][0];
|
||||
output << std::setfill('0') << std::setw(2) << std::hex << (int)_s_colors[i-1][1];
|
||||
output << std::setfill('0') << std::setw(2) << std::hex << (int)_s_colors[i-1][2];
|
||||
output << std::setfill(' ') << std::setw(0) << std::dec << "\n";
|
||||
|
||||
// brightness
|
||||
output << "brightness=" << (int)_s_brightness_levels[i-1] << "\n";
|
||||
|
||||
// speed
|
||||
output << "speed=" << (int)_s_speed_levels[i-1] << "\n";
|
||||
|
||||
// lightmode
|
||||
output << "lightmode=";
|
||||
if( _s_lightmodes[i-1] == lightmode_off )
|
||||
output << "off\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_breathing )
|
||||
output << "breathing\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_rainbow )
|
||||
output << "rainbow\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_static )
|
||||
output << "static\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_wave )
|
||||
output << "wave\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_alternating )
|
||||
output << "alternating\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_reactive )
|
||||
output << "reactive\n";
|
||||
else if( _s_lightmodes[i-1] == lightmode_flashing )
|
||||
output << "flashing\n";
|
||||
else{
|
||||
output << "unknown, please report as bug\n";
|
||||
}
|
||||
|
||||
// polling rate (report rate)
|
||||
output << "\n";
|
||||
if( _s_report_rates[i-1] == r_125Hz )
|
||||
output << "report_rate=125\n";
|
||||
else if( _s_report_rates[i-1] == r_250Hz )
|
||||
output << "report_rate=250\n";
|
||||
else if( _s_report_rates[i-1] == r_500Hz )
|
||||
output << "report_rate=500\n";
|
||||
else if( _s_report_rates[i-1] == r_1000Hz )
|
||||
output << "report_rate=1000\n";
|
||||
else{
|
||||
output << "# report rate unknown, please report as bug\n";
|
||||
}
|
||||
|
||||
// scrollspeed
|
||||
output << "scrollspeed=" << std::hex << (int)_s_scrollspeeds[i-1] << std::dec << "\n";
|
||||
|
||||
// dpi
|
||||
output << "\n# DPI settings\n";
|
||||
for( int j = 1; j < 6; j++ ){
|
||||
|
||||
if( _s_dpi_enabled[i-1][j-1] )
|
||||
output << "dpi" << j << "_enable=1\n";
|
||||
else
|
||||
output << "dpi" << j << "_enable=0\n";
|
||||
|
||||
// DPI value
|
||||
std::array<uint8_t, 2> dpi_bytes = {_s_dpi_levels[i-1][j-1][0], _s_dpi_levels[i-1][j-1][1]};
|
||||
std::string dpi_string = "";
|
||||
|
||||
if( _i_decode_dpi( dpi_bytes, dpi_string ) == 0 )
|
||||
output << "dpi" << j << "=" << dpi_string << "\n";
|
||||
else
|
||||
output << "\n";
|
||||
}
|
||||
|
||||
// button mapping
|
||||
output << "\n# Button mapping\n";
|
||||
|
||||
for( int j = 0; j < 8; j++ ){
|
||||
std::array< uint8_t, 4 > bytes = {
|
||||
_s_keymap_data[i-1][j][0],
|
||||
_s_keymap_data[i-1][j][1],
|
||||
_s_keymap_data[i-1][j][2],
|
||||
_s_keymap_data[i-1][j][3]
|
||||
};
|
||||
std::string mapping;
|
||||
|
||||
_i_decode_button_mapping( bytes, mapping );
|
||||
output << _c_button_names[j] << "=" << mapping << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
// macros
|
||||
output << "\n# Macros\n";
|
||||
for( int i = 0; i < 15; i++ ){
|
||||
|
||||
// is macro not defined ?
|
||||
if( _s_macro_data[i][8] == 0 && _s_macro_data[i][9] == 0 && _s_macro_data[i][10] == 0 )
|
||||
continue;
|
||||
|
||||
// _i_decode_macros takes a vector as argument, copy array to vector
|
||||
std::vector< uint8_t > macro_bytes( _s_macro_data[i].begin(), _s_macro_data[i].end() );
|
||||
|
||||
// print macro (macro data starts at byte 8)
|
||||
output << "\n;## macro" << i+1 << "\n";
|
||||
_i_decode_macro( macro_bytes, output, ";# ", 8 );
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::_i_decode_dpi( std::array<uint8_t, 2>& dpi_bytes, std::string& dpi_string ){
|
||||
|
||||
// is dpi value known?
|
||||
for( auto dpi_value : _c_dpi_codes ){
|
||||
|
||||
if( dpi_value.second[0] == dpi_bytes[0] && dpi_value.second[1] == dpi_bytes[1] ){
|
||||
dpi_string = std::to_string( dpi_value.first );
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// unknown dpi value
|
||||
std::stringstream conversion_stream;
|
||||
|
||||
conversion_stream << std::setfill('0') << std::hex;
|
||||
conversion_stream << "0x";
|
||||
conversion_stream << std::setw(2) << (int)dpi_bytes[0] << std::setw(2) << (int)dpi_bytes[1];
|
||||
conversion_stream << std::setfill(' ') << std::setw(0) << std::dec;
|
||||
|
||||
dpi_string = conversion_stream.str();
|
||||
|
||||
return 0;
|
||||
}
|
321
include/m721/mouse_m721.h
Normal file
321
include/m721/mouse_m721.h
Normal file
|
@ -0,0 +1,321 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
//main class
|
||||
#ifndef MOUSE_M721
|
||||
#define MOUSE_M721
|
||||
|
||||
#include <libusb.h>
|
||||
#include <map>
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
#include <exception>
|
||||
#include <regex>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <utility>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
|
||||
/**
|
||||
* The main class representing the M721 mouse.
|
||||
* This class has member functions to open, close and apply settings to the mouse.
|
||||
*
|
||||
* There are 4 main types of functions:
|
||||
* - set_*: setters
|
||||
* - get_*: getters
|
||||
* - write_*: write the settings to the mouse
|
||||
* - read_*: read the sttings from the mouse
|
||||
*
|
||||
* Therefore the general procedure when changing settings on the mouse is as follows:
|
||||
* 1. open_mouse() or open_mouse_bus_device()
|
||||
* 2. set_* (this step only changes the internal state of the class)
|
||||
* 3. write_* (this step sends the internal state of the class to the mouse)
|
||||
* 4. close_mouse()
|
||||
*
|
||||
* Private member variables are named as follows:
|
||||
* - \_i\_* for internal variables that determine how the mouse is opened, etc.
|
||||
* - \_s\_* for variables that describe the settings on the mouse
|
||||
* - \_c\_* for constants like keycodes, USB data, minimum and maximum values, etc. (these are not neccessarily defined as const)
|
||||
*/
|
||||
class mouse_m721 : public rd_mouse{
|
||||
|
||||
public:
|
||||
|
||||
/// The default constructor. Sets the default settings.
|
||||
mouse_m721();
|
||||
|
||||
//setter functions
|
||||
/// Set the currently active profile
|
||||
int set_profile( rd_profile profile );
|
||||
|
||||
/** \brief Set the scrollspeed for the specified profile
|
||||
* \see _c_scrollspeed_min
|
||||
* \see _c_scrollspeed_max
|
||||
* \return 0 if successful, 1 if out of bounds
|
||||
*/
|
||||
int set_scrollspeed( rd_profile profile, uint8_t speed );
|
||||
|
||||
/** \brief Set the led mode for the specified profile
|
||||
* \see rd_lightmode
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int set_lightmode( rd_profile profile, rd_lightmode lightmode );
|
||||
|
||||
/** \brief Set the led color for the specified profile
|
||||
* \param color color as {r, g, b}
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int set_color( rd_profile profile, std::array<uint8_t, 3> color );
|
||||
|
||||
/** \brief Set the led brightness for the specified profile
|
||||
* \see _c_brightness_min
|
||||
* \see _c_brightness_max
|
||||
* \return 0 if successful, 1 if out of bounds
|
||||
*/
|
||||
int set_brightness( rd_profile profile, uint8_t brightness );
|
||||
|
||||
/** \brief Set the led animation speed for the specified profile
|
||||
* \see _c_speed_min
|
||||
* \see _c_speed_max
|
||||
* \return 0 if successful, 1 if out of bounds
|
||||
*/
|
||||
int set_speed( rd_profile profile, uint8_t speed );
|
||||
|
||||
/** \brief Enables/Disables a dpi level for the specified profile
|
||||
* \see _c_level_min
|
||||
* \see _c_level_max
|
||||
* \return 0 if successful, 1 if out of bounds
|
||||
*/
|
||||
int set_dpi_enable( rd_profile profile, int level, bool enabled );
|
||||
|
||||
/** \brief Set the value of a dpi level for the specified profile
|
||||
* \see _c_dpi_min
|
||||
* \see _c_dpi_max
|
||||
* \see _c_level_min
|
||||
* \see _c_level_max
|
||||
* \return 0 if successful, 1 if out of bounds or invalid dpi
|
||||
*/
|
||||
int set_dpi( rd_profile profile, int level, std::string dpi );
|
||||
int set_dpi( rd_profile profile, int level, std::array<uint8_t, 2> dpi );
|
||||
|
||||
/** \brief Set a mapping for a button for the specified profile
|
||||
* \param mapping 4 bytes for the usb data packets
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int set_key_mapping( rd_profile profile, int key, std::array<uint8_t, 4> mapping );
|
||||
|
||||
/** \brief Set a mapping for a button for the specified profile
|
||||
* \param mapping button name (see keymap.md)
|
||||
* \return 0 if successful, 1 if mapping is invalid
|
||||
*/
|
||||
int set_key_mapping( rd_profile profile, int key, std::string mapping );
|
||||
|
||||
/** \brief Set the USB poll rate for the specified profile
|
||||
* \see rd_report_rate
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int set_report_rate( rd_profile profile, rd_report_rate report_rate );
|
||||
|
||||
/** \brief Load the macro from the specified file into the specified slot
|
||||
* \param macro_number macro slot (1-15)
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int set_macro( int macro_number, std::string file );
|
||||
|
||||
/** \brief Load all macros from the specified .ini file
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int set_all_macros( std::string file );
|
||||
|
||||
/// Does nothing, exists only for compatibility
|
||||
void set_vid( uint16_t vid ){ (void)vid; }
|
||||
/// Does nothing, exists only for compatibility
|
||||
void set_pid( uint16_t pid ){ (void)pid; }
|
||||
|
||||
|
||||
|
||||
//getter functions
|
||||
/// Get currently active profile
|
||||
rd_profile get_profile();
|
||||
/// Get scrollspeed of specified profile
|
||||
uint8_t get_scrollspeed( rd_profile profile );
|
||||
/// Get led mode of specified profile
|
||||
rd_lightmode get_lightmode( rd_profile profile );
|
||||
/// Get led color of specified profile
|
||||
void get_color( rd_profile profile, std::array<uint8_t, 3> &color );
|
||||
/// Get led brightness of specified profile
|
||||
uint8_t get_brightness( rd_profile profile );
|
||||
/// Get led animation speed of specified profile
|
||||
uint8_t get_speed( rd_profile profile );
|
||||
/// Get dpi level enabled/disabled status of specified profile
|
||||
bool get_dpi_enable( rd_profile profile, int level );
|
||||
/// Get dpi value of specified level and profile
|
||||
int get_dpi( rd_profile profile, int level, std::array<uint8_t, 2>& dpi );
|
||||
/// Get USB poll rate of specified profile
|
||||
rd_report_rate get_report_rate( rd_profile profile );
|
||||
/// Get macro repeat number of specified profile
|
||||
uint8_t get_macro_repeat( int macro_number );
|
||||
/// Get button mapping as a string
|
||||
int get_key_mapping( rd_profile profile, int key, std::string& mapping );
|
||||
/// Get button mapping as a 4-byte value
|
||||
int get_key_mapping_raw( rd_profile profile, int key, std::array<uint8_t, 4>& mapping );
|
||||
/// Get macro as a string
|
||||
int get_macro( int number, std::string& macro );
|
||||
/// Get raw macro bytecode
|
||||
int get_macro_raw( int number, std::array<uint8_t, 256>& macro );
|
||||
|
||||
/// Checks if the mouse has the given vendor and product id
|
||||
static bool has_vid_pid( uint16_t vid, uint16_t pid ){
|
||||
return vid == _c_mouse_vid && pid == _c_mouse_pid;
|
||||
}
|
||||
|
||||
/// Get mouse name
|
||||
static std::string get_name(){
|
||||
return _c_name;
|
||||
}
|
||||
|
||||
//writer functions (apply settings to mouse)
|
||||
/** \brief Write the currently active profile to the mouse
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int write_profile();
|
||||
|
||||
/** \brief Write the settings (leds, button mapping, dpi, etc.) to the mouse
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int write_settings();
|
||||
|
||||
/** \brief Write a macro to the mouse
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int write_macro( int macro_number );
|
||||
|
||||
/** \brief Write the number of repeats for a macro to the mouse
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int write_macro_repeat( int macro_number );
|
||||
|
||||
|
||||
|
||||
//helper functions
|
||||
/** \brief Init libusb and open the mouse by its USB VID and PID
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int open_mouse();
|
||||
|
||||
/** \brief Init libusb and open the mouse by the USB bus and device adress
|
||||
* \return 0 if successful
|
||||
*/
|
||||
int open_mouse_bus_device( uint8_t bus, uint8_t device );
|
||||
|
||||
/** \brief Close the mouse and libusb
|
||||
* \return 0 if successful (always at the moment)
|
||||
*/
|
||||
int close_mouse();
|
||||
|
||||
/// Print the current configuration in .ini format to output
|
||||
int print_settings( std::ostream& output );
|
||||
|
||||
|
||||
|
||||
//reader functions (get settings from the mouse)
|
||||
/// Read the settings and print the raw data to output
|
||||
int dump_settings( std::ostream& output );
|
||||
/**
|
||||
* \brief Read the settings and print the configuration in .ini format to output.
|
||||
* This does not alter the internal settings of the mouse_m721 class.
|
||||
*/
|
||||
int read_and_print_settings( std::ostream& output );
|
||||
/**
|
||||
* \brief Read the settings and print the configuration in .ini format to output.
|
||||
* This updates the internal settings of the mouse_m721 class.
|
||||
*/
|
||||
int read_settings();
|
||||
|
||||
|
||||
|
||||
/// Returns a reference to _c_button_names (physical button names)
|
||||
std::map< int, std::string >& button_names(){ return _c_button_names; }
|
||||
|
||||
private:
|
||||
|
||||
/// Names of the physical buttons
|
||||
static std::map< int, std::string > _c_button_names;
|
||||
|
||||
/// Mapping of real DPI values to bytecode
|
||||
static std::map< unsigned int, std::array<uint8_t, 2> > _c_dpi_codes;
|
||||
|
||||
/// The model name
|
||||
static const std::string _c_name;
|
||||
|
||||
//usb device vars
|
||||
/// USB vendor id
|
||||
static const uint16_t _c_mouse_vid;
|
||||
/// USB product id
|
||||
static const uint16_t _c_mouse_pid;
|
||||
|
||||
//setting vars
|
||||
rd_profile _s_profile;
|
||||
std::array<uint8_t, 5> _s_scrollspeeds;
|
||||
std::array<rd_lightmode, 5> _s_lightmodes;
|
||||
std::array<std::array<uint8_t, 3>, 5> _s_colors;
|
||||
std::array<uint8_t, 5> _s_brightness_levels;
|
||||
std::array<uint8_t, 5> _s_speed_levels;
|
||||
std::array<std::array<bool, 5>, 5> _s_dpi_enabled;
|
||||
std::array<std::array<std::array<uint8_t, 2>, 5>, 5> _s_dpi_levels;
|
||||
std::array<std::array<std::array<uint8_t, 4>, 10>, 5> _s_keymap_data;
|
||||
std::array<rd_report_rate, 5> _s_report_rates;
|
||||
std::array<std::array<uint8_t, 256>, 15> _s_macro_data;
|
||||
std::array<uint8_t, 15> _s_macro_repeat;
|
||||
|
||||
//usb data packets
|
||||
/// Used for changing the active profile
|
||||
static uint8_t _c_data_s_profile[6][16];
|
||||
/// Used for sending the settings, part 1/3
|
||||
static uint8_t _c_data_settings_1[15][16];
|
||||
/// Used for sending the settings, part 2/3
|
||||
static uint8_t _c_data_settings_2[64];
|
||||
/// Used for sending the settings, part 3/3
|
||||
static uint8_t _c_data_settings_3[90][16];
|
||||
/// Used for sending a macro, part 1/3
|
||||
static uint8_t _c_data_macros_1[16];
|
||||
/// Used for sending a macro, part 2/3
|
||||
static uint8_t _c_data_macros_2[256];
|
||||
/// Used for sending a macro, part 3/3
|
||||
static uint8_t _c_data_macros_3[16];
|
||||
/// Lookup table used when specifying which slot to send a macro to
|
||||
static uint8_t _c_data_macros_codes[15][2];
|
||||
/// Used to send the number repeats for a macro
|
||||
static uint8_t _c_data_macros_repeat[16];
|
||||
/// Used to read the settings, part 1/3
|
||||
static uint8_t _c_data_read_1[9][16];
|
||||
/// Used to read the settings, part 2/3
|
||||
static uint8_t _c_data_read_2[85][64];
|
||||
/// Used to read the settings, part 3/3
|
||||
static uint8_t _c_data_read_3[46][16];
|
||||
|
||||
/** Convert raw dpi bytes to a string representation (doesn't validate dpi value)
|
||||
* This function overloads the implementation from rd_mouse and supports actual DPI values.
|
||||
* \return 0 if no error
|
||||
*/
|
||||
static int _i_decode_dpi( std::array<uint8_t, 2>& dpi_bytes, std::string& dpi_string );
|
||||
};
|
||||
|
||||
#endif
|
499
include/m721/readers.cpp
Normal file
499
include/m721/readers.cpp
Normal file
|
@ -0,0 +1,499 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
//reader functions (get settings from mouse)
|
||||
|
||||
int mouse_m721::dump_settings( std::ostream& output ){
|
||||
|
||||
//prepare data 1
|
||||
int rows1 = sizeof(_c_data_read_1) / sizeof(_c_data_read_1[0]);
|
||||
uint8_t buffer1[rows1][16];
|
||||
for( int i = 0; i < rows1; i++ ){
|
||||
std::copy(std::begin(_c_data_read_1[i]), std::end(_c_data_read_1[i]), std::begin(buffer1[i]));
|
||||
}
|
||||
|
||||
//prepare data 2
|
||||
int rows2 = sizeof(_c_data_read_2) / sizeof(_c_data_read_2[0]);
|
||||
uint8_t buffer2[rows2][64];
|
||||
for( int i = 0; i < rows2; i++ ){
|
||||
std::copy(std::begin(_c_data_read_2[i]), std::end(_c_data_read_2[i]), std::begin(buffer2[i]));
|
||||
}
|
||||
|
||||
//prepare data 3
|
||||
int rows3 = sizeof(_c_data_read_3) / sizeof(_c_data_read_3[0]);
|
||||
uint8_t buffer3[rows3][16];
|
||||
for( int i = 0; i < rows3; i++ ){
|
||||
std::copy(std::begin(_c_data_read_3[i]), std::end(_c_data_read_3[i]), std::begin(buffer3[i]));
|
||||
}
|
||||
|
||||
output << "Part 1:\n\n";
|
||||
|
||||
//send data 1
|
||||
uint8_t buffer_in1[16];
|
||||
int num_bytes_in;
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[0], 16, 1000 );
|
||||
for( int i = 1; i < rows1; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[i], 16, 1000 );
|
||||
|
||||
// control in
|
||||
num_bytes_in = libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0302, 0x0002, buffer_in1, 16, 1000 );
|
||||
|
||||
// hexdump
|
||||
if ( num_bytes_in > 0 ){
|
||||
output << std::hex;
|
||||
for( int j = 0; j < num_bytes_in; j++ ){
|
||||
output << std::setfill('0') << std::setw(2) << (int)buffer_in1[j] << " ";
|
||||
}
|
||||
output << "\n\n" << std::dec << std::setw(0) << std::setfill(' ');
|
||||
}
|
||||
}
|
||||
|
||||
output << "Part 2:\n\n";
|
||||
|
||||
//send data 2
|
||||
uint8_t buffer_in2[64];
|
||||
for( int i = 0; i < rows2; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0303, 0x0002, buffer2[i], 64, 1000 );
|
||||
|
||||
// control in
|
||||
num_bytes_in = libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0303, 0x0002, buffer_in2, 64, 1000 );
|
||||
|
||||
// hexdump
|
||||
if ( num_bytes_in > 0 ){
|
||||
output << std::hex;
|
||||
for( int j = 0; j < num_bytes_in; j++ ){
|
||||
output << std::setfill('0') << std::setw(2) << (int)buffer_in2[j] << " ";
|
||||
}
|
||||
output << "\n\n" << std::dec << std::setw(0) << std::setfill(' ');
|
||||
}
|
||||
}
|
||||
|
||||
output << "Part 3:\n\n";
|
||||
|
||||
//send data 3
|
||||
uint8_t buffer_in3[16];
|
||||
for( int i = 0; i < rows3-1; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[i], 16, 1000 );
|
||||
|
||||
// control in
|
||||
num_bytes_in = libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0302, 0x0002, buffer_in3, 16, 1000 );
|
||||
|
||||
// hexdump
|
||||
if ( num_bytes_in > 0 ){
|
||||
output << std::hex;
|
||||
for( int j = 0; j < num_bytes_in; j++ ){
|
||||
output << std::setfill('0') << std::setw(2) << (int)buffer_in3[j] << " ";
|
||||
}
|
||||
output << "\n\n" << std::dec << std::setw(0) << std::setfill(' ');
|
||||
}
|
||||
}
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[45], 16, 1000 );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::read_and_print_settings( std::ostream& output ){
|
||||
|
||||
//prepare data 1
|
||||
int rows1 = sizeof(_c_data_read_1) / sizeof(_c_data_read_1[0]);
|
||||
uint8_t buffer1[rows1][16];
|
||||
for( int i = 0; i < rows1; i++ ){
|
||||
std::copy(std::begin(_c_data_read_1[i]), std::end(_c_data_read_1[i]), std::begin(buffer1[i]));
|
||||
}
|
||||
|
||||
//prepare data 2
|
||||
int rows2 = sizeof(_c_data_read_2) / sizeof(_c_data_read_2[0]);
|
||||
uint8_t buffer2[rows2][64];
|
||||
for( int i = 0; i < rows2; i++ ){
|
||||
std::copy(std::begin(_c_data_read_2[i]), std::end(_c_data_read_2[i]), std::begin(buffer2[i]));
|
||||
}
|
||||
|
||||
//prepare data 3
|
||||
int rows3 = sizeof(_c_data_read_3) / sizeof(_c_data_read_3[0]);
|
||||
uint8_t buffer3[rows3][16];
|
||||
for( int i = 0; i < rows3; i++ ){
|
||||
std::copy(std::begin(_c_data_read_3[i]), std::end(_c_data_read_3[i]), std::begin(buffer3[i]));
|
||||
}
|
||||
|
||||
|
||||
//send data 1
|
||||
uint8_t buffer_in1[8][16] = {{0}};
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[0], 16, 1000 );
|
||||
for( int i = 1; i < rows1; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[i], 16, 1000 );
|
||||
|
||||
// control in
|
||||
libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0302, 0x0002, buffer_in1[i-1], 16, 1000 );
|
||||
|
||||
}
|
||||
|
||||
//send data 2
|
||||
uint8_t buffer_in2[85][64] = {{0}};
|
||||
for( int i = 0; i < rows2; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0303, 0x0002, buffer2[i], 64, 1000 );
|
||||
|
||||
// control in
|
||||
libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0303, 0x0002, buffer_in2[i], 64, 1000 );
|
||||
|
||||
}
|
||||
|
||||
//send data 3
|
||||
uint8_t buffer_in3[45][16] = {{0}};
|
||||
for( int i = 0; i < rows3-1; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[i], 16, 1000 );
|
||||
|
||||
// control in
|
||||
libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0302, 0x0002, buffer_in3[i], 16, 1000 );
|
||||
|
||||
}
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[45], 16, 1000 );
|
||||
|
||||
|
||||
// print configuration
|
||||
output << "# Configuration created with mouse_m908 -R.\n";
|
||||
output << "# This configuration can be send to the mouse with mouse_m908 -c.\n";
|
||||
output << "# Note: reading the scrollspeed is not supported by the mouse.\n";
|
||||
output << "\n# Currently active profile: " << (int)buffer_in1[0][8]+1 << "\n";
|
||||
|
||||
for( int i = 1; i < 6; i++ ){
|
||||
|
||||
// section header
|
||||
output << "\n[profile" << i << "]\n";
|
||||
|
||||
output << "\n# LED settings\n";
|
||||
|
||||
// color
|
||||
output << "color=";
|
||||
output << std::setfill('0') << std::setw(2) << std::hex << (int)buffer_in1[i][8];
|
||||
output << std::setfill('0') << std::setw(2) << std::hex << (int)buffer_in1[i][9];
|
||||
output << std::setfill('0') << std::setw(2) << std::hex << (int)buffer_in1[i][10];
|
||||
output << std::setfill(' ') << std::setw(0) << std::dec << "\n";
|
||||
|
||||
// brightness
|
||||
output << "brightness=" << (int)buffer_in1[i][14] << "\n";
|
||||
|
||||
// speed
|
||||
output << "speed=" << (int)buffer_in1[i][13] << "\n";
|
||||
|
||||
// lightmode
|
||||
std::array<uint8_t, 2> lightmode_bytes = {buffer_in1[i][11], buffer_in1[i][13]};
|
||||
std::string lightmode_string = "";
|
||||
_i_decode_lightmode(lightmode_bytes, lightmode_string);
|
||||
output << "lightmode=" << lightmode_string << "\n";
|
||||
|
||||
// polling rate (report rate)
|
||||
uint8_t report_rate_byte = (i < 4) ? buffer_in1[6][6+(2*i)] : buffer_in1[7][(2*i)];
|
||||
std::string report_rate_string = "";
|
||||
_i_decode_report_rate(report_rate_byte, report_rate_string);
|
||||
output << "report_rate=" << report_rate_string << "\n";
|
||||
|
||||
// dpi
|
||||
output << "\n# DPI settings\n";
|
||||
output << "# Active dpi level for this profile: " << (int)buffer_in2[i-1][8]+1 << "\n";
|
||||
for( int j = 1; j < 6; j++ ){
|
||||
|
||||
// DPI enable
|
||||
output << "dpi" << j << "_enable=" << (int)buffer_in2[i-1][4+(6*j)] << "\n";
|
||||
|
||||
// DPI value
|
||||
std::array<uint8_t, 2> dpi_bytes = {buffer_in2[i-1][5+(6*j)], buffer_in2[i-1][6+(6*j)]};
|
||||
std::string dpi_string = "";
|
||||
|
||||
if( _i_decode_dpi( dpi_bytes, dpi_string ) == 0 )
|
||||
output << "dpi" << j << "=" << dpi_string << "\n";
|
||||
else
|
||||
output << "\n";
|
||||
}
|
||||
|
||||
// button mapping
|
||||
output << "\n# Button mapping\n";
|
||||
|
||||
for( int j = 0; j < 8; j++ ){
|
||||
std::array< uint8_t, 4 > bytes = {
|
||||
buffer_in3[j+(8*(i-1))][8],
|
||||
buffer_in3[j+(8*(i-1))][9],
|
||||
buffer_in3[j+(8*(i-1))][10],
|
||||
buffer_in3[j+(8*(i-1))][11]
|
||||
};
|
||||
std::string mapping;
|
||||
|
||||
_i_decode_button_mapping( bytes, mapping );
|
||||
output << _c_button_names[j] << "=" << mapping << std::endl;
|
||||
}
|
||||
output << "# reading scroll_up and scroll_down is not supported\n";
|
||||
}
|
||||
|
||||
// macros
|
||||
std::array< std::vector< uint8_t >, 15 > macro_bytes;
|
||||
int macronumber = 1;
|
||||
int counter = 0;
|
||||
|
||||
// iterate over buffer_in2
|
||||
for( int i = 5; i < 85; i++ ){
|
||||
|
||||
// valid macronumber?
|
||||
if( macronumber >= 1 && macronumber <= 15 ){
|
||||
|
||||
// extract bytes
|
||||
for( int j = 8; j < 58; j++ ){
|
||||
macro_bytes[macronumber-1].push_back( buffer_in2[i][j] );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// increment counter and macronumber
|
||||
counter++;
|
||||
if( counter == 4 ){
|
||||
counter = 0;
|
||||
macronumber++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// decode macros
|
||||
output << "\n# Macros\n";
|
||||
for( int i = 0; i < 1; i++ ){ // the M719 appears to only support a single macro
|
||||
|
||||
// is macro not defined ?
|
||||
if( macro_bytes[i][0] == 0 && macro_bytes[i][1] == 0 && macro_bytes[i][2] == 0 )
|
||||
continue;
|
||||
|
||||
// print macro
|
||||
output << "\n;## macro" << i+1 << "\n";
|
||||
_i_decode_macro( macro_bytes[i], output, ";# ", 0 );
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::read_settings(){
|
||||
|
||||
//prepare data 1
|
||||
int rows1 = sizeof(_c_data_read_1) / sizeof(_c_data_read_1[0]);
|
||||
uint8_t buffer1[rows1][16];
|
||||
for( int i = 0; i < rows1; i++ ){
|
||||
std::copy(std::begin(_c_data_read_1[i]), std::end(_c_data_read_1[i]), std::begin(buffer1[i]));
|
||||
}
|
||||
|
||||
//prepare data 2
|
||||
int rows2 = sizeof(_c_data_read_2) / sizeof(_c_data_read_2[0]);
|
||||
uint8_t buffer2[rows2][64];
|
||||
for( int i = 0; i < rows2; i++ ){
|
||||
std::copy(std::begin(_c_data_read_2[i]), std::end(_c_data_read_2[i]), std::begin(buffer2[i]));
|
||||
}
|
||||
|
||||
//prepare data 3
|
||||
int rows3 = sizeof(_c_data_read_3) / sizeof(_c_data_read_3[0]);
|
||||
uint8_t buffer3[rows3][16];
|
||||
for( int i = 0; i < rows3; i++ ){
|
||||
std::copy(std::begin(_c_data_read_3[i]), std::end(_c_data_read_3[i]), std::begin(buffer3[i]));
|
||||
}
|
||||
|
||||
|
||||
//send data 1
|
||||
uint8_t buffer_in1[8][16] = {{0}};
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[0], 16, 1000 );
|
||||
for( int i = 1; i < rows1; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[i], 16, 1000 );
|
||||
|
||||
// control in
|
||||
libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0302, 0x0002, buffer_in1[i-1], 16, 1000 );
|
||||
|
||||
}
|
||||
|
||||
//send data 2
|
||||
uint8_t buffer_in2[85][64] = {{0}};
|
||||
for( int i = 0; i < rows2; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0303, 0x0002, buffer2[i], 64, 1000 );
|
||||
|
||||
// control in
|
||||
libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0303, 0x0002, buffer_in2[i], 64, 1000 );
|
||||
|
||||
}
|
||||
|
||||
//send data 3
|
||||
uint8_t buffer_in3[45][16] = {{0}};
|
||||
for( int i = 0; i < rows3-1; i++ ){
|
||||
// control out
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[i], 16, 1000 );
|
||||
|
||||
// control in
|
||||
libusb_control_transfer( _i_handle, 0xa1, 0x01, 0x0302, 0x0002, buffer_in3[i], 16, 1000 );
|
||||
|
||||
}
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[45], 16, 1000 );
|
||||
|
||||
// parse received data
|
||||
|
||||
if( buffer_in1[0][8]+1 == 1 )
|
||||
_s_profile = profile_1;
|
||||
if( buffer_in1[0][8]+1 == 2 )
|
||||
_s_profile = profile_2;
|
||||
if( buffer_in1[0][8]+1 == 3 )
|
||||
_s_profile = profile_3;
|
||||
if( buffer_in1[0][8]+1 == 4 )
|
||||
_s_profile = profile_4;
|
||||
if( buffer_in1[0][8]+1 == 5 )
|
||||
_s_profile = profile_5;
|
||||
|
||||
for( int i = 1; i < 6; i++ ){
|
||||
|
||||
// color
|
||||
_s_colors[i-1][0] = buffer_in1[i][8];
|
||||
_s_colors[i-1][1] = buffer_in1[i][9];
|
||||
_s_colors[i-1][2] = buffer_in1[i][10];
|
||||
|
||||
// brightness
|
||||
_s_brightness_levels[i-1] = buffer_in1[i][14];
|
||||
|
||||
// speed
|
||||
_s_speed_levels[i-1] = buffer_in1[i][13];
|
||||
|
||||
// lightmode
|
||||
if( buffer_in1[i][11] == 0x00 && buffer_in1[i][13] == 0x00 )
|
||||
_s_lightmodes[i-1] = lightmode_off;
|
||||
else if( buffer_in1[i][11] == 0x01 && buffer_in1[i][13] == 0x04 )
|
||||
_s_lightmodes[i-1] = lightmode_breathing;
|
||||
else if( buffer_in1[i][11] == 0x01 && buffer_in1[i][13] == 0x08 )
|
||||
_s_lightmodes[i-1] = lightmode_rainbow;
|
||||
else if( buffer_in1[i][11] == 0x01 && buffer_in1[i][13] == 0x02 )
|
||||
_s_lightmodes[i-1] = lightmode_static;
|
||||
else if( buffer_in1[i][11] == 0x02 && buffer_in1[i][13] == 0x00 )
|
||||
_s_lightmodes[i-1] = lightmode_wave;
|
||||
else if( buffer_in1[i][11] == 0x06 && buffer_in1[i][13] == 0x00 )
|
||||
_s_lightmodes[i-1] = lightmode_alternating;
|
||||
else if( buffer_in1[i][11] == 0x07 && buffer_in1[i][13] == 0x00 )
|
||||
_s_lightmodes[i-1] = lightmode_reactive;
|
||||
else if( buffer_in1[i][11] == 0x01 && buffer_in1[i][13] == 0x10 )
|
||||
_s_lightmodes[i-1] = lightmode_flashing;
|
||||
|
||||
// polling rate (report rate)
|
||||
if( i < 4 ){
|
||||
|
||||
if( buffer_in1[6][6+(2*i)] == 8 )
|
||||
_s_report_rates[i-1] = r_125Hz;
|
||||
else if( buffer_in1[6][6+(2*i)] == 4 )
|
||||
_s_report_rates[i-1] = r_250Hz;
|
||||
else if( buffer_in1[6][6+(2*i)] == 2 )
|
||||
_s_report_rates[i-1] = r_500Hz;
|
||||
else if( buffer_in1[6][6+(2*i)] == 1 )
|
||||
_s_report_rates[i-1] = r_1000Hz;
|
||||
|
||||
} else{
|
||||
|
||||
if( buffer_in1[7][(2*i)] == 8 )
|
||||
_s_report_rates[i-1] = r_125Hz;
|
||||
else if( buffer_in1[7][(2*i)] == 4 )
|
||||
_s_report_rates[i-1] = r_250Hz;
|
||||
else if( buffer_in1[7][(2*i)] == 2 )
|
||||
_s_report_rates[i-1] = r_500Hz;
|
||||
else if( buffer_in1[7][(2*i)] == 1 )
|
||||
_s_report_rates[i-1] = r_1000Hz;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// dpi
|
||||
for( int j = 1; j < 6; j++ ){
|
||||
|
||||
if( buffer_in2[i-1][4+(6*j)] )
|
||||
_s_dpi_enabled[i-1][j-1] = true;
|
||||
else
|
||||
_s_dpi_enabled[i-1][j-1] = false;
|
||||
|
||||
_s_dpi_levels[i-1][j-1][0] = buffer_in2[i-1][5+(6*j)];
|
||||
_s_dpi_levels[i-1][j-1][1] = buffer_in2[i-1][6+(6*j)];
|
||||
|
||||
}
|
||||
|
||||
/* Currently not implemented, missing captured data
|
||||
*
|
||||
// button mapping
|
||||
for( int j = 0; j < 8; j++ ){
|
||||
|
||||
_s_keymap_data[i-1][j][0] = buffer_in3[j+(8*(i-1))][8];
|
||||
_s_keymap_data[i-1][j][1] = buffer_in3[j+(8*(i-1))][9];
|
||||
_s_keymap_data[i-1][j][2] = buffer_in3[j+(8*(i-1))][10];
|
||||
_s_keymap_data[i-1][j][3] = buffer_in3[j+(8*(i-1))][11];
|
||||
|
||||
}
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
||||
// macros
|
||||
|
||||
// macros
|
||||
std::array< std::vector< uint8_t >, 15 > macro_bytes;
|
||||
int macronumber = 1;
|
||||
int counter = 0;
|
||||
|
||||
// iterate over buffer_in2
|
||||
for( int i = 5; i < 85; i++ ){
|
||||
|
||||
// This appears to be wrong
|
||||
//int macronumber = buffer_in2[i][3] - 0x63;
|
||||
|
||||
// valid macronumber?
|
||||
if( macronumber >= 1 && macronumber <= 15 ){
|
||||
|
||||
// extract bytes
|
||||
for( int j = 8; j < 58; j++ ){ // iterate over individual packet
|
||||
macro_bytes[macronumber-1].push_back( buffer_in2[i][j] );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// increment counter and macronumber
|
||||
counter++;
|
||||
if( counter == 4 ){
|
||||
counter = 0;
|
||||
macronumber++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// store extracted bytes in _s_macro_data
|
||||
for( int i = 0; i < 15; i++ ){ // for each macro in macro_bytes
|
||||
|
||||
// for each byte in the macro
|
||||
for( unsigned int j = 0; j < macro_bytes[i].size(); j++ ){
|
||||
|
||||
// failsafe
|
||||
if( j >= (_s_macro_data[i].size()+8) )
|
||||
break;
|
||||
|
||||
_s_macro_data[i][j+8] = macro_bytes[i][j];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
250
include/m721/setters.cpp
Normal file
250
include/m721/setters.cpp
Normal file
|
@ -0,0 +1,250 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
//setter functions
|
||||
|
||||
int mouse_m721::set_profile( rd_profile profile ){
|
||||
_s_profile = profile;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_scrollspeed( rd_profile profile, uint8_t speed ){
|
||||
|
||||
//check if bounds exceeded
|
||||
if( speed < _c_scrollspeed_min || speed > _c_scrollspeed_max ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
_s_scrollspeeds[profile] = speed;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_lightmode( rd_profile profile, rd_lightmode lightmode ){
|
||||
_s_lightmodes[profile] = lightmode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_color( rd_profile profile, std::array<uint8_t, 3> color ){
|
||||
_s_colors[profile] = color;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_brightness( rd_profile profile, uint8_t brightness ){
|
||||
|
||||
//check bounds
|
||||
if( brightness < _c_brightness_min || brightness > _c_brightness_max ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
_s_brightness_levels[profile] = brightness;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_speed( rd_profile profile, uint8_t speed ){
|
||||
|
||||
//check bounds
|
||||
if( speed < _c_speed_min || speed > _c_speed_max ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
_s_speed_levels[profile] = speed;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_dpi_enable( rd_profile profile, int level, bool enabled ){
|
||||
|
||||
//check bounds
|
||||
if( level < _c_level_min || level > _c_level_max ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
_s_dpi_enabled[profile][level] = enabled;
|
||||
|
||||
// check if at least one level enabled
|
||||
int sum = 0;
|
||||
for( int i = _c_level_min; i <= _c_level_max; i++ ){
|
||||
if( _s_dpi_enabled[profile][i] ){
|
||||
sum++;
|
||||
}
|
||||
}
|
||||
|
||||
// if no level enabled: reenable specified level
|
||||
if( sum == 0 ){
|
||||
_s_dpi_enabled[profile][level] = true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_dpi( rd_profile profile, int level, std::string dpi ){
|
||||
|
||||
// check DPI level bounds
|
||||
if( level < _c_level_min || level > _c_level_max )
|
||||
return 1;
|
||||
|
||||
// check format: 0xABCD (raw bytes)
|
||||
if( std::regex_match( dpi, std::regex("0x[[:xdigit:]]{4}") ) ){
|
||||
|
||||
uint8_t b0 = (uint8_t)stoi( dpi.substr(2,2), 0, 16 );
|
||||
uint8_t b1 = (uint8_t)stoi( dpi.substr(4,2), 0, 16 );
|
||||
|
||||
//check bounds
|
||||
if( b0 < _c_dpi_min || b0 > _c_dpi_max || b1 < _c_dpi_2_min || b1 > _c_dpi_2_max )
|
||||
return 1;
|
||||
|
||||
_s_dpi_levels[profile][level][0] = b0;
|
||||
_s_dpi_levels[profile][level][1] = b1;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
// check format: 1234 (real DPI)
|
||||
else if( std::regex_match( dpi, std::regex("[[:digit:]]+") ) ){
|
||||
|
||||
if( _c_dpi_codes.find( std::stoi(dpi) ) != _c_dpi_codes.end() ){
|
||||
|
||||
_s_dpi_levels[profile][level][0] = _c_dpi_codes.at( std::stoi(dpi) )[0];
|
||||
_s_dpi_levels[profile][level][1] = _c_dpi_codes.at( std::stoi(dpi) )[1];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int mouse_m721::set_dpi( rd_profile profile, int level, std::array<uint8_t, 2> dpi ){
|
||||
|
||||
// check DPI level bounds
|
||||
if( level < _c_level_min || level > _c_level_max )
|
||||
return 1;
|
||||
|
||||
//check bounds
|
||||
if( dpi[0] < _c_dpi_min || dpi[0] > _c_dpi_max || dpi[1] < _c_dpi_2_min || dpi[1] > _c_dpi_2_max )
|
||||
return 1;
|
||||
|
||||
_s_dpi_levels[profile][level][0] = dpi[0];
|
||||
_s_dpi_levels[profile][level][1] = dpi[1];
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_key_mapping( rd_profile profile, int key, std::array<uint8_t, 4> mapping ){
|
||||
_s_keymap_data[profile][key][0] = mapping[0];
|
||||
_s_keymap_data[profile][key][1] = mapping[1];
|
||||
_s_keymap_data[profile][key][2] = mapping[2];
|
||||
_s_keymap_data[profile][key][3] = mapping[3];
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_key_mapping( rd_profile profile, int key, std::string mapping ){
|
||||
// valid key ?
|
||||
if( _c_button_names[key] == "" )
|
||||
return 1;
|
||||
|
||||
std::array< uint8_t, 4 > bytes;
|
||||
int return_value = _i_encode_button_mapping( mapping, bytes );
|
||||
|
||||
if( return_value == 0 ){
|
||||
_s_keymap_data[profile][key][0] = bytes[0];
|
||||
_s_keymap_data[profile][key][1] = bytes[1];
|
||||
_s_keymap_data[profile][key][2] = bytes[2];
|
||||
_s_keymap_data[profile][key][3] = bytes[3];
|
||||
}
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
int mouse_m721::set_report_rate( rd_profile profile, rd_report_rate report_rate ){
|
||||
_s_report_rates[profile] = report_rate;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int mouse_m721::set_macro( int macro_number, std::string file ){
|
||||
|
||||
//check if macro_number is valid
|
||||
if( macro_number < 1 || macro_number > 15 ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
//open file
|
||||
std::ifstream config_in( file );
|
||||
if( !config_in.is_open() ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::array< uint8_t, 256 > macro_bytes;
|
||||
_i_encode_macro( macro_bytes, config_in, 8 );
|
||||
std::copy( macro_bytes.begin()+8, macro_bytes.end(), _s_macro_data[macro_number-1].begin()+8 );
|
||||
|
||||
config_in.close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::set_all_macros( std::string file ){
|
||||
|
||||
//open file
|
||||
std::ifstream config_in( file );
|
||||
if( !config_in.is_open() ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
int macro_number = 0; // initially invalid
|
||||
std::array< std::stringstream, 15 > macro_streams;
|
||||
|
||||
// get all macros from file
|
||||
for( std::string line; std::getline(config_in, line); ){
|
||||
|
||||
// empty line → skip
|
||||
if( line.length() == 0 )
|
||||
continue;
|
||||
|
||||
// macro header → set macro_number
|
||||
if( std::regex_match( line, std::regex(";## macro[0-9]*") ) ){
|
||||
macro_number = stoi( std::regex_replace( line, std::regex(";## macro"), "" ), 0, 10 );
|
||||
}
|
||||
|
||||
// macro action
|
||||
if( std::regex_match( line, std::regex(";# .*") ) ){
|
||||
|
||||
// valid macronumber ?
|
||||
if( macro_number < 1 || macro_number > 15 )
|
||||
continue;
|
||||
|
||||
macro_streams.at( macro_number-1 ) << std::regex_replace( line, std::regex(";# "), "" ) << "\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// encode and store all macros
|
||||
for( int i = 0; i < 15; i++ ){
|
||||
|
||||
std::array< uint8_t, 256 > macro_bytes;
|
||||
_i_encode_macro( macro_bytes, macro_streams.at(i), 8 );
|
||||
std::copy( macro_bytes.begin()+8, macro_bytes.end(), _s_macro_data.at(i).begin()+8 );
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
157
include/m721/writers.cpp
Normal file
157
include/m721/writers.cpp
Normal file
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) 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, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../rd_mouse.h"
|
||||
|
||||
//writer functions (apply changes to mouse)
|
||||
|
||||
int mouse_m721::write_profile(){
|
||||
|
||||
//prepare data
|
||||
uint8_t buffer[6][16];
|
||||
for( int i = 0; i < 6; i++ ){
|
||||
std::copy(std::begin(_c_data_s_profile[i]), std::end(_c_data_s_profile[i]), std::begin(buffer[i]));
|
||||
}
|
||||
|
||||
//modify buffer from default to include specified profile
|
||||
buffer[0][8] = _s_profile;
|
||||
|
||||
//send data
|
||||
for( int i = 0; i < 6; i++ ){
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer[i], 16, 1000 );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::write_settings(){
|
||||
|
||||
//prepare data 1
|
||||
int rows1 = sizeof(_c_data_settings_1) / sizeof(_c_data_settings_1[0]);
|
||||
uint8_t buffer1[rows1][16];
|
||||
for( int i = 0; i < rows1; i++ ){
|
||||
std::copy(std::begin(_c_data_settings_1[i]), std::end(_c_data_settings_1[i]), std::begin(buffer1[i]));
|
||||
}
|
||||
|
||||
//prepare data 2
|
||||
uint8_t buffer2[64];
|
||||
std::copy(std::begin(_c_data_settings_2), std::end(_c_data_settings_2), std::begin(buffer2));
|
||||
|
||||
//prepare data 3
|
||||
int rows3 = sizeof(_c_data_settings_3) / sizeof(_c_data_settings_3[0]);
|
||||
uint8_t buffer3[rows3][16];
|
||||
for( int i = 0; i < rows3; i++ ){
|
||||
std::copy(std::begin(_c_data_settings_3[i]), std::end(_c_data_settings_3[i]), std::begin(buffer3[i]));
|
||||
}
|
||||
|
||||
//modify buffers to include settings
|
||||
//scrollspeed
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
buffer2[8+(2*i)] = _s_scrollspeeds[i];
|
||||
}
|
||||
//lightmode
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
std::array<uint8_t, 2> lightmode_bytes = {0x01, 0x02}; // default value is lightmode_static, only relevent in case of an error
|
||||
_i_encode_lightmode( _s_lightmodes[i], lightmode_bytes );
|
||||
buffer1[3+(2*i)][11] = lightmode_bytes.at(0);
|
||||
buffer1[3+(2*i)][13] = lightmode_bytes.at(1);
|
||||
}
|
||||
//color
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
buffer1[3+(2*i)][8] = _s_colors[i].at(0);
|
||||
buffer1[3+(2*i)][9] = _s_colors[i].at(1);
|
||||
buffer1[3+(2*i)][10] = _s_colors[i].at(2);
|
||||
}
|
||||
//brightness
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
buffer1[4+(2*i)][8] = _s_brightness_levels[i];
|
||||
}
|
||||
//speed
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
buffer1[3+(2*i)][12] = _s_speed_levels[i];
|
||||
}
|
||||
//dpi
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
for( int j = 0; j < 5; j++ ){
|
||||
buffer3[7+(5*i)+j][8] = _s_dpi_enabled[j][i];
|
||||
buffer3[7+(5*i)+j][9] = _s_dpi_levels[j][i][0];
|
||||
buffer3[7+(5*i)+j][10] = _s_dpi_levels[j][i][1];
|
||||
}
|
||||
}
|
||||
//key mapping
|
||||
for( int i = 0; i < 5; i++ ){
|
||||
for( int j = 0; j < 10; j++ ){
|
||||
buffer3[35+(10*i)+j][8] = _s_keymap_data[i][j][0];
|
||||
buffer3[35+(10*i)+j][9] = _s_keymap_data[i][j][1];
|
||||
buffer3[35+(10*i)+j][10] = _s_keymap_data[i][j][2];
|
||||
buffer3[35+(10*i)+j][11] = _s_keymap_data[i][j][3];
|
||||
}
|
||||
}
|
||||
//usb report rate
|
||||
for( int i = 0; i < 3; i++ )
|
||||
buffer1[13][8+(2*i)] = _i_encode_report_rate(_s_report_rates[i]);
|
||||
for( int i = 3; i < 5; i++ )
|
||||
buffer1[14][2+(2*i)] = _i_encode_report_rate(_s_report_rates[i]);
|
||||
|
||||
|
||||
//send data 1
|
||||
for( int i = 0; i < rows1; i++ ){
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1[i], 16, 1000 );
|
||||
}
|
||||
|
||||
//send data 2
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer2, 64, 1000 );
|
||||
|
||||
//send data 3
|
||||
for( int i = 0; i < rows3; i++ ){
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3[i], 16, 1000 );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mouse_m721::write_macro( int macro_number ){
|
||||
|
||||
//check if macro_number is valid, the M719 only appears to supports a single macro
|
||||
if( macro_number != 1 ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
//prepare data 1
|
||||
uint8_t buffer1[16];
|
||||
std::copy(std::begin(_c_data_macros_1), std::end(_c_data_macros_1), std::begin(buffer1));
|
||||
|
||||
//prepare data 2
|
||||
uint8_t buffer2[265];
|
||||
std::copy(std::begin(_s_macro_data[macro_number-1]), std::end(_s_macro_data[macro_number-1]), std::begin(buffer2));
|
||||
|
||||
//prepare data 3
|
||||
uint8_t buffer3[16];
|
||||
std::copy(std::begin(_c_data_macros_3), std::end(_c_data_macros_3), std::begin(buffer3));
|
||||
|
||||
//send data 1
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer1, 16, 1000 );
|
||||
|
||||
//send data 2
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer2, 256, 1000 );
|
||||
|
||||
//send data 3
|
||||
libusb_control_transfer( _i_handle, 0x21, 0x09, 0x0302, 0x0002, buffer3, 16, 1000 );
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -46,6 +46,7 @@ class mouse_m709;
|
|||
class mouse_m711;
|
||||
class mouse_m715;
|
||||
class mouse_m719;
|
||||
class mouse_m721;
|
||||
class mouse_m908;
|
||||
class mouse_m913;
|
||||
class mouse_m990;
|
||||
|
@ -128,6 +129,7 @@ class rd_mouse{
|
|||
mouse_m711,
|
||||
mouse_m715,
|
||||
mouse_m719,
|
||||
mouse_m721,
|
||||
mouse_m908,
|
||||
mouse_m913,
|
||||
mouse_m990,
|
||||
|
@ -285,6 +287,7 @@ class rd_mouse{
|
|||
#include "m711/mouse_m711.h"
|
||||
#include "m715/mouse_m715.h"
|
||||
#include "m719/mouse_m719.h"
|
||||
#include "m721/mouse_m721.h"
|
||||
#include "m913/mouse_m913.h"
|
||||
#include "m990/mouse_m990.h"
|
||||
#include "m990chroma/mouse_m990chroma.h"
|
||||
|
|
25
makefile
25
makefile
|
@ -14,7 +14,7 @@ LIBS != pkg-config --libs libusb-1.0
|
|||
VERSION_STRING = "\"3.1\""
|
||||
|
||||
# compile
|
||||
build: m908 m709 m711 m715 m719 m913 m990 m990chroma generic data_rd.o rd_mouse.o load_config.o mouse_m908.o
|
||||
build: m908 m709 m711 m715 m719 m721 m913 m990 m990chroma generic data_rd.o rd_mouse.o load_config.o mouse_m908.o
|
||||
$(CC) *.o -o mouse_m908 $(LIBS) $(CC_OPTIONS)
|
||||
|
||||
# copy all files to their correct location
|
||||
|
@ -83,6 +83,8 @@ m715: constructor_m715.o data_m715.o getters_m715.o helpers_m715.o setters_m715.
|
|||
|
||||
m719: constructor_m719.o data_m719.o getters_m719.o helpers_m719.o setters_m719.o writers_m719.o readers_m719.o
|
||||
|
||||
m721: constructor_m721.o data_m721.o getters_m721.o helpers_m721.o setters_m721.o writers_m721.o readers_m721.o
|
||||
|
||||
m913: constructor_m913.o data_m913.o getters_m913.o helpers_m913.o setters_m913.o writers_m913.o readers_m913.o
|
||||
|
||||
m990: constructor_m990.o data_m990.o getters_m990.o helpers_m990.o setters_m990.o writers_m990.o readers_m990.o
|
||||
|
@ -209,6 +211,27 @@ writers_m719.o:
|
|||
readers_m719.o:
|
||||
$(CC) -c include/m719/readers.cpp $(CC_OPTIONS) -o readers_m719.o
|
||||
|
||||
constructor_m721.o:
|
||||
$(CC) -c include/m721/constructor.cpp $(CC_OPTIONS) -o constructor_m721.o
|
||||
|
||||
data_m721.o:
|
||||
$(CC) -c include/m721/data.cpp $(CC_OPTIONS) -o data_m721.o
|
||||
|
||||
getters_m721.o:
|
||||
$(CC) -c include/m721/getters.cpp $(CC_OPTIONS) -o getters_m721.o
|
||||
|
||||
helpers_m721.o:
|
||||
$(CC) -c include/m721/helpers.cpp $(CC_OPTIONS) -o helpers_m721.o
|
||||
|
||||
setters_m721.o:
|
||||
$(CC) -c include/m721/setters.cpp $(CC_OPTIONS) -o setters_m721.o
|
||||
|
||||
writers_m721.o:
|
||||
$(CC) -c include/m721/writers.cpp $(CC_OPTIONS) -o writers_m721.o
|
||||
|
||||
readers_m721.o:
|
||||
$(CC) -c include/m721/readers.cpp $(CC_OPTIONS) -o readers_m721.o
|
||||
|
||||
constructor_generic.o:
|
||||
$(CC) -c include/generic/constructor.cpp $(CC_OPTIONS) -o constructor_generic.o
|
||||
|
||||
|
|
Loading…
Reference in a new issue