@@ -238,59 +238,6 @@ def prepare_dev(
238238 return DeviceInfo (dev , axis_arr , sensor_dir , target_freqs , min_freqs )
239239
240240
241- def set_powersave (dev : DeviceInfo , state : bool , update_trigger : bool ):
242- freqs = dev .min_freqs if state else dev .freqs
243-
244- write_sysfs (dev .sysfs , "buffer/enable" , 0 )
245- for a , f in freqs .items ():
246- if (
247- a
248- and f
249- and os .path .isfile (os .path .join (dev .sysfs , f"in_{ a } _sampling_frequency" ))
250- ):
251- try :
252- write_sysfs (dev .sysfs , f"in_{ a } _sampling_frequency" , f )
253- logger .info (
254- f"Set { 'powersave' if state else 'normal' } frequency { f } for { a } "
255- )
256- except Exception as e :
257- logger .error (
258- f"Could not set { 'powersave' if state else 'normal' } frequency for { a } :\n { e } "
259- )
260-
261- if not update_trigger :
262- return
263-
264- # Find trigger
265- trig = None
266- for fn in os .listdir ("/sys/bus/iio/devices" ):
267- if not fn .startswith ("trigger" ):
268- continue
269- with open (os .path .join ("/sys/bus/iio/devices" , fn , "name" ), "r" ) as f :
270- if f .read ().strip () == "hhd" :
271- trig = fn
272- break
273-
274- write_sysfs (dev .sysfs , "buffer/enable" , 1 )
275-
276- if not trig :
277- return
278-
279- freq = next (iter ([f for f in freqs if f ]), None )
280- if not freq :
281- return
282-
283- try :
284- write_sysfs (os .path .dirname (trig ), "sampling_frequency" , freq )
285- logger .info (
286- f"Set { 'powersave' if state else 'normal' } trigger frequency { freq } "
287- )
288- except Exception as e :
289- logger .error (
290- f"Could not set { 'powersave' if state else 'normal' } trigger frequency:\n { e } "
291- )
292-
293-
294241def close_dev (dev : DeviceInfo ):
295242 write_sysfs (dev .sysfs , "buffer/enable" , 0 )
296243
@@ -368,16 +315,18 @@ def close(self, exit: bool):
368315 return True
369316
370317 def consume (self , events : Sequence [Event ]) -> None :
371- if not self .dev :
372- return
373-
374318 powersave = None
375319 for e in events :
376320 if e ["type" ] == "configuration" and e ["code" ] == "imu_powersave" :
377321 powersave = bool (e ["value" ])
378322
379323 if powersave is not None :
380- set_powersave (self .dev , powersave , self .update_trigger )
324+ logger .info ("IMU powersave: %s" , powersave )
325+ if powersave and self .dev :
326+ self .close (False )
327+ elif not powersave and not self .dev :
328+ self .open ()
329+
381330
382331 def produce (self , fds : Sequence [int ]) -> Sequence [Event ]:
383332 if self .fd not in fds or not self .dev :
0 commit comments