Source code for obci.drivers.eeg.driver_discovery.driver_discovery
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import json
from obci.utils import openbci_logging as logger
DISCOVERY_MODULE_NAMES = [
'amplifier_virtual_discovery',
'amplifier_tmsi_bt_discovery',
'amplifier_tmsi_usb_discovery',
]
BASE_MODULE = 'obci.drivers.eeg.driver_discovery'
LOADED_MODULE_NAMES = []
discovery_modules = []
LOGGER = logger.get_logger("DriverDiscovery", "info")
for mod_name in DISCOVERY_MODULE_NAMES:
name = BASE_MODULE + '.' + mod_name
try:
__import__(name)
except ImportError:
LOGGER.error("could not import discovery module %s" % name)
continue
discovery_modules.append(sys.modules[name])
LOADED_MODULE_NAMES.append(mod_name)
[docs]def find_drivers():
return _find_amps(discovery_modules)
def _filter_modules(pattern):
return [sys.modules[BASE_MODULE + '.' + mod] for mod in LOADED_MODULE_NAMES if pattern in mod]
def _find_amps(module_list):
descriptions = []
for mod in module_list:
try:
descriptions += mod.driver_descriptions()
except Exception as e:
LOGGER.warning("Discovery failed: " + str(mod))
return descriptions
[docs]def find_usb_amps():
modules = _filter_modules('usb')
return _find_amps(modules)
[docs]def find_bluetooth_amps():
modules = _filter_modules('bt')
return _find_amps(modules)
[docs]def find_virtual_amps():
modules = _filter_modules('virtual')
return _find_amps(modules)
if __name__ == '__main__':
drivers = find_drivers()
print(json.dumps(drivers, indent=4))