# Service Overview
## Introduction
The pan-sensor service subsystem provides a lightweight sensor service framework. You can call APIs offered by this framework to query the sensor list, enable or disable a sensor, and subscribe to or unsubscribe from sensor data. The following figure shows the architecture of the lightweight sensor framework.
**Figure 1** Sensor service framework
![](figures/en-us_image_0000001077724150.png)
- Sensor API: provides APIs for performing basic operations on sensors, including querying the sensor list, subscribing to or unsubscribing from sensor data, and executing control commands. This module makes application development simpler.
- Sensor Framework: manages sensor data subscription, creates and destroys data channels, and implements communication with the Sensor Service module.
- Sensor Service: interacts with the HDF module to receive, parse, and distribute data, manages sensors on hardware and sensor data reporting, and controls sensor permissions.
## Available APIs
**Table 1** APIs of the sensor framework
| API| Description| Parameter|
| -------- | -------- | -------- |
| int32_t **GetAllSensors**(
SensorInfo \*\*sensorIn
fo, int32_t \*count) | Obtains information about all sensors in the system.
**Return value**: Returns **0** if the information is obtained; returns a non-zero value otherwise.| **sensorInfo** (not NULL): information about all sensors in the system
**count** (not NULL): total number of sensors in the system|
| int32_t **SubscribeSensor**
(int32_t sensorTypeId,
SensorUser \*user) | Subscribes to sensor data. The system will report the obtained sensor data to the subscriber.
**Return value**: Returns **0** if the subscription is successful; returns a non-zero value otherwise.| **sensorTypeId**: ID of a sensor type
**user** (not NULL): sensor subscriber that requests sensor data. A subscriber can obtain data from only one sensor.|
| int32_t **UnsubscribeSensor**
(int32_t sensorTypeId, SensorUser \*user) | Unsubscribes from sensor data. The system will no longer report sensor data to the subscriber.
**Return value**: Returns **0** if the sensor data reporting mode is successfully set; returns a non-zero value otherwise.| **sensorTypeId**: ID of a sensor type
**user** (not NULL): sensor subscriber that requests sensor data. A subscriber can obtain data from only one sensor.|
| int32_t **SetBatch**(int32_t sensorTypeId, SensorUser
\*user, int64_t samplingInterval, int64_t reportInterval) | Sets the data sampling interval and data reporting interval for the specified sensor.
**Return value**: Returns **0** if the sensor data reporting mode is successfully set; returns a non-zero value otherwise.| **sensorTypeId**: ID of a sensor type
**user** (not NULL): sensor subscriber that requests sensor data. A subscriber can obtain data from only one sensor.
**samplingInterval**: sensor data sampling interval, in nanoseconds
**reportInterval**: sensor data reporting interval, in nanoseconds|
| int32_t **ActivateSensor**(int32_t sensorTypeId,
SensorUser \*user) | Enables the specified sensor that has been subscribed to.
**Return value**: Returns **0** if the sensor data reporting mode is successfully set; returns a non-zero value otherwise.| **sensorTypeId**: ID of a sensor type
**user** (not NULL): sensor subscriber that requests sensor data. A subscriber can obtain data from only one sensor.|
| int32_t **DeactivateSensor**(int32_t sensor
TypeId, SensorUser \*user) | Disables an enabled sensor.
**Return value**: Returns **0** if the sensor data reporting mode is successfully set; returns a non-zero value otherwise.| **sensorTypeId**: ID of a sensor type
**user** (not NULL): sensor subscriber that requests sensor data. A subscriber can obtain data from only one sensor.|
| int32_t **SetMode**(int32_t sensorTypeId,
SensorUser \*user, int32_t mode) | Sets the data reporting mode for the specified sensor.
**Return value**: Returns **0** if the sensor data reporting mode is successfully set; returns a non-zero value otherwise.| **sensorTypeId**: ID of a sensor type
**user** (not NULL): sensor subscriber that requests sensor data. A subscriber can obtain data from only one sensor.
**mode**: data reporting mode of the sensor|