def scan_ll_feature(self, paddr, patype, timeout: int=10): """LL feature scanning paddr - Peer addresss for scanning LL features. patype - Peer address type, public or random. timeout - sec """ spinner = Halo(text="Scanning", spinner={'interval': 200, 'frames': ['', '.', '.'*2, '.'*3]}, placement='right') hci = HCI(self.hci) logger.info('Scanning LE LL Features of %s, using %s\n'%(blue(paddr), blue(self.hci))) spinner.start() try: event_params = hci.le_create_connection(paddr, patype, timeout=timeout) logger.debug(event_params) except RuntimeError as e: logger.error(str(e)) return except TimeoutError as e: logger.info("Timeout") # logger.error("TimeoutError {}".format(e)) return event_params = hci.le_read_remote_features(event_params['Connection_Handle']) spinner.stop() logger.debug(event_params) print(blue('LE LL Features:')) pp_le_features(event_params['LE_Features']) event_params = hci.disconnect(event_params['Connection_Handle'], ControllerErrorCodes.REMOTE_USER_TERM_CONN) logger.debug(event_params) return
def scan_ll_feature(self, paddr, patype): """LL feature scanning paddr - Peer addresss for scanning LL features. patype - Peer address type, public or random. """ hci = HCI(self.hci) logger.info('Scanning LE LL Features of %s, using %s\n' % (blue(paddr), blue(self.hci))) try: event_params = hci.le_create_connection( HCI_Cmd_LE_Create_Connection(paddr=bytes.fromhex( paddr.replace(':', ''))[::-1], patype=patype)) logger.debug(event_params) except RuntimeError as e: logger.error(e) return event_params = hci.le_read_remote_features( HCI_Cmd_LE_Read_Remote_Features( handle=event_params['Connection_Handle'])) logger.debug(event_params) print(blue('LE LL Features:')) pp_le_features(event_params['LE_Features']) event_params = hci.disconnect({ 'Connection_Handle': event_params['Connection_Handle'], 'Reason': ERR_REMOTE_USER_TERMINATED_CONNECTION }) logger.debug(event_params) return