aprs-is 0.0.1.5

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/aprs-is.rb +74 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 11ae1073951014edfd65a2fce321abbddfd2e4e7
4
+ data.tar.gz: bb7a3eba68ff6f4c0927ffe4d86b2736bebe508d
5
+ SHA512:
6
+ metadata.gz: 20a3a9bbd0f4ac7a7cd652725563ad66d7fe8f5bdca3a679adc76af106306e5628aeabd932036b13789e86a244268ab62c595caf0bb16454bad6f3f07e2b2e9d
7
+ data.tar.gz: 15c5bd6ed189fe7a47d5e87f1ade65e9e08437c55df338949dffee3b2e7a899ec7bc251c9301d357a681756eeef76388cb08303bd23e392284ee877c733c607c
@@ -0,0 +1,74 @@
1
+ require 'socket'
2
+
3
+ class Aprs
4
+ def initialize(server, port, call, version)
5
+ @server = server
6
+ @port = port
7
+ @call = call
8
+ @version = version
9
+ end
10
+
11
+ def connect
12
+ @socket = TCPSocket.open(@server, @port)
13
+ @socket.puts "#{@server} #{@port}"
14
+ pass = self.passcode(@call.upcase)
15
+ @socket.puts "user #{@call.upcase} pass #{pass} ver \"#{@version}\""
16
+ end
17
+
18
+
19
+ def msg_filter()
20
+ until @socket.eof? do
21
+ msg = @socket.gets
22
+ self.msg_dis(msg)
23
+ end
24
+ end
25
+
26
+ def msg_raw()
27
+ until @socket.eof? do
28
+ msg = @socket.gets
29
+ self.msg_dis_raw(msg)
30
+ end
31
+ end
32
+
33
+
34
+ def msg_dis(msg)
35
+ Thread.new do
36
+ msg.gsub!(/.*::/, "").gsub!(/\s*[:]/, ": ") #filters out data leaving only callsign and message
37
+ puts "Debug(Incomming): #{msg}" if msg =~ /#{@call.upcase}/
38
+ end
39
+ end
40
+
41
+ def msg_dis_raw(msg)
42
+ Thread.new do
43
+ puts "Debug(Incoming): #{msg}"
44
+ end
45
+ end
46
+
47
+ def send_msg(msg, sendto)
48
+ @socket.puts "#{@call.upcase}>APRS,TCPIP*,qAC,THIRD::#{sendto.upcase} :#{msg}" #3 spaces between call and msg
49
+ end
50
+
51
+ def packet(position, comment)
52
+ init = "#{@call.upcase}>APRS,TCPIP*:"
53
+ send = "#{init}#{position} #{comment}"
54
+ puts "Debug(Outgoing): #{send}"
55
+ @socket.puts "#{send}"
56
+ end
57
+
58
+ def passcode(call_sign) ## credit to https://github.com/xles/aprs-passcode/blob/master/aprs_passcode.rb
59
+ call_sign.upcase!
60
+ call_sign.slice!(0,call_sign.index('-')) if call_sign =~ /-/
61
+ hash = 0x73e2
62
+ flag = true
63
+ call_sign.split('').each{|c|
64
+ hash = if flag
65
+ (hash ^ (c.ord << 8))
66
+ else
67
+ (hash ^ c.ord)
68
+ end
69
+ flag = !flag
70
+ }
71
+ hash & 0x7fff
72
+ end
73
+ end
74
+
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aprs-is
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.5
5
+ platform: ruby
6
+ authors:
7
+ - Harold Giddings/KR0SIV
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Allows you to interact with the APRS-IS network with your ruby applications
14
+ email:
15
+ - harold@giddings.me
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/aprs-is.rb
21
+ homepage: https://github.com/KR0SIV
22
+ licenses: []
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.14
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: A ruby wrapper to access the APRS-IS network
44
+ test_files: []