Compartilhar via


GPS Intermediate Driver Power Management

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Hardware de GPS é um grande consumidor de energia no destino dispositivos. É comum para hardware de GPS para usar o máximo de energia como exibir o dispositivo.

Driver de hardware que os desenvolvedores podem usar vários técnicas para uso de energia de GPS gerenciar, dependendo:

  • O tipo de driver oferecer suporte o dispositivo de GPS (v2, v1 ou COMM)
  • O tipo de driver aplicativos cliente são gravadas (v2, v1 ou COMM)

A função de GPSID no gerenciamento de energia

O driver intermediário de GPS (GPSID) se comunica com o driver hardware, que tem real controle sobre o hardware.

GPSID não diretamente energia backup ou desligar o dispositivo de GPS.

Todos os drivers

Minimizando TTFF

Reduzindo tempo para primeira correção (TTFF, ou "tempo de inicialização") usando uma combinação de driver e cliente código do aplicativo pode economizar bateria. Para obter mais informações, seethe GPS shortening correção de tempo Em A implementação de hardware driver intermediário de GPS IOCTLs.

Correções em cache

Correções em cache são localidade correção dados armazenados pelo GPSID com uma carimbo de data/hora de quando a correção foi obtida. Energia é conserved reutilizando uma correção recente, instead of solicitando uma nova correção. Solicitação aplicativos cliente correções em cache pelo chamado GPSGetPosition com hGPSDevice = NULL e dwMaximumAge > 0. Por exemplo:

GPS_POSITION pGPSPosition;
pGPSPosition.dwVersion    = GPS_VERSION_1;
pGPSPosition.dwSize       = sizeof(pGPSPosition);
DWORD error = GPSGetPosition( gpsHandle, &pGPSPosition, 1000, 0);

Se GPSID não tiver uma correção em cache dentro de parâmetros solicitados, o dwValidFields do & GPSPosition contém zeros.

Caso de Uso: Previsão do tempo: Um aplicativo cliente Exibe o próximo Clima do dia. A exibir é prioridade baixa e deve ser ignorada quando o dispositivo móvel é execução com baterias. O aplicativo cliente usa essa técnica para recuperar o recentemente disponível em cache correção. Se a prioridade do relatório de previsão do tempo é maior, como quando o usuário solicita um atualizar dos dados, o aplicativo cliente poderá solicitação uma nova localidade correção de GPSID.

Todos os drivers de controle

POLL driver v1

V1 drivers aberto o hardware de GPS assim um aplicativo cliente faz um aberto solicitação.

POLL Driver v2

Deferring de inicialização de hardware

Drivers v2 podem adiar abrindo o hardware de GPS até que haja pelo menos um ativo solicitação. Um ativo solicitação é um identificador que possui um associado GPSSetDeviceParam: GPS_START_FIX chamar, ou um associado GPSSetDeviceParam: Chamar GPS_QUERY_FIX.

Para habilitar esse comportamento, um aplicativo cliente chama GPSOpenDevice com dwFlags GPS_OPEN_NO_HARDWARE_INIT =.

GPS_QUERY_FIX vs.GPS_START_FIX

Drivers v2 são fornecidos com uma nova interface: GPS_QUERY_FIX. Essa interface fornece aplicativos com uma maneira para informar o driver que uma única correção é exigido e não mais correções são exigido in the near Future. Portanto, o driver pode escolher a potência para baixo o hardware de GPS após fornecendo a correção.

Definições:

GPS_START_FIX

Sinais de driver que correções localidade estão exigido em intervalos curtos repetidos. São essas correções localidade exigido para continuar até que GPS_STOP_FIX é emitido.

GPS_QUERY_FIX

Sinaliza o driver que uma correção localidade único é necessário agora. Há dados está disponível as to quando o próximo correção pode ser exigido.

Em resposta a GPS_START_FIX, o driver (e finalmente o hardware) são esperados gerar dados correção localidade no regular intervalos, geralmente uma vez por segundo. Isso requer que o hardware seja continuamente ativado.

O parâmetro GPS_QUERY_FIX do chamar IOCTL_GPS_SET_DEVICE_PARAMETER adiciona a capacidade para solicitação uma localidade única correção a partir de driver. Após a localidade correção é obtida, o driver e tem a oportunidade de energia para baixo o hardware.

Alguns casos de uso são:

Caso de Uso: Navegação automático: Um usuário é conduzir um automóvel para uma cidade e requer assistência de navegação. O automóvel está viajando velocidades de 5mph para 50mph. GPS_START_FIX poderiam ser usadas para fornecer atualizações freqüentes posição periódicos. A taxa mínima atualização será 1 segundo atualizações em 5mph, fornecendo cerca de 36 correções por cidade curto bloco. Esta é uma taxa muito útil para dirigir navegação. Os dispositivos móveis são geralmente funciona com o automóvel, e economia de energia não é um crítico emitir.

Caso de Uso: Mountaineering: Um usuário é alpinismo uma montanha e travelling em velocidades de .1mph para 2mph. O dispositivo móvel é alimentado por baterias e economia de energia é um altamente crítico emitir. O usuário se refere ao dispositivo móvel para correções localidade em intervalos 5 To 15-Minute pressionando um botão na dispositivo móvel. O botão aciona uma chamar para GPS_QUERY_FIX, que usa o driver para energia até obter uma correção e desligar o hardware de GPS.

Driver COMM

Há duas maneiras para implementar um driver COMM a interface com GPSID:

1. Use o serial usar como padrão driver.

2. Escrever um personalizado serial driver.

Se você usar o serial usar como padrão driver, gerenciamento de energia é limitado aos controles manuais que o usuário dispositivo manipula. Portanto, otimização de energia está limitada a qualquer lógica é incorporado no hardware.

Ao escrever um personalizado serial driver, você pode escolher usar energia otimizar qualquer ou todos o seguinte:

  1. Energia até o GPS Quando tanto uma CreateFile / ReadFile é emitida para seu driver.
  2. Desative o GPS quando CloseHandle é emitida contra o identificador CreateFile do seu driver.
  3. Suporte as IOCTLs IOCTL_SERVICE_START e MapVirtualKey. IOCTL_SERVICE_STOP.
  4. Com essas interfaces implementadas, GPSID ajudará você poder otimizar por:
  • Manter controlar de quantos aplicativos cliente são usar dados de GPS. Quando a contagem cliente faz a transição de zero para um, GPSID emite um CreateFile contra o driver COMM e inicia um executar um loop infinito de chamadas ReadFile. Quando a contagem cliente faz a transição de um para zero, GPSID o executar um loop chamar ReadFile pára e emite um CloseHandle contra o driver COMM. Contagem de cliente é calculada como contagem (GPSOpenDevice) + COUNT(CreateFile) - contagem (GPSCloseDevice) - COUNT(CloseHandle).
  • Passando IOCTLs a partir de aplicativos cliente para seu driver. Para que você possa como alteração de estado de energia em resposta a IOCTLs IOCTL_SERVICE_START e MapVirtualKey. IOCTL_SERVICE_STOP. Isso é útil quando você tiver escrito o aplicativo cliente. Observe que essas não são as IOCTLs descritas Controlling GPS Intermediate Driver Execution.

See Also

Reference

GPSOpenDevice

Other Resources

GPS Intermediate Driver Application Development