mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-26 00:40:38 +00:00
daemon/binding/python: finish command_builder
This commit is contained in:
parent
4e70c29ca1
commit
01aeeea2cb
@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
import struct
|
import struct
|
||||||
|
import btstack.command_builder
|
||||||
|
|
||||||
BTSTACK_SERVER_HOST = "localhost"
|
BTSTACK_SERVER_HOST = "localhost"
|
||||||
BTSTACK_SERVER_TCP_PORT = 13333
|
BTSTACK_SERVER_TCP_PORT = 13333
|
||||||
@ -14,15 +13,7 @@ BTSTACK_SET_POWER_MODE = 0x02
|
|||||||
def print_hex(data):
|
def print_hex(data):
|
||||||
print(" ".join("{:02x}".format(c) for c in data))
|
print(" ".join("{:02x}".format(c) for c in data))
|
||||||
|
|
||||||
def opcode(ogf, ocf):
|
class BTstackClient(btstack.command_builder.CommandBuilder):
|
||||||
return ocf | (ogf << 10)
|
|
||||||
|
|
||||||
# CommandBuilder - will be auto-generated later
|
|
||||||
class CommandBuilder(object):
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class BTstackClient(CommandBuilder):
|
|
||||||
|
|
||||||
#
|
#
|
||||||
btstack_server_socket = None
|
btstack_server_socket = None
|
||||||
@ -53,11 +44,6 @@ class BTstackClient(CommandBuilder):
|
|||||||
header = struct.pack("<HHH", packet_type, channel, length)
|
header = struct.pack("<HHH", packet_type, channel, length)
|
||||||
self.btstack_server_socket.sendall(header + command)
|
self.btstack_server_socket.sendall(header + command)
|
||||||
|
|
||||||
def btstack_set_power_mode(self, on):
|
|
||||||
# - send: BTstackPowerUp
|
|
||||||
cmd = struct.pack("<HBB", opcode(OGF_BTSTACK, BTSTACK_SET_POWER_MODE) ,1, 1);
|
|
||||||
self.send_hci_command(cmd)
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
print("[+] Run")
|
print("[+] Run")
|
||||||
while True:
|
while True:
|
||||||
|
@ -21,5 +21,6 @@ btstack_client = btstack_client.BTstackClient()
|
|||||||
# connect to slient, register for HCI packets and power up
|
# connect to slient, register for HCI packets and power up
|
||||||
btstack_client.connect()
|
btstack_client.connect()
|
||||||
btstack_client.register_packet_handler(packet_handler)
|
btstack_client.register_packet_handler(packet_handler)
|
||||||
btstack_client.btstack_set_power_mode(1)
|
btstack_client.BTstackSetPowerMode(1)
|
||||||
|
btstack_client.GAPLEScanStart()
|
||||||
btstack_client.run()
|
btstack_client.run()
|
||||||
|
@ -19,28 +19,31 @@ command_builder_header = \
|
|||||||
|
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
def opcode(ogf, ocf):
|
||||||
|
return ocf | (ogf << 10)
|
||||||
|
|
||||||
|
def pack24(value):
|
||||||
|
return struct.pack("B", value & 0xff) + struct.pack("<H", value >> 8)
|
||||||
|
|
||||||
|
def name248(str):
|
||||||
|
arg = str.encode('utf-8')
|
||||||
|
return arg[:248] + bytes(248-len(arg))
|
||||||
|
|
||||||
# Command Builder
|
# Command Builder
|
||||||
|
|
||||||
class CommandBuilder(object):
|
class CommandBuilder(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def pack24(value):
|
|
||||||
return struct.pack("B", value & 0xff) + struct.pack("<H", value >> 8)
|
|
||||||
|
|
||||||
def name248(str):
|
|
||||||
arg = str.encode('utf-8')
|
|
||||||
return arg[:248] + bytes(248-len(arg))
|
|
||||||
|
|
||||||
def send_command(command):
|
def send_command(command):
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
'''
|
'''
|
||||||
command_builder_command = '''
|
command_builder_command = '''
|
||||||
def {name}({args}):
|
def {name}(self, {args}):
|
||||||
cmd_args = bytes()
|
cmd_args = bytes()
|
||||||
{args_builder}
|
{args_builder}
|
||||||
cmd = struct.pack("<HB", opcode({ogf}, {ocf}), len(cmd_args)) + cmd_args
|
cmd = struct.pack("<HB", opcode(self.{ogf}, self.{ocf}), len(cmd_args)) + cmd_args
|
||||||
return self.send_hci_command(cmd)
|
return self.send_hci_command(cmd)
|
||||||
'''
|
'''
|
||||||
|
|
||||||
@ -170,9 +173,9 @@ def create_command_python(fout, name, ogf, ocf, format, params):
|
|||||||
'2' : 'cmd_args += struct.pack("<H", %s)',
|
'2' : 'cmd_args += struct.pack("<H", %s)',
|
||||||
'H' : 'cmd_args += struct.pack("<H", %s)',
|
'H' : 'cmd_args += struct.pack("<H", %s)',
|
||||||
'L' : 'cmd_args += struct.pack("<H", %s)',
|
'L' : 'cmd_args += struct.pack("<H", %s)',
|
||||||
'3' : 'cmd_args += self.pack24(%s)',
|
'3' : 'cmd_args += pack24(%s)',
|
||||||
'4' : 'cmd_args += struct.pack("<H", %s)',
|
'4' : 'cmd_args += struct.pack("<H", %s)',
|
||||||
'N' : 'cmd_args += self.name248(%s)',
|
'N' : 'cmd_args += name248(%s)',
|
||||||
'B' : 'cmd_args += %s.get_bytes()',
|
'B' : 'cmd_args += %s.get_bytes()',
|
||||||
'U' : 'cmd_args += %s.get_bytes()',
|
'U' : 'cmd_args += %s.get_bytes()',
|
||||||
'X' : 'cmd_args += %s.get_bytes()',
|
'X' : 'cmd_args += %s.get_bytes()',
|
||||||
@ -235,15 +238,15 @@ def mark_define_as_used(term):
|
|||||||
return
|
return
|
||||||
defines_used.add(term)
|
defines_used.add(term)
|
||||||
|
|
||||||
def java_define_string(key):
|
def python_define_string(key):
|
||||||
global defines
|
global defines
|
||||||
if key in defines:
|
if key in defines:
|
||||||
return ' public static final int %s = %s;\n' % (key, defines[key])
|
return ' %s = %s\n' % (key, defines[key])
|
||||||
else:
|
else:
|
||||||
return ' // defines[%s] not set\n' % key
|
return ' # defines[%s] not set\n' % key
|
||||||
|
|
||||||
def java_defines_string(keys):
|
def java_defines_string(keys):
|
||||||
return '\n'.join( map(java_define_string, sorted(keys)))
|
return '\n'.join( map(python_define_string, sorted(keys)))
|
||||||
|
|
||||||
def create_command_builder(commands):
|
def create_command_builder(commands):
|
||||||
global gen_path
|
global gen_path
|
||||||
@ -261,9 +264,9 @@ def create_command_builder(commands):
|
|||||||
mark_define_as_used(ogf)
|
mark_define_as_used(ogf)
|
||||||
mark_define_as_used(ocf)
|
mark_define_as_used(ocf)
|
||||||
|
|
||||||
# fout.write('\n # defines used\n\n')
|
fout.write('\n # defines used\n\n')
|
||||||
# for key in sorted(defines_used):
|
for key in sorted(defines_used):
|
||||||
# fout.write(java_define_string(key))
|
fout.write(python_define_string(key))
|
||||||
|
|
||||||
def create_event(event_name, format, args):
|
def create_event(event_name, format, args):
|
||||||
global gen_path
|
global gen_path
|
||||||
|
Loading…
x
Reference in New Issue
Block a user