@@ -36,105 +36,100 @@ def __init__(self, indev, i2c):
3636self ._indev = indev
3737self ._i2c = i2c
3838
39- self ._config_data = bytearray (186 )
39+ self ._config_data = bytearray (_CONFIG_FRESH_REG - _CONFIG_START_REG )
4040self ._config_mv = memoryview (self ._config_data )
4141
4242self ._indev ._read_reg (_CONFIG_START_REG ,buf = self ._config_mv [2 :])
4343
4444@property
4545def width (self ):
4646return (
47- (self ._config_data [_X_OUTPUT_MAX_HIGH_POS + 2 ]<< 8 )|
48- self ._config_data [_X_OUTPUT_MAX_LOW_POS + 2 ]
47+ (self ._config_data [_X_OUTPUT_MAX_HIGH_POS ]<< 8 )|
48+ self ._config_data [_X_OUTPUT_MAX_LOW_POS ]
4949 )
5050
5151@width .setter
5252def width (self ,value ):
53- self ._config_data [_X_OUTPUT_MAX_LOW_POS + 2 ]= value & 0xFF
54- self ._config_data [_X_OUTPUT_MAX_HIGH_POS + 2 ]= (value >> 8 )& 0xFF
53+ self ._config_data [_X_OUTPUT_MAX_LOW_POS ]= value & 0xFF
54+ self ._config_data [_X_OUTPUT_MAX_HIGH_POS ]= (value >> 8 )& 0xFF
5555
5656@property
5757def height (self ):
5858return (
59- (self ._config_data [_Y_OUTPUT_MAX_HIGH_POS + 2 ]<< 8 )|
60- self ._config_data [_Y_OUTPUT_MAX_LOW_POS + 2 ]
59+ (self ._config_data [_Y_OUTPUT_MAX_HIGH_POS ]<< 8 )|
60+ self ._config_data [_Y_OUTPUT_MAX_LOW_POS ]
6161 )
6262
6363@height .setter
6464def height (self ,value ):
65- self ._config_data [_Y_OUTPUT_MAX_LOW_POS + 2 ]= value & 0xFF
66- self ._config_data [_Y_OUTPUT_MAX_HIGH_POS + 2 ]= (value >> 8 )& 0xFF
65+ self ._config_data [_Y_OUTPUT_MAX_LOW_POS ]= value & 0xFF
66+ self ._config_data [_Y_OUTPUT_MAX_HIGH_POS ]= (value >> 8 )& 0xFF
6767
6868@property
6969def noise_reduction (self ):
70- return self ._config_data [_NOISE_REDUCTION_POS + 2 ]& 0x0F
70+ return self ._config_data [_NOISE_REDUCTION_POS ]& 0x0F
7171
7272@noise_reduction .setter
7373def noise_reduction (self ,value ):
74- upper_val = self ._config_data [_NOISE_REDUCTION_POS + 2 ]>> 4
74+ upper_val = self ._config_data [_NOISE_REDUCTION_POS ]>> 4
7575self ._config_data [_NOISE_REDUCTION_POS + 2 ]= (upper_val << 4 )| (value & 0x0F )
7676
7777@property
7878def touch_press_level (self ):
79- return self ._config_data [_TOUCH_PRESS_LEVEL_POS + 2 ]
79+ return self ._config_data [_TOUCH_PRESS_LEVEL_POS ]
8080
8181@touch_press_level .setter
8282def touch_press_level (self ,value ):
83- self ._config_data [_TOUCH_PRESS_LEVEL_POS + 2 ]= value & 0xFF
83+ self ._config_data [_TOUCH_PRESS_LEVEL_POS ]= value & 0xFF
8484
8585@property
8686def touch_leave_level (self ):
87- return self ._config_data [_TOUCH_LEAVE_LEVEL_POS + 2 ]
87+ return self ._config_data [_TOUCH_LEAVE_LEVEL_POS ]
8888
8989@touch_leave_level .setter
9090def touch_leave_level (self ,value ):
91- self ._config_data [_TOUCH_LEAVE_LEVEL_POS + 2 ]= value & 0xFF
91+ self ._config_data [_TOUCH_LEAVE_LEVEL_POS ]= value & 0xFF
9292
9393@property
9494def pad_left (self ):
95- return self ._config_data [_HOR_SPACE_POS + 2 ]>> 4
95+ return self ._config_data [_HOR_SPACE_POS ]>> 4
9696
9797@pad_left .setter
9898def pad_left (self ,value ):
99- self ._config_data [_HOR_SPACE_POS + 2 ]= (value << 4 )| self .pad_right
99+ self ._config_data [_HOR_SPACE_POS ]= (value << 4 )| self .pad_right
100100
101101@property
102102def pad_right (self ):
103- return self ._config_data [_HOR_SPACE_POS + 2 ]& 0xF
103+ return self ._config_data [_HOR_SPACE_POS ]& 0xF
104104
105105@pad_right .setter
106106def pad_right (self ,value ):
107- self ._config_data [_HOR_SPACE_POS + 2 ]= (self .pad_left << 4 )| (value & 0xF )
107+ self ._config_data [_HOR_SPACE_POS ]= (self .pad_left << 4 )| (value & 0xF )
108108
109109@property
110110def pad_top (self ):
111- return self ._config_data [_VER_SPACE_POS + 2 ]>> 4
111+ return self ._config_data [_VER_SPACE_POS ]>> 4
112112
113113@pad_top .setter
114114def pad_top (self ,value ):
115- self ._config_data [_VER_SPACE_POS + 2 ]= (value << 4 )| self .pad_bottom
115+ self ._config_data [_VER_SPACE_POS ]= (value << 4 )| self .pad_bottom
116116
117117@property
118118def pad_bottom (self ):
119- return self ._config_data [_VER_SPACE_POS + 2 ]& 0xF
119+ return self ._config_data [_VER_SPACE_POS ]& 0xF
120120
121121@pad_bottom .setter
122122def pad_bottom (self ,value ):
123- self ._config_data [_VER_SPACE_POS + 2 ]= (self .pad_top << 4 )| (value & 0xF )
123+ self ._config_data [_VER_SPACE_POS ]= (self .pad_top << 4 )| (value & 0xF )
124124
125125def save (self ):
126- checksum = ((~ sum (self ._config_data [2 :]))+ 1 )& 0xFF
126+ # calculate the checksum
127+ self ._config_data [_CONFIG_CHKSUM_REG - _CONFIG_START_REG ]= ((~ sum (self ._config_data [:- 2 ]))+ 1 )& 0xFF
127128
128- self ._config_data [0 ]= _CONFIG_CHKSUM_REG >> 8
129- self ._config_data [1 ]= _CONFIG_CHKSUM_REG & 0xFF
130- self ._indev ._write_reg (_CONFIG_CHKSUM_REG ,buf = self ._config_mv )
129+ # set the flag to save the data the data
130+ self ._config_data [- 1 ]= 0x01 # _CONFIG_FRESH_REG
131131
132- self ._config_data [2 ]= checksum
133- self ._indev ._write_reg (_CONFIG_CHKSUM_REG ,buf = self ._config_mv [:3 ])
134-
135- self ._config_data [0 ]= _CONFIG_FRESH_REG >> 8
136- self ._config_data [1 ]= _CONFIG_FRESH_REG & 0xFF
137- self ._config_data [2 ]= 0x01
138- self ._indev ._write_reg (_CONFIG_FRESH_REG ,buf = self ._config_mv [:3 ])
132+ # write all config data to the touch IC
133+ self ._indev ._write_reg (_CONFIG_START_REG ,buf = self ._config_mv )
139134
140135self ._indev .hw_reset ()