summaryrefslogtreecommitdiff
path: root/scripts/device.py
blob: fc17786cd118215e5ab5e5dcdca798fddcf82b92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Author: Dylan Muller
# Copyright (c) 2025 
# All rights reserved.
# 
# - Commercial/IP use prohibited.
# - Attribution required.
# See License.txt

from setup import *
import time

def serial_send(serial, data):
    try:
        if (serial and serial.is_open):
            serial.write(data.encode('utf-8'))
    except:
        return 0

def serial_receive_line(serial):
    try:
        if (serial and serial.is_open):
            serial_data = serial.readline().decode('utf-8').rstrip()
        else:
            return ""
    except:
        return ""
    return serial_data

def serial_receive_lines(serial, n):
    lines = []
    for i in range(n):
        line = serial_receive_line(serial)
        if (line == ""):
            return line
        if (SETUP_CMD_BUSY_RESPONSE in line):
            return SETUP_CMD_BUSY_RESPONSE
        lines.append(line)
    return lines

def sys_reset(serial):
    serial_send(serial, SETUP_CMD_RESET)
    time.sleep(SETUP_CMD_TIMEOUT)
    response = serial_receive_line(serial)
    return response

def sys_gate_probe(serial):
    serial_send(serial, SETUP_CMD_PROBE)
    time.sleep(SETUP_CMD_TIMEOUT)
    response = serial_receive_lines(serial, SETUP_CMD_PROBE_N)
    return response

def sys_drain_set(serial, count):
    payload = SETUP_CMD_DRAIN_SET + ' ' + str(count) + SETUP_NEWLINE
    serial_send(serial, payload)
    time.sleep(SETUP_CMD_TIMEOUT)

def sys_si4468_tx(serial):
    serial_send(serial, SETUP_CMD_TX)
    time.sleep(SETUP_CMD_TIMEOUT)
    response = serial_receive_line(serial)
    return response

def sys_si4468_rx(serial):
    serial_send(serial, SETUP_CMD_RX)
    time.sleep(SETUP_CMD_TIMEOUT)
    response = serial_receive_line(serial)
    return response

def sys_read_power(serial):
    serial_send(serial, SETUP_CMD_POWER_GET)
    time.sleep(SETUP_CMD_TIMEOUT)
    power_count = serial_receive_line(serial)
    power_count = power_count.split(" ")[1]
    power_count = int(power_count)
    return power_count

def sys_reply(serial):
    serial_send(serial, SETUP_CMD_REPLY)
    time.sleep(SETUP_CMD_TIMEOUT)
    response = serial_receive_line(serial)
    return response

def sys_report(serial):
    serial_send(serial, SETUP_CMD_REPORT)
    time.sleep(SETUP_CMD_TIMEOUT)
    response = serial_receive_lines(serial, SETUP_CMD_REPORT_N)
    return response