1#!/usr/bin/lua 2 3Hamlib = require("Hamliblua") 4 5-- you can see the Hamlib properties: 6-- for key,value in pairs(Hamlib) do print(key,value) end 7 8function version() 9 ver = string.sub(_VERSION,4) 10 -- should only get one match to this 11 for ver2 in string.gmatch(ver,"%d.%d") do 12 ver = tonumber(ver2) 13 end 14 return ver 15end 16 17 18function doStartup() 19 print(string.format("%s test, %s\n", _VERSION, Hamlib.hamlib_version)) 20 21 22 -- Hamlib.rig_set_debug (Hamlib.RIG_DEBUG_TRACE) 23 Hamlib.rig_set_debug (Hamlib.RIG_DEBUG_NONE) 24 25 -- Init RIG_MODEL_DUMMY 26 my_rig = Hamlib.Rig (Hamlib.RIG_MODEL_DUMMY) 27 -- you can see the Rig properties: 28 -- for key,value in pairs(my_rig) do print(key,value) end 29 30 my_rig:set_conf("rig_pathname", "/dev/Rig") 31 32 my_rig:set_conf("retry", "5") 33 my_rig:open() 34 35 tpath = my_rig:get_conf("rig_pathname") 36 retry = my_rig:get_conf("retry") 37 38 print (string.format("status(str):\t\t%s", Hamlib.rigerror(my_rig.error_status))) 39 print (string.format("get_conf:\t\tpath = %s, retry = %s", tpath, retry)) 40 41 my_rig:set_freq(Hamlib.RIG_VFO_B, 5700000000) 42 my_rig:set_vfo(Hamlib.RIG_VFO_B) 43 print(string.format("freq:\t\t\t%d", my_rig:get_freq())) 44 my_rig:set_freq(Hamlib.RIG_VFO_A, 145550000) 45 my_rig:set_vfo(Hamlib.RIG_VFO_A) 46 47 mode, width = my_rig:get_mode() 48 print(string.format("mode:\t\t\t%s\nbandwidth:\t\t%s", Hamlib.rig_strrmode(mode), width)) 49 50 my_rig:set_mode(Hamlib.RIG_MODE_CW) 51 mode, width = my_rig:get_mode() 52 print(string.format("mode:\t\t\t%s\nbandwidth:\t\t%d", Hamlib.rig_strrmode(mode), width)) 53 54 print(string.format("Backend copyright:\t%s",my_rig.caps.copyright)) 55 56 print(string.format("Model:\t\t\t%s", my_rig.caps.model_name)) 57 print(string.format("Manufacturer:\t\t%s", my_rig.caps.mfg_name)) 58 print(string.format("Backend version:\t%s", my_rig.caps.version)) 59 print(string.format("Backend license:\t%s", my_rig.caps.copyright)) 60 print(string.format("Rig info:\t\t%s", my_rig:get_info())) 61 62 my_rig:set_level("VOXDELAY", 1) 63 print(string.format("status:\t\t\t%s - %s", my_rig.error_status, Hamlib.rigerror(my_rig.error_status))) 64 print(string.format("VOX delay:\t\t%d", my_rig:get_level_i("VOXDELAY"))) 65 my_rig:set_level(Hamlib.RIG_LEVEL_VOXDELAY, 5) 66 print(string.format("status:\t\t\t%s - %s", my_rig.error_status, Hamlib.rigerror(my_rig.error_status))) 67 -- see the func name (get_level_i) and format (%d) 68 print(string.format("VOX delay:\t\t%d", my_rig:get_level_i(Hamlib.RIG_LEVEL_VOXDELAY))) 69 70 af = 12.34 71 print(string.format("Setting AF to %f...", af)) 72 my_rig:set_level(Hamlib.RIG_LEVEL_AF, af) 73 print(string.format("status:\t\t\t%s - %s", my_rig.error_status, Hamlib.rigerror(my_rig.error_status))) 74 -- see the different of func name and format related to RIG_LEVEL_VOXDELAY! 75 print(string.format("AF level:\t\t%f", my_rig:get_level_f("AF"))) 76 77 print(string.format("strength:\t\t%d", my_rig:get_level_i(Hamlib.RIG_LEVEL_STRENGTH))) 78 print(string.format("status:\t\t\t%s", my_rig.error_status)) 79 print(string.format("status(str):\t\t%s", Hamlib.rigerror(my_rig.error_status))) 80 81 chan = Hamlib.channel(Hamlib.RIG_VFO_B) 82 83 my_rig:get_channel(chan,1) 84 print(string.format("get_channel status:\t%d", my_rig.error_status)) 85 86 print(string.format("VFO:\t\t\t%s, %s", Hamlib.rig_strvfo(chan.vfo), chan.freq)) 87 print(string.format("Attenuators:\t\t%s", table.concat(my_rig.caps.attenuator, ", "))) 88 89 print("\nSending Morse, '73'") 90 my_rig:send_morse(Hamlib.RIG_VFO_A, "73") 91 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 print(string.format("Loc1:\t\tIN98XC -> %9.4f, %9.4f -> %s", lon1, lat1, loc1)) 101 print(string.format("Loc2:\t\tDM33DX -> %9.4f, %9.4f -> %s", lon2, lat2, loc2)) 102 103 err, dist, az = Hamlib.qrb(lon1, lat1, lon2, lat2) 104 longpath = Hamlib.distance_long_path(dist) 105 print(string.format("Distance:\t%.3f km, azimuth %.2f, long path:\t%.3f km", dist, az, longpath)) 106 107 -- dec2dms expects values from 180 to -180 108 -- sw is 1 when deg is negative (west or south) as 0 cannot be signed 109 err, deg1, mins1, sec1, sw1 = Hamlib.dec2dms(lon1) 110 err, deg2, mins2, sec2, sw2 = Hamlib.dec2dms(lat1) 111 112 lon3 = Hamlib.dms2dec(deg1, mins1, sec1, sw1) 113 lat3 = Hamlib.dms2dec(deg2, mins2, sec2, sw2) 114 115 if sw1 > 0 then D = 'W' else D = 'E' end 116 print(string.format("Longitude:\t%4.4f, %4.0f° %.0f' %2.0f\" %1s\trecoded: %9.4f", lon1, deg1, mins1, sec1, D, lon3)) 117 118 if sw2 > 0 then D = 'S' else D = 'N' end 119 print(string.format("Latitude:\t%4.4f, %4.0f° %.0f' %2.0f\" %1s\trecoded: %9.4f", lat1, deg2, mins2, sec2, D, lat3)) 120 if (version() >= 5.4) then 121 -- older version may not handle 64-bit values 122 -- not sure when this was fixed...might have been 5.3 somehwere 123 print(string.format("The next two lines should show 0x8000000000000000")); 124 print(string.format("RIG_MODE_TESTS_MAX: 0x%08x", Hamlib.RIG_MODE_TESTS_MAX)); 125 print(string.format("RIG_FUNC_BIT63: 0x%08x", Hamlib.RIG_FUNC_BIT63)); 126 end 127 128end 129 130doStartup() 131 132 133 134 135 136