def answer(self): """Request to answer an incoming call. This function raises an InvalidOperationError if not started or handshake is pending. Otherwise returns no value. State changes resulting from this function are available via the on_event() event. """ if not self._started: raise InvalidOperationError("Not started.") if not self._handshake_completed: raise InvalidOperationError("Handshake not completed.") self._connection.send_message(message="ATA")
def dial(self, number): """Initiates a call to the specified number. This function raises an InvalidOperationError if not started or handshake is pending. Otherwise returns no value. State changes resulting from this function are available via the on_event() event. """ if not self._started: raise InvalidOperationError("Not started.") if not self._handshake_completed: raise InvalidOperationError("Handshake not completed.") self._connection.send_message( message="ATD{}".format(number))
def send_dtmf(self, dtmf): """Request to send DTMF to the network. This function raises an InvalidOperationError if not started or handshake is pending. Otherwise returns no value. State changes resulting from this function are available via the on_event() event. """ if not self._started: raise InvalidOperationError("Not started.") if not self._handshake_completed: raise InvalidOperationError("Handshake not completed.") self._connection.send_message( message="AT+VTS={}".format(dtmf))
def set_pairable(self, enabled, timeout=None): """Makes the BT subsystem pairable with other BT devices. Timeout is in seconds, or pass None for no timeout. """ if not self._started: raise InvalidOperationError("Not started.") if not self._connected: raise InvalidOperationError("No suitable adapter available.") try: self._adapter_proxy.set("Pairable", enabled) self._adapter_proxy.set("PairableTimeout", UInt32(timeout or 0)) except Exception as e: raise CommandError(e)
def _in_data_ready(self, data): """Writes encoded data to the Sox input stream. """ if not self._started: raise InvalidOperationError("Not started.") self._process.stdin.write(data)
def set_discoverable(self, enabled, timeout=None): """Toggles visibility of the BT subsystem to other searching BT devices. Timeout is in seconds, or pass None for no timeout. """ if not self._started: raise InvalidOperationError("Not started.") if not self._connected: raise InvalidOperationError("No suitable adapter available.") try: self._adapter_proxy.set("Discoverable", enabled) self._adapter_proxy.set("DiscoverableTimeout", UInt32(timeout or 0)) except Exception as e: raise CommandError(e)
def disconnect(self, destination): """Closes the connection to a remote PBAP server. If a connection does not exist, this does nothing. If not started, this raises an `InvalidOperationError` error. If an error occurred when disconnecting, this raises a `ConnectionError` error. """ if not self._started: raise InvalidOperationError("Not started.") if destination not in self._clients: return try: self._clients[destination].abort() self._factory.destroy_session( session=self._clients[destination].session) logger.debug("Obex session to '{}' has been disconnected.".format( destination)) except Exception: logger.exception( "Error disconnecting Obex session to '{}'.".format( destination)) raise ConnectionError( "Error disconnecting from '{}'.".format(destination)) finally: self._clients.pop(destination)
def connect(self, destination): """Establishes a connection to a remote PBAP server. If a connection to the specified server is already being tracked, this returns the client for that connection. If not started, this raises an `InvalidOperationError` error. If connection failed, this raises a `ConnectionError` error. """ if not self._started: raise InvalidOperationError("Not started.") if destination in self._clients: return self._clients[destination] session = self._factory.create_session(destination=destination, target="pbap") try: self._clients[destination] = PhonebookClient( session_bus=self._session_bus, session=session) logger.debug("Obex session to '{}' has been established.".format( destination)) return self._clients[destination] except Exception: logger.exception( "Error creating Obex session to '{}'.".format(destination)) try: self._factory.destroy_session(session=session) except Exception: logger.exception("Error disconnecting Obex session to '{}'." "".format(destination)) raise ConnectionError( "Error connecting to '{}'.".format(destination))
def write(self, data): """Queues data to send to the socket. Raises InvalidOperationError if the pump is not started. """ if not self._started: raise InvalidOperationError("Socket pump is not started.") self._send_buffer.append(data)
def connect(self, destination): """Connects to a paired device. If not started, this raises an `InvalidOperationError` error. If connection failed, this raises a `ConnectionError` error. """ if not self._started: raise InvalidOperationError("Not started.") client = self._clientmgr.connect(destination=destination) client.on_transfer_complete = self._client_transfer_complete client.on_transfer_error = self._client_transfer_error return client
def disconnect(self, destination): """Disconnects from a paired device. If not started, this raises an `InvalidOperationError` error. If an error occurred when disconnecting, this raises a `ConnectionError` error. """ if not self._started: raise InvalidOperationError("Not started.") client = self._clientmgr.get_client(destination=destination) if client is not None: client.on_transfer_complete = None client.on_transfer_error = None self._clientmgr.disconnect(destination=destination)