mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-04 01:24:42 +08:00
b0c6296b6f
This allows to pass remote SAP server address and optional port number. Also exit script error if not able to connect SAP client to server.
152 lines
3.4 KiB
Python
Executable File
152 lines
3.4 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
from sap_client import *
|
|
import time
|
|
import sys
|
|
|
|
def connect_disconnect_by_client(sap):
|
|
|
|
print("[Test] Connect - Disconnect by client \n")
|
|
|
|
try:
|
|
if not sap.isConnected():
|
|
sap.connect()
|
|
|
|
if sap.proc_connect():
|
|
if sap.proc_disconnectByClient():
|
|
print("OK")
|
|
return 0
|
|
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
except BluetoothError as e:
|
|
print("Error " + str(e))
|
|
|
|
|
|
def connect_disconnect_by_server_gracefully(sap, timeout=0):
|
|
|
|
print("[Test] Connect - Disconnect by server with timer \n")
|
|
|
|
try:
|
|
if not sap.isConnected():
|
|
sap.connect()
|
|
|
|
if sap.proc_connect():
|
|
if sap.proc_disconnectByServer(timeout):
|
|
print("OK")
|
|
return 0
|
|
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
except BluetoothError as e:
|
|
print("Error " + str(e))
|
|
|
|
|
|
def connect_txAPDU_disconnect_by_client(sap):
|
|
|
|
print("[Test] Connect - TX APDU - Disconnect by client \n")
|
|
|
|
try:
|
|
if not sap.isConnected():
|
|
sap.connect()
|
|
|
|
if sap.proc_connect():
|
|
if not sap.proc_transferAPDU():
|
|
print("NOT OK 1")
|
|
return 1
|
|
|
|
if not sap.proc_transferAPDU():
|
|
print("NOT OK 2")
|
|
return 1
|
|
|
|
if not sap.proc_transferAPDU():
|
|
print("NOT OK 3")
|
|
return 1
|
|
|
|
if not sap.proc_transferAPDU():
|
|
print("NOT OK 4")
|
|
return 1
|
|
|
|
if sap.proc_disconnectByClient():
|
|
print("OK")
|
|
return 0
|
|
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
except BluetoothError as e:
|
|
print("Error " + str(e))
|
|
|
|
def connect_rfcomm_only_and_wait_for_close_by_server(sap):
|
|
|
|
print("[Test] Connect rfcomm only - Disconnect by server timeout \n")
|
|
|
|
if not sap.isConnected():
|
|
sap.connect()
|
|
|
|
time.sleep(40)
|
|
print("OK")
|
|
|
|
def power_sim_off_on(sap):
|
|
|
|
print("[Test] Powe sim off \n")
|
|
|
|
try:
|
|
if not sap.isConnected():
|
|
sap.connect()
|
|
|
|
if sap.proc_connect():
|
|
if not sap.proc_resetSim():
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
if not sap.proc_powerSimOff():
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
if not sap.proc_powerSimOn():
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
if sap.proc_disconnectByClient():
|
|
print("OK")
|
|
return 0
|
|
|
|
print("NOT OK")
|
|
return 1
|
|
|
|
except BluetoothError as e:
|
|
print("Error " + str(e))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
host = None # server bd_addr
|
|
port = 8 # sap server port
|
|
|
|
if (len(sys.argv) < 2):
|
|
print("Usage: %s <address> [port]" % (sys.argv[0]))
|
|
sys.exit(1)
|
|
|
|
host = sys.argv[1]
|
|
|
|
if (len(sys.argv) == 3):
|
|
port = sys.argv[2]
|
|
|
|
try:
|
|
s = SAPClient(host, port)
|
|
except BluetoothError as e:
|
|
print("Error: " + str(e))
|
|
sys.exit(1)
|
|
|
|
connect_disconnect_by_client(s)
|
|
connect_disconnect_by_server_gracefully(s)
|
|
connect_disconnect_by_server_gracefully(s, 40) # wait 40 sec for srv to close rfcomm sock
|
|
connect_rfcomm_only_and_wait_for_close_by_server(s)
|
|
connect_txAPDU_disconnect_by_client(s)
|
|
power_sim_off_on(s)
|