Package: robotframework-aprslib
robotframework-aprslibrobotframework-aprslibis aRobot Frameworkkeyword collection for theaprslibPython library. It allowslicensed ham radio operatorsto establish a connection to the APRS-IS servers and send/receive/decode APRS requests.InstallationThe easiest way is to install this package is from pypi:pip install robotframework-aprslibRobot Framework Library ExamplesIn order to run these scripts, you need to add your call sign to the script's configuration section:# This is your APRS-IS call sign. Replace this place holder with your personal call sign
${callsign}   YOURCALLSIGNReplace the current placeholder with your call sign and you are good to go. The Robot Framework 5 examples use the new WHILE loop for an 'eternal' loop; all other code samples use finite FOR loops and will terminate after processing 10 records in a row.Echo incoming APRS messagesSend and receive a single APRS messageReceive a message, acknowledge it if necessary and then respond to itROBOT FRAMEWORK 5: Echo incoming APRS messagesROBOT FRAMEWORK 5: Receive a message, acknowledge it if necessary and then respond to itLibrary usage and supported keywordsDefault settings for a new APRS-IS connection via robotframework-aprslibWhen you initialize an APRS connection without explicitly setting parameters such as server, port, user/pass and filter, the following default values are automatically applied:server=euro.aprs2.netport=14580callsign=N0CALLpasscode=-1aprs-is filter= not setaprsis_msgno=0(this is equal toAAif you rather want to use themore recent replyack scheme)This default set of values will allow you to establish a read-only connection to APRS-IS, assuming that the respective APRS-IS server that you intend to connect with permits such a connection.Change the server / port / etcYou can either specify all parameters during the initial setup of the library or alternatively via separate keywordsOption 1 - set as position parameters*** Settings ***

Library  AprsLibrary  server_value  port_value  user_value  passcode_value  filter_value  message_value

*** Test Cases ***
My first test caseOption 2 - set as named parameters*** Settings ***

Library  AprsLibrary  aprsis_server=server_value  aprsis_port=port_value  aprsis_callsign=user_value  aprsis_passcode=passcode_value  aprsis_filter=filter_value aprsis_msgno = msgno_value

*** Test Cases ***
My first test caseOption 3 - Use Robot KeywordsKeywordDescriptionSet APRS-IS ServerandGet APRS-IS ServerSets/Gets the APRS-IS serverSet APRS-IS PortandGet APRS-IS PortSets/Gets the APRS-IS portSet APRS-IS CallsignandGet APRS-IS CallsignSets/Gets the APRS-IS callsign (user name)Set APRS-IS PasscodeandGet APRS-IS PasscodeSets/Gets the APRS-IS passcodeSet APRS-IS FilterandGet APRS-IS FilterSets/Gets the APRS-IS server filter. Note: This keyword performs a (basic) sanity check on the content and will cause an error in case an invalid filter qualifier has been submittedGet Current APRS-IS ConfigurationReturns a dictionary containing all previously listed parameters and the APRS-IS connection status to the user (basically a collection of all previously mentioned keywords). An AIS object whose value is different toNoneindicates an active connection.Other Robot Keywords supported by this libraryKeywordDescriptionParameterCalculate APRS-IS PasscodeCalculates the APRS-IS passcode (based on the given call sign) and returns it to the useraprsis_callsignParse APRS PacketParses the given APRS packet. In case the packet is either invalid or its format is unknown, an exception will be triggeredaprs_packetConnect to APRS-ISEstablishes a socket connection to the APRS-IS networkDisconnect from APRS-ISDisconnects from the APRS-IS networkSend APRS PacketSends a raw APRS packet to APRS-IS in case an open connection to the APRS-IS network has been establishedpacket(string)Receive APRS PacketReceives an APRS packet to APRS-IS in case an open connection to the APRS-IS network has been established. The default setting uses the parameter valuesimmortal=Trueandraw=False, meaning that aprslib will try to re-establish the connection in case it is lost and will also auto-decode APRS packets when receivedimmortalandraw(both boolean params)Get <field name> Value from APRS Packetvarious wrappers; e.g.Get Message Text Value From APRS Packetwill return the decoded message string if it is present in the messageaprs_packet. If you specify a field that does not exit in the packet, this keyword will cause an error. Both raw and decoded messages are supported.Get Value From APRS Packetcalled by the aforementionedGet <field name> Value fron APRS Packetfunctionsaprs_packetandfield_name. If you specify a field that does not exit in the packet, this keyword will cause an error. Both raw and decoded messages are supported.Check If APRS Packet Contains <field name>Similar toGet <field name> Value From APRS Packetbut returnsTrue/Falsein case the field does / does not exitaprs_packet.  Both raw and decoded messages are supported.Check If APRS Packet Containscalled by the aforementionedCheck If APRS Packet Contains <field name>functionsaprs_packetandfield_nameGet APRS MsgNo,Set APRS MsgNo,Increment APRS MsgNoandGet APRS MsgNo as AlphanumericGets and sets the MsgNo that you can use for building up your own messages (aka library-maintained counter value). Thealphanumerickeyword provides the message number in a format whichsupports the more recent replyack scheme. Anincrementto the value of675(ZZ) will automatically reset the value to0(AA). BothGet APRS MsgNomethods do NOT automatically increment the message number.Set APRS MsgNoallows you to set a numeric value between 0 and 675 (equalsAAtoZZ). All other keywords have no parameters.Known issuesWhen you need to define strings which contain multiple spaces, escaping these strings won't work as Robot will try to interpret these as list values. You need to construct them as Robot-conform strings with${SPACE}. Example:ABCD${SPACE}${SPACE}${SPACE}${SPACE}EFGHresults inABCD____EFGH(four blanks between the variable's value).Apart from minor helper methods for the connection setup and field check/retrieval, this Robot Framework library does not offer any additional keywords for exchanging data in a proper way. (Almost) every feature that the originalaprsliboffers is supported by this Robot library - nothing more and nothing less.TheReceive APRS Packetkeyword has no timeout which means that it will only return from its code if it has found a message that is to be returned to Robot. If you depend on timeout, you may need to amend your APRS-IS filter settings and handle the filter process in your code.The keywordSend APRS Packetwillnotcheck whether the APRS-IS connection has been establised read-only (N0CALLcall sign) or read-write.The fine printAPRS is a registered trademark of APRS Software and Bob Bruninga, WB4APR. Thank you, Bob!This is a hobby project. It has no commercial background whatsoever.Exchanging data with APRS(-IS)requires you to be a licensed ham radio operator. If you don't know what APRS is, then this library is not for you. Alternatively, you may want to explore the option of getting your own amateur radio license (it's a great hobby).