Loading gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IGnss.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ interface IGnss { android.hardware.gnss.IGnssPowerIndication getExtensionGnssPowerIndication(); @nullable android.hardware.gnss.IGnssBatching getExtensionGnssBatching(); @nullable android.hardware.gnss.IGnssGeofence getExtensionGnssGeofence(); @nullable android.hardware.gnss.IGnssNavigationMessageInterface getExtensionGnssNavigationMessage(); const int ERROR_INVALID_ARGUMENT = 1; const int ERROR_ALREADY_INIT = 2; const int ERROR_GENERIC = 3; Loading gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IGnssNavigationMessageCallback.aidl 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /////////////////////////////////////////////////////////////////////////////// // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // /////////////////////////////////////////////////////////////////////////////// // This file is a snapshot of an AIDL file. Do not edit it manually. There are // two cases: // 1). this is a frozen version file - do not edit this in any case. // 2). this is a 'current' file. If you make a backwards compatible change to // the interface (from the latest frozen version), the build system will // prompt you to update this file with `m <name>-update-api`. // // You must not make a backward incompatible change to any AIDL file built // with the aidl_interface module type with versions property set. The module // type is used to build AIDL files in a way that they can be used across // independently updatable components of the system. If a device is shipped // with such a backward incompatible change, it has a high risk of breaking // later when a module using the interface is updated, e.g., Mainline modules. package android.hardware.gnss; @VintfStability interface IGnssNavigationMessageCallback { void gnssNavigationMessageCb(in android.hardware.gnss.IGnssNavigationMessageCallback.GnssNavigationMessage message); @VintfStability parcelable GnssNavigationMessage { int svid; android.hardware.gnss.IGnssNavigationMessageCallback.GnssNavigationMessage.GnssNavigationMessageType type; int status; int messageId; int submessageId; byte[] data; const int STATUS_PARITY_PASSED = 1; const int STATUS_PARITY_REBUILT = 2; const int STATUS_UNKNOWN = 0; @Backing(type="int") @VintfStability enum GnssNavigationMessageType { UNKNOWN = 0, GPS_L1CA = 257, GPS_L2CNAV = 258, GPS_L5CNAV = 259, SBS = 513, GPS_CNAV2 = 260, GLO_L1CA = 769, QZS_L1CA = 1025, BDS_D1 = 1281, BDS_D2 = 1282, BDS_CNAV1 = 1283, BDS_CNAV2 = 1284, GAL_I = 1537, GAL_F = 1538, IRN_L5CA = 1793, } } } gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IGnssNavigationMessageInterface.aidl 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /////////////////////////////////////////////////////////////////////////////// // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // /////////////////////////////////////////////////////////////////////////////// // This file is a snapshot of an AIDL file. Do not edit it manually. There are // two cases: // 1). this is a frozen version file - do not edit this in any case. // 2). this is a 'current' file. If you make a backwards compatible change to // the interface (from the latest frozen version), the build system will // prompt you to update this file with `m <name>-update-api`. // // You must not make a backward incompatible change to any AIDL file built // with the aidl_interface module type with versions property set. The module // type is used to build AIDL files in a way that they can be used across // independently updatable components of the system. If a device is shipped // with such a backward incompatible change, it has a high risk of breaking // later when a module using the interface is updated, e.g., Mainline modules. package android.hardware.gnss; @VintfStability interface IGnssNavigationMessageInterface { void setCallback(in android.hardware.gnss.IGnssNavigationMessageCallback callback); void close(); } gnss/aidl/android/hardware/gnss/IGnss.aidl +8 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.hardware.gnss.IGnssCallback; import android.hardware.gnss.IGnssConfiguration; import android.hardware.gnss.IGnssGeofence; import android.hardware.gnss.IGnssMeasurementInterface; import android.hardware.gnss.IGnssNavigationMessageInterface; import android.hardware.gnss.IGnssPowerIndication; import android.hardware.gnss.IGnssPsds; Loading Loading @@ -118,4 +119,11 @@ interface IGnss { * @return Handle to the IGnssGeofence interface. */ @nullable IGnssGeofence getExtensionGnssGeofence(); /** * This method returns the IGnssNavigationMessageInterface. * * @return Handle to the IGnssNavigationMessageInterface. */ @nullable IGnssNavigationMessageInterface getExtensionGnssNavigationMessage(); } gnss/aidl/android/hardware/gnss/IGnssNavigationMessageCallback.aidl 0 → 100644 +240 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.gnss; /** Represents a GNSS navigation message (or a fragment of it). */ @VintfStability interface IGnssNavigationMessageCallback { /** * Represents a reading of GNSS measurements. For devices launched in Android Q or newer, it is * mandatory that these be provided, on request, when the GNSS receiver is searching/tracking * signals. * * - Reporting of GNSS constellation measurements is mandatory. * - Reporting of all tracked constellations are encouraged. */ @VintfStability parcelable GnssNavigationMessage { /** * Status of Navigation Message * * When a message is received properly without any parity error in its * navigation words, the status must be set to PARITY_PASSED. * * If a message is received with words that failed a parity check, but the GNSS * receiver has corrected those words, the status must be set to PARITY_REBUILT. * * Do not send any navigation message that contains words with parity errors * that cannot be corrected. */ const int STATUS_PARITY_PASSED = (1 << 0); const int STATUS_PARITY_REBUILT = (1 << 1); const int STATUS_UNKNOWN = 0; /** * Enumeration of available values to indicate the GNSS Navigation message * types. * * For convenience, first byte is the GnssConstellationType on which that signal * is typically transmitted. */ @VintfStability @Backing(type="int") enum GnssNavigationMessageType { UNKNOWN = 0, /** GPS L1 C/A message contained in the structure. */ GPS_L1CA = 0x0101, /** GPS L2-CNAV message contained in the structure. */ GPS_L2CNAV = 0x0102, /** GPS L5-CNAV message contained in the structure. */ GPS_L5CNAV = 0x0103, /* SBAS message contained in the structure. */ SBS = 0x0201, /** GPS CNAV-2 message contained in the structure. */ GPS_CNAV2 = 0x0104, /** Glonass L1 CA message contained in the structure. */ GLO_L1CA = 0x0301, /** QZSS L1 C/A message contained in the structure. */ QZS_L1CA = 0x0401, /** Beidou D1 message contained in the structure. */ BDS_D1 = 0x0501, /** Beidou D2 message contained in the structure. */ BDS_D2 = 0x0502, /** Beidou CNAV1 message contained in the structure. */ BDS_CNAV1 = 0x0503, /** Beidou CNAV2 message contained in the structure. */ BDS_CNAV2 = 0x0504, /** Galileo I/NAV message contained in the structure. */ GAL_I = 0x0601, /** Galileo F/NAV message contained in the structure. */ GAL_F = 0x0602, /** IRNSS L5 C/A message contained in the structure. */ IRN_L5CA = 0x0701, } /** * Satellite vehicle ID number, as defined in GnssSvInfo::svid * * This is a mandatory value. */ int svid; /** * The type of message contained in the structure. * * This is a mandatory value. */ GnssNavigationMessageType type; /** * The status of the received navigation message. * * It is a bitfield of constants with prefix "STATUS_" defined in this structure. * * No need to send any navigation message that contains words with parity * errors that cannot be corrected. */ int status; /** * Message identifier. It provides an index so the complete Navigation * Message can be assembled. * * - For GNSS L1 C/A subframe 4 and 5, this value corresponds to the 'frame * id' of the navigation message, in the range of 1-25 (Subframe 1, 2, 3 * does not contain a 'frame id' and this value can be set to -1.) * * - For Glonass L1 C/A, this refers to the frame ID, in the range of 1-5. * * - For BeiDou D1, this refers to the frame number in the range of 1-24 * * - For Beidou D2, this refers to the frame number, in the range of 1-120 * * - For Galileo F/NAV nominal frame structure, this refers to the subframe * number, in the range of 1-12 * * - For Galileo I/NAV nominal frame structure, this refers to the subframe * number in the range of 1-24 * * - For SBAS and Beidou CNAV2, this is unused and can be set to -1. * * - For QZSS L1 C/A subframe 4 and 5, this value corresponds to the 'frame id' of the * navigation message, in the range of 1-25. (Subframe 1, 2, 3 does not contain a 'frame * id' and this value can be set to -1.) * * - For Beidou CNAV1 this refers to the page type number in the range of 1-63. * * - For IRNSS L5 C/A subframe 3 and 4, this value corresponds to the Message Id of the * navigation message, in the range of 1-63. (Subframe 1 and 2 does not contain a message * type id and this value can be set to -1.) */ int messageId; /** * Sub-message identifier. If required by the message 'type', this value contains a * sub-index within the current message (or frame) that is being transmitted. * * - For GNSS L1 C/A, BeiDou D1 & BeiDou D2, the submessage id corresponds to the subframe * number of the navigation message, in the range of 1-5. * * - For Glonass L1 C/A, this refers to the String number, in the range from 1-15. * * - For Galileo F/NAV, this refers to the page type in the range 1-6. * * - For Galileo I/NAV, this refers to the word type in the range 0-10+. A value of 0 is * only allowed if the Satellite is transmiting a Spare Word. * * - For Galileo in particular, the type information embedded within the data bits may be * even more useful in interpretation, than the nominal page and word types provided in * this field. * * - For SBAS, the submessage id corresponds to the message type, in the range 1-63. * * - For Beidou CNAV1, the submessage id corresponds to the subframe number of the * navigation message, in the range of 1-3. * * - For Beidou CNAV2, the submessage id corresponds to the message type, in the range 1-63. * * - For IRNSS L5 C/A, the submessage id corresponds to the subframe number of the * navigation message, in the range of 1-4. */ int submessageId; /** * The data of the reported GNSS message. The bytes (or words) are specified * using big endian format (MSB first). * * - For GNSS L1 C/A, Beidou D1 & Beidou D2, each subframe contains 10 30-bit * words. Each word (30 bits) must fit into the last 30 bits in a * 4-byte word (skip B31 and B32), with MSB first, for a total of 40 * bytes, covering a time period of 6, 6, and 0.6 seconds, respectively. * The standard followed is 1995 SPS Signal specification. * * - For Glonass L1 C/A, each string contains 85 data bits, including the * checksum. These bits must fit into 11 bytes, with MSB first (skip * B86-B88), covering a time period of 2 seconds. * The standard followed is Glonass Interface Control Document Edition 5.1. * * - For Galileo F/NAV, each word consists of 238-bit (sync & tail symbols * excluded). Each word must fit into 30-bytes, with MSB first (skip * B239, B240), covering a time period of 10 seconds. The standard * followed is European GNSS(Galileo) Signal in Space Interface * Control Document Issue 1.2. * * - For Galileo I/NAV, each page contains 2 page parts, even and odd, with * a total of 2x114 = 228 bits, (sync & tail excluded) that must fit * into 29 bytes, with MSB first (skip B229-B232). The standard followed * is same as above. * * - For SBAS, each block consists of 250 data bits, that should be fit into 32 bytes. MSB * first (skip B251-B256). * * - For Beidou CNAV1, subframe #1 consists of 14 data bits, that should be fit into 2 * bytes. MSB first (skip B15-B16). subframe #2 consists of 600 bits that should be fit * into 75 bytes. subframe #3 consists of 264 data bits that should be fit into 33 bytes. * * - For Beidou CNAV2, each subframe consists of 288 data bits, that should be fit into 36 * bytes. * * The data reported here must be the raw data as demodulated by the GNSS receiver, not data * received from an external source (i.e. not from a server download.) */ byte[] data; } /** * The callback to report an available fragment of a GNSS navigation messages * from the HAL. * * @param message - The GNSS navigation submessage/subframe representation. */ void gnssNavigationMessageCb(in GnssNavigationMessage message); } Loading
gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IGnss.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ interface IGnss { android.hardware.gnss.IGnssPowerIndication getExtensionGnssPowerIndication(); @nullable android.hardware.gnss.IGnssBatching getExtensionGnssBatching(); @nullable android.hardware.gnss.IGnssGeofence getExtensionGnssGeofence(); @nullable android.hardware.gnss.IGnssNavigationMessageInterface getExtensionGnssNavigationMessage(); const int ERROR_INVALID_ARGUMENT = 1; const int ERROR_ALREADY_INIT = 2; const int ERROR_GENERIC = 3; Loading
gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IGnssNavigationMessageCallback.aidl 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /////////////////////////////////////////////////////////////////////////////// // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // /////////////////////////////////////////////////////////////////////////////// // This file is a snapshot of an AIDL file. Do not edit it manually. There are // two cases: // 1). this is a frozen version file - do not edit this in any case. // 2). this is a 'current' file. If you make a backwards compatible change to // the interface (from the latest frozen version), the build system will // prompt you to update this file with `m <name>-update-api`. // // You must not make a backward incompatible change to any AIDL file built // with the aidl_interface module type with versions property set. The module // type is used to build AIDL files in a way that they can be used across // independently updatable components of the system. If a device is shipped // with such a backward incompatible change, it has a high risk of breaking // later when a module using the interface is updated, e.g., Mainline modules. package android.hardware.gnss; @VintfStability interface IGnssNavigationMessageCallback { void gnssNavigationMessageCb(in android.hardware.gnss.IGnssNavigationMessageCallback.GnssNavigationMessage message); @VintfStability parcelable GnssNavigationMessage { int svid; android.hardware.gnss.IGnssNavigationMessageCallback.GnssNavigationMessage.GnssNavigationMessageType type; int status; int messageId; int submessageId; byte[] data; const int STATUS_PARITY_PASSED = 1; const int STATUS_PARITY_REBUILT = 2; const int STATUS_UNKNOWN = 0; @Backing(type="int") @VintfStability enum GnssNavigationMessageType { UNKNOWN = 0, GPS_L1CA = 257, GPS_L2CNAV = 258, GPS_L5CNAV = 259, SBS = 513, GPS_CNAV2 = 260, GLO_L1CA = 769, QZS_L1CA = 1025, BDS_D1 = 1281, BDS_D2 = 1282, BDS_CNAV1 = 1283, BDS_CNAV2 = 1284, GAL_I = 1537, GAL_F = 1538, IRN_L5CA = 1793, } } }
gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/IGnssNavigationMessageInterface.aidl 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /////////////////////////////////////////////////////////////////////////////// // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // /////////////////////////////////////////////////////////////////////////////// // This file is a snapshot of an AIDL file. Do not edit it manually. There are // two cases: // 1). this is a frozen version file - do not edit this in any case. // 2). this is a 'current' file. If you make a backwards compatible change to // the interface (from the latest frozen version), the build system will // prompt you to update this file with `m <name>-update-api`. // // You must not make a backward incompatible change to any AIDL file built // with the aidl_interface module type with versions property set. The module // type is used to build AIDL files in a way that they can be used across // independently updatable components of the system. If a device is shipped // with such a backward incompatible change, it has a high risk of breaking // later when a module using the interface is updated, e.g., Mainline modules. package android.hardware.gnss; @VintfStability interface IGnssNavigationMessageInterface { void setCallback(in android.hardware.gnss.IGnssNavigationMessageCallback callback); void close(); }
gnss/aidl/android/hardware/gnss/IGnss.aidl +8 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.hardware.gnss.IGnssCallback; import android.hardware.gnss.IGnssConfiguration; import android.hardware.gnss.IGnssGeofence; import android.hardware.gnss.IGnssMeasurementInterface; import android.hardware.gnss.IGnssNavigationMessageInterface; import android.hardware.gnss.IGnssPowerIndication; import android.hardware.gnss.IGnssPsds; Loading Loading @@ -118,4 +119,11 @@ interface IGnss { * @return Handle to the IGnssGeofence interface. */ @nullable IGnssGeofence getExtensionGnssGeofence(); /** * This method returns the IGnssNavigationMessageInterface. * * @return Handle to the IGnssNavigationMessageInterface. */ @nullable IGnssNavigationMessageInterface getExtensionGnssNavigationMessage(); }
gnss/aidl/android/hardware/gnss/IGnssNavigationMessageCallback.aidl 0 → 100644 +240 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.gnss; /** Represents a GNSS navigation message (or a fragment of it). */ @VintfStability interface IGnssNavigationMessageCallback { /** * Represents a reading of GNSS measurements. For devices launched in Android Q or newer, it is * mandatory that these be provided, on request, when the GNSS receiver is searching/tracking * signals. * * - Reporting of GNSS constellation measurements is mandatory. * - Reporting of all tracked constellations are encouraged. */ @VintfStability parcelable GnssNavigationMessage { /** * Status of Navigation Message * * When a message is received properly without any parity error in its * navigation words, the status must be set to PARITY_PASSED. * * If a message is received with words that failed a parity check, but the GNSS * receiver has corrected those words, the status must be set to PARITY_REBUILT. * * Do not send any navigation message that contains words with parity errors * that cannot be corrected. */ const int STATUS_PARITY_PASSED = (1 << 0); const int STATUS_PARITY_REBUILT = (1 << 1); const int STATUS_UNKNOWN = 0; /** * Enumeration of available values to indicate the GNSS Navigation message * types. * * For convenience, first byte is the GnssConstellationType on which that signal * is typically transmitted. */ @VintfStability @Backing(type="int") enum GnssNavigationMessageType { UNKNOWN = 0, /** GPS L1 C/A message contained in the structure. */ GPS_L1CA = 0x0101, /** GPS L2-CNAV message contained in the structure. */ GPS_L2CNAV = 0x0102, /** GPS L5-CNAV message contained in the structure. */ GPS_L5CNAV = 0x0103, /* SBAS message contained in the structure. */ SBS = 0x0201, /** GPS CNAV-2 message contained in the structure. */ GPS_CNAV2 = 0x0104, /** Glonass L1 CA message contained in the structure. */ GLO_L1CA = 0x0301, /** QZSS L1 C/A message contained in the structure. */ QZS_L1CA = 0x0401, /** Beidou D1 message contained in the structure. */ BDS_D1 = 0x0501, /** Beidou D2 message contained in the structure. */ BDS_D2 = 0x0502, /** Beidou CNAV1 message contained in the structure. */ BDS_CNAV1 = 0x0503, /** Beidou CNAV2 message contained in the structure. */ BDS_CNAV2 = 0x0504, /** Galileo I/NAV message contained in the structure. */ GAL_I = 0x0601, /** Galileo F/NAV message contained in the structure. */ GAL_F = 0x0602, /** IRNSS L5 C/A message contained in the structure. */ IRN_L5CA = 0x0701, } /** * Satellite vehicle ID number, as defined in GnssSvInfo::svid * * This is a mandatory value. */ int svid; /** * The type of message contained in the structure. * * This is a mandatory value. */ GnssNavigationMessageType type; /** * The status of the received navigation message. * * It is a bitfield of constants with prefix "STATUS_" defined in this structure. * * No need to send any navigation message that contains words with parity * errors that cannot be corrected. */ int status; /** * Message identifier. It provides an index so the complete Navigation * Message can be assembled. * * - For GNSS L1 C/A subframe 4 and 5, this value corresponds to the 'frame * id' of the navigation message, in the range of 1-25 (Subframe 1, 2, 3 * does not contain a 'frame id' and this value can be set to -1.) * * - For Glonass L1 C/A, this refers to the frame ID, in the range of 1-5. * * - For BeiDou D1, this refers to the frame number in the range of 1-24 * * - For Beidou D2, this refers to the frame number, in the range of 1-120 * * - For Galileo F/NAV nominal frame structure, this refers to the subframe * number, in the range of 1-12 * * - For Galileo I/NAV nominal frame structure, this refers to the subframe * number in the range of 1-24 * * - For SBAS and Beidou CNAV2, this is unused and can be set to -1. * * - For QZSS L1 C/A subframe 4 and 5, this value corresponds to the 'frame id' of the * navigation message, in the range of 1-25. (Subframe 1, 2, 3 does not contain a 'frame * id' and this value can be set to -1.) * * - For Beidou CNAV1 this refers to the page type number in the range of 1-63. * * - For IRNSS L5 C/A subframe 3 and 4, this value corresponds to the Message Id of the * navigation message, in the range of 1-63. (Subframe 1 and 2 does not contain a message * type id and this value can be set to -1.) */ int messageId; /** * Sub-message identifier. If required by the message 'type', this value contains a * sub-index within the current message (or frame) that is being transmitted. * * - For GNSS L1 C/A, BeiDou D1 & BeiDou D2, the submessage id corresponds to the subframe * number of the navigation message, in the range of 1-5. * * - For Glonass L1 C/A, this refers to the String number, in the range from 1-15. * * - For Galileo F/NAV, this refers to the page type in the range 1-6. * * - For Galileo I/NAV, this refers to the word type in the range 0-10+. A value of 0 is * only allowed if the Satellite is transmiting a Spare Word. * * - For Galileo in particular, the type information embedded within the data bits may be * even more useful in interpretation, than the nominal page and word types provided in * this field. * * - For SBAS, the submessage id corresponds to the message type, in the range 1-63. * * - For Beidou CNAV1, the submessage id corresponds to the subframe number of the * navigation message, in the range of 1-3. * * - For Beidou CNAV2, the submessage id corresponds to the message type, in the range 1-63. * * - For IRNSS L5 C/A, the submessage id corresponds to the subframe number of the * navigation message, in the range of 1-4. */ int submessageId; /** * The data of the reported GNSS message. The bytes (or words) are specified * using big endian format (MSB first). * * - For GNSS L1 C/A, Beidou D1 & Beidou D2, each subframe contains 10 30-bit * words. Each word (30 bits) must fit into the last 30 bits in a * 4-byte word (skip B31 and B32), with MSB first, for a total of 40 * bytes, covering a time period of 6, 6, and 0.6 seconds, respectively. * The standard followed is 1995 SPS Signal specification. * * - For Glonass L1 C/A, each string contains 85 data bits, including the * checksum. These bits must fit into 11 bytes, with MSB first (skip * B86-B88), covering a time period of 2 seconds. * The standard followed is Glonass Interface Control Document Edition 5.1. * * - For Galileo F/NAV, each word consists of 238-bit (sync & tail symbols * excluded). Each word must fit into 30-bytes, with MSB first (skip * B239, B240), covering a time period of 10 seconds. The standard * followed is European GNSS(Galileo) Signal in Space Interface * Control Document Issue 1.2. * * - For Galileo I/NAV, each page contains 2 page parts, even and odd, with * a total of 2x114 = 228 bits, (sync & tail excluded) that must fit * into 29 bytes, with MSB first (skip B229-B232). The standard followed * is same as above. * * - For SBAS, each block consists of 250 data bits, that should be fit into 32 bytes. MSB * first (skip B251-B256). * * - For Beidou CNAV1, subframe #1 consists of 14 data bits, that should be fit into 2 * bytes. MSB first (skip B15-B16). subframe #2 consists of 600 bits that should be fit * into 75 bytes. subframe #3 consists of 264 data bits that should be fit into 33 bytes. * * - For Beidou CNAV2, each subframe consists of 288 data bits, that should be fit into 36 * bytes. * * The data reported here must be the raw data as demodulated by the GNSS receiver, not data * received from an external source (i.e. not from a server download.) */ byte[] data; } /** * The callback to report an available fragment of a GNSS navigation messages * from the HAL. * * @param message - The GNSS navigation submessage/subframe representation. */ void gnssNavigationMessageCb(in GnssNavigationMessage message); }