1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3import sys
4# Change this path to match your "make install" path
5sys.path.append('/usr/local/lib/python3.8/site-packages')
6
7## Uncomment to run this script from an in-tree build (or adjust to the
8## build directory) without installing the bindings.
9#sys.path.append ('.')
10#sys.path.append ('.libs')
11
12import Hamlib
13
14def StartUp():
15    """Simple script to test the Hamlib.py module with Python3."""
16
17    print("%s: Python %s; %s\n" \
18          % (sys.argv[0], sys.version.split()[0], Hamlib.cvar.hamlib_version))
19
20    Hamlib.rig_set_debug(Hamlib.RIG_DEBUG_NONE)
21
22    # Init RIG_MODEL_DUMMY
23    my_rig = Hamlib.Rig(Hamlib.RIG_MODEL_DUMMY)
24    my_rig.set_conf("rig_pathname", "/dev/Rig")
25    my_rig.set_conf("retry", "5")
26
27    my_rig.open ()
28
29    rpath = my_rig.get_conf("rig_pathname")
30    retry = my_rig.get_conf("retry")
31
32    print("status(str):\t\t%s" % Hamlib.rigerror(my_rig.error_status))
33    print("get_conf:\t\tpath = %s, retry = %s" \
34          % (rpath, retry))
35
36    my_rig.set_freq(Hamlib.RIG_VFO_B, 5700000000)
37    my_rig.set_vfo(Hamlib.RIG_VFO_B)
38
39    print("freq:\t\t\t%s" % my_rig.get_freq())
40
41    my_rig.set_freq(Hamlib.RIG_VFO_A, 145550000)
42    (mode, width) = my_rig.get_mode(Hamlib.RIG_VFO_A)
43
44    print("mode:\t\t\t%s\nbandwidth:\t\t%s" % (Hamlib.rig_strrmode(mode), width))
45
46    my_rig.set_mode(Hamlib.RIG_MODE_CW)
47    (mode, width) = my_rig.get_mode()
48
49    print("mode:\t\t\t%s\nbandwidth:\t\t%s" % (Hamlib.rig_strrmode(mode), width))
50
51    print("Backend copyright:\t%s" % my_rig.caps.copyright)
52    print("Model:\t\t\t%s" % my_rig.caps.model_name)
53    print("Manufacturer:\t\t%s" % my_rig.caps.mfg_name)
54    print("Backend version:\t%s" % my_rig.caps.version)
55    print("Backend status:\t\t%s" % Hamlib.rig_strstatus(my_rig.caps.status))
56    print("Rig info:\t\t%s" % my_rig.get_info())
57
58    my_rig.set_level("VOXDELAY",  1)
59
60    print("VOX delay:\t\t%s" % my_rig.get_level_i("VOXDELAY"))
61
62    my_rig.set_level(Hamlib.RIG_LEVEL_VOXDELAY, 5)
63
64    print("VOX delay:\t\t%s" % my_rig.get_level_i(Hamlib.RIG_LEVEL_VOXDELAY))
65
66    af = 12.34
67
68    print("Setting AF to %0.2f...." % (af))
69
70    my_rig.set_level("AF", af)
71
72    print("status:\t\t\t%s - %s" % (my_rig.error_status,
73                                    Hamlib.rigerror(my_rig.error_status)))
74
75    print("AF level:\t\t%0.2f" % my_rig.get_level_f(Hamlib.RIG_LEVEL_AF))
76    print("strength:\t\t%s" % my_rig.get_level_i(Hamlib.RIG_LEVEL_STRENGTH))
77    print("status:\t\t\t%s" % my_rig.error_status)
78    print("status(str):\t\t%s" % Hamlib.rigerror(my_rig.error_status))
79
80    chan = Hamlib.channel(Hamlib.RIG_VFO_B)
81    my_rig.get_channel(chan,1)
82
83    print("get_channel status:\t%s" % my_rig.error_status)
84    print("VFO:\t\t\t%s, %s" % (Hamlib.rig_strvfo(chan.vfo), chan.freq))
85    print("Attenuators:\t\t%s" % my_rig.caps.attenuator)
86    # Can't seem to get get_vfo_info to work
87    #(freq, width, mode, split) = my_rig.get_vfo_info(Hamlib.RIG_VFO_A,freq,width,mode,split)
88    #print("Rig vfo_info:\t\tfreq=%s, mode=%s, width=%s, split=%s" % (freq, mode, width, split))
89    print("\nSending Morse, '73'")
90
91    my_rig.send_morse(Hamlib.RIG_VFO_A, "73")
92    my_rig.close()
93
94    print("\nSome static functions:")
95
96    err, lon1, lat1 = Hamlib.locator2longlat("IN98XC")
97    err, lon2, lat2 = Hamlib.locator2longlat("DM33DX")
98    err, loc1 = Hamlib.longlat2locator(lon1, lat1, 3)
99    err, loc2 = Hamlib.longlat2locator(lon2, lat2, 3)
100
101    print("Loc1:\t\tIN98XC -> %9.4f, %9.4f -> %s" % (lon1, lat1, loc1))
102    print("Loc2:\t\tDM33DX -> %9.4f, %9.4f -> %s" % (lon2, lat2, loc2))
103
104    err, dist, az = Hamlib.qrb(lon1, lat1, lon2, lat2)
105    longpath = Hamlib.distance_long_path(dist)
106
107    print("Distance:\t%.3f km, azimuth %.2f, long path:\t%.3f km" \
108          % (dist, az, longpath))
109
110    # dec2dms expects values from 180 to -180
111    # sw is 1 when deg is negative (west or south) as 0 cannot be signed
112    err, deg1, mins1, sec1, sw1 = Hamlib.dec2dms(lon1)
113    err, deg2, mins2, sec2, sw2 = Hamlib.dec2dms(lat1)
114
115    lon3 = Hamlib.dms2dec(deg1, mins1, sec1, sw1)
116    lat3 = Hamlib.dms2dec(deg2, mins2, sec2, sw2)
117
118    print('Longitude:\t%4.4f, %4d° %2d\' %2d" %1s\trecoded: %9.4f' \
119        % (lon1, deg1, mins1, sec1, ('W' if sw1 else 'E'), lon3))
120
121    print('Latitude:\t%4.4f, %4d° %2d\' %2d" %1s\trecoded: %9.4f' \
122        % (lat1, deg2, mins2, sec2, ('S' if sw2 else 'N'), lat3))
123
124
125if __name__ == '__main__':
126    StartUp()
127