Loading gnss/2.0/IGnssMeasurementCallback.hal +355 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,347 @@ interface IGnssMeasurementCallback extends @1.1::IGnssMeasurementCallback { OTHER = 255 }; /** * Flags indicating the GNSS measurement state. * * <p>The expected behavior here is for GNSS HAL to set all the flags that apply. For example, * if the state for a satellite is only C/A code locked and bit synchronized, and there is still * millisecond ambiguity, the state must be set as: * * STATE_CODE_LOCK | STATE_BIT_SYNC | STATE_MSEC_AMBIGUOUS * * <p>If GNSS is still searching for a satellite, the corresponding state must be set to * STATE_UNKNOWN(0). * * <p>In @2.0::IGnssMeasurementCallback.GnssMeasurement, v1_1.v1_0.receivedSvTimeInNs, the * received satellite time, is relative to the beginning of the system week for all * constellations except for Glonass where it is relative to the beginning of the Glonass system * day. * * <p>The table below indicates the valid range of the received GNSS satellite time. These * ranges depend on the constellation and code being tracked and the state of the tracking * algorithms given by the getState method. If the state flag is set, then the valid measurement * range is zero to the value in the table. The state flag with the widest range indicates the * range of the received GNSS satellite time value. * * <table> * <thead> * <tr> * <td /> * <td colspan="3"><strong>GPS/QZSS</strong></td> * <td><strong>GLNS</strong></td> * <td colspan="2"><strong>BDS</strong></td> * <td colspan="3"><strong>GAL</strong></td> * <td><strong>SBAS</strong></td> * </tr> * <tr> * <td><strong>State Flag</strong></td> * <td><strong>L1 C/A</strong></td> * <td><strong>L5I</strong></td> * <td><strong>L5Q</strong></td> * <td><strong>L1OF</strong></td> * <td><strong>B1I (D1)</strong></td> * <td><strong>B1I (D2)</strong></td> * <td><strong>E1B</strong></td> * <td><strong>E1C</strong></td> * <td><strong>E5AQ</strong></td> * <td><strong>L1 C/A</strong></td> * </tr> * </thead> * <tbody> * <tr> * <td> * <strong>STATE_UNKNOWN</strong> * </td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * </tr> * <tr> * <td> * <strong>STATE_CODE_LOCK</strong> * </td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>-</td> * <td>-</td> * <td>1 ms</td> * <td>1 ms</td> * </tr> * <tr> * <td> * <strong>STATE_SYMBOL_SYNC</strong> * </td> * <td>20 ms (optional)</td> * <td>10 ms</td> * <td>1 ms (optional)</td> * <td>10 ms</td> * <td>20 ms (optional)</td> * <td>2 ms</td> * <td>4 ms (optional)</td> * <td>4 ms (optional)</td> * <td>1 ms (optional)</td> * <td>2 ms</td> * </tr> * <tr> * <td> * <strong>STATE_BIT_SYNC</strong> * </td> * <td>20 ms</td> * <td>20 ms</td> * <td>1 ms (optional)</td> * <td>20 ms</td> * <td>20 ms</td> * <td>-</td> * <td>8 ms</td> * <td>-</td> * <td>1 ms (optional)</td> * <td>4 ms</td> * </tr> * <tr> * <td> * <strong>STATE_SUBFRAME_SYNC</strong> * </td> * <td>6s</td> * <td>6s</td> * <td>-</td> * <td>2 s</td> * <td>6 s</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>100 ms</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_TOW_DECODED</strong> * </td> * <td colspan="2">1 week</td> * <td>-</td> * <td>1 day</td> * <td colspan="2">1 week</td> * <td colspan="2">1 week</td> * <td>-</td> * <td>1 week</td> * </tr> * <tr> * <td> * <strong>STATE_TOW_KNOWN</strong> * </td> * <td colspan="3">1 week</td> * <td>1 day</td> * <td colspan="2">1 week</td> * <td colspan="3">1 week</td> * <td>1 week</td> * </tr> * <tr> * <td> * <strong>STATE_GLO_STRING_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>2 s</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GLO_TOD_DECODED</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>1 day</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GLO_TOD_KNOWN</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>1 day</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_BDS_D2_BIT_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>2 ms</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_BDS_D2_SUBFRAME_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>600 ms</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GAL_E1BC_CODE_LOCK</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>4 ms</td> * <td>4 ms</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GAL_E1C_2ND_CODE_LOCK</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>100 ms</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_2ND_CODE_LOCK</strong> * </td> * <td>-</td> * <td>10 ms (optional)</td> * <td>20 ms</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>100 ms (optional)</td> * <td>100 ms</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GAL_E1B_PAGE_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>2 s</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_SBAS_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>1 s</td> * </tr> * </tbody> * </table> * * <p>Note: TOW Known refers to the case where TOW is possibly not decoded over the air but has * been determined from other sources. If TOW decoded is set then TOW Known must also be set. * * <p>Note well: if there is any ambiguity in integer millisecond, STATE_MSEC_AMBIGUOUS must be * set accordingly, in the 'state' field. This value must be populated if 'state' != * STATE_UNKNOWN. * * <p>Note on optional flags: * <ul> * <li> For L1 C/A and B1I, STATE_SYMBOL_SYNC is optional since the symbol length is the * same as the bit length. * <li> For L5Q and E5aQ, STATE_BIT_SYNC and STATE_SYMBOL_SYNC are optional since they are * implied by STATE_CODE_LOCK. * <li> STATE_2ND_CODE_LOCK for L5I is optional since it is implied by STATE_SYMBOL_SYNC. * <li> STATE_2ND_CODE_LOCK for E1C is optional since it is implied by * STATE_GAL_E1C_2ND_CODE_LOCK. * <li> For E1B and E1C, STATE_SYMBOL_SYNC is optional, because it is implied by * STATE_GAL_E1BC_CODE_LOCK. * </ul> * */ @export(name="", value_prefix="GNSS_MEASUREMENT_") enum GnssMeasurementState : uint32_t { STATE_UNKNOWN = 0, STATE_CODE_LOCK = 1 << 0, STATE_BIT_SYNC = 1 << 1, STATE_SUBFRAME_SYNC = 1 << 2, STATE_TOW_DECODED = 1 << 3, STATE_MSEC_AMBIGUOUS = 1 << 4, STATE_SYMBOL_SYNC = 1 << 5, STATE_GLO_STRING_SYNC = 1 << 6, STATE_GLO_TOD_DECODED = 1 << 7, STATE_BDS_D2_BIT_SYNC = 1 << 8, STATE_BDS_D2_SUBFRAME_SYNC = 1 << 9, STATE_GAL_E1BC_CODE_LOCK = 1 << 10, STATE_GAL_E1C_2ND_CODE_LOCK = 1 << 11, STATE_GAL_E1B_PAGE_SYNC = 1 << 12, STATE_SBAS_SYNC = 1 << 13, STATE_TOW_KNOWN = 1 << 14, STATE_GLO_TOD_KNOWN = 1 << 15, STATE_2ND_CODE_LOCK = 1 << 16, }; /** * Extends a GNSS Measurement, adding a GnssMeasurementCodeType. */ Loading @@ -105,6 +446,10 @@ interface IGnssMeasurementCallback extends @1.1::IGnssMeasurementCallback { * quarter cycle offset as they do when transmitted from the satellites. If the measurement * is from a combination of the in-phase and quadrature phase components, then the alignment * of the phase measurement will be aligned to the in-phase component. * * In this version of the HAL, the field 'state' in the v1_1.v1_0 struct is deprecated, and * is no longer used by the framework. The satellite sync state is instead reported in * @2.0::IGnssMeasurementCallback.GnssMeasurement.state. */ @1.1::IGnssMeasurementCallback.GnssMeasurement v1_1; Loading @@ -126,6 +471,16 @@ interface IGnssMeasurementCallback extends @1.1::IGnssMeasurementCallback { * standard, "G" could be specified here. */ string otherCodeTypeName; /** * Per satellite sync state. It represents the current sync state for the associated * satellite. * * Based on the sync state, the receivedSvTimeInNs field must be interpreted accordingly. * * This value is mandatory. */ bitfield<GnssMeasurementState> state; }; /** Loading Loading
gnss/2.0/IGnssMeasurementCallback.hal +355 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,347 @@ interface IGnssMeasurementCallback extends @1.1::IGnssMeasurementCallback { OTHER = 255 }; /** * Flags indicating the GNSS measurement state. * * <p>The expected behavior here is for GNSS HAL to set all the flags that apply. For example, * if the state for a satellite is only C/A code locked and bit synchronized, and there is still * millisecond ambiguity, the state must be set as: * * STATE_CODE_LOCK | STATE_BIT_SYNC | STATE_MSEC_AMBIGUOUS * * <p>If GNSS is still searching for a satellite, the corresponding state must be set to * STATE_UNKNOWN(0). * * <p>In @2.0::IGnssMeasurementCallback.GnssMeasurement, v1_1.v1_0.receivedSvTimeInNs, the * received satellite time, is relative to the beginning of the system week for all * constellations except for Glonass where it is relative to the beginning of the Glonass system * day. * * <p>The table below indicates the valid range of the received GNSS satellite time. These * ranges depend on the constellation and code being tracked and the state of the tracking * algorithms given by the getState method. If the state flag is set, then the valid measurement * range is zero to the value in the table. The state flag with the widest range indicates the * range of the received GNSS satellite time value. * * <table> * <thead> * <tr> * <td /> * <td colspan="3"><strong>GPS/QZSS</strong></td> * <td><strong>GLNS</strong></td> * <td colspan="2"><strong>BDS</strong></td> * <td colspan="3"><strong>GAL</strong></td> * <td><strong>SBAS</strong></td> * </tr> * <tr> * <td><strong>State Flag</strong></td> * <td><strong>L1 C/A</strong></td> * <td><strong>L5I</strong></td> * <td><strong>L5Q</strong></td> * <td><strong>L1OF</strong></td> * <td><strong>B1I (D1)</strong></td> * <td><strong>B1I (D2)</strong></td> * <td><strong>E1B</strong></td> * <td><strong>E1C</strong></td> * <td><strong>E5AQ</strong></td> * <td><strong>L1 C/A</strong></td> * </tr> * </thead> * <tbody> * <tr> * <td> * <strong>STATE_UNKNOWN</strong> * </td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * <td>0</td> * </tr> * <tr> * <td> * <strong>STATE_CODE_LOCK</strong> * </td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>1 ms</td> * <td>-</td> * <td>-</td> * <td>1 ms</td> * <td>1 ms</td> * </tr> * <tr> * <td> * <strong>STATE_SYMBOL_SYNC</strong> * </td> * <td>20 ms (optional)</td> * <td>10 ms</td> * <td>1 ms (optional)</td> * <td>10 ms</td> * <td>20 ms (optional)</td> * <td>2 ms</td> * <td>4 ms (optional)</td> * <td>4 ms (optional)</td> * <td>1 ms (optional)</td> * <td>2 ms</td> * </tr> * <tr> * <td> * <strong>STATE_BIT_SYNC</strong> * </td> * <td>20 ms</td> * <td>20 ms</td> * <td>1 ms (optional)</td> * <td>20 ms</td> * <td>20 ms</td> * <td>-</td> * <td>8 ms</td> * <td>-</td> * <td>1 ms (optional)</td> * <td>4 ms</td> * </tr> * <tr> * <td> * <strong>STATE_SUBFRAME_SYNC</strong> * </td> * <td>6s</td> * <td>6s</td> * <td>-</td> * <td>2 s</td> * <td>6 s</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>100 ms</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_TOW_DECODED</strong> * </td> * <td colspan="2">1 week</td> * <td>-</td> * <td>1 day</td> * <td colspan="2">1 week</td> * <td colspan="2">1 week</td> * <td>-</td> * <td>1 week</td> * </tr> * <tr> * <td> * <strong>STATE_TOW_KNOWN</strong> * </td> * <td colspan="3">1 week</td> * <td>1 day</td> * <td colspan="2">1 week</td> * <td colspan="3">1 week</td> * <td>1 week</td> * </tr> * <tr> * <td> * <strong>STATE_GLO_STRING_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>2 s</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GLO_TOD_DECODED</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>1 day</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GLO_TOD_KNOWN</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>1 day</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_BDS_D2_BIT_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>2 ms</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_BDS_D2_SUBFRAME_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>600 ms</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GAL_E1BC_CODE_LOCK</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>4 ms</td> * <td>4 ms</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GAL_E1C_2ND_CODE_LOCK</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>100 ms</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_2ND_CODE_LOCK</strong> * </td> * <td>-</td> * <td>10 ms (optional)</td> * <td>20 ms</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>100 ms (optional)</td> * <td>100 ms</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_GAL_E1B_PAGE_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>2 s</td> * <td>-</td> * <td>-</td> * <td>-</td> * </tr> * <tr> * <td> * <strong>STATE_SBAS_SYNC</strong> * </td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>-</td> * <td>1 s</td> * </tr> * </tbody> * </table> * * <p>Note: TOW Known refers to the case where TOW is possibly not decoded over the air but has * been determined from other sources. If TOW decoded is set then TOW Known must also be set. * * <p>Note well: if there is any ambiguity in integer millisecond, STATE_MSEC_AMBIGUOUS must be * set accordingly, in the 'state' field. This value must be populated if 'state' != * STATE_UNKNOWN. * * <p>Note on optional flags: * <ul> * <li> For L1 C/A and B1I, STATE_SYMBOL_SYNC is optional since the symbol length is the * same as the bit length. * <li> For L5Q and E5aQ, STATE_BIT_SYNC and STATE_SYMBOL_SYNC are optional since they are * implied by STATE_CODE_LOCK. * <li> STATE_2ND_CODE_LOCK for L5I is optional since it is implied by STATE_SYMBOL_SYNC. * <li> STATE_2ND_CODE_LOCK for E1C is optional since it is implied by * STATE_GAL_E1C_2ND_CODE_LOCK. * <li> For E1B and E1C, STATE_SYMBOL_SYNC is optional, because it is implied by * STATE_GAL_E1BC_CODE_LOCK. * </ul> * */ @export(name="", value_prefix="GNSS_MEASUREMENT_") enum GnssMeasurementState : uint32_t { STATE_UNKNOWN = 0, STATE_CODE_LOCK = 1 << 0, STATE_BIT_SYNC = 1 << 1, STATE_SUBFRAME_SYNC = 1 << 2, STATE_TOW_DECODED = 1 << 3, STATE_MSEC_AMBIGUOUS = 1 << 4, STATE_SYMBOL_SYNC = 1 << 5, STATE_GLO_STRING_SYNC = 1 << 6, STATE_GLO_TOD_DECODED = 1 << 7, STATE_BDS_D2_BIT_SYNC = 1 << 8, STATE_BDS_D2_SUBFRAME_SYNC = 1 << 9, STATE_GAL_E1BC_CODE_LOCK = 1 << 10, STATE_GAL_E1C_2ND_CODE_LOCK = 1 << 11, STATE_GAL_E1B_PAGE_SYNC = 1 << 12, STATE_SBAS_SYNC = 1 << 13, STATE_TOW_KNOWN = 1 << 14, STATE_GLO_TOD_KNOWN = 1 << 15, STATE_2ND_CODE_LOCK = 1 << 16, }; /** * Extends a GNSS Measurement, adding a GnssMeasurementCodeType. */ Loading @@ -105,6 +446,10 @@ interface IGnssMeasurementCallback extends @1.1::IGnssMeasurementCallback { * quarter cycle offset as they do when transmitted from the satellites. If the measurement * is from a combination of the in-phase and quadrature phase components, then the alignment * of the phase measurement will be aligned to the in-phase component. * * In this version of the HAL, the field 'state' in the v1_1.v1_0 struct is deprecated, and * is no longer used by the framework. The satellite sync state is instead reported in * @2.0::IGnssMeasurementCallback.GnssMeasurement.state. */ @1.1::IGnssMeasurementCallback.GnssMeasurement v1_1; Loading @@ -126,6 +471,16 @@ interface IGnssMeasurementCallback extends @1.1::IGnssMeasurementCallback { * standard, "G" could be specified here. */ string otherCodeTypeName; /** * Per satellite sync state. It represents the current sync state for the associated * satellite. * * Based on the sync state, the receivedSvTimeInNs field must be interpreted accordingly. * * This value is mandatory. */ bitfield<GnssMeasurementState> state; }; /** Loading