Solo-II Upload Command Utilities  1.0a
Utilities for creating Solo-II upload command Short Burst Data (SBD) messages and uploading them over the Iridium satellite communication network.
 All Data Structures Files Functions Variables Enumerations Enumerator Macros Pages
Solo-II Upload Command Utilities Documentation

solo2-create-cmd-sbd - A compiled utility for validating commands and creating Solo-II upload command Short Burst Data (SBD) messages.

solo2-get-iri-info - A scripted utility that retreives Iridum gateway information for a Solo-II float.

solo2-upload-cmd - A wrapper script for creating Solo-II upload command Short Burst Data (SBD) messages using solo2-create-cmd-sbd, automated retrieval of the Irdidium gateway information for the desired instrument, generatation of email messages, providing authentication to the WHOI outgoing mail server, and finally sending the message to the remote instrument in the field.

Synopsis

solo2-create-cmd-sbd [OPTIONS] SBDFILE
solo2-create-cmd-sbd [OPTIONS] [ -f CMDFILE | -c CMDSTR] SBDFILE
solo2-create-cmd-sbd [ -D CMD | -h | -l | -L | -V ]

solo2-get-iri-info [ OPTIONS ] INSTID ...

solo2-upload-cmd [ OPTIONS ] INSTID
solo2-upload-cmd [ OPTIONS ] [ -f CMDFILE | -c CMDSTR ] INSTID
solo2-upload-cmd [ -D CMD | -h | -l | -L | -V ]

Description

This project contains a set of compiled and scripted utilities that facilitate and automate many aspects of controlling Solo-II instrument remotely over the Iridium satellite communication network.

solo2-create-cmd-sbd

solo2-create-cmd-sbd reads a set of commands from the program options, from a file, or from standard input depending on the program options provided. Then, solo2-create-cmd-sbd parses and validates each command and associated arguments. If all commands are valid then they are encoded into the Solo-II SBD upload command format and the binary message data is written to SBDFILE.

solo2-create-cmd-sbd can be configured to read from a file by using the -f CMDFILE option, or the commands may be specified in the command arguments, using the -c CMDSTR option. If neither of these options are specified, then solo2-create-cmd-sbd will read commands from standard input by default.

solo2-upload-cmd

solo2-upload-cmd reads a set of commands, generates a Short Burst Data (SBD) messages using solo2-create-cmd-sbd, automatically retrieves the Irdidium gateway information for the specified instrument identifier, INSTID, creates an email message and a attaches the SBD file, provides authentication to the WHOI outgoing mail server, and finally sends the message to the remote instrument in the field.

solo2-upload-cmd can be configured to read from a file by using the -f CMDFILE option, or the commands may be specified in the command arguments, using the -c CMDSTR option. If neither of these options are specified, then solo2-upload-cmd will read commands from standard inputby default.

solo2-get-iri-info

solo2-get-iri-info searches through the most recent mail messages on the local filesystem and parses relevant Iridium gateway information. The Iridium gateway details are printed to standard output.

One or more instrument identifiers may be passed to solo2-get-iri-info as command arguments INSTID [...]. The Iridium details for each will be printed on a seperate line and demarkated with the prefix "IRIDIUM". Addtional output is printed with the prefix "#" to indicate log messages.

solo2-get-iri-info prints 8 fields for each instrument identifier provided. Theses include

  • "IRIDIUM". This text is printed at the start of each line to indicate that Iridium gateway information is contained the corresponding line and facilitatie parsing of the output.
  • Index. This field uniquely indexes each "IRIDIUM" line printed, starting at zero.
  • INSTID. The instrument identifier.
  • IMEI. The instrument's International Mobile Equipment Identifier.
  • Gateway Type Enumerator. This field contains the value 1 to indicate that the instrument is on the civilian gateway or 2 for DoD gateway.
  • Gateway Name. This field either contains the string "civilian" or the string "DoD" to indicate which gateway this instrument is using.
  • Incoming E-mail Address. The cotents of the "FROM" field of the mail messages for valid incoming mail messages. This is determined by the gateway type.
  • Outgoing E-mail Address. The address that is used for uploading commands to the instrument in the field. This is determined by the gateway type.

Commands

"0" Command: Reset Instrument

#-------------------------------------------------------------------------------
# reset
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 0    0    1    PwRst  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 0   1    PwRst   1    PASSWRD -      # reset password

"1" Command: Abort/Beacon Mode

#-------------------------------------------------------------------------------
# abort mission
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 1    1    1    PwAbrt 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 1   1    PwAbrt  1    PASSWRD -      # abort password

"2" Command: Restart Instrument

#-------------------------------------------------------------------------------
# restart
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 2    2    1    PwRstrt
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 2   1    PwRstrt 1    PASSWRD -      # restart password

"3" Command: Set Mission Phase (Sub-Cycle)

#-------------------------------------------------------------------------------
# mission phase (sub-cycle)
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2   
CMD 3    3    2    PwCyc   CycNo  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 3   1    PwCyc   1    PASSWRD -      # mission phase (sub-cycle) password
ARG 3   2    CycNo   3    INT_ENU -      # mission phase (sub-cycle) number

"4" Command: Set Arbitrary Parameter

#-------------------------------------------------------------------------------
# parameter
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3   
CMD 4    4    3    param   value   PwPrm  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 4   1    param   4    STRING  -      # parameter
ARG 4   2    value   2    INT_BND -      # value
ARG 4   3    PwPrm   1    PASSWRD -      # parameter password

"B" Command: Set Binned Profile Mode

#-------------------------------------------------------------------------------
# profile bin mode configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 5    B    1    BinMod 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 5   1    BinMod  2    INT_BND -      # profile bin mode

"C" Command: Set Profile Data configuration

#-------------------------------------------------------------------------------
# profile data configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4    arg5    arg6    arg7   
CMD 6    C    7    PROup   BLOK    PB1     PB2     AV1     AV2     CTDoffZ
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 6   1    PROup   2    INT_BND -      # profile type
ARG 6   2    BLOK    2    INT_BND dBar   # bin size for 1st interval
ARG 6   3    PB1     2    INT_BND dBar   # first pressure break
ARG 6   4    PB2     2    INT_BND dBar   # second pressure break
ARG 6   5    AV1     2    INT_BND -      # bin size modifier for 2nd interval
ARG 6   6    AV2     2    INT_BND -      # bin size modifier for 3rd interval
ARG 6   7    CTDoffZ 2    INT_BND dBar   # minimum profile pressure

"D" Command: Set Drift Configuration

#-------------------------------------------------------------------------------
# drift duration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3   
CMD 7    D    3    x       SAMmnx  Nsamx  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 7   1    x       3    INT_ENU -      # mission phase (sub-cycle) number
ARG 7   2    SAMmnx  2    INT_BND min    # drift/park sample interval duration
ARG 7   3    Nsamx   2    INT_BND -      # number of drift/park samples

"F" Command: Set Ascent/Descent Sleep Configuration

#-------------------------------------------------------------------------------
# sleep configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2   
CMD 8    F    2    SkSlSc  AsSlSc 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 8   1    SkSlSc  2    INT_BND sec    # descent sleep interval
ARG 8   2    AsSlSc  2    INT_BND sec    # ascent sleep interval

"G" Command: Set Sensor Gains and Offsets

#-------------------------------------------------------------------------------
# sensor gains and offsets
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4   
CMD 9    G    4    PwSns   sensor  gain    offset 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 9   1    PwSns   1    PASSWRD -      # sensor gains and offsets password
ARG 9   2    sensor  2    INT_BND -      # sensor
ARG 9   3    gain    2    INT_BND LSB    # gain
ARG 9   4    offset  2    INT_BND -      # offset

"H" Command: Set Pump Configuration

#-------------------------------------------------------------------------------
# pump configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4    arg5    arg6   
CMD 10   H    6    MxHiP   PmpBtm  PmpSLo  MinRis  OILvac  MnSfP  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 10  1    MxHiP   2    INT_BND sec    # maximum pump time
ARG 10  2    PmpBtm  2    INT_BND sec    # start-of-ascent pump duration
ARG 10  3    PmpSLo  2    INT_BND sec    # ascent pump time
ARG 10  4    MinRis  2    INT_BND cm/sec # minimum ascent rate
ARG 10  5    OILvac  2    INT_BND counts # maximum oil vacuum
ARG 10  6    MnSfP   2    INT_BND sec    # minimum surface pump duration

"I" Command: Set Abort Beacon Interval

#-------------------------------------------------------------------------------
# abort/beacon mode configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 11   I    1    Abcysc 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 11  1    Abcysc  2    INT_BND sec    # beacon interval

"L" Command: Set Surface Drift Configuration

#-------------------------------------------------------------------------------
# surface drift configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4    arg5   
CMD 12   L    5    SrfDrf  SrfLon  SrfLat  SrfMxN  SrfInt 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 12  1    SrfDrf  2    INT_BND -      # surface drift mode
ARG 12  2    SrfLon  2    INT_BND deg/20 # target longitude
ARG 12  3    SrfLat  2    INT_BND deg/20 # target latitude
ARG 12  4    SrfMxN  2    INT_BND -      # maximum surface drift intervals
ARG 12  5    SrfInt  2    INT_BND min    # surface drift interval duration

"N" Command: Set Final Dive

#-------------------------------------------------------------------------------
# final dive
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 13   N    1    FnlDiv 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 13  1    FnlDiv  2    INT_BND -      # final dive

"P" Command: Request Parameter Dump

#-------------------------------------------------------------------------------
# parameter dump
#-------------------------------------------------------------------------------
#   idx  id   narg
CMD 14   P    0   

"Q" Command: Request Packet Retransmission

#-------------------------------------------------------------------------------
# retransmit packet
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2   
CMD 15   Q    2    DiveNo  pid    
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 15  1    DiveNo  2    INT_BND -      # dive cycle number
ARG 15  2    pid     2    INT_BND -      # packet identifier

"R" Command: Request Dive Data Retransmission

#-------------------------------------------------------------------------------
# retransmit dive data
#-------------------------------------------------------------------------------
#   idx  id   narg arg1   
CMD 16   R    1    DiveNo 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 16  1    DiveNo  2    INT_BND -      # dive cycle number

"S" Command: Set Satellite Configuration

#-------------------------------------------------------------------------------
# satellite configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3   
CMD 17   S    3    GPSsec  IRIsec  MxSfp  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 17  1    GPSsec  2    INT_BND sec    # maximum GPS fix duration
ARG 17  2    IRIsec  2    INT_BND sec    # maximum iridium duration
ARG 17  3    MxSfp   2    INT_BND sec    # maximum surface pump duration

"T" Command: Set Dive Cycle Timing Configuration

#-------------------------------------------------------------------------------
# dive cycle timing configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4   
CMD 18   T    4    x       Fallx   Risex   Pwaitx 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 18  1    x       3    INT_ENU -      # mission phase (sub-cycle) number
ARG 18  2    Fallx   2    INT_BND min    # maximum descent-to-drift duration
ARG 18  3    Risex   2    INT_BND min    # maximum ascent/profile duration
ARG 18  4    Pwaitx  2    INT_BND min    # maximum descent-to-profile duration

"U" Command: Set Unbinned Profile data configuration

#-------------------------------------------------------------------------------
# unbinned profile data configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3   
CMD 19   U    3    UNBINd  UNZmax  UBn    
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 19  1    UNBINd  2    INT_BND -      # unbinned data mode
ARG 19  2    UNZmax  2    INT_BND dBar   # start pressure
ARG 19  3    UBn     2    INT_BND -      # maximum samples

"Z" Command: Set Mission Phase (Sub-Cycle) Configuration

#-------------------------------------------------------------------------------
# mission phase (sub-cycle) configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4    arg5   
CMD 20   Z    5    x       Cycx    Ztarx   Zprox   Tlastx 
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 20  1    x       3    INT_ENU -      # mission phase (sub-cycle) number
ARG 20  2    Cycx    2    INT_BND dives  # number of dive cycles
ARG 20  3    Ztarx   2    INT_BND dBar   # target drift/park pressure
ARG 20  4    Zprox   2    INT_BND dBar   # target profile pressure
ARG 20  5    Tlastx  2    INT_BND sec    # first descent pump duration

"#" Command: Set Seek Configuration

#-------------------------------------------------------------------------------
# seek configuration
#-------------------------------------------------------------------------------
#   idx  id   narg arg1    arg2    arg3    arg4   
CMD 21   #    4    Nseek   STLmin  dTadZ   dTsdZ  
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#   idx aIdx id      type typName units 
ARG 21  1    Nseek   2    INT_BND seeks  # maximum seek attempts
ARG 21  2    STLmin  2    INT_BND min    # seek duration
ARG 21  3    dTadZ   2    INT_BND msec   # pump time to ascend 100m
ARG 21  4    dTsdZ   2    INT_BND msec   # pump time to descend 100m

Author

Mr. Alexander K. Ekholm <aekho.nosp@m.lm@w.nosp@m.hoi.e.nosp@m.du>,
Engineer I,
Department of Physical Oceanography,
Woods Hole Oceanographic Institution,
Woods Hole, MA 02543-1050 USA

Copyright

2016 Woods Hole Oceanographic Institution.
Released under the GNU General Public License.

This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this software. If not, please visit http://www.gnu.org/licenses/.