aprs_parser 1.0.0.pre
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 +7 -0
- data/.gitignore +15 -0
- data/.rubocop.yml +14 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/README.md +54 -0
- data/Rakefile +8 -0
- data/aprs_parser.gemspec +29 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/ext/aprs_parser/extconf.rb +5 -0
- data/lib/aprs_parser/converters/double_pointer.rb +18 -0
- data/lib/aprs_parser/converters/path.rb +19 -0
- data/lib/aprs_parser/converters/short_pointer.rb +18 -0
- data/lib/aprs_parser/converters/timestamp.rb +18 -0
- data/lib/aprs_parser/converters/uint_pointer.rb +18 -0
- data/lib/aprs_parser/converters.rb +5 -0
- data/lib/aprs_parser/enums/error_code.rb +24 -0
- data/lib/aprs_parser/enums/packet_type.rb +7 -0
- data/lib/aprs_parser/enums/pos_format.rb +7 -0
- data/lib/aprs_parser/enums.rb +3 -0
- data/lib/aprs_parser/structs/package.rb +49 -0
- data/lib/aprs_parser/structs/telemetry.rb +15 -0
- data/lib/aprs_parser/structs/wx_report.rb +23 -0
- data/lib/aprs_parser/structs.rb +3 -0
- data/lib/aprs_parser/type_safety.rb +27 -0
- data/lib/aprs_parser/version.rb +3 -0
- data/lib/aprs_parser.rb +24 -0
- metadata +155 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a6e02373b6a371cd563cfa6244beb7b51a3cc913
|
4
|
+
data.tar.gz: 4feacf7e3f8e01ec731247e5858b5afa60836ab1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ec8d5e169e4c942561641457cd02a7472843f6f3b26db55f666a348be2588b66789b7ccf9e6cd0d5ecec0f93e43cabf3a01bec48463f52705b34179b7266dfdb
|
7
|
+
data.tar.gz: 1fce9d19e570d379ab3626313d165c87c9066bf2af914c851570ce4dad4c9ed9f0ddc19d458a40821570b4c513ac5e69831de3e7a6b08ebfd0aa0316f96d4289
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# AprsParser
|
2
|
+
|
3
|
+
Ruby APRS parser based on [libfap](http://www.pakettiradio.net/libfap/).
|
4
|
+
|
5
|
+
## libfap
|
6
|
+
|
7
|
+
Libfap is a C port of the Ham::APRS::FAP Finnish APRS Parser perl module. As the original Perl code, libfap parses normal, mic-e and compressed location packets, NMEA location packets, objects, items, messages, telemetry and most weather packets. More information on HAM::APRS::FAP is available at http://search.cpan.org/dist/Ham-APRS-FAP/. More information on libfap is available at http://www.pakettiradio.net/libfap/.
|
8
|
+
|
9
|
+
|
10
|
+
## Requirements
|
11
|
+
|
12
|
+
Latest libfab installed (http://www.pakettiradio.net/libfap/)
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'aprs_parser'
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install aprs_parser
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
```
|
33
|
+
data = 'K4HG-8>APKRAM,TCPIP*,qAC,AE5PL-JF:/150653z4440.48N/12403.91WMiPhone'
|
34
|
+
parsed = AprsParser.parse(data)
|
35
|
+
parsed[:src_callsign]
|
36
|
+
```
|
37
|
+
|
38
|
+
The following fields are currently supported (pull requests are welcome):
|
39
|
+
|
40
|
+
```layout error_code, type, orig_packet, orig_packet_len, header, body, body_len, src_callsign, dst_callsign, path, path_len, latitude, longitude, format, pos_resolution, pos_ambiguity, dao_datum_byte, altitude, course, speed, symbol_table, symbol_code, messaging, destination, message, message_ack, message_nack, message_id, comment, comment_len, object_or_item_name, alive, gps_fix_status, radio_range, phg, timestamp, nmea_checksum_ok```
|
41
|
+
|
42
|
+
## Development
|
43
|
+
|
44
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
45
|
+
|
46
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
47
|
+
|
48
|
+
## Contributing
|
49
|
+
|
50
|
+
1. Fork it ( https://github.com/masone/aprs_parser-ruby/fork )
|
51
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
52
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
53
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
54
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/aprs_parser.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'aprs_parser/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'aprs_parser'
|
8
|
+
spec.version = AprsParser::VERSION
|
9
|
+
spec.authors = ['Christian Felder (masone)']
|
10
|
+
spec.email = ['ema@rh-productions.ch']
|
11
|
+
|
12
|
+
spec.summary = 'Ruby APRS parser'
|
13
|
+
spec.description = 'Ruby APRS parser based on libfap'
|
14
|
+
spec.homepage = 'https://github.com/masone/aprs_parser-ruby'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(/^(test|spec|features)\//) }
|
17
|
+
spec.bindir = 'exe'
|
18
|
+
spec.executables = spec.files.grep(/^exe\//) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.extensions = ['ext/aprs_parser/extconf.rb']
|
21
|
+
|
22
|
+
spec.add_dependency 'ffi'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.8'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rake-compiler'
|
27
|
+
spec.add_development_dependency 'minitest'
|
28
|
+
spec.add_development_dependency 'rubocop'
|
29
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'aprs_parser'
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require 'irb'
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Converters
|
3
|
+
class DoublePointer
|
4
|
+
extend FFI::DataConverter
|
5
|
+
native_type FFI::Type::POINTER
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def from_native(value, _context)
|
9
|
+
value.get_double(0) unless value.null?
|
10
|
+
end
|
11
|
+
|
12
|
+
def reference_required?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Converters
|
3
|
+
class AprsPath
|
4
|
+
extend FFI::DataConverter
|
5
|
+
native_type FFI::Type::POINTER
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# The path field is represented by an array of at least two strings
|
9
|
+
def from_native(value, _context)
|
10
|
+
value.get_array_of_string(0) unless value.null?
|
11
|
+
end
|
12
|
+
|
13
|
+
def reference_required?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Converters
|
3
|
+
class ShortPointer
|
4
|
+
extend FFI::DataConverter
|
5
|
+
native_type FFI::Type::POINTER
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def from_native(value, _context)
|
9
|
+
value.get_short(0) unless value.null?
|
10
|
+
end
|
11
|
+
|
12
|
+
def reference_required?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Converters
|
3
|
+
class Timestamp
|
4
|
+
extend FFI::DataConverter
|
5
|
+
native_type FFI::Type::POINTER
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def from_native(value, _context)
|
9
|
+
value.get_int(0) unless value.null?
|
10
|
+
end
|
11
|
+
|
12
|
+
def reference_required?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Converters
|
3
|
+
class UintPointer
|
4
|
+
extend FFI::DataConverter
|
5
|
+
native_type FFI::Type::POINTER
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def from_native(value, _context)
|
9
|
+
value.get_uint(0) unless value.null?
|
10
|
+
end
|
11
|
+
|
12
|
+
def reference_required?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Enums
|
3
|
+
extend FFI::Library
|
4
|
+
|
5
|
+
ErrorCode = enum [
|
6
|
+
:fapPACKET_NO, :fapPACKET_SHORT, :fapPACKET_NOBODY, :fapSRCCALL_NOAX25,
|
7
|
+
:fapSRCCALL_BADCHARS, :fapDSTPATH_TOOMANY, :fapDSTCALL_NONE, :fapDSTCALL_NOAX25,
|
8
|
+
:fapDIGICALL_NOAX25, :fapDIGICALL_BADCHARS, :fapTIMESTAMP_INV_LOC, :fapTIMESTAMP_INV_OBJ,
|
9
|
+
:fapTIMESTAMP_INV_STA, :fapTIMESTAMP_INV_GPGGA, :fapTIMESTAMP_INV_GPGLL, :fapPACKET_INVALID,
|
10
|
+
:fapNMEA_INV_CVAL, :fapNMEA_LARGE_EW, :fapNMEA_LARGE_NS, :fapNMEA_INV_SIGN,
|
11
|
+
:fapNMEA_INV_CKSUM, :fapGPRMC_FEWFIELDS, :fapGPRMC_NOFIX, :fapGPRMC_INV_TIME,
|
12
|
+
:fapGPRMC_INV_DATE, :fapGPRMC_DATE_OUT, :fapGPGGA_FEWFIELDS, :fapGPGGA_NOFIX,
|
13
|
+
:fapGPGLL_FEWFIELDS, :fapGPGLL_NOFIX, :fapNMEA_UNSUPP, :fapOBJ_SHORT,
|
14
|
+
:fapOBJ_INV, :fapOBJ_DEC_ERR, :fapITEM_SHORT, :fapITEM_INV,
|
15
|
+
:fapITEM_DEC_ERR, :fapLOC_SHORT, :fapLOC_INV, :fapLOC_LARGE,
|
16
|
+
:fapLOC_AMB_INV, :fapMICE_SHORT, :fapMICE_INV, :fapMICE_INV_INFO,
|
17
|
+
:fapMICE_AMB_LARGE, :fapMICE_AMB_INV, :fapMICE_AMB_ODD, :fapCOMP_INV,
|
18
|
+
:fapCOMP_SHORT, :fapMSG_INV, :fapWX_UNSUPP, :fapUSER_UNSUPP,
|
19
|
+
:fapDX_INV_SRC, :fapDX_INF_FREQ, :fapDX_NO_DX, :fapTLM_INV,
|
20
|
+
:fapTLM_LARGE, :fapTLM_UNSUPP, :fapEXP_UNSUPP, :fapSYM_INV_TABLE,
|
21
|
+
:fapNOT_IMPLEMENTED, :fapNMEA_NOFIELDS, :fapNO_APRS
|
22
|
+
]
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Structs
|
3
|
+
extend FFI::Library
|
4
|
+
|
5
|
+
enum :pos_format, [:fapPOS_COMPRESSED, :fapPOS_UNCOMPRESSED, :fapPOS_MICE, :fapPOS_NMEA]
|
6
|
+
|
7
|
+
class Package < FFI::Struct
|
8
|
+
extend AprsParser::TypeSafety
|
9
|
+
|
10
|
+
layout error_code: AprsParser::Enums::ErrorCode,
|
11
|
+
type: :pointer, # AprsParser::Enums::PacketType,
|
12
|
+
orig_packet: :string,
|
13
|
+
orig_packet_len: :uint,
|
14
|
+
header: :string,
|
15
|
+
body: :pointer,
|
16
|
+
body_len: :uint,
|
17
|
+
src_callsign: :string,
|
18
|
+
dst_callsign: :string,
|
19
|
+
path: AprsParser::Converters::AprsPath,
|
20
|
+
path_len: :uint,
|
21
|
+
latitude: AprsParser::Converters::DoublePointer,
|
22
|
+
longitude: AprsParser::Converters::DoublePointer,
|
23
|
+
format: :pointer, # AprsParser::Enums::PosFormat,
|
24
|
+
pos_resolution: AprsParser::Converters::DoublePointer,
|
25
|
+
pos_ambiguity: AprsParser::Converters::UintPointer,
|
26
|
+
dao_datum_byte: :char,
|
27
|
+
altitude: AprsParser::Converters::DoublePointer,
|
28
|
+
course: AprsParser::Converters::UintPointer,
|
29
|
+
speed: AprsParser::Converters::DoublePointer,
|
30
|
+
symbol_table: :char,
|
31
|
+
symbol_code: :char,
|
32
|
+
messaging: AprsParser::Converters::ShortPointer,
|
33
|
+
destination: :string,
|
34
|
+
message: :string,
|
35
|
+
message_ack: :string,
|
36
|
+
message_nack: :string,
|
37
|
+
message_id: :string,
|
38
|
+
comment: :string,
|
39
|
+
comment_len: :uint,
|
40
|
+
object_or_item_name: :string,
|
41
|
+
alive: AprsParser::Converters::ShortPointer,
|
42
|
+
gps_fix_status: AprsParser::Converters::ShortPointer,
|
43
|
+
radio_range: AprsParser::Converters::UintPointer,
|
44
|
+
phg: :string,
|
45
|
+
timestamp: AprsParser::Converters::Timestamp,
|
46
|
+
nmea_checksum_ok: AprsParser::Converters::ShortPointer
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Structs
|
3
|
+
class Telemetry < FFI::Struct
|
4
|
+
extend AprsParser::TypeSafety
|
5
|
+
|
6
|
+
layout :seq, :uint,
|
7
|
+
:val1, :double,
|
8
|
+
:val2, :double,
|
9
|
+
:val3, :double,
|
10
|
+
:val4, :double,
|
11
|
+
:val5, :double,
|
12
|
+
:bits, :char
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module AprsParser
|
2
|
+
module Structs
|
3
|
+
class WxReport < FFI::Struct
|
4
|
+
extend AprsParser::TypeSafety
|
5
|
+
|
6
|
+
layout :wind_gust, AprsParser::Converters::DoublePointer,
|
7
|
+
:wind_dir, AprsParser::Converters::UintPointer,
|
8
|
+
:wind_speed, AprsParser::Converters::DoublePointer,
|
9
|
+
:temp, AprsParser::Converters::DoublePointer,
|
10
|
+
:temp_in, AprsParser::Converters::DoublePointer,
|
11
|
+
:rain_1h, AprsParser::Converters::DoublePointer,
|
12
|
+
:rain_24h, AprsParser::Converters::DoublePointer,
|
13
|
+
:rain_midnight, AprsParser::Converters::DoublePointer,
|
14
|
+
:humidity, AprsParser::Converters::UintPointer,
|
15
|
+
:humidity_h, AprsParser::Converters::UintPointer,
|
16
|
+
:humidity_in, AprsParser::Converters::UintPointer,
|
17
|
+
:pressure, AprsParser::Converters::DoublePointer,
|
18
|
+
:luminosity, AprsParser::Converters::UintPointer,
|
19
|
+
:snow_24h, AprsParser::Converters::DoublePointer,
|
20
|
+
:soft, :string
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module AprsParser
|
2
|
+
# Checks all values coming in and makes sure
|
3
|
+
# they are of an instance of the correct {#type_class}.
|
4
|
+
module TypeSafety
|
5
|
+
# Convert given value to native value, with type checking.
|
6
|
+
#
|
7
|
+
# @note Calls super-implementation if type is safe.
|
8
|
+
#
|
9
|
+
# @param value
|
10
|
+
# @param ctx
|
11
|
+
# @raise [TypeError] if value is not of the same kind as {#type_class}.
|
12
|
+
def to_native(value, ctx)
|
13
|
+
if value.is_a?(type_class)
|
14
|
+
super
|
15
|
+
else
|
16
|
+
fail TypeError, "expected a kind of #{name}, was #{value.class}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Retrieve the type that all objects going into to_native must be of.
|
21
|
+
#
|
22
|
+
# @return self by default
|
23
|
+
def type_class
|
24
|
+
self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/aprs_parser.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'ffi'
|
2
|
+
require 'aprs_parser/version'
|
3
|
+
require 'aprs_parser/type_safety'
|
4
|
+
require 'aprs_parser/converters'
|
5
|
+
require 'aprs_parser/enums'
|
6
|
+
require 'aprs_parser/structs'
|
7
|
+
|
8
|
+
module AprsParser
|
9
|
+
extend FFI::Library
|
10
|
+
ffi_lib 'fap'
|
11
|
+
|
12
|
+
attach_function :fap_init, [], :void
|
13
|
+
attach_function :fap_cleanup, [], :void
|
14
|
+
attach_function :fap_parse, :fap_parseaprs, [:string, :uint, :bool], AprsParser::Structs::Package.ptr
|
15
|
+
|
16
|
+
def self.parse(message)
|
17
|
+
AprsParser.fap_init
|
18
|
+
begin
|
19
|
+
AprsParser.fap_parse(message, message.bytesize, false)
|
20
|
+
ensure
|
21
|
+
AprsParser.fap_cleanup
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aprs_parser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Christian Felder (masone)
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.8'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake-compiler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Ruby APRS parser based on libfap
|
98
|
+
email:
|
99
|
+
- ema@rh-productions.ch
|
100
|
+
executables: []
|
101
|
+
extensions:
|
102
|
+
- ext/aprs_parser/extconf.rb
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rubocop.yml"
|
107
|
+
- CHANGELOG.md
|
108
|
+
- Gemfile
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- aprs_parser.gemspec
|
112
|
+
- bin/console
|
113
|
+
- bin/setup
|
114
|
+
- ext/aprs_parser/extconf.rb
|
115
|
+
- lib/aprs_parser.rb
|
116
|
+
- lib/aprs_parser/converters.rb
|
117
|
+
- lib/aprs_parser/converters/double_pointer.rb
|
118
|
+
- lib/aprs_parser/converters/path.rb
|
119
|
+
- lib/aprs_parser/converters/short_pointer.rb
|
120
|
+
- lib/aprs_parser/converters/timestamp.rb
|
121
|
+
- lib/aprs_parser/converters/uint_pointer.rb
|
122
|
+
- lib/aprs_parser/enums.rb
|
123
|
+
- lib/aprs_parser/enums/error_code.rb
|
124
|
+
- lib/aprs_parser/enums/packet_type.rb
|
125
|
+
- lib/aprs_parser/enums/pos_format.rb
|
126
|
+
- lib/aprs_parser/structs.rb
|
127
|
+
- lib/aprs_parser/structs/package.rb
|
128
|
+
- lib/aprs_parser/structs/telemetry.rb
|
129
|
+
- lib/aprs_parser/structs/wx_report.rb
|
130
|
+
- lib/aprs_parser/type_safety.rb
|
131
|
+
- lib/aprs_parser/version.rb
|
132
|
+
homepage: https://github.com/masone/aprs_parser-ruby
|
133
|
+
licenses: []
|
134
|
+
metadata: {}
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
require_paths:
|
138
|
+
- lib
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: 1.3.1
|
149
|
+
requirements: []
|
150
|
+
rubyforge_project:
|
151
|
+
rubygems_version: 2.4.6
|
152
|
+
signing_key:
|
153
|
+
specification_version: 4
|
154
|
+
summary: Ruby APRS parser
|
155
|
+
test_files: []
|