sensorsapi.idl 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. import "oaidl.idl";
  7. import "ocidl.idl";
  8. import "propsys.idl";
  9. import "portabledevicetypes.idl";
  10. typedef enum {
  11. SENSOR_STATE_MIN = 0,
  12. SENSOR_STATE_READY = SENSOR_STATE_MIN,
  13. SENSOR_STATE_NOT_AVAILABLE = (SENSOR_STATE_READY+1) ,
  14. SENSOR_STATE_NO_DATA = (SENSOR_STATE_NOT_AVAILABLE+1),
  15. SENSOR_STATE_INITIALIZING = (SENSOR_STATE_NO_DATA+1),
  16. SENSOR_STATE_ACCESS_DENIED = (SENSOR_STATE_INITIALIZING+1),
  17. SENSOR_STATE_ERROR = (SENSOR_STATE_ACCESS_DENIED+1),
  18. SENSOR_STATE_MAX = SENSOR_STATE_ERROR
  19. } SensorState;
  20. typedef enum {
  21. SENSOR_CONNECTION_TYPE_PC_INTEGRATED = 0,
  22. SENSOR_CONNECTION_TYPE_PC_ATTACHED = (SENSOR_CONNECTION_TYPE_PC_INTEGRATED+1),
  23. SENSOR_CONNECTION_TYPE_PC_EXTERNAL = (SENSOR_CONNECTION_TYPE_PC_ATTACHED+1)
  24. } SensorConnectionType;
  25. typedef enum LOCATION_DESIRED_ACCURACY {
  26. LOCATION_DESIRED_ACCURACY_DEFAULT = 0,
  27. LOCATION_DESIRED_ACCURACY_HIGH = (LOCATION_DESIRED_ACCURACY_DEFAULT+1)
  28. } LOCATION_DESIRED_ACCURACY;
  29. typedef GUID SENSOR_CATEGORY_ID;
  30. typedef REFGUID REFSENSOR_CATEGORY_ID;
  31. typedef GUID SENSOR_TYPE_ID;
  32. typedef REFGUID REFSENSOR_TYPE_ID;
  33. typedef GUID SENSOR_ID;
  34. typedef REFGUID REFSENSOR_ID;
  35. interface ISensorCollection;
  36. interface ISensor;
  37. interface ISensorDataReport;
  38. interface ISensorManagerEvents;
  39. interface ISensorEvents;
  40. [
  41. uuid(bd77db67-45a8-42dc-8d00-6dcf15f8377a),
  42. object
  43. ]
  44. interface ISensorManager : IUnknown
  45. {
  46. HRESULT GetSensorsByCategory(
  47. [in] REFSENSOR_CATEGORY_ID sensorCategory,
  48. [out] ISensorCollection **ppSensorsFound);
  49. HRESULT GetSensorsByType(
  50. [in] REFSENSOR_TYPE_ID sensorType,
  51. [out] ISensorCollection **ppSensorsFound);
  52. HRESULT GetSensorByID(
  53. [in] REFSENSOR_ID sensorID,
  54. [out] ISensor **ppSensor);
  55. HRESULT SetEventSink([in] ISensorManagerEvents *pEvents);
  56. HRESULT RequestPermissions(
  57. [in] HWND hParent,
  58. [in] ISensorCollection *pSensors,
  59. [in] BOOL fModal);
  60. }
  61. [
  62. uuid(23571e11-e545-4dd8-a337-b89bf44b10df),
  63. object
  64. ]
  65. interface ISensorCollection : IUnknown
  66. {
  67. HRESULT GetAt(
  68. [in] ULONG ulIndex,
  69. [out] ISensor **ppSensor) = 0;
  70. HRESULT GetCount([out] ULONG *pCount);
  71. HRESULT Add([in] ISensor *pSensor);
  72. HRESULT Remove([in] ISensor *pSensor);
  73. HRESULT RemoveByID([in] REFSENSOR_ID sensorID);
  74. HRESULT Clear();
  75. }
  76. [
  77. uuid(5fa08f80-2657-458e-af75-46f73fa6ac5c),
  78. object
  79. ]
  80. interface ISensor : IUnknown
  81. {
  82. HRESULT GetID([out] SENSOR_ID *pID);
  83. HRESULT GetCategory([out] SENSOR_CATEGORY_ID *pSensorCategory);
  84. HRESULT GetType([out] SENSOR_TYPE_ID *pSensorType);
  85. HRESULT GetFriendlyName([out] BSTR *pFriendlyName);
  86. HRESULT GetProperty(
  87. [in] REFPROPERTYKEY key,
  88. [out] PROPVARIANT *pProperty);
  89. HRESULT GetProperties(
  90. [in] IPortableDeviceKeyCollection *pKeys,
  91. [out] IPortableDeviceValues **ppProperties);
  92. HRESULT GetSupportedDataFields([out] IPortableDeviceKeyCollection **ppDataFields);
  93. HRESULT SetProperties(
  94. [in] IPortableDeviceValues *pProperties,
  95. [out] IPortableDeviceValues **ppResults);
  96. HRESULT SupportsDataField(
  97. [in] REFPROPERTYKEY key,
  98. [out] VARIANT_BOOL *pIsSupported);
  99. HRESULT GetState([out] SensorState *pState);
  100. HRESULT GetData([out] ISensorDataReport **ppDataReport);
  101. HRESULT SupportsEvent(
  102. [in] REFGUID eventGuid,
  103. [out] VARIANT_BOOL *pIsSupported);
  104. HRESULT GetEventInterest(
  105. [size_is(*pCount), out] GUID **ppValues,
  106. [out] ULONG *pCount);
  107. HRESULT SetEventInterest(
  108. [size_is(count), in] GUID *pValues,
  109. [in] ULONG count);
  110. HRESULT SetEventSink([in] ISensorEvents *pEvents);
  111. }
  112. [
  113. uuid(0ab9df9b-c4b5-4796-8898-0470706a2e1d),
  114. object
  115. ]
  116. interface ISensorDataReport : IUnknown
  117. {
  118. HRESULT GetTimestamp([out] SYSTEMTIME *pTimeStamp);
  119. HRESULT GetSensorValue(
  120. [in] REFPROPERTYKEY pKey,
  121. [out] PROPVARIANT *pValue);
  122. HRESULT GetSensorValues(
  123. [in] IPortableDeviceKeyCollection *pKeys,
  124. [out] IPortableDeviceValues **ppValues);
  125. }
  126. [
  127. uuid(9b3b0b86-266a-4aad-b21f-fde5501001b7),
  128. local
  129. ]
  130. interface ISensorManagerEvents : IUnknown
  131. {
  132. HRESULT OnSensorEnter(
  133. [in] ISensor *pSensor,
  134. [in] SensorState state) ;
  135. }
  136. [
  137. uuid(5d8dcc91-4641-47e7-b7c3-b74f48a6c391),
  138. object
  139. ]
  140. interface ISensorEvents : IUnknown
  141. {
  142. HRESULT OnStateChanged(
  143. [in] ISensor *pSensor,
  144. [in] SensorState state);
  145. HRESULT OnDataUpdated(
  146. [in] ISensor *pSensor,
  147. [in] ISensorDataReport *pNewData);
  148. HRESULT OnEvent(
  149. [in] ISensor *pSensor,
  150. [in] REFGUID eventID,
  151. [in] IPortableDeviceValues *pEventData);
  152. HRESULT OnLeave([in] REFSENSOR_ID ID);
  153. }
  154. [
  155. uuid(15092592-5270-4c6c-aaa0-11764f189a8f)
  156. ]
  157. library SensorsApiLib
  158. {
  159. [
  160. uuid(77a1c827-fcd2-4689-8915-9d613cc5fa3e)
  161. ]
  162. coclass SensorManager {
  163. interface SensorManager;
  164. }
  165. }