summaryrefslogtreecommitdiff
path: root/enhanced-position-service/api/franca/EnhancedPositionServiceTypes.fidl
blob: fb201630262f1090dea75a418cc7445ca4e39b04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
/*  SPDX-License-Identifier: MPL-2.0
    Component Name: EnhancedPositionService
    Compliance Level: Abstract Component
    Copyright (C) 2012, BMW Car IT GmbH, Continental Automotive GmbH, PCA Peugeot Citroën, XS Embedded GmbH
    License:
    This Source Code Form is subject to the terms of the
    Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
    this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

package org.genivi.EnhancedPositionService

typeCollection EnhancedPositionServiceTypes {
	
	typedef Handle is UInt32
	
	typedef Timestamp is UInt64
	
	<** @description: bitmask obtained as a result of an OR operation on enum values of type PositionInfoKey **>
	typedef Bitmask is UInt64 
	
	<** @description: version.**>			
	struct Version {
		<** @description : when the major changes, then backward compatibility with previous releases is not granted.**>
		UInt16 ^major
		<** @description : when the minor changes, then backward compatibility with previous releases is granted, but something changed in the implementation of the API (e.g. new methods may have been added).**>
		UInt16 ^minor
		<** @description : when the micro changes, then backward compatibility with previous releases is granted (bug fixes or documentation modifications).**>
		UInt16 ^micro
		<** @description : release date (e.g. 21-06-2011).**>
		String date
	}
	
	<** @description : Value = generic value (mapped to a dbus variant ('v') data type.**>
	union Value {
		UInt32 uInt32Value
		String stringValue
	}

    <** @description: Coordinate2D = 2D geocoordinate.**>	
	struct Coordinate2D {
        <**	@description : latitude of a vertex of the polygon in format %3.6f. Range [-90:+90]. Example: 48.053250.**>
		Double latitude
        <**	@description : longitude of a vertex of the polygon in format %3.6f. Range [-180:+180]. Example: 48.053250.**>
		Double longitude
	}

    <** @description: Coordinate3D = 3D geocoordinate.**>	
	struct Coordinate3D extends Coordinate2D {
        <**	@description : altitude above the sea level of the current position in meters.**>
		Int32 altitude
	}
	
	enumeration PositionInfoKey {
		LATITUDE           = "0x00000001"
		LONGITUDE          = "0x00000002"
		ALTITUDE           = "0x00000004"
		HEADING            = "0x00000008"
		SPEED              = "0x00000010"
		CLIMB              = "0x00000020"
		ROLL_RATE          = "0x00000040"
		PITCH_RATE         = "0x00000080"
		YAW_RATE           = "0x00000100"
		PDOP               = "0x00000200"
		HDOP               = "0x00000400"
		VDOP               = "0x00000800"
		USED_SATELLITES    = "0x00001000"
        TRACKED_SATELLITES = "0x00002000"
        VISIBLE_SATELLITES = "0x00004000"
		SIGMA_HPOSITION    = "0x00008000"
		SIGMA_ALTITUDE     = "0x00010000"
		SIGMA_HEADING      = "0x00020000"
		SIGMA_SPEED        = "0x00040000"
        SIGMA_CLIMB        = "0x00080000"
        GNSS_FIX_STATUS    = "0x00100000"
        DR_STATUS          = "0x00200000"
        RELIABILTY_INDEX   = "0x00400000"
		ALL                = "0xffffffff"
	} 
	
	<**	  
       @description : PositioningInfo = array of tuples (key,value)
	      key = enumeration PositionInfoKey
          key = LATITUDE, value = value of type 'Double', that expresses the latitude of the current position. Range [-90:+90]. Example: 48.053250
          key = LONGITUDE, value = value of type 'Double', that expresses the longitude of the current position. Range [-180:+180]. Example: 8.324500
          key = ALTITUDE, value = value of type 'Int32', that expresses the altitude above the sea level of the current position in meters
          key = HEADING, value = value of type 'Int32', that expresses the course angle in degree. Range [0:360]. 0 = north, 90 = east, 180 = south, 270 = west
          key = SPEED, value = value of type 'Double', that expresses speed measured in m/s. A negative value indicates that the vehicle is moving backwards
          key = CLIMB, value = value of type 'Int32', that expresses the road gradient in degrees
          key = ROLL_RATE, value = value of type 'Int32', rotation rate around the X-axis in degrees/s. Range [-100:+100]
          key = PITCH_RATE, value = value of type 'Int32', rotation rate around the Y-axis in degrees/s. Range [-100:+100]
          key = YAW_RATE, value = value of type 'Int32', rotation rate around the Z-axis in degrees/s. Range [-100:+100]
          key = PDOP, value = value of type 'Double', that represents the positional (3D) dilution of precision
          key = HDOP, value = value of type 'Double', that represents the horizontal (2D) dilution of precision
          key = VDOP, value = value of type 'Double', that represents vertical (altitude) dilution of precision
          key = SIGMA_HPOSITION, value = value of type 'Double', that represents the standard deviation for the horizontal position in m
          key = SIGMA_ALTITUDE, value = value of type 'Double', that represents the standard deviation for altitude in m
          key = SIGMA_HEADING, value = value of type 'Double', that represents the standard deviation for altitude in degrees
          key = USED_SATELLITES, value = value of type 'UInt8', that represents the number of used satellites
          key = TRACKED_SATELLITES, value = value of type 'UInt8', that represents the number of tracked satellites 
          key = VISIBLE_SATELLITES, value = value of type 'UInt8', that represents the number of visible satellites
          key = GNSS_FIX_STATUS, value = value of type 'q', that represents an enum(NO_FIX(0x01),TIME_FIX(0x01),2D_FIX(0x02),3D_FIX(0x03), ... )
          key = DR_STATUS, value = value of type 'b', where TRUE means that a dead-reckoning algorithm has been used to calculate the current position
    **>
	map PositionInfo {
		PositionInfoKey to Value
	}
	
	<**	  
       @description : SatelliteInfo = array(struct(system,satelliteId,azimuth,elevation,snr,inUse))
          system = enum(GPS, GLONASS, GALILEO, COMPASS, ... )
          satelliteId = satellite ID. This ID is unique within one satellite system
          azimuth = satellite azimuth in degrees. Value range 0..359
          elevation = satellite elevation in degrees. Value range 0..90
          snr = SNR (C/No) in dBHz. Range 0 to 99, null when not tracking
          inUse = flag indicating if the satellite is used for the fix (inUse=true)
    **>
	struct SatelliteInfo {
		UInt32 satellitId
		Boolean inUse
		UInt32 elevation
		UInt32 azimuth
		UInt32 snr
	}
	
	enumeration TimeInfoKey  {
	    YEAR            = "0x01000000"
	    MONTH           = "0x02000000"
	    DAY             = "0x04000000"
	    HOUR            = "0x08000000"
	    MINUTE          = "0x10000000"
	    SECOND          = "0x20000000"
	    MS              = "0x40000000"
	}

    <**	  
       @description : TimeInfo = array of tuples (key,value)
          key = enumeration TimeInfoKey
          key = YEAR, value = value of type 'UInt16', 4 digits number that indicates the year. Example: 2012
          key = MONTH, value = value of type 'UInt8', 2 digits number that indicates the month. Example: 03 means March
          key = DAY, value = value of type 'UInt8', 2 digits number that indicates the day. Range [0:31]. Example: 07
          key = HOUR, value = value of type 'UInt8', 2 digits number that indicates the hour. Range [0:23].  Example: 01
          key = MINUTE, value = value of type 'UInt8', 2 digits number that represents the minutes. Range [0:59]. Example: 01
          key = SECOND, value = value of type 'UInt8', 2 digits number that represents the seconds. Range [0:59]. Example: 01
          key = MS, value = value of type 'UInt16', 3 digits number that represents the milliseconds. Range [0:999]. Example: 007
	**>
	map TimeInfo {
		TimeInfoKey to Value
	}
	
	enumeration PositionFeedbackKey {
		LATITUDE         = "0x00000001"
	    LONGITUDE        = "0x00000002"
	    ALTITUDE         = "0x00000004"
	    HEADING          = "0x00000008"
	    SPEED            = "0x00000010"
	    CLIMB            = "0x00000020"
	    RELIABILTY_INDEX = "0x00400000"
	}
	
	enumeration PositionFeedbackType {
		MAP_MATCHED_FEEDBACK = "0x00000001"
	    TEST_FEEDBACK        = "0x00000002"
	}
	
	enumeration SatelliteSystem {
	    GPS                  = "0x00000001"
        GLONASS              = "0x00000002"
        GALILEO              = "0x00000003" 
        COMPASS              = "0x00000004" 
    }
	
}