Sample Code

Windows Driver Samples/ Sensors Geolocation Sample Driver (UMDF Version 1)/ C++/ Geolocation.h/

/*++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved
//
// Module:
//      Geolocation.h
//
// Description:
//      Defines the CGeolocation container class

--*/


#pragma once

class CSensorManager; //forward declaration


class CGeolocation : public CSensor
{
public:
    CGeolocation();
    ~CGeolocation();
    
    HRESULT Initialize( _In_ SensorType sensType, 
                        _In_ DWORD sensNum, 
                        _In_ LPWSTR pwszManufacturer,
                        _In_ LPWSTR pwszProduct,
                        _In_ LPWSTR pwszSerialNumber,
                        _In_ LPWSTR sensorID,
                        _In_ IWDFDevice* pWdfDevice,
                        _In_ CSensorManager* pSensorManager);

    HRESULT GetPropertyValuesForGeolocationObject(LPCWSTR           wszObjectID,
                                       IPortableDeviceKeyCollection*  pKeys,
                                       IPortableDeviceValues*         pValues);

    HRESULT UpdateGeolocationPropertyValues();
    HRESULT UpdateGeolocationDataFieldValues();

//TODO define this == 1 if the sensor must have a known unique ID for all instances on any system
#define USE_GEOLOCATION_SPECIFIC_UNIQUE_ID      1

#if USE_GEOLOCATION_SPECIFIC_UNIQUE_ID 
    virtual HRESULT SetUniqueID(_In_ IWDFDevice* pWdfDevice);
#endif

    virtual HRESULT SetState(_In_ SensorState newState, _Out_ bool* pfStateChanged);

private:

    HRESULT InitializeGeolocation(_In_ IWDFDevice* pWdfDevice);
    HRESULT AddGeolocationPropertyKeys();
    HRESULT AddGeolocationSettablePropertyKeys();
    HRESULT AddGeolocationDataFieldKeys();
    HRESULT SetGeolocationDefaultValues(_In_ IWDFDevice* pWdfDevice);

    HRESULT SetSettableGeolocationProperties();

};


const unsigned short SENSOR_GEOLOCATION_NAME[]                  = L"Geolocation";
const unsigned short SENSOR_GEOLOCATION_DESCRIPTION[]           = L"Geolocation Sensor";
const char SENSOR_GEOLOCATION_TRACE_NAME[]                      = "Geolocation";

// Default Values
const FLOAT DEFAULT_GEOLOCATION_CHANGE_SENSITIVITY              = 5.0F;
const FLOAT DEFAULT_GEOLOCATION_MAXIMUM                         = FLT_MAX;
const FLOAT DEFAULT_GEOLOCATION_MINIMUM                         = -FLT_MAX;
const FLOAT DEFAULT_GEOLOCATION_ACCURACY                        = FLT_MAX;
const FLOAT DEFAULT_GEOLOCATION_RESOLUTION                      = FLT_MAX;

const FLOAT MIN_GEOLOCATION_SENSITIVITY                         = -FLT_MAX;
const FLOAT MIN_GEOLOCATION_MAXIMUM                             = -FLT_MAX;
const FLOAT MAX_GEOLOCATION_MINIMUM                             = FLT_MAX;
const FLOAT MIN_GEOLOCATION_ACCURACY                            = -FLT_MAX;
const FLOAT MIN_GEOLOCATION_RESOLUTION                          = -FLT_MAX;

const ULONG GEOLOCATION_MIN_REPORT_INTERVAL                     = 250;
const ULONG DEFAULT_GEOLOCATION_CURRENT_REPORT_INTERVAL         = 250;

const USHORT USAGE_GEOLOCATION_SENSOR                           = (0x53);

Our Services

  • What our customers say about us?

© 2011-2024 All Rights Reserved. Joya Systems. 4425 South Mopac Building II Suite 101 Austin, TX 78735 Tel: 800-DEV-KERNEL

Privacy Policy. Terms of use. Valid XHTML & CSS