5
5
from typing import Callable , Union , List
6
6
7
7
# current version number
8
- __version__ = "0.1.3 "
8
+ __version__ = "1. 0.1"
9
9
10
10
# clock for timing
11
11
high_acc_clock = timeit .default_timer
@@ -58,11 +58,18 @@ class DofCallback:
58
58
"""Register new DoF callback"""
59
59
60
60
def __init__ (
61
- self , axis : str , callback : Callable [[int ], None ], sleep : float = 0.0
61
+ self ,
62
+ axis : str ,
63
+ callback : Callable [[int ], None ],
64
+ sleep : float = 0.0 ,
65
+ callback_minus : Callable [[int ], None ] = None ,
66
+ filter : float = 0.0
62
67
):
63
68
self .axis = axis
64
69
self .callback = callback
65
70
self .sleep = sleep
71
+ self .callback_minus = callback_minus
72
+ self .filter = filter
66
73
67
74
68
75
class Config :
@@ -262,11 +269,19 @@ def process(self, data):
262
269
# foreach all callbacks (ButtonCallback)
263
270
for block_dof_callback in self .dof_callback_arr :
264
271
now = high_acc_clock ()
265
- axis = block_dof_callback .axis
266
- if now >= self .dict_state_last [axis ] + block_dof_callback .sleep :
267
- # if True:
268
- block_dof_callback .callback (self .tuple_state , self .dict_state [axis ])
269
- self .dict_state_last [axis ] = now
272
+ axis_name = block_dof_callback .axis
273
+ if now >= self .dict_state_last [axis_name ] + block_dof_callback .sleep :
274
+ axis_val = self .dict_state [axis_name ]
275
+ # is minus callback defined
276
+ if block_dof_callback .callback_minus :
277
+ # is axis value greater than filter
278
+ if axis_val > block_dof_callback .filter :
279
+ block_dof_callback .callback (self .tuple_state , axis_val )
280
+ elif axis_val < - block_dof_callback .filter :
281
+ block_dof_callback .callback_minus (self .tuple_state , axis_val )
282
+ else :
283
+ block_dof_callback .callback (self .tuple_state , axis_val )
284
+ self .dict_state_last [axis_name ] = now
270
285
271
286
# only call the button callback if the button state actually changed
272
287
if self .button_callback and button_changed :
@@ -289,7 +304,8 @@ def process(self, data):
289
304
run = False
290
305
# call callback
291
306
if run :
292
- block_button_callback .callback (self .tuple_state , self .tuple_state .buttons , block_button_callback .buttons )
307
+ block_button_callback .callback (self .tuple_state , self .tuple_state .buttons ,
308
+ block_button_callback .buttons )
293
309
294
310
def config_set (self , config : Config ):
295
311
"""Set new configuration of mouse from Config class"""
@@ -693,7 +709,7 @@ def open(
693
709
694
710
695
711
def check_config (callback = None , dof_callback = None , dof_callback_arr = None , button_callback = None ,
696
- button_callback_arr = None ):
712
+ button_callback_arr = None ):
697
713
"""Check that the input configuration has the correct components.
698
714
Raise an exception if it encounters incorrect component.
699
715
"""
0 commit comments