Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions c/include/libsbp/ssr.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ Increased for every discontinuity in phase.
* is used to tie multiple SBP messages into a sequence.
*/
typedef struct SBP_ATTR_PACKED {
u8 tile_set_id; /**< Unique identifier of the tile set this tile belongs to. */
u8 tile_id; /**< Unique identifier of this tile in the tile set. */
u16 tile_set_id; /**< Unique identifier of the tile set this tile belongs to. */
u16 tile_id; /**< Unique identifier of this tile in the tile set. */
gps_time_sec_t time; /**< GNSS reference time of the correction */
u8 num_msgs; /**< Number of messages in the dataset */
u8 seq_num; /**< Position of this message in the dataset */
Expand All @@ -83,8 +83,8 @@ following RTCM DF391 specification.
* be identified by the index.
*/
typedef struct SBP_ATTR_PACKED {
u8 tile_set_id; /**< Unique identifier of the tile set this tile belongs to. */
u8 tile_id; /**< Unique identifier of this tile in the tile set. */
u16 tile_set_id; /**< Unique identifier of the tile set this tile belongs to. */
u16 tile_id; /**< Unique identifier of this tile in the tile set. */
gps_time_sec_t time; /**< GNSS reference time of the correction */
u16 num_msgs; /**< Number of messages in the dataset */
u16 seq_num; /**< Position of this message in the dataset */
Expand All @@ -109,7 +109,7 @@ typedef struct SBP_ATTR_PACKED {
but in units of TECU instead of m.
*/
s16 stec_coeff[4]; /**< Coefficents of the STEC polynomial in the order of C00, C01, C10, C11
[C00 = 0.05 TECU, others = 0.02 TECU/deg] */
[C00 = 0.05 TECU, C01/C10 = 0.02 TECU/deg, C11 0.02 TECU/deg^2] */
} stec_sat_element_t;


Expand Down Expand Up @@ -313,8 +313,8 @@ typedef struct SBP_ATTR_PACKED {
*/
#define SBP_MSG_SSR_TILE_DEFINITION 0x05F6
typedef struct SBP_ATTR_PACKED {
u8 tile_set_id; /**< Unique identifier of the tile set this tile belongs to. */
u8 tile_id; /**< Unique identifier of this tile in the tile set.
u16 tile_set_id; /**< Unique identifier of the tile set this tile belongs to. */
u16 tile_id; /**< Unique identifier of this tile in the tile set.

See GNSS-SSR-ArrayOfCorrectionPoints field correctionPointSetID.
*/
Expand Down
Binary file modified docs/sbp.pdf
Binary file not shown.
36 changes: 18 additions & 18 deletions haskell/src/SwiftNav/SBP/Ssr.hs
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ $(makeLenses ''PhaseBiasesContent)
-- SBP message a limited to 255 bytes. The header is used to tie multiple SBP
-- messages into a sequence.
data STECHeader = STECHeader
{ _sTECHeader_tile_set_id :: !Word8
{ _sTECHeader_tile_set_id :: !Word16
-- ^ Unique identifier of the tile set this tile belongs to.
, _sTECHeader_tile_id :: !Word8
, _sTECHeader_tile_id :: !Word16
-- ^ Unique identifier of this tile in the tile set.
, _sTECHeader_time :: !GpsTimeSec
-- ^ GNSS reference time of the correction
Expand All @@ -122,8 +122,8 @@ data STECHeader = STECHeader

instance Binary STECHeader where
get = do
_sTECHeader_tile_set_id <- getWord8
_sTECHeader_tile_id <- getWord8
_sTECHeader_tile_set_id <- getWord16le
_sTECHeader_tile_id <- getWord16le
_sTECHeader_time <- get
_sTECHeader_num_msgs <- getWord8
_sTECHeader_seq_num <- getWord8
Expand All @@ -132,8 +132,8 @@ instance Binary STECHeader where
pure STECHeader {..}

put STECHeader {..} = do
putWord8 _sTECHeader_tile_set_id
putWord8 _sTECHeader_tile_id
putWord16le _sTECHeader_tile_set_id
putWord16le _sTECHeader_tile_id
put _sTECHeader_time
putWord8 _sTECHeader_num_msgs
putWord8 _sTECHeader_seq_num
Expand All @@ -148,9 +148,9 @@ $(makeLenses ''STECHeader)
-- The LPP message contains nested variable length arrays which are not
-- suppported in SBP, so each grid point will be identified by the index.
data GriddedCorrectionHeader = GriddedCorrectionHeader
{ _griddedCorrectionHeader_tile_set_id :: !Word8
{ _griddedCorrectionHeader_tile_set_id :: !Word16
-- ^ Unique identifier of the tile set this tile belongs to.
, _griddedCorrectionHeader_tile_id :: !Word8
, _griddedCorrectionHeader_tile_id :: !Word16
-- ^ Unique identifier of this tile in the tile set.
, _griddedCorrectionHeader_time :: !GpsTimeSec
-- ^ GNSS reference time of the correction
Expand All @@ -170,8 +170,8 @@ data GriddedCorrectionHeader = GriddedCorrectionHeader

instance Binary GriddedCorrectionHeader where
get = do
_griddedCorrectionHeader_tile_set_id <- getWord8
_griddedCorrectionHeader_tile_id <- getWord8
_griddedCorrectionHeader_tile_set_id <- getWord16le
_griddedCorrectionHeader_tile_id <- getWord16le
_griddedCorrectionHeader_time <- get
_griddedCorrectionHeader_num_msgs <- getWord16le
_griddedCorrectionHeader_seq_num <- getWord16le
Expand All @@ -181,8 +181,8 @@ instance Binary GriddedCorrectionHeader where
pure GriddedCorrectionHeader {..}

put GriddedCorrectionHeader {..} = do
putWord8 _griddedCorrectionHeader_tile_set_id
putWord8 _griddedCorrectionHeader_tile_id
putWord16le _griddedCorrectionHeader_tile_set_id
putWord16le _griddedCorrectionHeader_tile_id
put _griddedCorrectionHeader_time
putWord16le _griddedCorrectionHeader_num_msgs
putWord16le _griddedCorrectionHeader_seq_num
Expand Down Expand Up @@ -631,9 +631,9 @@ msgSsrTileDefinition = 0x05F6
-- information element GNSS-SSR-CorrectionPoints. SBP only supports gridded
-- arrays of correction points, not lists of points.
data MsgSsrTileDefinition = MsgSsrTileDefinition
{ _msgSsrTileDefinition_tile_set_id :: !Word8
{ _msgSsrTileDefinition_tile_set_id :: !Word16
-- ^ Unique identifier of the tile set this tile belongs to.
, _msgSsrTileDefinition_tile_id :: !Word8
, _msgSsrTileDefinition_tile_id :: !Word16
-- ^ Unique identifier of this tile in the tile set. See GNSS-SSR-
-- ArrayOfCorrectionPoints field correctionPointSetID.
, _msgSsrTileDefinition_corner_nw_lat :: !Word16
Expand Down Expand Up @@ -673,8 +673,8 @@ data MsgSsrTileDefinition = MsgSsrTileDefinition

instance Binary MsgSsrTileDefinition where
get = do
_msgSsrTileDefinition_tile_set_id <- getWord8
_msgSsrTileDefinition_tile_id <- getWord8
_msgSsrTileDefinition_tile_set_id <- getWord16le
_msgSsrTileDefinition_tile_id <- getWord16le
_msgSsrTileDefinition_corner_nw_lat <- getWord16le
_msgSsrTileDefinition_corner_nw_lon <- getWord16le
_msgSsrTileDefinition_spacing_lat <- getWord16le
Expand All @@ -685,8 +685,8 @@ instance Binary MsgSsrTileDefinition where
pure MsgSsrTileDefinition {..}

put MsgSsrTileDefinition {..} = do
putWord8 _msgSsrTileDefinition_tile_set_id
putWord8 _msgSsrTileDefinition_tile_id
putWord16le _msgSsrTileDefinition_tile_set_id
putWord16le _msgSsrTileDefinition_tile_id
putWord16le _msgSsrTileDefinition_corner_nw_lat
putWord16le _msgSsrTileDefinition_corner_nw_lon
putWord16le _msgSsrTileDefinition_spacing_lat
Expand Down
8 changes: 4 additions & 4 deletions java/src/com/swiftnav/sbp/ssr/GriddedCorrectionHeader.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ public GriddedCorrectionHeader () {}
@Override
public GriddedCorrectionHeader parse(SBPMessage.Parser parser) throws SBPBinaryException {
/* Parse fields from binary */
tile_set_id = parser.getU8();
tile_id = parser.getU8();
tile_set_id = parser.getU16();
tile_id = parser.getU16();
time = new GPSTimeSec().parse(parser);
num_msgs = parser.getU16();
seq_num = parser.getU16();
Expand All @@ -74,8 +74,8 @@ public GriddedCorrectionHeader parse(SBPMessage.Parser parser) throws SBPBinaryE
@Override
public void build(SBPMessage.Builder builder) {
/* Build fields into binary */
builder.putU8(tile_set_id);
builder.putU8(tile_id);
builder.putU16(tile_set_id);
builder.putU16(tile_id);
time.build(builder);
builder.putU16(num_msgs);
builder.putU16(seq_num);
Expand Down
8 changes: 4 additions & 4 deletions java/src/com/swiftnav/sbp/ssr/MsgSsrTileDefinition.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ public MsgSsrTileDefinition (SBPMessage msg) throws SBPBinaryException {
@Override
protected void parse(Parser parser) throws SBPBinaryException {
/* Parse fields from binary */
tile_set_id = parser.getU8();
tile_id = parser.getU8();
tile_set_id = parser.getU16();
tile_id = parser.getU16();
corner_nw_lat = parser.getU16();
corner_nw_lon = parser.getU16();
spacing_lat = parser.getU16();
Expand All @@ -139,8 +139,8 @@ protected void parse(Parser parser) throws SBPBinaryException {

@Override
protected void build(Builder builder) {
builder.putU8(tile_set_id);
builder.putU8(tile_id);
builder.putU16(tile_set_id);
builder.putU16(tile_id);
builder.putU16(corner_nw_lat);
builder.putU16(corner_nw_lon);
builder.putU16(spacing_lat);
Expand Down
8 changes: 4 additions & 4 deletions java/src/com/swiftnav/sbp/ssr/STECHeader.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public STECHeader () {}
@Override
public STECHeader parse(SBPMessage.Parser parser) throws SBPBinaryException {
/* Parse fields from binary */
tile_set_id = parser.getU8();
tile_id = parser.getU8();
tile_set_id = parser.getU16();
tile_id = parser.getU16();
time = new GPSTimeSec().parse(parser);
num_msgs = parser.getU8();
seq_num = parser.getU8();
Expand All @@ -68,8 +68,8 @@ public STECHeader parse(SBPMessage.Parser parser) throws SBPBinaryException {
@Override
public void build(SBPMessage.Builder builder) {
/* Build fields into binary */
builder.putU8(tile_set_id);
builder.putU8(tile_id);
builder.putU16(tile_set_id);
builder.putU16(tile_id);
time.build(builder);
builder.putU8(num_msgs);
builder.putU8(seq_num);
Expand Down
2 changes: 1 addition & 1 deletion javascript/sbp.bundle.js

Large diffs are not rendered by default.

36 changes: 18 additions & 18 deletions javascript/sbp/ssr.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ PhaseBiasesContent.prototype.fieldSpec.push(['bias', 'writeInt32LE', 4]);
* into a sequence.
*
* Fields in the SBP payload (`sbp.payload`):
* @field tile_set_id number (unsigned 8-bit int, 1 byte) Unique identifier of the tile set this tile belongs to.
* @field tile_id number (unsigned 8-bit int, 1 byte) Unique identifier of this tile in the tile set.
* @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the tile set this tile belongs to.
* @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set.
* @field time GPSTimeSec GNSS reference time of the correction
* @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset
* @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset
Expand All @@ -131,16 +131,16 @@ STECHeader.prototype.messageType = "STECHeader";
STECHeader.prototype.constructor = STECHeader;
STECHeader.prototype.parser = new Parser()
.endianess('little')
.uint8('tile_set_id')
.uint8('tile_id')
.uint16('tile_set_id')
.uint16('tile_id')
.nest('time', { type: GPSTimeSec.prototype.parser })
.uint8('num_msgs')
.uint8('seq_num')
.uint8('update_interval')
.uint8('iod_atmo');
STECHeader.prototype.fieldSpec = [];
STECHeader.prototype.fieldSpec.push(['tile_set_id', 'writeUInt8', 1]);
STECHeader.prototype.fieldSpec.push(['tile_id', 'writeUInt8', 1]);
STECHeader.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]);
STECHeader.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]);
STECHeader.prototype.fieldSpec.push(['time', GPSTimeSec.prototype.fieldSpec]);
STECHeader.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]);
STECHeader.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]);
Expand All @@ -154,8 +154,8 @@ STECHeader.prototype.fieldSpec.push(['iod_atmo', 'writeUInt8', 1]);
* in SBP, so each grid point will be identified by the index.
*
* Fields in the SBP payload (`sbp.payload`):
* @field tile_set_id number (unsigned 8-bit int, 1 byte) Unique identifier of the tile set this tile belongs to.
* @field tile_id number (unsigned 8-bit int, 1 byte) Unique identifier of this tile in the tile set.
* @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the tile set this tile belongs to.
* @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set.
* @field time GPSTimeSec GNSS reference time of the correction
* @field num_msgs number (unsigned 16-bit int, 2 bytes) Number of messages in the dataset
* @field seq_num number (unsigned 16-bit int, 2 bytes) Position of this message in the dataset
Expand All @@ -179,17 +179,17 @@ GriddedCorrectionHeader.prototype.messageType = "GriddedCorrectionHeader";
GriddedCorrectionHeader.prototype.constructor = GriddedCorrectionHeader;
GriddedCorrectionHeader.prototype.parser = new Parser()
.endianess('little')
.uint8('tile_set_id')
.uint8('tile_id')
.uint16('tile_set_id')
.uint16('tile_id')
.nest('time', { type: GPSTimeSec.prototype.parser })
.uint16('num_msgs')
.uint16('seq_num')
.uint8('update_interval')
.uint8('iod_atmo')
.uint8('tropo_quality_indicator');
GriddedCorrectionHeader.prototype.fieldSpec = [];
GriddedCorrectionHeader.prototype.fieldSpec.push(['tile_set_id', 'writeUInt8', 1]);
GriddedCorrectionHeader.prototype.fieldSpec.push(['tile_id', 'writeUInt8', 1]);
GriddedCorrectionHeader.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]);
GriddedCorrectionHeader.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]);
GriddedCorrectionHeader.prototype.fieldSpec.push(['time', GPSTimeSec.prototype.fieldSpec]);
GriddedCorrectionHeader.prototype.fieldSpec.push(['num_msgs', 'writeUInt16LE', 2]);
GriddedCorrectionHeader.prototype.fieldSpec.push(['seq_num', 'writeUInt16LE', 2]);
Expand Down Expand Up @@ -663,8 +663,8 @@ MsgSsrGriddedCorrection.prototype.fieldSpec.push(['element', GridElement.prototy
* lists of points.
*
* Fields in the SBP payload (`sbp.payload`):
* @field tile_set_id number (unsigned 8-bit int, 1 byte) Unique identifier of the tile set this tile belongs to.
* @field tile_id number (unsigned 8-bit int, 1 byte) Unique identifier of this tile in the tile set. See GNSS-SSR-
* @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the tile set this tile belongs to.
* @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. See GNSS-SSR-
* ArrayOfCorrectionPoints field correctionPointSetID.
* @field corner_nw_lat number (unsigned 16-bit int, 2 bytes) North-West corner correction point latitude. The relation between the latitude
* X in the range [-90, 90] and the coded number N is: N = floor((X / 90) * 2^14)
Expand Down Expand Up @@ -706,8 +706,8 @@ MsgSsrTileDefinition.prototype.msg_type = 0x05F6;
MsgSsrTileDefinition.prototype.constructor = MsgSsrTileDefinition;
MsgSsrTileDefinition.prototype.parser = new Parser()
.endianess('little')
.uint8('tile_set_id')
.uint8('tile_id')
.uint16('tile_set_id')
.uint16('tile_id')
.uint16('corner_nw_lat')
.uint16('corner_nw_lon')
.uint16('spacing_lat')
Expand All @@ -716,8 +716,8 @@ MsgSsrTileDefinition.prototype.parser = new Parser()
.uint16('cols')
.uint64('bitmask');
MsgSsrTileDefinition.prototype.fieldSpec = [];
MsgSsrTileDefinition.prototype.fieldSpec.push(['tile_set_id', 'writeUInt8', 1]);
MsgSsrTileDefinition.prototype.fieldSpec.push(['tile_id', 'writeUInt8', 1]);
MsgSsrTileDefinition.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]);
MsgSsrTileDefinition.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]);
MsgSsrTileDefinition.prototype.fieldSpec.push(['corner_nw_lat', 'writeUInt16LE', 2]);
MsgSsrTileDefinition.prototype.fieldSpec.push(['corner_nw_lon', 'writeUInt16LE', 2]);
MsgSsrTileDefinition.prototype.fieldSpec.push(['spacing_lat', 'writeUInt16LE', 2]);
Expand Down
12 changes: 6 additions & 6 deletions python/sbp/jit/ssr.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ class STECHeader(object):
@classmethod
def parse_members(cls, buf, offset, length):
ret = {}
(__tile_set_id, offset, length) = get_u8(buf, offset, length)
(__tile_set_id, offset, length) = get_u16(buf, offset, length)
ret['tile_set_id'] = __tile_set_id
(__tile_id, offset, length) = get_u8(buf, offset, length)
(__tile_id, offset, length) = get_u16(buf, offset, length)
ret['tile_id'] = __tile_id
(__time, offset, length) = GPSTimeSec.parse_members(buf, offset, length)
ret['time'] = __time
Expand Down Expand Up @@ -189,9 +189,9 @@ class GriddedCorrectionHeader(object):
@classmethod
def parse_members(cls, buf, offset, length):
ret = {}
(__tile_set_id, offset, length) = get_u8(buf, offset, length)
(__tile_set_id, offset, length) = get_u16(buf, offset, length)
ret['tile_set_id'] = __tile_set_id
(__tile_id, offset, length) = get_u8(buf, offset, length)
(__tile_id, offset, length) = get_u16(buf, offset, length)
ret['tile_id'] = __tile_id
(__time, offset, length) = GPSTimeSec.parse_members(buf, offset, length)
ret['time'] = __time
Expand Down Expand Up @@ -783,9 +783,9 @@ class MsgSsrTileDefinition(SBP):
@classmethod
def parse_members(cls, buf, offset, length):
ret = {}
(__tile_set_id, offset, length) = get_u8(buf, offset, length)
(__tile_set_id, offset, length) = get_u16(buf, offset, length)
ret['tile_set_id'] = __tile_set_id
(__tile_id, offset, length) = get_u8(buf, offset, length)
(__tile_id, offset, length) = get_u16(buf, offset, length)
ret['tile_id'] = __tile_id
(__corner_nw_lat, offset, length) = get_u16(buf, offset, length)
ret['corner_nw_lat'] = __corner_nw_lat
Expand Down
12 changes: 6 additions & 6 deletions python/sbp/ssr.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ class STECHeader(object):

"""
_parser = construct.Embedded(construct.Struct(
'tile_set_id' / construct.Int8ul,
'tile_id' / construct.Int8ul,
'tile_set_id' / construct.Int16ul,
'tile_id' / construct.Int16ul,
'time' / construct.Struct(GPSTimeSec._parser),
'num_msgs' / construct.Int8ul,
'seq_num' / construct.Int8ul,
Expand Down Expand Up @@ -232,8 +232,8 @@ class GriddedCorrectionHeader(object):

"""
_parser = construct.Embedded(construct.Struct(
'tile_set_id' / construct.Int8ul,
'tile_id' / construct.Int8ul,
'tile_set_id' / construct.Int16ul,
'tile_id' / construct.Int16ul,
'time' / construct.Struct(GPSTimeSec._parser),
'num_msgs' / construct.Int16ul,
'seq_num' / construct.Int16ul,
Expand Down Expand Up @@ -1503,8 +1503,8 @@ class MsgSsrTileDefinition(SBP):

"""
_parser = construct.Struct(
'tile_set_id' / construct.Int8ul,
'tile_id' / construct.Int8ul,
'tile_set_id' / construct.Int16ul,
'tile_id' / construct.Int16ul,
'corner_nw_lat' / construct.Int16ul,
'corner_nw_lon' / construct.Int16ul,
'spacing_lat' / construct.Int16ul,
Expand Down
Loading