From 2203163e8b91ee37e9c719a9898b0222f7175e3a Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me> Date: Wed, 16 Aug 2023 13:38:52 -0400 Subject: [PATCH] Added Encoder interface --- lib/apex/encoder.rb | 1 + lib/apex/encoder/aprs_kiss.rb | 10 ++++++++-- lib/apex/encoder/encoder.rb | 9 +++++++++ lib/apex/encoder/igate_tcp.rb | 2 ++ 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 lib/apex/encoder/encoder.rb diff --git a/lib/apex/encoder.rb b/lib/apex/encoder.rb index 089aa09..b158581 100644 --- a/lib/apex/encoder.rb +++ b/lib/apex/encoder.rb @@ -1,2 +1,3 @@ require 'apex/encoder/aprs_kiss' require 'apex/encoder/igate_tcp' +require 'apex/encoder/encoder' diff --git a/lib/apex/encoder/aprs_kiss.rb b/lib/apex/encoder/aprs_kiss.rb index fa4ec7e..d1114ce 100644 --- a/lib/apex/encoder/aprs_kiss.rb +++ b/lib/apex/encoder/aprs_kiss.rb @@ -1,15 +1,21 @@ require 'apex/frame' +require 'kiss' +require 'apex/encoder/encoder' module Apex class AprsKiss + include Encoder ## # Creates a new AprsKiss encoder # - # @param data_stream [Kiss::KissAbstract] The underlying data stream - # frames are written to. + # @param data_stream [Kiss::Kiss] The underlying data stream frames are + # written to. protected def initialize(data_stream) + raise ArgumentError.new("data_stream can not be nil") if data_stream.nil? + raise ArgumentError.new("data_stream must be a Kiss class: #{data_stream.to_s}") unless data_stream.kind_of? Kiss::Kiss + @data_stream = data_stream end diff --git a/lib/apex/encoder/encoder.rb b/lib/apex/encoder/encoder.rb new file mode 100644 index 0000000..0ac4396 --- /dev/null +++ b/lib/apex/encoder/encoder.rb @@ -0,0 +1,9 @@ +require 'abstractify' + +module Apex + module Encoder + include Abstractify::Abstract + + abstract :write_interface, :read_interface, :connect, :close + end +end diff --git a/lib/apex/encoder/igate_tcp.rb b/lib/apex/encoder/igate_tcp.rb index 3217872..beff68b 100644 --- a/lib/apex/encoder/igate_tcp.rb +++ b/lib/apex/encoder/igate_tcp.rb @@ -2,6 +2,8 @@ require 'apex/app_info' module Apex class IGateTcp + include Encoder + DEFAULT_APRSIS_URL = 'http://srvr.aprs-is.net:8080' DEFAULT_APRSIS_SERVER = 'rotate.aprs.net' DEFAULT_APRSIS_FILTER_PORT = 14580 -- GitLab