my_gpsd_client 0.02.02 → 0.02.07
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -5
- data/lib/my_gpsd_client.rb +112 -49
- data/lib/my_gpsd_client/version.rb +1 -1
- data/my_gpsd_client-0.02.05.gem +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '096fa3d4b6b58846f87925834aee7c05d46301e6ef76aa10350870f977931470'
|
4
|
+
data.tar.gz: 0c551f03daa20cd290f57d1941015402e5f23ae08787205995dca6b553f179a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bd6857e8065d4de4ad3e0aff6555940bb08ffc5c462ece1f8f6f3493eeaad984352e099676da47eb7c0eac86352f5beb5bb07078d15ccc85a0382c26c41ed3f
|
7
|
+
data.tar.gz: f75b8d76245d80cf44742ab629e72a81c9d6897c5c08962dbf1ea9ebed3fef06b25ae6ea015ad5c99f6803de3f19b921102a320385981dfe2ace0156a7502f6e
|
data/README.md
CHANGED
@@ -36,7 +36,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
36
36
|
From the gem's main folder...
|
37
37
|
|
38
38
|
$ gem build my_gpsd_client.gemspec
|
39
|
-
$ gem install my_gpsd_client-
|
39
|
+
$ gem install my_gpsd_client-[version].gem
|
40
40
|
|
41
41
|
$ irb
|
42
42
|
irb(main):001:0> require 'my_gpsd_client'
|
@@ -45,14 +45,12 @@ From the gem's main folder...
|
|
45
45
|
=> #<MyGpsdClient:0x00007fd8b98806a0...
|
46
46
|
irb(main):003:0> gps.version
|
47
47
|
=> "0.1.17"
|
48
|
-
irb(main):004:0>
|
48
|
+
irb(main):004:0>
|
49
49
|
|
50
50
|
To release to rubygems.org...
|
51
51
|
|
52
|
-
$ rake build
|
52
|
+
$ rake build; rake release
|
53
53
|
my_gpsd_client 0.1.10 built to pkg/my_gpsd_client-0.1.0.gem.
|
54
|
-
|
55
|
-
$ rake release
|
56
54
|
my_gpsd_client 0.1.10 built to pkg/my_gpsd_client-0.1.0.gem.
|
57
55
|
Tagged v0.1.10.
|
58
56
|
Pushed git commits and tags.
|
data/lib/my_gpsd_client.rb
CHANGED
@@ -5,14 +5,23 @@ require 'date'
|
|
5
5
|
require 'logger'
|
6
6
|
|
7
7
|
class MyGpsdClient
|
8
|
-
attr_accessor :host, :port, :command, :
|
9
|
-
|
8
|
+
attr_accessor :host, :port, :command, :min_speed, :watchdog_max, :watchdog_force, :watchdog_euthanized,
|
9
|
+
:log_progname, :log_level, :log_path, :log_format, :log_time_format
|
10
|
+
attr_reader :version, :last_watch, :socket_ready, :socket, :msg_counts, :watchdog_fired_count,
|
11
|
+
:readthread, :socket_init_thread, :watchdogthread, :watchdog_count
|
12
|
+
|
10
13
|
|
11
14
|
DEFAULT_HOST = 'localhost'
|
12
15
|
DEFAULT_PORT = 2947
|
13
|
-
DEFAULT_WATCH = {"enable":false,"json":false,"nmea":false}
|
14
|
-
DEFAULT_LOG_LEVEL = 0
|
16
|
+
DEFAULT_WATCH = {"class":"WATCH", "enable":false,"json":false,"nmea":false}
|
15
17
|
DEFAULT_WATCHDOG_MAX = 5.0
|
18
|
+
|
19
|
+
DEFAULT_LOG_PROGNAME = "MyGpsdClient"
|
20
|
+
DEFAULT_LOG_LEVEL = Logger::DEBUG
|
21
|
+
DEFAULT_LOG_PATH = 'log/MyGpsdClient.log'
|
22
|
+
DEFAULT_LOG_FORMAT = ''
|
23
|
+
DEFAULT_LOG_TIME_FORMAT = '%Y-%m-%d %T.%N %z %Z'
|
24
|
+
|
16
25
|
WATCHDOG_STEP = 0.1 # Check watchdog ten times per second
|
17
26
|
|
18
27
|
THREAD_NAMES = { # Keep displayed names the same length
|
@@ -23,6 +32,8 @@ class MyGpsdClient
|
|
23
32
|
}
|
24
33
|
Thread.current[:name]=THREAD_NAMES[:MainThread]
|
25
34
|
|
35
|
+
@@logger = nil
|
36
|
+
|
26
37
|
|
27
38
|
# A simple gpsd client that dump's json objects contianing all info received from the gpsd deamon
|
28
39
|
# you need to at least setup either the raw callback (on_raw_change) or position callback (on_position_change) to use GPSD2JSON. the raw callback just passes the json objects it received from the daemon on to the block you pass it. the on_position_change and on_satellites_change are a bit easier to use.
|
@@ -44,7 +55,12 @@ class MyGpsdClient
|
|
44
55
|
@host = host
|
45
56
|
@port = port
|
46
57
|
@last_watch = watch
|
58
|
+
|
47
59
|
@log_level = log_level
|
60
|
+
@log_path = DEFAULT_LOG_PATH
|
61
|
+
@log_format = DEFAULT_LOG_FORMAT
|
62
|
+
@log_time_format = DEFAULT_LOG_TIME_FORMAT
|
63
|
+
@log_progname = DEFAULT_LOG_PROGNAME
|
48
64
|
|
49
65
|
@socket = nil
|
50
66
|
@socket_ready = false
|
@@ -55,6 +71,7 @@ class MyGpsdClient
|
|
55
71
|
@watchdog_max = DEFAULT_WATCHDOG_MAX
|
56
72
|
@watchdog_fired_count = 0
|
57
73
|
@watchdog_force = false
|
74
|
+
@watchdog_euthanized = false
|
58
75
|
@min_speed = 0 # speed needs to be higher than this to make the gps info count
|
59
76
|
@last = nil #last gps info
|
60
77
|
@sats = nil # last satellites info
|
@@ -68,13 +85,12 @@ class MyGpsdClient
|
|
68
85
|
toff: 0, pol: 0, pps: 0, dev: 0, devs: 0, err: 0,
|
69
86
|
unk: 0}
|
70
87
|
|
71
|
-
|
72
|
-
MyGpsdClient.logger.level = @log_level
|
88
|
+
@logger = new_logger path: @log_path, progname: @log_progname, time_format: @log_time_format, level: @log_level
|
73
89
|
my_logger level: 'info', msg: "MyGpsdClient Gem - Version: #{@version}"
|
74
90
|
end
|
75
91
|
|
76
92
|
#
|
77
|
-
#
|
93
|
+
# attribute_writters additional actions
|
78
94
|
#
|
79
95
|
def command=(val)
|
80
96
|
@command = val
|
@@ -85,9 +101,34 @@ class MyGpsdClient
|
|
85
101
|
|
86
102
|
def log_level=(val)
|
87
103
|
@log_level = val
|
88
|
-
|
104
|
+
@logger.level = @log_level
|
105
|
+
end
|
106
|
+
|
107
|
+
def log_progname=(val)
|
108
|
+
@log_progname = val
|
109
|
+
@logger.progname = @log_progname
|
89
110
|
end
|
90
111
|
|
112
|
+
def log_format=(val)
|
113
|
+
@log_format = val
|
114
|
+
@logger.format = @log_format
|
115
|
+
end
|
116
|
+
|
117
|
+
def log_time_format=(val)
|
118
|
+
@log_time_format = val
|
119
|
+
@logger.datetime_format = @log_time_format
|
120
|
+
end
|
121
|
+
|
122
|
+
def log_path=(val)
|
123
|
+
@log_path = val
|
124
|
+
@logger = new_logger path: @log_path, progname: @log_progname, time_format: @log_time_format, level: @log_level
|
125
|
+
end
|
126
|
+
#
|
127
|
+
# End attribute_writters additional actions
|
128
|
+
#
|
129
|
+
|
130
|
+
|
131
|
+
|
91
132
|
def log_marker level: 'debug', msg: "Log Marker"
|
92
133
|
my_logger level: level, msg: "~~~~~~~~~~~~~~~~~~~~~~~ #{msg} ~~~~~~~~~~~~~~~~~~~~~~~"
|
93
134
|
end
|
@@ -119,7 +160,11 @@ class MyGpsdClient
|
|
119
160
|
else
|
120
161
|
# it's ready, tell it to start watching and passing
|
121
162
|
my_logger msg: "Send_cmmd: socket ready, send cmmd"
|
122
|
-
|
163
|
+
if @command.size > 1
|
164
|
+
str = "?#{@command[:class].upcase}=#{@command.to_json}"
|
165
|
+
else
|
166
|
+
str = "?#{@command[:class].upcase};"
|
167
|
+
end
|
123
168
|
my_logger level: 'info', msg: "Send_cmmd: sending: #{str}"
|
124
169
|
@sent_raw_callback.call( str) if @sent_raw_callback
|
125
170
|
@socket.puts str
|
@@ -178,43 +223,48 @@ class MyGpsdClient
|
|
178
223
|
|
179
224
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
180
225
|
# background thread to implement a watchdog timer
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
my_logger msg: "Watchdog Thread
|
185
|
-
@
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
@watchdog_fired_count += 1
|
198
|
-
@watchdog_enabled = false
|
199
|
-
# Kill the readthread...
|
200
|
-
my_logger msg: "Watchdog Thread: Killing ReadThread"
|
201
|
-
Thread.kill(@readthread) if @readthread && @readthread.alive?
|
202
|
-
if @last_watch[:enable]
|
203
|
-
stop
|
204
|
-
sleep 0.5
|
205
|
-
my_logger msg: "Watchdog Thread: Send Last_Watch: #{@last_watch}"
|
206
|
-
@command = @last_watch
|
207
|
-
send_cmmd
|
208
|
-
my_logger msg: "Watchdog Thread: Thread.exit"
|
209
|
-
Thread.exit
|
210
|
-
else
|
211
|
-
close_socket
|
226
|
+
if @watchdog_euthanized
|
227
|
+
my_logger msg: "Watchdog has been euthanized!"
|
228
|
+
else
|
229
|
+
my_logger msg: "Start: Starting Watchdog Thread"
|
230
|
+
@watchdogthread = Thread.start do
|
231
|
+
Thread.current[:name]=THREAD_NAMES[:WatchdogThread]
|
232
|
+
my_logger msg: "Watchdog Thread: #{Thread.current[:name]}"
|
233
|
+
@watchdog_count = 0.0
|
234
|
+
@watchdog_enabled = true
|
235
|
+
while @watchdog_enabled && !@watchdog_euthanized do
|
236
|
+
my_logger msg: "Watchdog Thread: Watchdog Tick"
|
237
|
+
if @watchdog_force
|
238
|
+
@watchdog_force = false
|
239
|
+
# force the watchdog to fire by killing the socket
|
240
|
+
@socket.close if @socket && !@socket.closed?
|
241
|
+
#@watchdog_count = @watchdog_max
|
212
242
|
end
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
243
|
+
if (@watchdog_count += WATCHDOG_STEP) >= @watchdog_max
|
244
|
+
my_logger level: 'warn', msg: "Watchdog Fired"
|
245
|
+
@watchdog_count = 0.0
|
246
|
+
@watchdog_fired_count += 1
|
247
|
+
@watchdog_enabled = false
|
248
|
+
# Kill the readthread...
|
249
|
+
my_logger msg: "Watchdog Thread: Killing ReadThread"
|
250
|
+
Thread.kill(@readthread) if @readthread && @readthread.alive?
|
251
|
+
if @last_watch[:enable]
|
252
|
+
stop
|
253
|
+
sleep 0.5
|
254
|
+
my_logger msg: "Watchdog Thread: Send Last_Watch: #{@last_watch}"
|
255
|
+
@command = @last_watch
|
256
|
+
send_cmmd
|
257
|
+
my_logger msg: "Watchdog Thread: Thread.exit"
|
258
|
+
Thread.exit
|
259
|
+
else
|
260
|
+
close_socket
|
261
|
+
end
|
262
|
+
end
|
263
|
+
sleep WATCHDOG_STEP
|
264
|
+
end # while Wchdog enabled
|
265
|
+
my_logger msg: "Closing Watchdog Thread"
|
266
|
+
end # wtchdg thread start do
|
267
|
+
end # watchdog euthanize if
|
218
268
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
219
269
|
|
220
270
|
my_logger msg: "Start: Exiting Start"
|
@@ -265,8 +315,9 @@ class MyGpsdClient
|
|
265
315
|
else
|
266
316
|
sleep 0.1
|
267
317
|
end
|
268
|
-
rescue
|
269
|
-
my_logger level: 'error', msg: "Read_from_socket: error reading from socket: #{$!}"
|
318
|
+
rescue StandardError => e
|
319
|
+
# my_logger level: 'error', msg: "Read_from_socket: error reading from socket: #{$!}"
|
320
|
+
my_logger level: 'error', msg: "Read_from_socket: error reading from socket: #{e.message}"
|
270
321
|
@socket_ready = !@socket.closed? if @socket
|
271
322
|
end
|
272
323
|
else
|
@@ -451,16 +502,28 @@ LOG_LEVELS = {debug: Logger::DEBUG, info: Logger::INFO, warn: Logger::WARN,
|
|
451
502
|
error: Logger::ERROR, fatal: Logger::FATAL, unknown: Logger::UNKNOWN}
|
452
503
|
|
453
504
|
def my_logger(level: 'debug', msg: "Blank")
|
454
|
-
|
505
|
+
@logger.add (LOG_LEVELS[level.to_sym]) {"#{Thread.current[:name]} -- #{msg}"}
|
506
|
+
end
|
507
|
+
|
508
|
+
def new_logger( progname: nil, path:, format: nil, time_format: nil, level: LOG_LEVELS[:debug])
|
509
|
+
logger = Logger.new(path)
|
510
|
+
logger.progname = progname if progname
|
511
|
+
logger.format = format if format
|
512
|
+
logger.level = level if level
|
513
|
+
logger.datetime_format = time_format if time_format
|
514
|
+
logger
|
455
515
|
end
|
456
516
|
|
517
|
+
=begin
|
457
518
|
def self.logger
|
519
|
+
puts "In self.logger: log_path => #{@log_path}, @@logger.nil? => #{@@logger.nil?}"
|
458
520
|
@@logger ||= defined?(Rails) ? Rails.logger : Logger.new("log/MyGpsdClient.log")
|
521
|
+
puts "Exiting self.logger: @@logger => #{@@logger}"
|
459
522
|
end
|
460
523
|
|
461
524
|
def self.logger=(logger)
|
462
525
|
@@logger = logger
|
463
526
|
end
|
464
|
-
|
527
|
+
=end
|
465
528
|
|
466
529
|
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: my_gpsd_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.02.
|
4
|
+
version: 0.02.07
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Finnegan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- bin/setup
|
56
56
|
- lib/my_gpsd_client.rb
|
57
57
|
- lib/my_gpsd_client/version.rb
|
58
|
+
- my_gpsd_client-0.02.05.gem
|
58
59
|
- my_gpsd_client.gemspec
|
59
60
|
homepage: https://github.com/sjf-control/my_gpsd_client
|
60
61
|
licenses:
|