GPS Intermediate Driver Power Management
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:
- Energia até o GPS Quando tanto uma CreateFile / ReadFile é emitida para seu driver.
- Desative o GPS quando CloseHandle é emitida contra o identificador CreateFile do seu driver.
- Suporte as IOCTLs IOCTL_SERVICE_START e MapVirtualKey. IOCTL_SERVICE_STOP.
- 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.