IOCTL_GNSS_LISTEN_GEOFENCES_TRACKINGSTATUS IOCTL(gnssdriver.h)

IOCTL_GNSS_LISTEN_GEOFENCES_TRACKINGSTATUS 제어 코드는 드라이버에서 지오펜스 추적 상태를 수신하는 데 사용됩니다.

참고 GNSS DDI 버전 2 이상에 적용됩니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

NULL로 설정됨.

입력 버퍼 길이

0으로 설정합니다.

출력 버퍼

GNSS_EVENT 구조체에 대한 포인터입니다.

EventType을 GNSS_Event_GeofencesTrackingStatus 설정해야 하며 GeofencesTrackingStatus 멤버가 채워져 있어야 합니다.

출력 버퍼 길이

sizeof(GNSS_EVENT)로 설정합니다.

상태 블록

요청이 성공하면 Irp->IoStatus.Status가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 NTSTATUS 코드로 적절한 오류 조건에 대한 상태입니다.

설명

GNSS 어댑터 노트

GNSS 어댑터는 항상 보류 중인 요청을 유지합니다.

드라이버가 I/O 호출을 완료하면 어댑터는 다른 IOCTL을 발급하여 다음 상태 변경 알림을 받습니다.

GNSS 어댑터는 지오펜스가 없거나 지오펜스 추적 작업이 GNSS_ResetGeofencesTracking 드라이버 명령을 통해 다시 초기화된 경우에도 이 IOCTL을 보류 상태로 유지할 수 있습니다. GNSS 드라이버는 이를 오류 조건으로 취급해서는 안 됩니다.

HLOS는 자체 대기 애플리케이션 프로세서 기반 지오펜스 추적 엔진을 시작하여 추적 실패 경고에 대응합니다. HLOS 지오펜스 추적 엔진은 GNSS 엔진과 병렬로 실행되며 GNSS 엔진과 정확히 동일한 지오펜스를 추적합니다.

이 시간 동안 지오펜스 집합의 변경 내용(예: 새 지오펜스 추가 또는 기존 지오펜스 삭제)도 GNSS 엔진에 전달됩니다(GNSS 엔진은 일반적인 저신호 조건으로 인해 이를 추적할 수 없음).

애플리케이션 프로세서 기반 지오펜스 엔진은 GNSS 엔진이 신호가 낮은 상태로 유지되는 한 활성 상태로 유지됩니다. 그 후 GNSS 엔진이 이 IOCTL을 통해 성공 추적 상태 경고를 전달하여 지오펜스를 다시 추적할 수 있는 경우 HLOS는 다음 단계를 통해 정상적으로 모든 권한을 GNSS 엔진으로 다시 전송합니다.

이 성공 추적 상태 경고를 받으면 HLOS는 애플리케이션 프로세서 기반 지오펜스 추적 엔진을 다운하고, GNSS 엔진에 GNSS_ResetGeofencesTracking 명령을 실행하고, 현재 활성 지오펜스를 각 지오펜스의 현재 진입/종료 상태와 함께 다시 추가합니다. GNSS 엔진이 모든 지오펜스의 상태를 다시 동기화하고 필요한 지오펜스 경고를 발생시킬 수 있도록 이 재설정 작업이 필요합니다.

GNSS 드라이버 노트

항상 보류 중인 IOCTL이 있을 것입니다. 추적 상태가 변경될 때마다 I/O 작업을 완료해야 합니다. 지오펜스가 GNSS 엔진에 처음 추가되면 HLOS는 GNSS 엔진이 지오펜스를 추적할 수 있다고 낙관적으로 가정합니다. 따라서 처음에는 GNSS 엔진이 지오펜스를 추적할 수 없고 추적 상태가 오류 코드인 경우에만 IOCTL을 채워야 합니다. 이후에 어댑터는 추적 상태가 성공으로 변경될 때 IOCTL이 채워질 것으로 예상합니다.

오류 추적 상태는 GNSS 엔진이 잘못된 신호 조건 또는 기타 일시적인 이유로 인해 지오펜스를 안정적으로 추적할 수 없음을 의미합니다. 이 상태는 하나 이상의 지오펜스와 달리 지오펜스를 안정적으로 추적하는 전반적인 기능에 적용됩니다. 따라서 GNSS 엔진이 대부분의 펜스를 추적할 수 있지만 더 적은 수의 경우 이를 수행할 수 없는 경우에도 오류 상태를 보고해야 합니다.

지오펜스를 추적하는 동안 신호 조건이 저하되면 GNSS 엔진은 실패 상태를 선언하기 전에 여러 번의 재시도를 허용해야 합니다. 이렇게 하면 사용자가 터널에 들어갈 때와 같이 일시적인 조건으로 인해 신호 성능이 저하되는 경우 불필요한 장애 조치(failover)를 방지할 수 있습니다.

성공 상태는 GNSS 엔진이 이전에 오류 상태를 발생시켰을 때 발생하며 이제 모든 지오펜스를 다시 추적할 수 있습니다(향상된 신호 조건 또는 기타 이유로 인해).

지오펜스가 추적되는 동안 GNSS 엔진이 이전에 오류 상태를 발생했다면 GNSS 엔진이 모든 지오펜스를 다시 추적할 수 있고 후속 성공 상태가 발생할 때까지 추가 지오펜스 경고가 예상되지 않습니다.

GNSS 엔진이 지오펜스를 추적할 수 없는 경우 신호 조건이 개선될 때 지오펜스 추적을 다시 시작할 수 있도록 추적 조건을 계속 모니터링할 수 있습니다. 추적 조건의 모니터링은 특히 낮은 GNSS 신호 조건에서 전력 집약적일 수 있으므로 GNSS 엔진은 구현별 방식으로 이 작업을 최적화해야 합니다. 추적 조건이 개선되지 않는 경우 GNSS 엔진은 장기간 전원을 소비하지 않아야 합니다.

또한 HLOS에 의해 지오펜스 추적이 명시적으로 다시 설정되거나 HLOS가 모든 지오펜스를 삭제하는 경우 추적 조건 모니터링이 즉시 중지되어야 합니다. 이후에 새 지오펜스가 추가되고 GNSS 엔진이 여전히 지오펜스를 추적할 수 없는 경우 후속 오류 상태가 발생해야 합니다.

요구 사항

   
헤더 gnssdriver.h

참고 항목

드라이버에서 IOCTL 요청 만들기

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously