@@ -230,6 +230,7 @@ def AppendToDeviceList(self, device_list, source, device_type):
230
230
231
231
def GetDevices (self ):
232
232
"""Return a list of current sensor/actuator devices"""
233
+ manager .deviceDetector ()
233
234
device_list = manager .getDeviceList ()
234
235
devices = []
235
236
for dev in device_list :
@@ -282,67 +283,65 @@ def BusInfo(self):
282
283
283
284
def SensorsInfo (self ):
284
285
"""Return a dict with current sensor states for all enabled sensors"""
285
- with self .sensorMutex :
286
- devices = self .GetDevices ()
287
- debug (str (time ()) + ' Got devices info ' + str (self .sensorsRefreshCount ))
288
- if devices is None :
289
- return {}
290
- for value in devices :
291
- sensor = instance .deviceInstance (value ['name' ])
292
- if 'enabled' not in value or value ['enabled' ] == 1 :
293
- sleep (SENSOR_INFO_SLEEP )
294
- try :
295
- if value ['type' ] == 'Temperature' :
296
- value ['Celsius' ] = self .CallDeviceFunction (sensor .getCelsius )
297
- value ['Fahrenheit' ] = self .CallDeviceFunction (sensor .getFahrenheit )
298
- value ['Kelvin' ] = self .CallDeviceFunction (sensor .getKelvin )
299
- if value ['type' ] == 'Pressure' :
300
- value ['Pascal' ] = self .CallDeviceFunction (sensor .getPascal )
301
- if value ['type' ] == 'Luminosity' :
302
- value ['Lux' ] = self .CallDeviceFunction (sensor .getLux )
303
- if value ['type' ] == 'Distance' :
304
- value ['Centimeter' ] = self .CallDeviceFunction (sensor .getCentimeter )
305
- value ['Inch' ] = self .CallDeviceFunction (sensor .getInch )
306
- if value ['type' ] in ('ADC' , 'DAC' , 'PWM' ):
307
- value ['channelCount' ] = self .CallDeviceFunction (sensor .analogCount )
308
- value ['maxInteger' ] = self .CallDeviceFunction (sensor .analogMaximum )
309
- value ['resolution' ] = self .CallDeviceFunction (sensor .analogResolution )
310
- value ['allInteger' ] = self .CallDeviceFunction (sensor .analogReadAll )
311
- value ['allVolt' ] = self .CallDeviceFunction (sensor .analogReadAllVolt )
312
- value ['allFloat' ] = self .CallDeviceFunction (sensor .analogReadAllFloat )
313
- if value ['type' ] in 'DAC' :
314
- value ['vref' ] = self .CallDeviceFunction (sensor .analogReference )
315
- if value ['type' ] == 'PWM' :
316
- value ['channelCount' ] = self .CallDeviceFunction (sensor .pwmCount )
317
- value ['maxInteger' ] = self .CallDeviceFunction (sensor .pwmMaximum )
318
- value ['resolution' ] = self .CallDeviceFunction (sensor .pwmResolution )
319
- value ['all' ] = self .CallDeviceFunction (sensor .pwmWildcard )
320
- if value ['type' ] == 'Humidity' :
321
- value ['float' ] = self .CallDeviceFunction (sensor .getHumidity )
322
- value ['percent' ] = self .CallDeviceFunction (sensor .getHumidityPercent )
323
- if value ['type' ] == 'PiFaceDigital' :
324
- value ['all' ] = self .CallDeviceFunction (sensor .readAll )
325
- if value ['type' ] in ('DigitalSensor' , 'DigitalActuator' ):
326
- value ['value' ] = self .CallDeviceFunction (sensor .read )
327
- if value ['type' ] == 'GPIOPort' :
328
- value ['channelCount' ] = self .CallDeviceFunction (sensor .digitalCount )
329
- value ['all' ] = self .CallDeviceFunction (sensor .wildcard )
330
- if value ['type' ] == 'AnalogSensor' :
331
- value ['integer' ] = self .CallDeviceFunction (sensor .read )
332
- value ['float' ] = self .CallDeviceFunction (sensor .readFloat )
333
- value ['volt' ] = self .CallDeviceFunction (sensor .readVolt )
334
- if value ['type' ] == 'ServoMotor' :
335
- value ['angle' ] = self .CallDeviceFunction (sensor .readAngle )
336
- if value ['type' ] == 'AnalogActuator' :
337
- value ['float' ] = self .CallDeviceFunction (sensor .readFloat )
338
- except :
339
- exception ("Sensor values failed: " + value ['type' ] + " " + value ['name' ])
286
+ devices = self .GetDevices ()
287
+ debug (str (time ()) + ' Got devices info ' + str (self .sensorsRefreshCount ))
288
+ if devices is None :
289
+ return {}
290
+ for value in devices :
291
+ sensor = instance .deviceInstance (value ['name' ])
292
+ if 'enabled' not in value or value ['enabled' ] == 1 :
293
+ sleep (SENSOR_INFO_SLEEP )
340
294
try :
341
- if 'hash' in value :
342
- value ['sensor' ] = value ['hash' ]
343
- del value ['hash' ]
344
- except KeyError :
345
- pass
295
+ if value ['type' ] == 'Temperature' :
296
+ value ['Celsius' ] = self .CallDeviceFunction (sensor .getCelsius )
297
+ value ['Fahrenheit' ] = self .CallDeviceFunction (sensor .getFahrenheit )
298
+ value ['Kelvin' ] = self .CallDeviceFunction (sensor .getKelvin )
299
+ if value ['type' ] == 'Pressure' :
300
+ value ['Pascal' ] = self .CallDeviceFunction (sensor .getPascal )
301
+ if value ['type' ] == 'Luminosity' :
302
+ value ['Lux' ] = self .CallDeviceFunction (sensor .getLux )
303
+ if value ['type' ] == 'Distance' :
304
+ value ['Centimeter' ] = self .CallDeviceFunction (sensor .getCentimeter )
305
+ value ['Inch' ] = self .CallDeviceFunction (sensor .getInch )
306
+ if value ['type' ] in ('ADC' , 'DAC' ):
307
+ value ['channelCount' ] = self .CallDeviceFunction (sensor .analogCount )
308
+ value ['maxInteger' ] = self .CallDeviceFunction (sensor .analogMaximum )
309
+ value ['resolution' ] = self .CallDeviceFunction (sensor .analogResolution )
310
+ value ['allInteger' ] = self .CallDeviceFunction (sensor .analogReadAll )
311
+ value ['allVolt' ] = self .CallDeviceFunction (sensor .analogReadAllVolt )
312
+ value ['allFloat' ] = self .CallDeviceFunction (sensor .analogReadAllFloat )
313
+ if value ['type' ] == 'DAC' :
314
+ value ['vref' ] = self .CallDeviceFunction (sensor .analogReference )
315
+ if value ['type' ] == 'PWM' :
316
+ value ['channelCount' ] = self .CallDeviceFunction (sensor .pwmCount )
317
+ value ['maxInteger' ] = self .CallDeviceFunction (sensor .pwmMaximum )
318
+ value ['resolution' ] = self .CallDeviceFunction (sensor .pwmResolution )
319
+ value ['all' ] = self .CallDeviceFunction (sensor .pwmWildcard )
320
+ if value ['type' ] == 'Humidity' :
321
+ value ['float' ] = self .CallDeviceFunction (sensor .getHumidity )
322
+ value ['percent' ] = self .CallDeviceFunction (sensor .getHumidityPercent )
323
+ if value ['type' ] in ('DigitalSensor' , 'DigitalActuator' ):
324
+ value ['value' ] = self .CallDeviceFunction (sensor .read )
325
+ if value ['type' ] == 'GPIOPort' :
326
+ value ['channelCount' ] = self .CallDeviceFunction (sensor .digitalCount )
327
+ value ['all' ] = self .CallDeviceFunction (sensor .wildcard )
328
+ if value ['type' ] == 'AnalogSensor' :
329
+ value ['integer' ] = self .CallDeviceFunction (sensor .read )
330
+ value ['float' ] = self .CallDeviceFunction (sensor .readFloat )
331
+ value ['volt' ] = self .CallDeviceFunction (sensor .readVolt )
332
+ if value ['type' ] == 'ServoMotor' :
333
+ value ['angle' ] = self .CallDeviceFunction (sensor .readAngle )
334
+ if value ['type' ] == 'AnalogActuator' :
335
+ value ['float' ] = self .CallDeviceFunction (sensor .readFloat )
336
+ except :
337
+ exception ("Sensor values failed: " + value ['type' ] + " " + value ['name' ])
338
+ try :
339
+ if 'hash' in value :
340
+ value ['sensor' ] = value ['hash' ]
341
+ del value ['hash' ]
342
+ except KeyError :
343
+ pass
344
+ with self .sensorMutex :
346
345
if self .currentSensorsInfo :
347
346
del self .currentSensorsInfo
348
347
self .currentSensorsInfo = None
0 commit comments