summaryrefslogtreecommitdiff
path: root/enhanced-position-service/commonapi-service/api/EnhancedPositionServiceTypes.fidl
blob: 29a729e4b6f989ad5f9c332204aa02dafdfc094f (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
/*  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 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 maj
        <** @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 min
        <** @description : when the micro changes, then backward compatibility with previous releases is granted (bug fixes or documentation modifications) **>
        UInt16 mic
        <** @description : release date (e.g. 21-06-2011) **>
        String date
    }
    
    <** @description : Value = generic value (mapped to a dbus variant ('v') data type)**>
    union Value {
        UInt64 uInt64Value
        Double doubleValue
        Float  floatValue
        String stringValue
    }

    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"
    } 
    
    <** @description : PositionInfo = 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 'Double', that expresses the altitude above the sea level of the current position in meters
        key = HEADING, value = value of type 'Double', 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 'Double', that expresses the road gradient in degrees
        key = ROLL_RATE, value = value of type 'Double', rotation rate around the X-axis in degrees/s. Range [-100:+100]
        key = PITCH_RATE, value = value of type 'Double', rotation rate around the Y-axis in degrees/s. Range [-100:+100]
        key = YAW_RATE, value = value of type 'Double', 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 = 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 = 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 = SIGMA_SPEED, value = value of type 'Double', that represents the standard error estimate of the speed in m/s</line>
        key = SIGMA_CLIMB, value = value of type 'Double', that represents the standard error estimate of the climb in degrees</line>
        key = GNSS_FIX_STATUS, value = value of type 'UInt16', that represents an enum(NO_FIX(0x01),TIME_FIX(0x01),2D_FIX(0x02),3D_FIX(0x03), ... )
        key = DR_STATUS, value = value of type 'Boolean', where TRUE means that a dead-reckoning algorithm has been used to calculate the current position
    **>
    map PositionInfo {
        PositionInfoKey to Value
    }

    enumeration SatelliteSystem {
        GPS     = "0x00000001"
        GLONASS = "0x00000002"
        GALILEO = "0x00000003" 
        COMPASS = "0x00000004" 
    }
    
    <** @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 {
        SatelliteSystem system
        UInt32 satellitId
        UInt32 azimuth
        UInt32 elevation
        UInt32 snr
        Boolean inUse
    }
    
    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"
    }
    
}