def __init__(self, hci_device_number=0, logger=None, events_config=None):
self._logger = logger or logging.getLogger(__name__)
self._event_parser = EventParser(config=events_config, logger=self._logger)
self._agent_events_sender = AgentEventsSender(logger=self._logger)
self._hci_device_number = hci_device_number
try:
subprocess.check_call(['hciconfig', self.hci_device_name, 'down'])
except subprocess.CalledProcessError:
self._logger.error('Could not run hciconfig down command for HCI device')
raise
self._hci_socket = create_bt_socket_hci_channel_user(hci_device_number)
self._logger.info('bind to %s complete', self.hci_device_name)
self._pty_master, pty_slave = pty.openpty()
self._pty_fd = os.fdopen(self._pty_master, 'rwb')
hci_tty = os.ttyname(pty_slave)
self._logger.debug('TTY slave for the virtual HCI: %s', hci_tty)
try:
subprocess.check_call(['hciattach', hci_tty, 'any'])
except subprocess.CalledProcessError:
self._logger.error('Could not run hciattach on PTY device')
raise
self._inputs = [self._pty_fd, self._hci_socket]
self._pty_buffer = StringIO() # Used as a seekable stream
self._gatt_logger = GattLogger(self._logger)
self._should_stop = False
评论列表
文章目录