# @ohos.distributedHardware.hardwareManager (Distributed Hardware Management) (System API)
The **hardwareManager** module provides the capability of controlling distributed hardware, including pausing, resuming, and stopping the distributed hardware service on the controlled device.
> **NOTE**
>
> The initial APIs of this module are supported since API version 11. Newly added APIs will be marked with a superscript to indicate their earliest API version.
>
> The APIs provided by this module are system APIs.
## Modules to Import
```js
import hardwareManager from '@ohos.distributedHardware.hardwareManager';
```
## HardwareDescriptor
Represents the distributed hardware information.
**System capability**: SystemCapability.DistributedHardware.DistributedHardwareFWK
| Name | Type | Mandatory | Description |
| ------------ | --------------------------------------------------- | ---- | ------------------------------------------------------------ |
| type | [DistributedHardwareType](#distributedhardwaretype) | Yes | Type of the distributed hardware.
**Required permissions**: ohos.permission.ACCESS_DISTRIBUTED_HARDWARE |
| srcNetworkId | string | No | Source device. If this parameter is not specified, it indicates all source devices.
**Required permissions**: ohos.permission.ACCESS_DISTRIBUTED_HARDWARE |
## DistributedHardwareType
Enumerates the types of the distributed hardware.
**System capability**: SystemCapability.DistributedHardware.DistributedHardwareFWK
| Name | Value | Description |
| :------------ | ---- | ---------------------------- |
| ALL | 0 | All distributed applications. |
| CAMERA | 1 | Distributed camera. |
| SCREEN | 8 | Distributed screen. |
| MODEM_MIC | 256 | Distributed microphone for mobile calls. |
| MODEM_SPEAKER | 512 | Distributed speaker for mobile calls. |
| MIC | 1024 | Distributed microphone. |
| SPEAKER | 2048 | Distributed speaker. |
## DistributedHardwareErrorCode
Enumerates the error codes used for the distributed hardware.
**System capability**: SystemCapability.DistributedHardware.DistributedHardwareFWK
| Name | Value | Description |
| ----------------------------------------- | -------- | ---------------------- |
| ERR_CODE_DISTRIBUTED_HARDWARE_NOT_STARTED | 24200101 | The distributed hardware is not started. |
| ERR_CODE_DEVICE_NOT_CONNECTED | 24200102 | The source device is not connected. |
## hardwareManager.pauseDistributedHardware
pauseDistributedHardware(description: HardwareDescriptor): Promise<void>
Pauses the distributed hardware service on the controlled device. This API uses a promise to return the result.
**Required permissions**: ohos.permission.ACCESS_DISTRIBUTED_HARDWARE
**System capability**: SystemCapability.DistributedHardware.DistributedHardwareFWK
**Parameters**
| Name | Type | Mandatory | Description |
| --------- | ---------------------------------------- | ---- | -------- |
| description | [HardwareDescriptor](#hardwaredescriptor) | Yes | Hardware information. |
**Return value**
| Type | Description |
| ------------------- | ---------------- |
| Promise<void> | Promise that returns no value. |
**Error codes**
| ID | Error Message |
| -------- | ---------------------------------------------------- |
| 201 | Permission verification failed. |
| 202 | Permission denied, non-system app called system api. |
| 401 | Input parameter error. |
| 24200101 | The specified distributed hardware is not started. |
| 24200102 | The specified source device is not connected. |
**Example**
```ts
import hardwareManager from '@ohos.distributedHardware.hardwareManager';
import { BusinessError } from '@ohos.base';
try {
let description: hardwareManager.HardwareDescriptor = {
type: 1,
srcNetworkId: '1111'
};
hardwareManager.pauseDistributedHardware(description).then(() => {
console.log('pause distributed hardware successfully');
}).catch((error: BusinessError) => {
console.error('pause distributed hardware failed, cause:' + error);
})
console.log('pause distributed hardware successfully');
} catch (error) {
console.error('pause distributed hardware failed:' + error);
}
```
## hardwareManager.resumeDistributedHardware
resumeDistributedHardware(description: HardwareDescriptor): Promise<void>
Resumes the distributed hardware service on the controlled device. This API uses a promise to return the result.
**Required permissions**: ohos.permission.ACCESS_DISTRIBUTED_HARDWARE
**System capability**: SystemCapability.DistributedHardware.DistributedHardwareFWK
**Parameters**
| Name | Type | Mandatory | Description |
| ----------- | ----------------------------------------- | ---- | -------------- |
| description | [HardwareDescriptor](#hardwaredescriptor) | Yes | Hardware information. |
**Return value**
| Type | Description |
| ------------------- | ------------------------- |
| Promise<void> | Promise that returns no value. |
**Error codes**
| ID | Error Message |
| -------- | ---------------------------------------------------- |
| 201 | Permission verification failed. |
| 202 | Permission denied, non-system app called system api. |
| 401 | Input parameter error. |
| 24200101 | The specified distributed hardware is not started. |
| 24200102 | The specified source device is not connected. |
**Example**
```ts
import hardwareManager from '@ohos.distributedHardware.hardwareManager';
import { BusinessError } from '@ohos.base';
try {
let description: hardwareManager.HardwareDescriptor = {
type: 1,
srcNetworkId: '1111'
};
hardwareManager.resumeDistributedHardware(description).then(() => {
console.log('resume distributed hardware successfully');
}).catch((error: BusinessError) => {
console.error('resume distributed hardware failed, cause:' + error);
})
console.log('resume distributed hardware successfully');
} catch (error) {
console.error('resume distributed hardware failed:' + error);
}
```
## hardwareManager.stopDistributedHardware
stopDistributedHardware(description: HardwareDescriptor): Promise<void>
Stops the distributed hardware service on the controlled device. This API uses a promise to return the result.
**Required permissions**: ohos.permission.ACCESS_DISTRIBUTED_HARDWARE
**System capability**: SystemCapability.DistributedHardware.DistributedHardwareFWK
**Parameters**
| Name | Type | Mandatory | Description |
| ----------- | ----------------------------------------- | ---- | -------------- |
| description | [HardwareDescriptor](#hardwaredescriptor) | Yes | Hardware information. |
**Return value**
| Type | Description |
| ------------------- | ------------------------- |
| Promise<void> | Promise that returns no value. |
**Error codes**
| ID | Error Message |
| -------- | ---------------------------------------------------- |
| 201 | Permission verification failed. |
| 202 | Permission denied, non-system app called system api. |
| 401 | Input parameter error. |
| 24200101 | The specified distributed hardware is not started. |
| 24200102 | The specified source device is not connected. |
**Example**
```ts
import hardwareManager from '@ohos.distributedHardware.hardwareManager';
import { BusinessError } from '@ohos.base';
try {
let description: hardwareManager.HardwareDescriptor = {
type: 1,
srcNetworkId: '1111'
};
hardwareManager.stopDistributedHardware(description).then(() => {
console.log('stop distributed hardware successfully');
}).catch((error: BusinessError) => {
console.error('stop distributed hardware failed, cause:' + error);
})
console.log('stop distributed hardware successfully');
} catch (error) {
console.error('stop distributed hardware failed:' + error);
}
```