Professional Documents
Culture Documents
Issue: 1
Date: .................
Amendment Record
Issue Description Date Implemented By Approved By
1 Initial Issue 22nd April 2009 John Hatherall John Hatherall
2
3
[This document complies fully with the Design Inputs referenced within]
Commercial In Confidence
SAT-200/202 SCRIPTING API AND COMMAND INTERFACE
GDN-0559 Issue 1
COPYRIGHT
Copyright in this document is vested in Satamatics Ltd. This document is issued in confidence for the
purpose only for which it is supplied. It must not be reproduced in whole or in part except with the
consent in writing of Satamatics Ltd and then only on the condition that this notice is included in any
such reproduction. No information as to the contents or subject matter of this document or any part
thereof arising directly or indirectly therefrom shall be given orally or in writing or communicated in
any manner whatsoever to any third party being an individual firm or company or any employee
thereof without the prior consent in writing of Satamatics Ltd.
CONTENTS
1 INTRODUCTION........................................................................................................................ 1
2 TERMINAL DETAILS ............................................................................................................... 2
2.1 Processors .............................................................................................................................. 2
2.2 Physical Interface .................................................................................................................. 2
3 PROGRAMMING MODEL ....................................................................................................... 3
4 SCRIPTING OVERVIEW .......................................................................................................... 4
5 SCRIPTING MODULES AND REGISTERS ........................................................................... 5
5.1 Functional Modules ............................................................................................................... 5
5.2 Registers ................................................................................................................................ 6
5.2.1 Configuration Module Registers................................................................................... 7
5.2.2 Timer Module Registers ............................................................................................... 8
5.2.3 Alarm Module Registers ............................................................................................. 10
5.2.4 Interface Module Registers ......................................................................................... 12
5.2.5 GPS Module Registers................................................................................................ 13
5.2.6 Messaging Module Registers...................................................................................... 14
5.2.7 Scratchpad Module Registers ..................................................................................... 15
5.2.8 Operation Configuration Registers ............................................................................. 16
5.2.9 Constant Generator Registers ..................................................................................... 17
5.3 Configuration Module ......................................................................................................... 18
5.3.1 Ocean Region Selection Register................................................................................ 18
5.3.2 Service ID Selection Register ..................................................................................... 18
5.3.3 Satellite Selection Mode ............................................................................................. 19
5.3.3.1 Auto Select on Start Up.......................................................................................... 19
5.3.3.2 Follow Best Satellite Operation.............................................................................. 19
5.3.3.3 Switch On Satellite Loss ........................................................................................ 19
5.3.4 Power Control Register............................................................................................... 20
5.3.5 DSP Firmware Version Number................................................................................. 21
5.3.6 MSP Firmware Version Number ................................................................................ 21
5.3.7 Application Script Version Number ........................................................................... 21
5.3.8 Store Application Script.............................................................................................. 21
5.3.9 Delete Application Script............................................................................................ 21
5.3.10 Power Supply Status ................................................................................................... 21
5.3.11 NMEA Message Output.............................................................................................. 22
5.3.12 Slotted Receive Mode Register................................................................................... 22
5.3.13 Slotted Receive Mode Maximum Acquisition Retries ............................................... 22
5.3.14 ISN, & PSN................................................................................................................. 23
5.3.15 Hardware Version ....................................................................................................... 23
5.3.16 Group PID................................................................................................................... 23
5.3.17 Service ID / Beam ID.................................................................................................. 23
5.3.18 Operational Flags........................................................................................................ 23
5.3.19 Terminal Mobility....................................................................................................... 23
5.3.20 PACC Enable.............................................................................................................. 23
5.3.21 GEM Compatibility Enable ........................................................................................ 24
5.3.22 Terminal Reset............................................................................................................ 24
5.3.23 Scripting Capabilities.................................................................................................. 24
5.4 Timer Module...................................................................................................................... 25
5.4.1 Timer Functionality .................................................................................................... 25
5.4.1.1 Updating Timer Trigger Values ............................................................................. 25
5.4.2 Timer Count Register.................................................................................................. 25
5.4.3 Timer Configuration Register ..................................................................................... 25
TABLES
Table 1 – Terminal Module ID Codes .................................................................................................... 5
Table 2 – Configuration Module Registers............................................................................................. 7
Table 3 – Timer Module Registers ......................................................................................................... 9
Table 4 – Alarms Module Registers ..................................................................................................... 11
Table 5 – Interface Module Registers ................................................................................................... 12
Table 6 – GPS Module Registers.......................................................................................................... 13
Table 7 – Messaging Module Registers................................................................................................ 14
Table 8 – Scratchpad Module Registers ............................................................................................... 15
Table 9 – Operations Module Registers................................................................................................ 16
Table 10 – Constant Generators............................................................................................................ 17
Table 11 – Bulletin Board Selection Codes .......................................................................................... 18
Table 12 – Terminal Satellite Selection Mode Control Word .............................................................. 19
Table 13 – Power Control Register Bit Definitions ..............................................................................20
Table 14 – Register Bits Modified to Switch Terminal Operating Modes ........................................... 20
Table 15 – Power Supply Status Bit Definitions .................................................................................. 21
Table 16 – NMEA Message Enable Bits .............................................................................................. 22
Table 17 – Slotted Receive Mode Register Values............................................................................... 22
Table 18 - ISN Register Bit Allocation................................................................................................. 23
Table 19 – Timer Control Codes........................................................................................................... 25
Table 20 – Timer Configuration Register Field Definitions................................................................. 25
Table 21 – Alarm Control Codes .......................................................................................................... 29
Table 22 – Alarm Configuration Register Field Definitions ................................................................ 30
Table 23 – Alarm Comparison Mode Codes ........................................................................................ 31
Table 24 – Valid I/O Channel Configurations ...................................................................................... 33
Table 25 – I/O Pin Mode Configuration Codes .................................................................................... 34
Table 26 – User LED Colour Codes ..................................................................................................... 36
Table 27 – Latitude/Longitude Data Format......................................................................................... 37
Table 28 – Geofence Status Register .................................................................................................... 39
Table 29 – Return Message Type Numbers.......................................................................................... 41
Table 30 – Receiver Status Byte Fields ................................................................................................ 42
Table 31 – Transmitter Status Register Fields ...................................................................................... 43
Table 32 – Operation Configuration Register Field Definitions........................................................... 47
Table 33 – Operation Function Codes .................................................................................................. 48
Table 34 – Trigger Operation Forward Channel Message.................................................................... 51
Table 35 – Remote Poll Forward Channel Message............................................................................. 51
Table 36 - Remote Digital Output Control Forward Channel Message................................................ 52
Table 37 – Target Position Definition Message.................................................................................... 52
Table 38 – Remote Register Read/Write Message ............................................................................... 53
Table 39 – Example of Multiple Register Update Message Data Structure ......................................... 54
Table 40 – Return Burst Message Format ............................................................................................ 54
Table 41 – Operating Power Modes ..................................................................................................... 60
Table 42 - GPS data log record format ................................................................................................. 79
Table 43 - Forward Channel Message Header Format ......................................................................... 83
Table 44 – DS TO Operational Flags.................................................................................................... 98
Table 45 – DS TR Receiver Inhibit Status Codes.................................................................................99
Table 46 – DS TR Receiver Progress Codes ........................................................................................ 99
Table 47 – DS TR Terminal Error Codes ............................................................................................. 99
Table 48 – DS TT Transmit Progress ................................................................................................. 100
Table 49 – DS TT Transmit inhibit status........................................................................................... 101
Table 50 – NMEA RMC Sentence Format......................................................................................... 103
Table 51 – NMEA GGA Sentence Format ......................................................................................... 104
REFERENCES
[1]. MAN-0048 SAT-200/202 Functional Manual
[2]. GDN-0051 Satamatics Application Message Registry
[3]. MAN-0012 Programming in TSL
1 INTRODUCTION
This document describes the application programming interface to the Satamatics SAT-202 series of
Inmarsat-D terminals and other Satamatics products that incorporate the Satamatics, Inmarsat Type
Approved, SAT-200 module. This document also applies to the SAT-202 series when used in
combination with the GEM-100 interface module.
The SAT-202 terminal comprises a SAT-200 module contained within a SAT-201 type enclosure.
The SAT-202 supersedes, and provides a plug in replacement for, the SAT-201/201i series of
terminals. Backwards compatibility with regards to functionality has been largely maintained, but
there are some differences as detailed in Appendix C – Notes for Users Migrating from the SAT-201
Series..
• Using the terminals internal scripting engine. This method would be used if autonomous
operation is required.
• Using the serial communications interface to control the terminal. This method would be used
if the terminal is operated in conjunction with an external controller.
There is some commonality between these two methods but sections 4 and 5 of this document are
more relevant to the use of the scripting engine whereas section 7 focuses on external control.
2 TERMINAL DETAILS
A full description of the terminal variants and their capabilities is given in the relevant user
manual. You are also advised to read the SAT-200 Functional Manual, Ref. [1], before using the
commands detailed in this document to program a terminal.
2.1 Processors
The SAT-200 module contains three processors each with certain dedicated functions. These are:
MSP – a low power microprocessor that runs all of the time that power is applied to the terminal.
This processor provides the overall control of the terminal enabling the other two processors as
required for correct terminal operation. The MSP provides the scripting engine and processes the
commands received over the serial port interface.
DSP – a digital signal processor that provides the INMARSAT-D modem functionality, i.e.
transmission and reception of messages between the terminal and the satellite.
GPS – a dedicated processor that receives and decodes the GPS satellite signals to provide the
position data used by the terminal.
These three processors are referred to as MSP, DSP and GPS throughout this document.
Note: The serial port baud rate can be increased during a firmware upload (paragraph 7.13.1.1)
3 PROGRAMMING MODEL
A script is a simple program that is interpreted by the ‘scripting engine’, implemented within the
MSP, to perform autonomous control of the terminal.
To run a script it must first be uploaded to the terminal via the serial interface. The uploaded script
file would normally comprise a “configuration” part and an “operating script” part. The configuration
part consists of standard terminal commands that perform a one-time configuration of those functions
within the terminal that are not accessible through the autonomous operation of the scripting engine.
The operating script is that part of the uploaded file that is interpreted by the scripting engine – i.e. it
is run within the terminal in a manner similar to a software program.
Figure 1 shows access to the terminal functionality and status information. All functions are
accessible via the serial interface whereas some functionality and information is not accessible to an
operating script. (Configuration functions not accessible to the operating part of a script can still be
included in the configuration part of the uploaded script file as explained above.)
INMARSAT-D Terminal
Scripting engine
Section 5 – Details the scripting modules and registers and how these are interpreted by the
scripting engine.
Section 7 – Provides details of the serial command interface including command syntax and
function. Most of these functional specific commands control/monitor the terminal
through indirect access of the scripting registers, however the RR & RW commands
(paragraph 7.11) provide direct access, and Satamatics advise, where possible, the use
of the RR & RW commands for control and monitoring.
4 SCRIPTING OVERVIEW
For autonomous operation the terminal must be configured to perform actions (operations) in
response to events (alarms or timers).
Events are detected by monitoring values and status information, including that of user configurable
timers, held in the scripting registers. These values are compared with threshold or trigger values set
within the script and, if the comparison results in a trigger, then a number of response operations may
be performed.
The process of performing operations is controlled by the scripting engine. The terminal can be
considered to be running a script if at least one operations register (paragraph 5.10) has been
configured to perform an action in response to an event.
The terminal scripting functionality is provided by a set of functional modules that may be
programmed by a user to produce the required results. Each of the programmable modules has a set
of addressable registers that configure the module operation. The registers are addressable directly
through the RR & RW commands (paragraph 7.11), or indirectly via many of the other serial interface
commands listed in section 7.
Note: Satamatics advise the use of the RR & RW commands where possible. In any future
extensions, scripting registers will only be accessible via the RR & RW commands. The other
serial commands listed in section 7 are kept to maintain compatibility with legacy products.
Not all of the resources and functionality defined by the programming model is available on all
terminal variants. Functionality affected in this way is identified in this document. Any attempt to use
an unimplemented function will be ignored.
Determining the values to be written to the appropriate registers in order to realise an operational
script can be a lengthy and error prone process. Satamatics therefore provide a TSL (Terminal
Scripting Language) compiler, ref.[3], that enables users to write their script in a textual format and
environment more familiar to software programmers. Once written the script is compiled to produce a
file that comprises the serial commands (described in this document) that can then be sent to the
terminal to configure all the appropriate registers and functions.
The functionality provided by each of the modules is described in sections 5.3 to 5.11.
The functional modules within the terminal each contain a number of registers. These are addressed
by concatenating their module and internal register addresses. The address is used to access the
registers either through the RR & RW commands (paragraph 7.11) or, if being accessed as part of a
script, through the Operations registers (paragraph 5.10.1).
The module addresses used within the terminal are listed in Table 1.
5.2 Registers
Read/write access to the registers is indicated in the ‘Access’ column as follows:
R = Read only
W = Write only
R/W = Read and Write operation possible using the RR an RW commands respectively.
R/[W] = Register can be read using RR command but write access is achieved indirectly by
writing to another register or via a serial command other than RW.
Paragraph references are given for both the register description and, where applicable, the serial
command by which it can be accessed. It should be noted that all registers can be accessed by the RR
and/or RW commands (paragraph 7.11) and hence this reference is not listed. Some registers can only
be accessed via the RW/RR commands and in these cases no serial command reference is provided.
The configuration module provides access to the operational parameters of the terminal.
If the automatic satellite switching is enabled (section 5.3.3) then selecting an ocean region by writing
to the Ocean Region register may not result in the terminal using the selected ocean region. For
example, consider a terminal that is located in Brazil and configured in follow best mode. In this
location two satellites are visible; AORE and AORW, with the latter being higher in the sky. If a
value of 02 is written to this register then the terminal will switch to use AORE but, on the next GPS
update, the follow best algorithm will switch the terminal back to AORW.
With this option enabled, the terminal uses GPS position to select the ‘best’ satellite (ocean region) on
power on or wake from sleep. If this option is disabled then the last configured satellite is used.
Note: This option should not be enabled if slotted receive (5.3.12) is used.
The terminal will attempt to follow the best satellite based on the GPS position. The best satellite is
defined as the one with the highest elevation in the sky. Each time that the GPS provides a new valid
position fix this is compared with the satellite positions to determine the satellite that is highest in the
sky. If this is the currently selected satellite then the terminal will continue to use this satellite. If the
highest satellite is not currently selected then the terminal will switch over to the new best satellite.
If the terminal loses the signal from the best satellite due to antenna masking then it will suspend the
follow best algorithm and will try to acquire the satellites either side of the best. If it acquires the
signal from the second best satellite then it will use that satellite until its signal is lost and the follow
best satellite based on GPS position will resume.
When the terminal switches between satellites it can be configured to send a message. This notifies
the server application that the terminal has switched regions and allows any forward channel traffic
for the terminal to be routed correctly.
The terminal will attempt to switch satellites when the one currently in use is lost. A satellite is
considered lost when the terminal misses six successive traffic channel frames (three minutes
maximum) followed by two bulletin board frames (8 minutes maximum) or if, when the terminal
attempts to switch to the bulletin board frequency, it cannot detect the satellite signal.
Bit Function
0 1 = Enable RS-232 serial port drivers
1 1 = Enable Terminal Power
2 1 = Enable terminal indicator LED
3 1 = Enable ADC (analogue to digital converter) module.
If disabled the processor power rails, temperature and unit analogue inputs are
not measured.
4 1 = Disable GPS receiver
5 1 = Disable Inmarsat-D transceiver
6 <reserved> write as 0
7 <reserved> write as 0
8 1 = Enable IsatM2M slotted receive mode
NOTE It is NOT possible to change the state of this bit of the power control register
using the CE or CU commands. It can be changed using the RW command,
read with the RR command and used within terminal scripts.
9..31 <reserved> write as 0
Table 13 – Power Control Register Bit Definitions
In order to reduce overall power consumption the terminal uses an intelligent switch on method for
controlling power. Once the terminal has set its internal clock to UTC, it will power up the
Inmarsat-D transceiver at the optimal time to allow acquisition of the next Traffic Channel frame
header. As a consequence, a command to switch the power on to the terminal might not take effect for
up to 30 seconds.
Power to the Inmarsat-D transceiver and GPS module can be controlled independently.
The terminal operating mode can be switched by setting and clearing the register bits as shown in
Table 14 below:
Four of the timers and alarms have non volatile updates such that if their trigger values are changed
the updated value is also written back to non-volatile memory, modifying the stored script. (See
paragraphs 5.4.1.1 and 5.5.1.1.)
Bit Function
0 External dc power supply present
1 Solar panel supply present
2..31 Reserved for future use. Write as 0
Table 15 – Power Supply Status Bit Definitions
One set of enabled NMEA sentences is output on each GPS position update (i.e. once per second). If
GPS is not enabled then the output of NMEA sentences is inhibited.
The GSV sentence only holds information for up to four satellites, therefore if more satellites are in
view multiple GSV sentences might be output at each update. See paragraph 7.15 for details on the
RMC, GGA and GSV sentences.
The Inmarsat-D Service provides for messages to be sent to a group of terminals. This service is
achieved by programming terminals with a further PID (i.e. Group PID), which is identical for all
terminals in one group. The terminal can be programmed with up to 5 Group PIDs.
Programming of GPIDs is done via the password protected DS TG command (paragraph 7.14.6).
Bits Information
0..7 Number of alarms
8..15 Number of timers
16..23 Number of operations
The timer channels in the terminal are divided into two groups that differ in the effect that an update
to the trigger value has upon the stored script. If the trigger value on any of the timer channels 0 to 11
or 16 to 31 is updated as the result of a script operation then, if the terminal is restarted following a
power down, the timer trigger value will reset to the initial value defined in the original script. The
operation of timer channels 12 to 15 is slightly different. In the case of these four channels the timer
will restart with the updated trigger value that was set by the script operation. This allows, for
example, permanent changes to a terminal’s reporting rate to be made by triggering an operation
remotely with a forward channel message.
5.4.3.1 Enable
When this bit is set the timer channel is enabled, when cleared the timer channel is disabled.
5.4.3.2 Repeat
When this bit is clear the timer channel operates in single shot mode, when the timer reaches its
terminal count the operation is triggered and the timer is automatically disabled. When the bit is set
the timer operates in repeat mode; when it reaches its terminal count the operation is triggered, the
count register is reset to zero and the count restarts.
5.4.3.3 Mode
The mode bit sets the timer to operate in either interval (bit clear) or time of day (bit set) modes. In
interval mode the terminal count value represents the number of seconds that the timer is to count
before the event trigger. In the time of day mode the terminal count value indicates the time, in
seconds past midnight UTC, at which the event is to be triggered.
The operation number field is a 5 bit number (0..31) indicating the operation that is to be triggered
when the timer reaches its terminal count. This field size limits the operations that the timer channels
can trigger, i.e. a timer channel cannot trigger operations in the range 32 to 63.
The terminal count value is a 24-bit number representing the trigger value for the timer. The
maximum value that can be stored is 16777215 seconds or just over 194 days. The terminal count
value may also be set by writing to the terminal count value register for the channel. This provides an
easy way to modify a timer trigger value from within a script without having to preserve the least
significant bits of the configuration register.
The stop timers register is a 32-bit write only register. The value written to this register is a bit mask
of the channels to be stopped. Timer 0 is indicated by the LSB of the value and timer 31 by the MSB.
Writing a 1 to the channel control bit causes the timer to stop counting. The value reached in the
timer count register is held.
The start timers register is a 32-bit write only register. The value written to this register is a bit mask
of the channels to be started. Timer 0 is indicated by the LSB of the value and timer 31 by the MSB.
Writing a 1 to the channel control bit causes the timer to start counting from the current value in the
count register.
The reset timers register is a 32-bit write only register. The value written to this register is a bit mask
of the channels to be reset. Timer 0 is indicated by the LSB of the value and timer 31 by the MSB.
Writing a 1 to the channel control bit causes the timer to stop counting and the count register to be set
back to zero.
The restart timers register is a 32-bit write only register. The value written to this register is a bit
mask of the channels to be restarted. Timer 0 is indicated by the LSB of the value and timer 31 by the
MSB. Writing a 1 to the channel control bit causes the timer to restart its count from zero without
triggering an operation.
This function is only available for timer and alarm channels 0 to 15.
The timer channels to be enabled are defined by the bits set within 16 most significant bits of the 32-
bit operation parameter value. The alarm channels to be enabled are defined by the bits set in the
bottom 16 bits of the 32-bit operation parameter value.
This function is only available for timer and alarm channels 0 to 15.
The timer channels to be disabled are defined by the bits set within 16 most significant bits of the 32-
bit operation parameter value. The alarm channels to be disabled are defined by the bits set in the
bottom 16 bits of the 32-bit operation parameter value.
This function is only available for timer and alarm channels 0 to 15.
The timer channels to be restarted are defined by the bits set within 16 most significant bits of the 32-
bit operation parameter value. The alarm channels to be restarted are defined by the bits set in the
bottom 16 bits of the 32-bit operation parameter value.
This function is only available for timer and alarm channels 0 to 15.
The timer channels to be reset are defined by the bits set within 16 most significant bits of the 32-bit
operation parameter value. The alarm channels to be reset are defined by the bits set in the bottom 16
bits of the 32-bit operation parameter value.
The internal real time clock continues to operate during sleep mode.
The seconds past midnight register is a read only register containing the current time represented as a
count of seconds past midnight UTC
Time and date information is stored in a set of 6 read only registers. The values read from these
registers is a binary representation of the current UTC time maintained by the terminal. The year
value is stored as the full 4 digit value i.e. year 2003 is returned as 2003 not 3.
The alarm channels in the terminal are divided into two groups that respond to an update of
the threshold value in slightly different ways. If the threshold value on any of the alarm channels 0 to
11 or 16 to 31 is updated as the result of a script operation then, if the terminal is restarted following a
power down, the alarm threshold value will reset to the value defined in the original script. Channels
12 to 15 operate slightly differently following a system reset. These four channels will restart with
the updated threshold value that was set by the script operation.
5.5.3.1 Enable
When this bit is set the alarm channel is enabled, when cleared the alarm channel is disabled.
In latch mode an alarm will trigger once when the alarm condition is first detected. The alarm will
not be raised again until it has been reset using the reset alarm command in the control register or by
setting the channel bit in the reset register.
If the alarm is in latch mode then when the auto latch release bit is set, the latch will be removed
automatically when the alarm condition is removed. As an example, if an alarm is set to trigger when
an I/O line goes high then the alarm will trigger on the first detection of the bit going high. The latch
will be set so that the alarm does not trigger on the next alarm polling cycle. On a later polling cycle
the I/O line is low again and, if the auto release bit is set, the latch will be removed allowing the alarm
to re-trigger the next time that the I/O line goes high. This removes the need to issue a reset alarm
command to clear the latch manually.
The operation number field is an 8 bit number indicating the operation number that is to be triggered
when the comparison function raises the alarm. The value is split into two parts in the register; the
original 5 bits (Low Part), used in legacy terminals where only 32 operations were available, has been
extended by 3 bits (High Part) to cater for the 64 operations currently available, and to allow for
possible future expansion to 256 operations.
The target register for the alarm is defined by a 12-bit address, made up from a 4 bit module ID and
an 8 bit register address. These register addresses are defined in the separate module description
sections within this document.
The disable alarms register is a 32-bit write only register. The value written to this register is a bit
mask of the channels to be disabled. Alarm 0 is indicated by the LSB of the value and alarm 31 by
the MSB. Writing a 1 to the channel control bit causes the alarm to be disabled.
The enable alarms register is a 32-bit write only register. The value written to this register is a bit
mask of the channels to be enabled. Alarm 0 is indicated by the LSB of the value and alarm 31 by the
MSB. Writing a 1 to the channel control bit causes the alarm to be enabled.
The reset alarms register is a 32-bit write only register. The value written is a bit mask of the channels
to have their latches reset. Alarm 0 is indicated by the LSB of the value and alarm 31 by the MSB.
Writing a 1 to the channel control bit causes the alarm latch to be reset.
The trigger alarms register is a 32-bit write only register. The value written to this register is a bit
mask of the channels to be triggered. Alarm 0 is indicated by the LSB of the value and alarm 31 by
the MSB. Writing a 1 to the channel control bit causes the alarm to be triggered.
The toggle alarms register is a 32-bit write only register. The value written to this register is a bit
mask of the channels for which the enable state is to be toggled. Alarm 0 is indicated by the LSB of
the value and alarm 31 by the MSB. Writing a 1 to the channel control bit causes a disabled alarm to
be enabled and an enabled alarm to be disabled.
The restart alarms register is a 32-bit write only register. Writing to this register allows a
simultaneous clearing of the alarm latch and enabling the alarm if it was previously disabled. The
value written to this register is a bit mask of the channels to be unlatched and enabled. Alarm 0 is
indicated by the LSB of the value and alarm 31 by the MSB. Writing a 1 to the channel control bit
causes that channel to be affected.
IMPORTANT NOTE - The register descriptions in this module contain details of the maximum
number of input and output lines supported by the software. Not all of these lines are available in the
terminal hardware at any one time.
The register contains eight 4-bit fields, one for each channel. The pin mode is defined by the code
written in the field associated with that pin. The codes are described in Table 25 below.
Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Important: There is a short delay between setting an I/O to an analogue input, and the associated
register being updated with the first valid conversion result. Scripts that compare analogue input
values with a threshold should therefore allow 10 seconds, following I/O configuration (i.e. normally
only after initial power on), for the first conversion to complete.
If a GEM-100 is not used the battery supply voltage register will always return a value of zero.
There are a number GEM-100 battery voltages that trigger events in the battery charging cycle and
terminal operation:
• The terminal will shut down if the GEM-100 reports that its battery voltage is less than 10.2V
and there is no external power supply (not solar panel input.)
• If the terminal has shut down due to a low battery voltage then it will not restart until the
GEM-100 reports that its battery voltage has recovered to 13.1V. If the battery has not
recovered to this level then there will be insufficient energy available to perform any
transmissions.
• Once the battery has been fast charged from an external supply then the battery will be held in
trickle charge until its voltage falls to 12.5V when the fast charge will re-enable.
• When the terminal is operating with a solar panel providing the battery charger source the
battery will charge fully and then the solar charger will be turned off. The solar charger will be
turned back on when the battery voltage falls to 13.4V.
Writing the current ambient temperature into the calibrated temperature register causes the terminal to
calculate the offset from the internally derived value. The terminal will then use this offset to adjust
all subsequent temperature readings. The value stored is a signed 16 bit value representing the
temperature in degrees Celsius. The state of this register is stored in non volatile memory and is not
erased when the processor firmware is updated
If a GEM-100 is not used, this register will always return the value 2550 (decimal) indicating battery
pack not fitted.
Value Colour
0 Off
1 Red
2 Green
3 Orange
Table 26 – User LED Colour Codes
5.7.1.1 Status
The GPS status register is a read only register. The value returned from this register can be either 0 or
1. If it is 0 then the last GPS position fix was invalid, if it is a 1 then the position data is valid. An
invalid GPS fix will be indicated if:
1. The GPS engine determines that it does not have a valid fix. (Note that even if the GPS
reports a valid fix, the accuracy might be severely degraded in poor sky view conditions, in
particular where direct line of sight to GPS satellites is blocked but the reflected signals are
strong enough to be accepted for location determination.)
2. The terminal operating mode is changed so that the GPS is turned off
3. The MSP does not receive a message from the GPS for 4 seconds.
5.7.1.2 Latitude
The GPS latitude register contains the last value for the terminal position as read from the GPS
receiver. The format of the value is shown in Table 27
Bits Function
31 Sign (0 = +ve, 1 = -ve)
23..30 Degrees
17..22 Minutes
11..16 Seconds
4..10 Hundredths of a second
0..3 Unused
Table 27 – Latitude/Longitude Data Format
5.7.1.3 Longitude
The GPS longitude register contains the last value for the terminal position as read from the GPS
receiver. The format of the value is shown in Table 27.
5.7.1.4 Speed
The GPS speed register contains the last value for terminal unit speed as read from the GPS receiver.
The speed is stored as a value in the range 0..32767 with a resolution of 0.1 m/s.
5.7.1.5 Heading
The GPS heading register contains the last value for the terminal heading as read from the GPS
receiver. The heading is stored as a value in the range 0..3599 and with a resolution of 0.1 degrees.
5.7.1.6 Altitude
The GPS Altitude register contains the last value for the terminal altitude as read from the GPS
receiver. The altitude is stored as a value in metres.
The HDOP provides an indication of positional accuracy; the lower the HDOP the better. The HDOP
register provides an integer value which is the HDOP * 100. The 16 bit register is set to 0xFFFF if the
GPS reading is invalid. For example a register value of 0x00FA would indicate a HDOP of 2.5.
This is a write only register that stores the current GPS location as the reference.
This register contains the latitude value of the reference position. The format is defined in Table 27.
This register contains the longitude value of the reference position. The format is defined in Table 27.
The distance from reference contains the calculated distance between the reference position and the
current GPS position. The distance is calculated in metres and assumes a spherical earth with a radius
of 6371km.
There are 8 independent read only ‘distance from target’ registers. These contain the calculated
distance, in metres, between the relevant target position and the current GPS position. These registers
may be used by the alarms module to generate an event based on the terminals position relative to the
target. If the target definition has not been initialised then the register cannot generate an alarm.
This register contains the distance, in metres, from the current position to the closest valid target
position. If there are no valid targets defined then the value returned will be 0xFFFFFFFF.
This register contains the distance, in metres, from the current position to the farthest away valid
target position. If there are no valid targets defined in the terminal then the value returned will be 0.
There are 8 independent read only registers each of which contain the latitude value of one of the
target positions. The value is stored in the format defined in Table 27.
There are 8 independent read only registers each of which contain the longitude value of one of the
target positions. The value is stored in the format defined in Table 27.
The ‘time at last fix’ register gives the number of seconds past midnight that the last valid fix was
obtained.
5.7.6 Geofence
The terminal allows for the definition of two geofence areas. These areas are each defined by a
sequence of up to 40 points. These areas are used to determine whether or not the terminal location is
within the selected global regions. Geofence definition and configuration uses the operator
commands defined in section 7.8.3. An example of Geofence definition is described in APPENDIX
A – Example Geofence Definition.
The geofence status registers 1 and 2 contain the result of comparing the current GPS position with
geofences 1 and 2 respectively. The values read from these registers are defined in Table 28.
The messaging module provides the interface to the Inmarsat-D messages received and transmitted by
the terminal.
The ID codes for pre-defined messages are listed in Table 29. The formats of the return messages are
defined in reference [2]. The message ID code may also refer to one of the user-defined formats
programmed into the terminal.
In addition to the standard messages that may be transmitted by the terminal it is possible to define
custom message formats that are built up from data values extracted from the terminals internal
registers. User message definition uses the operator commands defined in section 7.12.
This register contains the Inmarsat satellite channel number on which the terminal is expecting to
receive its signal, either the bulletin board or the traffic channel.
This register contains the received signal C/N0. The value in this register is given by:
Signal (in dB ) × 4096
Value =
10
This register contains the receiver status byte as returned by the terminal. The fields within the byte
are shown in Table 30 below.
Bits Meaning
0 Condition (0 = Normal, 1 = Abnormal)
1 BB Alarm (0 = Normal, 1 = Alarm)
2 BB/Traffic Indicator (0 = BB, 1 = TC)
3 Reserved
4..6 Receiver Status Code:
0 = DSP Reset
1 = Configuring
2 = Wideband Acquisition
3 = Narrowband BB
4 = BB Tracking and Demodulation
5 = Narrowband Traffic
6 = Traffic Tracking and Demodulation
7 = Reserved
7 Reserved
Table 30 – Receiver Status Byte Fields
• Bulletin board does not contain an entry for the configured terminal service ID.
• Bulletin board does not contain an entry for the configured terminal Beam Number.
• Bulletin board does not contain an entry for the configured terminal pager subset number.
Bits Meaning
0..2 Transmission state
0 = Reserved
1 = Tx Acceptance
2 = Waiting to Transmit
3 = Transmitting
4 = Transmission complete
3 PLL Unlocked
4 Transmission Waiting
5..7 Transmit Inhibit Reason
0 = Transmission enabled
1 = TX Inhibit by PLL unlock
2 = TX Inhibit by RX condition
3 = TX Inhibit by System Message
4 = TX Inhibit by Waiting for ACK
8..9 Traffic Control
10..11 Burst Type
0 = ACK burst
2 = Long Burst
(or part of Double Burst)
12..15 Reserved
16..19 Minutes(1)
20..23 Minutes(10)
24..27 Hours(1)
28..31 Hours(10)
Table 31 – Transmitter Status Register Fields
The time value reported is the time of last message transmission or 00:00 if the terminal has not sent a
message. The time is reset each time that the terminal is powered down or enters sleep mode.
Messages sent by a terminal are normally generated in response to an event. This may be a periodic
report, an external exception condition or an event that happens at a specific time of day. The timing
of some of these may be random, for example the time at which a monitored device generates an
exception report will normally be random, but many events happen at a specific time of day. If there
is a population of terminals that all generate and transmit their messages at the same time then there is
a higher probability of collisions between terminal transmissions and hence data loss. Collisions can
be minimised by ensuring an even spread (in time) of transmissions from the terminal population.
This can be achieved by specifying a larger number for the slot randomisation.
If an application has a large number of terminals configured to transmit at a single time of day then
that application might suffer a high message loss, but because the transmissions generated by this
application occur over a small period of time the effect upon other applications, that spread their
transmissions more evenly, is negligible.
The poll message ID register contains the message number to be transmitted in the regular return burst
from the terminal. This may be one of the standard message ID numbers as defined in Table 29 or the
number of one of the user defined message formats programmed into the terminal.
The poll message repeat rate defines the interval between message transmissions in seconds. The
message transmission interval will not take place at the exact second spacing defined by this message
due to space network limitations and the protocol for transmissions used by the terminal. The interval
specified is the time between the requests to the terminal transmitter to send the message.
There are a number of limitations to the values that can be written to this register.
• 0 Disables Poll messages
• 1 .. 60 Transmits a single poll report
• 61..599 Transmits messages at 600 second (10 minute) intervals, the value written to the
register is automatically rounded up to 600.
• 600 up Transmits messages at the requested intervals
The scratchpad module provides 16 general-purpose 32 bit wide registers that may be used by the
operations.
Scratchpad register 0 contains the result value from the last operation performed or the value that
caused the alarm to trigger. Any value written to this register will be overwritten by the next active
alarm or operation performed.
These two registers are used as a data source for the return message types 0x16 and 0x17. The data
values held in these registers can be sent in a return burst message from the terminal.
Each operation is defined by two registers; the configuration register and the value register. The first
of these defines the target of the operation and the operation to be performed on that target register. It
also defines whether or not another operation is to be performed after this one, whether the operation
is part of a chain. The second, or value register, contains the value that is to be used in calculating the
value to be written to the target register. This may be a value to be written directly to the target, an up
or down increment to be applied to the current value or it may be a binary bit mask to be applied to
the target register value.
Operations are enabled by setting the Operation Enable bit of the relevant operation configuration
register. (Also see paragraph 5.10.5.
Operations may be configured so that they operate in a sequence. This is called a chain and is enabled
by setting the Operation Chaining Enable bit of the relevant operation configuration register. If
chaining is enabled then once an operation is complete the next operation in the chain will be
performed. The next operation in the chain is defined in the Chained Operation field (split into a Low
part and High part).
The 4 bit operation function code defines the operation to be performed on the target register. The
codes used to define the operations are listed in Table 33.
If an operation is performed on a write only register then the value of the target register before the
operation is performed will always be zero. This means that operations 2, 3 and 9 will always write 0
to the target register, 1, 4 and 7 will write value to the target, 5 and 6 will write the complement of
value to the target. The result value for each operation performed is written to Scratchpad register 0
as well as the target specified in the operation. Performing a NOP on a register reads its value into
scratchpad register 0 so that its value can be used by the LASTOP function.
Scripts are stored in non-volatile memory within the terminal and copied into and run from RAM
following power on. Operations can be configured such that any modifications to scripting registers
(e.g. timer value changes) either:
If the Update Stored Script bit in the operation control word is set then the value written to the Target
register will also be stored to non volatile memory so that the changes to the script will survive a
power cycle or reset. This is primarily intended to allow the updating of timer and alarm trigger
values but may be used to set other terminal configuration values.
(See also 5.10.2.4.) When this bit is set the value written by the operation is not written to the active
Target register. But, if the Update Stored Script bit is set then the copy of the Target register stored in
non volatile memory will be updated, causing the operation of the script to be modified from the next
terminal power cycle or reset.
The target register for the operation is defined by a 12 bit address, made up from a 4 bit module ID
and an 8 bit register address. These addresses are defined in the separate module description sections
within this document.
A reset causes the operation configuration and value registers to be cleared and these must be
reconfigured before they can be re-enabled.
When an operation is triggered any other operations that are chained after the triggered operation will
also be triggered. If more than one operation is triggered then the lowest numbered operation (or
operation chain) will be triggered first
The constant generator module is provided primarily to allow the insertion of constant data into the
user defined return burst formats, see Appendix B – Example User Message Definition. The module
provides 256 read only registers each of which returns a different 32 bit constant value. The values
returned by each of the registers are shown in Table 10.
The 32-bit parameter value is written into scratchpad register 0 from where it may be used by the first
operation in the programmed chain. If the parameter value is omitted then a value of zero is assumed
by the terminal.
NOTE – Operations that have to be triggered over the air must be defined within the first 32 of the
64 available. It is not possible to trigger operations 32 to 63 directly using a trigger
operation forward channel message.
To reduce the amount of data that is transmitted to the terminal the message contains a ‘number of
data bytes’ field that allows the data to be sent as zero, one, two or four bytes depending upon the size
of the target register or the data value to be written. Any bits not included in the data value sent are
assumed by the terminal to be zero. If the ‘number of data bytes’ is set to zero then no data field is
required and, if a write function has been selected, a value of zero will be written to the target
scripting register.
If the message command ID is 0xC5 then the terminal will transmit a return channel message for each
target register. If the ‘Do Not Update Running Script’ bit is set then the value returned will be the
unmodified contents of the running script register. If the ‘Do Not Update Running Script’ bit is clear
the value returned will be the updated running script copy of the register, providing confirmation that
the change has occurred.
Multiple register updates are performed by repeating the ‘Module ID’ to ‘Data’ fields for each of the
registers to be updated. This is demonstrated by the example below which writes to three registers
using a single forward channel message:
<char><char><optional_space><parameter_list><carriage_return>
where:
<char> is a single upper case ASCII character.
<optional_space> is one or more ASCII space characters that may be inserted between the
command header and the parameter list.
<parameter_list> is a command specific sequence of ASCII characters defining the
parameters to the command.
<carriage_return> is the ASCII code for carriage return (0x0D).
<power_ctrl> 2 digit ASCII hex representation of a byte value. The value is stored
in the Power Control register (module 0x0, register 0x03) – see
paragraph 5.3.4.
The CF? command is used to determine whether the terminal has been configured to transmit its
position report message on power up:
<control_flags> 2 digit ASCII hex representation of a byte value. The value is stored
in the NMEA output control register (module 0x0, register 0x20) –
see paragraph 5.3.11.
<MSP_version> 4 ASCII characters comprising the MSP version string. The value is
read from the MSP firmware version register (module 0x0, register
0x06) – see paragraph 5.3.6.
<power_mode> single ASCII digit string containing the operating power mode. Valid
values are shown in Table 41 below.
Value Mode
0 Sleep – Minimum power consumption mode
1 Standby – GPS off, Inmarsat-D off
2 GPS Tracking – GPS on, Inmarsat-D off
3 Static – GPS off, Inmarsat-D on
4 Mobile – GPS on, Inmarsat-D on
Table 41 – Operating Power Modes
<DSP_version> 4 ASCII characters comprising the DSP version string. The value is
read from the DSP firmware version register (module 0x0, register
0x05) – see paragraph 5.3.5.
<script_version> 4 ASCII characters comprising the script version string. The first two
characters are the major version and the second two characters the
minor version number.
<channel> 2 digit ASCII hex value indicating the channel number being read.
There are eight interface ‘channels’ but the interfaces available
depend on the hardware configuration as detailed in Table 24.
<value> 3 digit ASCII hex number containing the result of the A/D
conversion. If the channel being read is not configured as an
analogue input then the result returned will be 0.
<configuration> 8 ASCII hex characters representing a 32-bit word value. The value
is stored in the I/O Configuration register (module 0x03, register
0x02) – see paragraph 5.6.1 for valid i/o configurations. If an invalid
configuration is entered for any of the channels, no change in any of
the channel configurations will occur, and an error will be reported,
<value> 2 character ASCII hex value containing the digital input states of the
eight interface channels. The input state will be returned as 0 for
interface channels not configured as digital inputs. The value is read
from the Digital Input States register (module 0x03, register 0x00) –
see paragraph 5.6.3.
<value> 2 character ASCII hex value containing the digital output states of
the eight interface channels. The output state will be returned as 0 for
interface channels not configured as digital outputs. The value is
stored in the Digital Output States register (module 0x03, register
0x01) – see paragraph 5.6.4.
<status> single character number representing the two status bits. The
GEM-100 external power supply is present when the LSB is set, the
GEM-100 solar supply is present when the MSB (of 2) is set.
If no GEM-100 unit is connected, this command will always reply with the response ‘ii 1’ indicating
that the external supply is present and that there is no solar panel supply.
<value> single ASCII character indicating the state of the battery power
output line.
0 = I/O line 7 is configured as a normal I/O line
1 = I/O line 7 is connected through a 50mA fuse to the
GEM-100 battery pack (Nominal output voltage 12V).
If no GEM-100 is connected, this command will always reply with the response ‘iq 255’ indicating
that no battery is fitted.
If a GEM-100 is used the value returned is the external supply voltage applied to the GEM-100.
If a GEM-100 is not utilised this command will always respond with ‘ix 00000’.
value is modified for a timer configured as an interval (delay) timer then the count value will be set
back to zero, restarting the delay.
<trigger_value> 6 character ASCII hex representation of the 24 bit timer trigger value.
<time_string> ASCII string containing the current time and date. The format of this
string is hh:mm:ss dd/mm/yyyy.
<timer_value> 8 character ASCII hex representation of the 32 bit value held in the
timer channel count register.
<value> 8 character ASCII hex number value that is used in performing the
operation.
The GM command requests the satellite C/N0 (level of signal strength) for the satellites in view by the
GPS. The command returns values for each channel processed by the GPS. Unused channels have a
satellite ID of zero.
For an initial position fix the GPS needs to acquire and track 5 satellites. Once the position fix has
been obtained the GPS can maintain a latitude/longitude position with just 3 satellites visible. The
satellites will normally track with a C/N0 value of 1E (30 decimal) or higher. Strong satellites have
C/N0 values above 28 (40 decimal).
The GS command is used to get the validity of the GPS position report data.
The ‘GE’ Command requests the firmware version report message from the GPS unit.
<version_string> ASCII character string containing the GPS chip set version identifier.
The following is an example:
4.00 (25682)
The GA command is used to read the current altitude as reported by the GPS.
<altitude_value> 5 character ASCII decimal number giving the altitude in metres. The
value reported is based on the WGS-84 datum.
The GH command is used to read the current course over the ground as reported by the GPS.
<heading_value> 4 character ASCII decimal number giving the heading in 0.1 degree
steps.
The heading value reported is calculated by the GPS based on the motion seen during the fix
calculation and from the last position fix. The specification for the heading accuracy is:
< 0.5 degree of error (User velocity=30m/s [60 mph], 50% probability, open sky)
Note that with speed over ground <0.75m/s or where the terminal is stationary, the heading value
returned will be random due to the very small difference between position samples.
The GP command is used to read the current position reported by the terminal GPS unit.
The GV command is used to read the current speed reported by the terminal GPS unit.
The speed value reported is calculated by the GPS chipset based on the motion seen during the fix
calculation and from the last position fix.
The GD command initialises the Geofence definition procedure. It sets the number of points and
zones that are used in the definition of the specified the fence number.
If the number of points is set to zero for a fence then the geofence data in the terminal is deleted for
the selected fence.
The GF command is used to define a single point that forms a corner of the geofence being defined.
<point> 2 character ASCII decimal number indicating the number of the point
in the geofence being defined.
The GW command validates the geofence data that has been defined using the GF, GD and GZ
commands and if it is complete, enables the fence for use.
The GZ command defines the zones available within the overall fenced area. Each zone definition
has at least 3 point numbers indicating the co-ordinate sets that are used as the corners of the zone.
The points used to define the zone must run in an anti-clockwise direction around the zone with the
internal angle at each corner being less than 180°. It is the responsibility of the programmer to check
that the zone definition is valid. The terminal does not validate the zone definition against these rules.
GZ<fence><SP><zone>?<CR>
<zone> 2 character ASCII decimal number indicating the zone number in the
geofence being defined.
The GL command returns the distance between the stored reference point and the current position as
reported to the terminal by the GPS receiver in the terminal. The distance is calculated assuming that
the Earth is a sphere with a radius of 6371km.
The GR command is used to set or interrogate the reference point stored in the terminal. Associated
scripting registers are module 0x04, registers 0x11 and 0x12 – see paragraphs 5.7.2.2 and 5.7.2.3.
The GX command takes the current position as read from the terminal GPS receiver and stores it as
the terminal reference position.
The GK command returns the distance between one of the stored target points and the current position
as reported to the terminal by the GPS receiver in the terminal. The distance is calculated assuming
that the Earth is a sphere with a radius of 6371km.
er<SP><target_not_defined><CR><LF>
<point_id> single ASCII decimal number in the range 0..7 identifying the target
point required.
<target_not_defined> 2 digit ASCII hex error code for a target point not defined.
The GT command is used to set or interrogate one of the target points stored in the terminal.
er<SP><target_not_defined><CR><LF>
<point_id> single ASCII decimal number in the range 0..7 identifying the target
point required.
Type:
Defines the type of entry:
1 = Acknowledgement burst (Transmitted and logged)
2 = Long burst (Transmitted and logged)
3 = Double Burst part 1 (Transmitted and logged)
4 = Double Burst part 2 (Transmitted and logged)
5 = Long Burst (Log only record)
6 = Double Burst part 1 (Log only record)
7 = Double Burst part 2 (Log only record)
8 = GPS record. (Log only record)
Date:
Defines the day/year that the data record was created.
The day of the year is stored in the lower 9 bits (1 – 356/366) and the Year since 2000 is
stored in the top 7 bits (0 to 127). For example a value of 0x102b would be 12th Feb 2008.
Time:
Defines the time of day that the data record was created.
The time after 00:00 is stored with 2s resolution. For example, a value of 0x176E (decimal
5,998) represents a time of 5,998 x 2 seconds after 00:00, i.e. 3:19:56.
Transmit time:
Defines the frame and slot in which the transmission occurred.
The bottom 4 bits (1 to 12) define the ‘slot’ number and the top 12bits (1 to 2880) the ‘frame’
number. Frames are 30s long and numbered from midnight. Frame number 1 indicates the
frame starting at 00:00:00 hrs; frame number 2880 indicates the frame starting at 23:59:30
hrs. Frames are divided into 2.5s slots. The slot number is the slot in which the transmission
began.
The transmit ‘frame’ and ‘slot’ can be converted to seconds past midnight as follows.
Seconds past Midnight = ((frame-1)*30) + ((Slot-1)*2.5)
The value is only valid for transmit log records where the message is transmitted. If a
message is not transmitted this field will contain 0xffff.
CRC:
A Checksum used internally by the terminal to validate the logged records
The GI command sets the interval between logged GPS positions stored in non-volatile memory. If
the interval is set to 0 then GPS positions will not be logged. If the logging interval is set to a value
between 1 and 10080 minutes (the maximum allowed) then GPS information (position, course, speed,
altitude and status) will be logged in non-volatile memory after the defined number of minutes.
<interval> 4 character ASCII hex value containing the time between logged
positions in minutes. A value of zero turns logging off.
The LN command requests the number of logged entries or ‘records’ in the terminal.
<records> 4 character ASCII hex value containing the number of logged records
stored in the terminal.
The LR command is used to interrogate the logged records stored in the terminal and can be used
with or without the index parameter. Multiple LR? commands without an index will return
consecutive records starting with the most recent. To restart interrogating from the most recent record,
an LN? command should be issued. Sending a LR <index>? command will return the log entry for
the specified index.
<index> 4 character ASCII hex value. The index of the record stored. A value
of 1 represents the oldest record in the log. The index of the newest
record in the log is found using the LN? command.
The time stamp stored with the logged data (described below) should
be used to uniquely identify records.
<type> single ASCII hex character defining the record type stored:
<date> 4 character ASCII hex value of the date that the entry was recorded
in the log.
<time> 4 character ASCII hex value of the time past midnight, with 2s
resolution, that the entry was recorded in the log.
<transmit_time> 4 character ASCII hex value. The value contains the slot and frame
number in which the transmission occurred. If a message is not
transmitted this field will contain 0xffff.
When the terminal receives a forward channel message the data is stored in a 10 message buffer.
Messages within the buffer will be lost if power to the terminal is removed or the terminal is placed
into sleep mode (paragraph 5.3.4).
Some message formats are reserved to allow control and status report enquiries to be sent to the
terminal. These messages are not made available to the user. They are processed within the terminal
and then deleted.
All other messages received by the terminal are available to the user over the serial port. The message
output method can be configured by the user so that the message data can be output in an unsolicited
message as soon as it has been received, or these unsolicited messages can be disabled. This is
controlled by the ‘MO’ command (section 7.9.1.5). The message data is also stored in a 10 message
buffer and may be read out using the ‘MN’ command (Section 7.9.1.4). The terminal can be
interrogated for the number of buffered messages using the ‘MC’ command (section 7.9.1.1). If the
message buffer becomes full, i.e. the incoming messages are not read and deleted with the ‘MN’
command, then the terminal will output an error message each time that a message is received
indicating that the buffer has overflowed and the oldest message in the buffer has been deleted.
The MC command returns the number of buffered forward channel messages held within the terminal.
The mf data message is the only message that is not generated in response to a message received over
the serial port. The mf message is generated in response to an incoming forward channel, user
message being received over the satellite. The format of the message depends upon the type of
forward channel message received by the terminal.
<data_block> The format and length of the data_block field will vary depending
upon the message type.
The MN command returns the earliest forward channel message held within the terminal. Once the
data has been output it is deleted from the database in the terminal. If the forward channel message
buffer is empty no parameters are returned
The MO command enables or disables the output of unsolicited mf report messages in response to the
reception of forward channel messages by the terminal. When mf messages are disabled the forward
channel messages can be read by interrogating the terminal for the number of received messages using
the ‘MC?’ command and reading them using the ‘MN?’
<mode> single ASCII character either 0 or 1. A ‘0’ enables the output of the
mf messages and a 1 disables their output. The mode is stored in the
Forward Channel Message Output Mode register (module 0x05,
register 0x40) – paragraph 5.8.19.
The MA command sets the value to be used in the destination address field of any subsequent bursts
to be transmitted in response to MB commands.
The MB command instructs the terminal to transmit a pre-defined or user defined return burst. The
pre-defined message codes are listed in Table 29, paragraph 5.8.1, and details of their format is
described in the Message Registry Document, ref.[2]. User defined messages use codes 0x80 to 0xBF
for 64 bit messages, and codes 0xC0 to 0xFE for 80 bit messages. The creation of user defined
messages is described in paragraph 5.8.1.1.
If the message code is not defined then no message will be transmitted. This command is equivalent
to writing the message code to the Return Burst Message ID code register (module 0x05, register
0x10) – see paragraph 5.8.1.
The MK command sets the value to be used in the message acknowledgement flags field of any
subsequent bursts to be transmitted in response to MB commands. The flags field is a 2 bit value. Bit
0 (LSB) requests an application acknowledge and Bit 1 requests an automatic LES acknowledge.
The ML command sets the value to be used in the message control flags field of any subsequent
bursts to be transmitted in response to MB commands. The flags field is a 4 bit value.
<control_flags> single character ASCII hex representation of the 4 bit control flags
value (module 0x05, register 0x15) – see paragraph 5.8.5.
The MM command causes the terminal to transmit a return burst message using the message data
contained in the command.
<length> single ASCII character defining the message length being defined: L
for a long or D for double (IsatM2M)
The MP command configures the automatic return message generation by the terminal. The message
takes two parameters. The first is a message repeat rate in minutes. If set to zero then the terminal
will stop sending messages. If set to 1 then a single message is transmitted. All other values are
treated as repeat rates and the messages will be sent out at the intervals requested except that values
from 2 to 9 are rounded up to 10.
<period> 4 character ASCII hex number containing the time between message
transmission in minutes.
<msg_code> 2 character ASCII hex number containing the message type to be sent
in the poll transmission. The msg_code is stored in the Poll Message
ID code register (module 0x05, register 0x30) – paragraph 5.8.17.1.
The message code used may be one of the values for a standard return message format listed in Table
29 or it may be a user defined 64 or 80 bit message. If the message code is not defined in the terminal
then no message will be transmitted.
The MQ command is used to set the response of a terminal to a tone only type forward channel
message. There are four tone only messages that may be sent to a terminal and, using this command, it
is possible to configure the terminal to use these messages as remote poll requests.
<tone> single character ASCII hex representation of the tone number (0..3).
The message code used may be one of the values for a standard return message format listed in Table
29 or it may be a user defined message. The message code is stored in the appropriate messaging
module register – module 0x05, registers 0x38 to 0x3B – see paragraph 5.8.18.
The MR command reports the latest receiver status values as reported by the terminal.
The value set by the MS command sets the number of traffic channel frames over which slot
randomisation occurs, e.g. if a value of 3 is used then the transmission will occur in a return channel
slot some time in the next 3 traffic frames. If a value of zero is used then the message will be
transmitted in the next available slot.
The MT command reports the latest terminal transmitter status as reported to the terminal.
CA 6
RW 0 2 6
The file upload into the MSP is initiated by a PD command. The program image is then transferred in
Motorola S-record format, one record at a time, over the serial link. Each record is acknowledged
with either a ‘pa’ (success) or ‘pn’ (failure) response. Once the last record has been sent to the
terminal the MSP calculates and stores a checksum value for its internal image.
The PD command is used to upload a new version of the terminal application firmware into the
processor memory over the serial port. The PD command is followed by the program data file in
Motorola S-Record format. Each record of the program file is acknowledged by a pa<LF><CR>
response. The first record of the program file must not be sent until the pd acknowledge has been
returned. Subsequent records must wait until the previous record has been acknowledged with a pa.
The baud rate change occurs once the ‘pd’ response has been sent out of the terminal. All further
communications following receipt of the ‘pd’ command must be performed at the new baud rate.
Following an upload to the MSP the terminal will automatically return to the default baud rate of
9600. Following an upload to the DSP the terminal can be set back to the default baud rate by sending
command ‘PR9600’ to the unit
The pa response is sent from the terminal in response to a valid S-record during the upload process.
The response is sent by the terminal when it has received the record, decoded it and stored the
contents in the program FLASH memory. It indicates that it is ready to receive another record.
The terminal responds with a pn message when it detects an error in the received S-record. Errors
may include an invalid character in the record or an invalid checksum. If the error is detected in the
file header (S0) record then the unit returns a ‘pn 0’ response, otherwise it returns ‘pn 1’.
7.13.2 PI – Reset
The PI command is used to reset the terminal application firmware or to get the results of the terminal
self tests. The command sends its response before performing the processor reset.
<test_result> 4 digit ASCII hex representation of a 16 bit value containing the self
test result code.
This command causes the reset of the GPS processor and Inmarsat-D modem, and the terminal
configuration and script are reloaded with their restart state from the non volatile data store. The GPS
and Inmarsat-D functions will be restarted as required by the terminal configuration, and the script
operation (timers and alarms) subsequently started. (Note that if the GEM-100 is utilised there will be
a 32 second delay before the script operation starts.)
<rate> 4 digit ASCII decimal value. If the value supplied is 4800 then the
serial port will be configured to operate at 4800 baud. Any other
value will set the port to 9600 baud.
Note: Following a firmware upload (paragraph 7.13.1.1) the terminal will return to the default baud
rate of 9600.
<version_string> 4 character ASCII string containing the software version. The first
two characters are the major version and the second two characters
the minor version number.
<date_string> ASCII string containing the date and time of compilation of the code.
The format of the string is hh:mm:ss Mmm dd yyyy
<hardware> ASCII string containing the hardware revision that the MSP software
was built to support.
<variant> ASCII string containing the variant description for the software build.
Examples of responses from the PY?, PY1?, PY2? and PY3? Commands are:
py 13:28:51 Feb 2 2009 P042_G01 Rev A GEM-100 Build. Build 647
py 1 SWN-0091-20 SAT-200 MSP Application Software - Version 01.00
py 2 SWN-0091-21 SAT-200 MSP Bootloader Software - Version 01.95
py 3 01.00 00647
<serial_no> 5 character serial number. (The serial number is also labelled the
unit.)
<password> ASCII string containing the password for the access level.
<response> ASCII sting returning the result of the password access request. This
is either ‘GRANTED’ or DENIED’.
If this value is changed the service provider must be informed to ensure that forward channel
messages are delivered to the correct channel.
<service> single ASCII digit in the range 0..4 representing the pre-programmed
service number.
If this value is changed from the default setting the service provider must be informed to ensure that
forward channel messages are delivered to the correct channel.
If the BID is changed the service provider must be informed to ensure that forward channel messages
are delivered to the correct channel
<service> single ASCII digit in the range 0..4 representing the pre-programmed
service number.
<gpid_no> single character ASCII hex value in the range 0..4 representing the 5
stored GPID’s
<beam_ID> 2 digit decimal number reporting the stored beam ID to be used with
the specified service.
WARNING: These flags should only be set following consultation with Satamatics. Once these flags
are set they cannot be cleared. The unit must be returned to Satamatics to clear the flags.
<flags> 6 ASCII hex character representing the 24bit flags thus command
“DS TO 01” would set bit zero
Value Usage
0 Receive OK
Forward channel has a low signal quality. Check the positioning of the
1
antenna
BB Allocation Table not matched. The SID, BID, PSN in the terminal
2
are not setup correctly. Contact your service provider
3 HW failure. Contact your service provider
Table 45 – DS TR Receiver Inhibit Status Codes
Bit Usage
0 HW Error
1 Internal non-volatile memory CRC failure
2 Forward Channel Ack not received
3 Rx message buffer overflow
5 Rx message buffer error
6 Tx message buffer overflow
7 Tx message buffer error
Table 47 – DS TR Terminal Error Codes
Value Usage
0 Message buffer empty
1 Waiting for a FC acknowledgement (Tx inhibited)
2 Waiting for FC frame header
3 Waiting for Transmit slot
4,5 or 6 Transmitting
Table 48 – DS TT Transmit Progress
<tx_inhibit_status> 4 character ASCII hex representation of the status of any inhibiting
factors to the current burst being transmitted. The status is described
in Table 49. If the inhibiting factor is cleared then the status will
return to “Transmit OK”
Value Usage
0 Transmit OK
1 Hardware Error. Contact your service provider
System Message. The unit has been stopped from transmitting by a system
2
message. Contact your service provider
Waiting for a Forward Channel (FC) Acknowledgment. While waiting for a FC
3
Ack no further transmissions will be made to ensure that the FC Ack is received
Poor signal quality on FC. Before every transmission the terminal determines
4 whether a transmission is likely to be successful by monitoring the FC signal
quality. While signal quality is poor transmissions will be inhibited.
Receiving a FC message. A transmission was due to go out in a frame that
5 contained a forward channel message for the terminal. The transmission has been
re-scheduled
Table 49 – DS TT Transmit inhibit status
<last_tx_time> 4 character ASCII decimal representation of the UTC time of the last
transmission. The first two characters are the hours the second two
characters are the minutes. A value of ‘9999’ indicates that no
transmission has taken place since the terminal was last turned on or
came out of sleep mode
<size> single digit ASCII hex character in the range 2 to 9 that represents
the maximum number of messages that can be stored in the return
channel transmit queue at any time.
<write> single digit ASCII hex flag that describes the way messages are
handled when the transmit queue is full. If the flag is set to zero no
messages can be added to the transmit queue when it is full. If the
flag is set to 1 a new messages will overwrite the oldest message in
the transmit queue when it is added.
the command “DS TZ D” (Defaults loaded into RAM) must be followed by the command “DS TZ S”
(Save the RAM values to non-volatile memory).
Note: Power management within the terminal may cause the RAM settings of the configuration
values, to which this command applies, to be lost. The settings must therefore be saved to non-volatile
memory to avoid unexpected results.
The terminal will accept sentences that begin either $G or $A and with any letter in the next position
so that the data may be provided by systems based on any navigational data source (for example GPS,
GLONASS or terrestrial radio).
The terminal can also be configured to output NMEA RMC, GGA and GSV sentences.
$GPRMC,141050,A,5159.23,N,00209.87,W,0.1,174.5,030904,,*0B
Where the message fields, separated by commas, have the following functions.
$GPGGA,110039,5200.28,N,00207.48,W,1,,,64.00,M,,,,,*0D
Where the message fields, separated by commas, have the following functions.
$GPGSV,4,1,14,03,84,155,23,06,72,118,16,07,17,280,25,08,16,320,19*70
Where the message fields, separated by commas, have the following functions.
<alarm> single ASCII hex character identifying the alarm channel that was
triggered.
<Op_X> 2 digit ASCII hex number identifying the operation step that has been
performed.
<timer> single ASCII hex character identifying the timer channel that was
triggered.
20 Bad Parameter entered for command, unable to decode the parameter value or
the parameter outside the legal range
21 An invalid ocean region selected
22 An invalid Service ID selected
28 Bad Serial Number (corrupted memory)
29 Stored script error (corrupted EEROM)
A0 DSP Bad Parameter entered for command. The value of one or more of the
arguments was out of range
A1 DSP invalid ocean region selected
A2 DSP invalid Service ID selected
A3 Invalid command used
A4 DSP invalid satellite selection mode selected
F0 Hardware RF failure
F1 Hardware RF OK
F2 Hardware RF failure switching Inmarsat-D off
F3 DSP Task scheduler overflow – contact Satamatics
F4 DSP Task scheduler error – contact Satamatics
Table 54 provides a summary of the terminal commands. Commands are available on all SAT-200
based terminals apart from those whose description refers to [GEM-100] or [MODBUS]:
Command:
The serial command without parameters
Description:
A brief description of the command function
R/W:
Indicates whether the command is Read only, Write only or Read/Write. (Also see note 1 at
the end of the table.)
Non-volatile:
- = Not applicable or not stored in non-volatile memory
1 = Parameters stored to non-volatile memory, or their default values restored from
non-volatile memory, through the DS TZ command. See paragraph 7.14.16.
2 = Parameters stored to non-volatile memory by the CZ command (paragraph 7.3.13)
3 = Parameters stored to non-volatile memory by the GW command (paragraph 0)
4 = Parameters stored to non-volatile memory by the BW command (paragraph 7.12.6)
Auto = Automatically stored to non-volatile memory
Default Value:
Factory/Operational default values as applicable.
IA 3 10 to 3 17 Analog input R - -
IC 3 02 Configure inputs/outputs R/W 2 SAT-202 I/O: **
HV digital in
SAT-202 Output:
Disabled
SAT-200 extended I/O:
Digital out
ID 3 00 Digital inputs R - -
IE 3 01 Digital outputs R/W 2 0 **
II 0 0A [GEM-100] Ext power supply status R -
IO 3 03 [GEM-100] Battery power output - IO7 R/W 2 0 **
IP 3 18 MSP supply voltage level R - -
IQ 3 1C [GEM-100] Battery pack temperature R - -
IS 3 19 External power supply voltage level R - -
IT 3 1A MSP temperature R - -
IU 3 30 [GEM-100] User LED Control R/W - 0 **
IX 3 1B [GEM-100] Battery voltage level R - -
GA 4 05 GPS altitude R - -
GH 4 04 GPS heading R - -
GP 4 01 and 4 02 GPS position R - -
GV 4 03 GPS speed R - -
PD Program upload W - -
PI 0 FE Reset W - -
PR Serial baud rate W Auto 9600 **
PS Enable/disable scripting R/W - 1 **
PT Run production tests - **
PV Bootloader version number R - -
PY Date/time of software build R - -
PZ Serial Number R - -
$A NMEA input - - -
$G NMEA input - - -
Note 1: Write access to these scripting register parameters is only available through the use of the password protected DS prefixed command.
A.1 Introduction
The terminal allows for the definition of two complex geofenced areas. A geofence is an area defined
by a number of points on the earth’s surface joined together by straight lines. The terminal tests the
current position returned by the GPS module in the terminal against these defined areas and reports
whether the terminal is currently inside or outside the fenced area.
A.2 Definition
The geofence algorithm used in the terminal divides the complex fenced area up into a number of
zones. The testing algorithm then checks each of the zones in turn.
A
X
D
C
B
In Figure 4 the fenced area ABCDEF is split into two zones ABEF and BCDE. The point X will be
detected in the first of these zones.
The geofence definition method uses a two-stage definition process. The first stage is to have a table
of all of the corner positions. This table is defined to have 40 entries. These table entries may be in
any order, and need not all be used. The second stage is to have a zone definition table. This starts
with the number of zone definition entries there are. Each entry in the zone definition table has the
following structure:
Number of zones = 2
Number of points in zone = 4
Point ID = A
Point ID = B
Point ID = E
Point ID = F
Number of points in zone = 4
Point ID = B
Point ID = C
Point ID = D
Point ID = E
Zone Definition Table
1. The GD command (para. 7.8.3.1) initiates the fence definition process by specifying the fence
number, and defining the number of points and zones that it contains.
2. The GF command (para. 7.8.3.2) is then used to define each point in the fence. A sequence of
GF commands is require, one for each point.
3. Once all of the points have been defined the zones within the fence have to be defined. This
involves a sequence of GZ commands (para. 7.8.3.4), one for each zone.
4. Finally a GW command (para. 7.8.3.3) is issued to verify that all of the points referenced in
the zone definitions exist in the list of points and that the correct number of points and zones
have been defined. If these criteria are met then the fence is enabled for use by the scripting
functions.
The message field definitions for a message must define exactly 64, 80 or 148 bits. If an incorrect
number of bits are defined then the message will not be generated for transmission.
It is not possible to reduce the number of field definitions used by sharing individual data field
definitions between messages. It is possible to have multiple message numbers sharing the same
payload definition. This is done by issuing a number of message number definition commands before
the first field definition command.
The data field definitions for a message are packed into the user data block in the order that their
definitions are sent to the terminal.
The fields used to define the message block are the N field definitions sent after the message number
definition command. If less than N field definitions are sent then the results are undefined. The
terminal does not check this condition.
If it is required to have more than one message number with the same data format then step 2 should
be repeated for all of the message number definitions before moving on to step 3.
for the 10 most significant bits of the 12-bit analogue conversion result. This has the effect of
discarding the two least significant data bits, performing a truncation operation on the data value.
The remaining bits in the message are transmitted as zeros.
The field definitions for the message format are shown in Table 55.
Field No Field Data Module ID Register ID Mask Value Bits Used
1 UTC Minutes 0x1 0x36 0x3F 6 (6)
2 UTC Seconds 0x1 0x37 0x3F 6 (12)
3 Analogue Input 2 0x3 0x12 0xFFC 10 (22)
4 Analogue Input 5 0x3 0x15 0xFFC 10 (32)
5 Analogue Input 7 0x3 0x17 0xFFC 10 (42)
6 Constant Zeros 0xF 0x00 0x3FFFFF 22 (64)
Table 55 – Example Message Definition
This message definition uses 6 field definitions and is being allocated a message number of 160
(0xA0). The command sequence used to define this message is shown below.
BI
BD A0 06
BF 136 0000003F
BF 137 0000003F
BF 312 00000FFC
BF 315 00000FFC
BF 317 00000FFC
BF F00 003FFFFF
BW
The BQ response for the message format defined in this example is shown below (assuming that this
is the first message stored in the message database):
bq 1 A0 136 0000003F 137 0000003F 312 00000FFC 315 00000FFC
317 00000FFC F00 003FFFFF
The following differences between the SAT-202 and SAT-201/201i series should be noted:
SAT-201/201i SAT-202
Inmarsat-D modes of operation D+ & IsatM2M IsatM2M only
General Purpose Inputs/Outputs 2 3
Open Drain Outputs 2 1
RW 0 FD 1
See 5.3.21