-
Notifications
You must be signed in to change notification settings - Fork 1
/
initradio.py
58 lines (51 loc) · 1.46 KB
/
initradio.py
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
import serial
import time
import configparser
from logfunctions import *
serialwait = 15 # Serial command timeout in seconds
atcommands = ['AT&F','AT+CTOM=6','AT+CTSP=1,3,131','AT+CTSP=1,3,130','AT+CTSP=2,0,0','AT+CTSP=1,2,20','AT+CTSP=1,2,24','AT+CTSP=1,2,25','AT+CTSP=1,1,11','AT+CTSP=1,3,137']
# get configuration
config = configparser.ConfigParser()
config.read('/etc/svxsds.cfg')
ser_port = config.get('serial','port')
ser_speed = int(config.get('serial','speed'))
# settings
ser = serial.Serial()
ser.port = ser_port
ser.baudrade = ser_speed
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.timeout = 5
ser.writetimeout = 5
ser.xonoff = False
ser.rtscts = False
ser.dsrdtr = False
def OpenSerialPort():
try:
logger.debug('initradio - OpenSerialPort: Opening serial port '+ ser.port)
ser.open()
except:
logger.error('initradio - OpenSerialPort: Error opening port ' + ser.port)
exit()
def GetResponse(response):
result = list(filter(None,response.decode('utf-8').split('\r\n')))
if 'OK' in result:
return(True)
else:
return(False)
def InitRadio():
OpenSerialPort()
for atc in atcommands:
cmd = atc
atc = atc + '\r'
atc = atc.encode('utf-8')
ser.write(atc)
while 1:
timeout = time.time() + serialwait
response = ser.readall()
if len(response) > 0 or time.time() > timeout:
logger.debug('initradio - InitRadio: ' + cmd + ' : ' + (str(GetResponse(response))))
break
ser.close()
return()