From 4774727c95b8ab55b8db4ea7398bee9a00768888 Mon Sep 17 00:00:00 2001 From: Helmut Schmidt Date: Wed, 29 Oct 2014 18:24:23 +0100 Subject: GT-3032, step 3: draft for use of bitmasks as proposed by Marco Residori at 15-Oct --- .../api/genivi-positioning-constants.xml | 119 ++++++++------------- .../api/genivi-positioning-enhancedposition.xml | 103 ++++++++---------- .../api/genivi-positioning-positionfeedback.xml | 4 +- gnss-service/api/gnss.h | 9 +- 4 files changed, 100 insertions(+), 135 deletions(-) diff --git a/enhanced-position-service/api/genivi-positioning-constants.xml b/enhanced-position-service/api/genivi-positioning-constants.xml index 8712181..60f9f59 100644 --- a/enhanced-position-service/api/genivi-positioning-constants.xml +++ b/enhanced-position-service/api/genivi-positioning-constants.xml @@ -15,81 +15,54 @@ 3.0.0 (xx-10-2014) This document defines the constants that are used in the EnhancedPositionService APIs + Constants for "Keys" are always individual bits within a 64 bit unsigned integer and are unique within the EnhancedPositionService + Constants for "Enums" increment consecutively and are only unique within the context of the specific enum - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/enhanced-position-service/api/genivi-positioning-enhancedposition.xml b/enhanced-position-service/api/genivi-positioning-enhancedposition.xml index 1e99d5e..d17205c 100644 --- a/enhanced-position-service/api/genivi-positioning-enhancedposition.xml +++ b/enhanced-position-service/api/genivi-positioning-enhancedposition.xml @@ -40,21 +40,32 @@ GetPositionInfo = This method returns a given set of positioning data (e.g. Position, Course, Accuracy, Status, ... ) - + - valuesToReturn= array[fieldType] - key = enum(INVALID,TIMESTAMP,LATITUDE,LONGITUDE,ALTITUDE,HEADING,SPEED,CLIMB,ROLL_RATE,PITCH_RATE,YAW_RATE,...,ALL) + valuesToReturn = Bit mask: Keys corresponding to requested values in one 64 unsigned bit integer, bitwise or'ed + Supported Keys: LATITUDE,LONGITUDE,ALTITUDE,... + Supported Keys (continued): HEADING,SPEED,CLIMB,... + Supported Keys (continued): ROLL_RATE,PITCH_RATE,YAW_RATE,... + Supported Keys (continued): PDOP,HDOP,VDOP,... + Supported Keys (continued): USED_SATELLITES,TRACKED_SATELLITES,VISIBLE_SATELLITES,... + Supported Keys (continued): SIGMA_HPOSITION,SIGMA_ALTITUDE,SIGMA_HEADING,... + Supported Keys (continued): GNSS_FIX_STATUS,DR_STATUS - + + + Timestamp of the acquisition of the position data [ms] + + + + data = dictionary[key,value] dictionary = array of tuples (key,value) Invalid data is not be returned to the client application The vehicle axis system is defined by ISO 8855: In short, the X-axis pointing is forwards, the Y-axis is pointing left, the Z-axis is pointing upwards - key = enum(INVALID,TIMESTAMP,LATITUDE,LONGITUDE,ALTITUDE,HEADING,SPEED,CLIMB,ROLL_RATE,PITCH_RATE,YAW_RATE,PDOP,HDOP,VDOP,USED_SATELLITES,TRACKED_SATELLITES,VISIBLE_SATELLITES,SIGMA_HPOSITION,SIGMA_ALTITUDE,SIGMA_HEADING,GNSS_FIX_STATUS,DR_STATUS,... ,ALL - key = TIMESTAMP, value = value of type 't', that represents a timestamp in ms + key = enum(LATITUDE,LONGITUDE,ALTITUDE,HEADING,SPEED,CLIMB,ROLL_RATE,PITCH_RATE,YAW_RATE,PDOP,HDOP,VDOP,USED_SATELLITES,TRACKED_SATELLITES,VISIBLE_SATELLITES,SIGMA_HPOSITION,SIGMA_ALTITUDE,SIGMA_HEADING,GNSS_FIX_STATUS,DR_STATUS,... ,ALL key = LATITUDE, value = value of type 'd', that expresses the WGS84 latitude of the current position in degrees. Range [-90:+90]. Example: 48.053250 key = LONGITUDE, value = value of type 'd', that expresses the WGS84 longitude of the current position in degrees. Range [-180:+180]. Example: 8.324500 key = ALTITUDE, value = value of type 'd', that expresses the altitude above the sea level of the current position in meters @@ -81,48 +92,18 @@ - PositionUpdate = This signal is called to notifiy a client application of a position change. The update frequency is implementation specific. The maximal allowed frequency is 10Hz - - - - changedValues = array[value] - value = enum(INVALID,TIMESTAMP,LATITUDE,LONGITUDE,ALTITUDE,HEADING,SPEED,CLIMB,... ) - - - - - - - RotationRateUpdated = This signal is emitted when the rotation rate changes - - - - changedValues = array[key] - key = enum(INVALID,TIMESTAMP,ROLL_RATE,PITCH_RATE,YAW_RATE, ... ) - - - - - - - GNSSAccuracyUpdate = This signal is emitted when the GNSS accuracy changes + PositionUpdate = This signal is called to notifiy a client application of a position change. The update frequency is implementation specific. The maximum allowed frequency is 10Hz - + - changedValues = array[value] - value = enum(INVALID,TIMESTAMP,PDOP,HDOP,VDOP,USED_SATELLITES,TRACKED_SATELLITES,VISIBLE_SATELLITES, ... ) - - - - - - - StatusUpdate = This signal is emitted when the status of this service changes - - - - changedValues = array[value] - key = enum(INVALID,TIMESTAMP,GNSS_FIX_STATUS,DR_STATUS, ... ) + changedValues = Bit mask: Keys corresponding to changed values in one 64 unsigned bit integer, bitwise or'ed + Supported Keys: LATITUDE,LONGITUDE,ALTITUDE,... + Supported Keys (continued): HEADING,SPEED,CLIMB,... + Supported Keys (continued): ROLL_RATE,PITCH_RATE,YAW_RATE,... + Supported Keys (continued): PDOP,HDOP,VDOP,... + Supported Keys (continued): USED_SATELLITES,TRACKED_SATELLITES,VISIBLE_SATELLITES,... + Supported Keys (continued): SIGMA_HPOSITION,SIGMA_ALTITUDE,SIGMA_HEADING,... + Supported Keys (continued): GNSS_FIX_STATUS,DR_STATUS @@ -131,16 +112,20 @@ GetSatelliteInfo = This method returns information about the current satellite constellation - + - satelliteInfo = dictionary[key,value] - dictionary = array of tuples (key,value) - If you request for a specific value which is invalid, it's not returned in the dictionary. - key = enum(INVALID,TIMESTAMP,SATELLITE_DETAILS, ...) - key = TIMESTAMP, value = value of type 't', that represents a timestamp in ms - key = SATELLITE_DETAILS, value = value of type 'a(qqbqqq)', that represents an array(struct(system,satelliteId,inUse,elevation,azimuth,snr). + Timestamp of the acquisition of the satellite detail data [ms] + + + + + Represents an array(struct(system,satelliteId,azimuth,elevation,snr,inUse). The system field identifies the satellite system: GPS, GLONASS, GALILEO, COMPASS, ... - The satelliteId is only unique within one satellite system + The satelliteId is only unique within one satellite system. + Azimuth is in degrees. Value range 0..359. + Elevation is in degrees. Value range 0..90. + SNR (C/No) is in dBHz. Range 0 to 99, null when not tracking + inUse is set to true when the satellite is used for the fix @@ -150,13 +135,17 @@ GetTime = This method returns UTC time and date - + + + Timestamp of the acquisition of the UTC date/time [ms] + + + time = dictionary[key,value] dictionary = array of tuples (key,value) If you request for a specific value which is invalid, it's not returned in the dictionary. - key = enum(INVALID,TIMESTAMP,YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,MS, ... ) - key = TIMESTAMP, value = value of type 't', that represents a timestamp in ms + key = enum(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,MS, ... ) key = YEAR, value = value of type 'q', 4 digits number that indicates the year. Example: 2012 key = MONTH, value = value of type 'y', 2 digits number that indicates the month. Example: 03 means March key = DAY, value = value of type 'y', 2 digits number that indicates the day. Range [0:31]. Example: 07 diff --git a/enhanced-position-service/api/genivi-positioning-positionfeedback.xml b/enhanced-position-service/api/genivi-positioning-positionfeedback.xml index 55418fd..e66bf85 100644 --- a/enhanced-position-service/api/genivi-positioning-positionfeedback.xml +++ b/enhanced-position-service/api/genivi-positioning-positionfeedback.xml @@ -40,12 +40,12 @@ Note: This interface is typically used by the application that implements the map-matching algorithm Such application can hand over to the EnhancedPositionService an array of map-matched positions with different values of reliability - + feedback = array[position] position = dictionary[key,value] dictionary = array of tuples (key,value) - key = enum(INVALID,LATITUDE,LONGITUDE,ALTITUDE,HEADING,SPEED,CLIMB,RELIABILTY_INDEX, ... ) + key = enum(LATITUDE,LONGITUDE,ALTITUDE,HEADING,SPEED,CLIMB,RELIABILTY_INDEX, ... ) key = LATITUDE, value = value of type 'd', that expresses the WGS84 latitude of the current position in degrees. Range [-90:+90]. Example: 48.053250 key = LONGITUDE, value = value of type 'd', that expresses the WGS84 longitude of the current position in degrees. Range [-180:+180]. Example: 8.324500 key = ALTITUDE, value = value of type 'd', that expresses the altitude above the sea level of the current position in meters diff --git a/gnss-service/api/gnss.h b/gnss-service/api/gnss.h index 9c72c71..21d18a3 100644 --- a/gnss-service/api/gnss.h +++ b/gnss-service/api/gnss.h @@ -103,7 +103,8 @@ typedef enum { * Note: the uncommon numbering of day and month is chosen to be compatible with the struct tm from the standard C-Library */ typedef struct { - uint64_t timestamp; /**< Timestamp of the acquisition of the UTC date/time. */ + uint64_t timestamp; /**< Timestamp of the acquisition of the UTC date/time [ms]. + All sensor/GNSS timestamps must be based on the same time source. */ uint16_t year; /**< Year fraction of the UTC time. Unit: [year] Number equivalent to the year (4 digits) */ uint8_t month; /**< Month fraction of the UTC time. Unit: [month] Number betweeen 0 and 11 */ uint8_t day; /**< Day of month fraction of the UTC time. Unit: [day]. Number between 1 and 31 */ @@ -162,7 +163,8 @@ typedef enum { * Detailed data from one GNSS satellite. */ typedef struct { - uint64_t timestamp; /**< Timestamp of the acquisition of the satellite detail data. */ + uint64_t timestamp; /**< Timestamp of the acquisition of the satellite detail data [ms]. + All sensor/GNSS timestamps must be based on the same time source. */ EGNSSSystem system; /**< Value representing the GNSS system. */ uint16_t satelliteId; /**< Satellite ID. Satellite IDs are only unique within one satellite system. @@ -224,7 +226,8 @@ typedef enum { * for positioning applications such as GNSS/Dead Reckoning sensor fusion. */ typedef struct { - uint64_t timestamp; /**< Timestamp of the acquisition of the GNSS data. [ms] */ + uint64_t timestamp; /**< Timestamp of the acquisition of the GNSS data [ms]. + All sensor/GNSS timestamps must be based on the same time source. */ //position double latitude; /**< Latitude in WGS84 in degrees. */ double longitude; /**< Longitude in WGS84 in degrees. */ -- cgit v1.2.1