fldigi 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/fldigi.rb +69 -39
- metadata +6 -8
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 01ed9311a2dcab94b12c12beec7d3aacdb07621c
|
4
|
+
data.tar.gz: a099959442ab9775b6631cf26f39d1bc16ef9042
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e00f032b5347b1425347ff6ef02668efc4f1cd8f8300390a7ad014e7c70dbc53a26b37ba99dbc6fb7b6f478c39c2c60039d7852dfc4bbb62ef32a15cd0581dba
|
7
|
+
data.tar.gz: 4fcc64a79d71b3739a0d6ba26e8ccc8be56315762b15a6643c72d1d327f29a78f496ec8b0da0153a4c6a02b92edbf2fc8d77522d4a72ae74998360e6054deb09
|
data/lib/fldigi.rb
CHANGED
@@ -13,11 +13,16 @@
|
|
13
13
|
#
|
14
14
|
# http://www.w1hkj.com/FldigiHelp-3.22/xmlrpc-control.html
|
15
15
|
#
|
16
|
-
# More documentation is forthcoming, but for the moment,
|
17
|
-
# clients published
|
18
|
-
|
16
|
+
# More documentation for this code is forthcoming, but for the moment,
|
17
|
+
# refer to the clients published on my web page to see how to use it.
|
18
|
+
#
|
19
19
|
# Version History:
|
20
20
|
#
|
21
|
+
# 0.0.12 - 06/05/2014 - jfrancis - Allows for additional data to be
|
22
|
+
# appended to the output queue during transmit. Also now defaults to
|
23
|
+
# not displaying a running output of transmitted data (though it can
|
24
|
+
# be switched back on with a 'true' flag to send_buffer()).
|
25
|
+
#
|
21
26
|
# 0.0.11 - 05/29/2014 - jfrancis - Added optional offset.
|
22
27
|
#
|
23
28
|
# 0.0.10 - 05/26/2014 - jfrancis - Forgot the 'require'.
|
@@ -33,17 +38,19 @@
|
|
33
38
|
# 0.0.6 - 05/25/2014 - jfrancis - First public release on
|
34
39
|
# rubygems.org.
|
35
40
|
|
36
|
-
require
|
41
|
+
require 'xmlrpc/client'
|
42
|
+
require 'thread'
|
37
43
|
|
38
44
|
class Fldigi
|
39
|
-
attr_accessor :rigctl, :freq, :carrier, :call, :modem, :afc, :rsid, :sideband, :squelch, :slevel, :spot, :delay, :grid, :phg, :band, :offset
|
45
|
+
attr_accessor :rigctl, :freq, :carrier, :call, :modem, :afc, :rsid, :sideband, :squelch, :slevel, :spot, :delay, :grid, :phg, :band, :offset, :start_wait, :char_wait
|
40
46
|
|
41
47
|
# Do the initial setup. All arguments are optional, default is
|
42
48
|
# rigctl, localhost, standard port. If you have no rig control,
|
43
|
-
# call with
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
49
|
+
# call with Fldigi.new(false) (ie, it assumes you do have rig
|
50
|
+
# control). If you want to remote control an FLDigi instance that's
|
51
|
+
# not on the local machine and/or has a non-standard port number,
|
52
|
+
# you'll have to supply all three options, like
|
53
|
+
# Fldigi.new(true,10.1.2.3,7362).
|
47
54
|
def initialize(rigctl=true, host="127.0.0.1", port=7362)
|
48
55
|
# Housekeeping.
|
49
56
|
@host=host
|
@@ -74,6 +81,8 @@ class Fldigi
|
|
74
81
|
@spot_old=nil
|
75
82
|
@offset=0
|
76
83
|
@offset_old=0
|
84
|
+
@start_wait=10
|
85
|
+
@char_wait=2
|
77
86
|
|
78
87
|
# Propnet stuff.
|
79
88
|
@band=nil
|
@@ -85,6 +94,7 @@ class Fldigi
|
|
85
94
|
|
86
95
|
# Connect to the FLDigi instance.
|
87
96
|
@srvr=XMLRPC::Client.new(host,"/RPC2",port)
|
97
|
+
@m=Mutex.new
|
88
98
|
end
|
89
99
|
|
90
100
|
# Send a command to FLDigi.
|
@@ -250,7 +260,7 @@ class Fldigi
|
|
250
260
|
|
251
261
|
# Set FLDigi to transmit (immediate). When switched to transmit,
|
252
262
|
# FLDigi will send whatever text exists in FLDigi's transmit buffer
|
253
|
-
# (which is *not* the same thing as
|
263
|
+
# (which is *not* the same thing as this object's internal message
|
254
264
|
# queue called @message).
|
255
265
|
def transmit
|
256
266
|
if self.sendcmd("main.get_trx_status")=="tx"
|
@@ -267,48 +277,66 @@ class Fldigi
|
|
267
277
|
|
268
278
|
# Send the currently buffered data using the carrier, mode,
|
269
279
|
# frequency, etc. currently configured. The current code will wait
|
270
|
-
# up to
|
271
|
-
# gives time for really slow modems to get
|
272
|
-
# sent character is detected, it makes
|
273
|
-
#
|
274
|
-
# very slowest modem). You can
|
275
|
-
# you're only going to use fast
|
276
|
-
#
|
277
|
-
#
|
278
|
-
# left after the last
|
279
|
-
|
280
|
+
# up to @start_wait (10) seconds for the first character to be
|
281
|
+
# transmitted (this gives time for really slow modems to get
|
282
|
+
# rolling). Once the first sent character is detected, it makes
|
283
|
+
# sure it sees as least one character every @char_wait (2) seconds
|
284
|
+
# (which again, is just enough for the very slowest modem). You can
|
285
|
+
# set the @char_wait value lower if you're only going to use fast
|
286
|
+
# modems, but if you forget and use a slow modem with this set
|
287
|
+
# lower, you'll chop off your own transmissions before completion.
|
288
|
+
# This value also affects how long of an idle is left after the last
|
289
|
+
# character before switching back to receive. Everything's a
|
290
|
+
# trade-off... If you keep adding data to the buffer (ie, calling
|
291
|
+
# add_tx_string()) while transmitting, it'll keep sending data until
|
292
|
+
# the buffer is empty. If you set verbose to true, send_buffer()
|
293
|
+
# will display a running stream of transmitted data to STDOUT.
|
294
|
+
def send_buffer(verbose=false)
|
280
295
|
if @message.length > 0
|
281
|
-
self.sendcmd("text.add_tx",@message)
|
282
296
|
self.transmit()
|
283
|
-
waited=0
|
284
|
-
max=10
|
285
|
-
|
286
|
-
result="xxx"
|
287
297
|
show=""
|
288
|
-
while
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
298
|
+
while @message.length > 0
|
299
|
+
@m.synchronize do
|
300
|
+
self.sendcmd("text.add_tx",@message)
|
301
|
+
@message=""
|
302
|
+
end
|
303
|
+
waited=0
|
304
|
+
max=@start_wait
|
305
|
+
|
306
|
+
result=""
|
307
|
+
while waited<max
|
308
|
+
waited=waited+1
|
309
|
+
result=self.get_tx_data()
|
310
|
+
if result.length > 0
|
311
|
+
max=@char_wait
|
312
|
+
waited=0
|
313
|
+
show=show+result
|
314
|
+
if verbose
|
315
|
+
puts show
|
316
|
+
end
|
317
|
+
end
|
318
|
+
sleep 1
|
296
319
|
end
|
297
|
-
sleep 1
|
298
320
|
end
|
299
|
-
|
300
|
-
self.receive()
|
301
|
-
return show
|
302
321
|
end
|
322
|
+
self.receive()
|
323
|
+
return show
|
303
324
|
end
|
304
325
|
|
305
326
|
# Add a string of text to the outgoing buffer. If you want carriage
|
306
327
|
# returns, you must supply them as part of the text (ie, "foo\n").
|
307
328
|
def add_tx_string(text)
|
308
|
-
@
|
329
|
+
@m.synchronize do
|
330
|
+
@message=@message+text
|
331
|
+
end
|
309
332
|
return @message
|
310
333
|
end
|
311
334
|
|
335
|
+
# Return the modem signal quality in the range [0:100]
|
336
|
+
def quality
|
337
|
+
return self.sendcmd("modem.get_quality")
|
338
|
+
end
|
339
|
+
|
312
340
|
# Return the received data accumulated since the last time you asked.
|
313
341
|
def get_rx_data
|
314
342
|
return self.sendcmd("rx.get_data")
|
@@ -335,7 +363,9 @@ class Fldigi
|
|
335
363
|
# object's message queue, but does not change what may or may not be
|
336
364
|
# queued in FLDigi for transmission (clear_tx_data() does that).
|
337
365
|
def clear_message
|
338
|
-
@
|
366
|
+
@m.synchronize do
|
367
|
+
@message=""
|
368
|
+
end
|
339
369
|
end
|
340
370
|
|
341
371
|
# Return a list of valid modems supported by FLDigi. Note that not
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fldigi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.12
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jeff Francis, N0GQ
|
@@ -21,26 +20,25 @@ files:
|
|
21
20
|
homepage: http://fldigi.gritch.org/
|
22
21
|
licenses:
|
23
22
|
- MIT
|
23
|
+
metadata: {}
|
24
24
|
post_install_message:
|
25
25
|
rdoc_options: []
|
26
26
|
require_paths:
|
27
27
|
- lib
|
28
28
|
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
-
none: false
|
30
29
|
requirements:
|
31
|
-
- -
|
30
|
+
- - '>='
|
32
31
|
- !ruby/object:Gem::Version
|
33
32
|
version: '0'
|
34
33
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
34
|
requirements:
|
37
|
-
- -
|
35
|
+
- - '>='
|
38
36
|
- !ruby/object:Gem::Version
|
39
37
|
version: '0'
|
40
38
|
requirements: []
|
41
39
|
rubyforge_project:
|
42
|
-
rubygems_version:
|
40
|
+
rubygems_version: 2.0.14
|
43
41
|
signing_key:
|
44
|
-
specification_version:
|
42
|
+
specification_version: 4
|
45
43
|
summary: A library for talking to FLDigi.
|
46
44
|
test_files: []
|