Files
microchip-application-bmd38…/scripts/host_cmd.py
T
chain40 6acd56bf8f host command suppor
1. support check_mem_survive, scan, connect, disconnect host command.

2. create a host_cmd.py to valid host commands

3. add uart_drv_rx_mutex/uart_drv_tx_mutex to lock uart tx/rx

4. add host_scan_filter_match_cb() to send device infomation to host.

5. add le_gap_disconnet()

6. freertos enable check stack overflow

7. freertos increase timer task stack
2023-06-09 19:17:35 +08:00

80 lines
2.2 KiB
Python

import serial
import os
import time
def survive_cmd(ser):
send = [0x0A, 0x01, 0xF1]
ser.write(send)
read = ser.read(4)
print("recv: "+" ".join("%02X" % b for b in read))
def scan_cmd(ser, is_raw_data = True):
send = [0x03, 0x01, 0xF1]
ser.write(send)
peer_addr = []
for i in range(10):
hci_packet_event = ser.read(2)
if int.from_bytes(hci_packet_event, "little") != 0x0004:
continue
len = ser.read(1)
payload = ser.read(int.from_bytes(len, "little"))
peer_addr = payload[0:6]
if is_raw_data:
print(
"recv: "
+ " ".join("0x%02X" % b for b in hci_packet_event)
+ " "
+ " ".join("0x%02X" % b for b in len)
+ " "
+ " ".join("0x%02X" % b for b in payload)
)
else:
print("-" * 100)
print(" peer address: " + ":".join("%02X" % b for b in payload[0:6]))
print("product module: " + str(payload[6:10], "utf-8"))
print(" hw version: " + " ".join("%02X" % b for b in payload[10:14]))
print(" build time: " + " ".join("%02X" % b for b in payload[14:16]))
print(" Parameter1: " + str(payload[16:19], "utf-8"))
print(" battery volt: " + str(int.from_bytes(payload[19:21], "big")/1000.0) + "V")
print(" device name: " + str(payload[21:], "utf-8"))
return peer_addr
def connect(ser, peer_addr = []):
send = [0x05, 0x08, 0x00]
send += peer_addr
send += [0xF1]
ser.write(send)
read = ser.read(7)
print("recv: "+" ".join("%02X" % b for b in read))
def disconnect(ser):
send = [0x08, 0x01, 0xF1]
ser.write(send)
read = ser.read(4)
print("recv: "+" ".join("%02X" % b for b in read))
def main():
# set comport
ser = serial.Serial("COM12", 57600, 8)
# send survive cmd
survive_cmd(ser)
# send scan cmd
peer_addr = scan_cmd(ser, False)
# send connect cmd with peer addr
connect(ser, peer_addr)
time.sleep(10)
# send disconnect cmd
disconnect(ser)
ser.close()
if __name__ == "__main__":
main()