/*
* Copyright (c) 2020-2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { AsyncCallback, Callback } from './basic';
/**
* Providers interfaces to create a {@link deviceManager} instances.
*
* @since 7
* @syscap SystemCapability.DistributedHardware.DeviceManager
*
*/
declare namespace deviceManager {
/**
* DeviceInfo
*
* @systemapi this method can be used only by system applications.
*/
interface DeviceInfo {
/**
* DeviceId ID.
*/
deviceId: string;
/**
* Device name of the device.
*/
deviceName: string;
/**
* Device type of the device.
*/
deviceType: DeviceType;
/**
* NetworkId of the device.
*
* @since 8
*/
networkId: string;
/**
* @since 9
* The distance of discovered device, in centimeter(cm).
*/
range: number;
}
/**
* Device Type definitions
*
* @systemapi this method can be used only by system applications.
*/
enum DeviceType {
/**
* Indicates an unknown device type.
*/
UNKNOWN_TYPE = 0,
/**
* Indicates a speaker.
*/
SPEAKER = 0x0A,
/**
* Indicates a smartphone.
*/
PHONE = 0x0E,
/**
* Indicates a tablet.
*/
TABLET = 0x11,
/**
* Indicates a smart watch.
*/
WEARABLE = 0x6D,
/**
* Indicates a car.
*/
CAR = 0x83,
/**
* Indicates a smart TV.
*/
TV = 0x9C
}
/**
* Device state change event definition
*
* @systemapi this method can be used only by system applications.
*/
enum DeviceStateChangeAction {
/**
* Device online action, which indicates the device is physically online
*/
ONLINE = 0,
/**
* Device ready action, which indicates the information between devices has been synchronized in the Distributed Data Service (DDS) module,
* and the device is ready for running distributed services
*/
READY = 1,
/**
* Device offline action, which Indicates the device is physically offline
*/
OFFLINE = 2,
/**
* Device change action
*/
CHANGE = 3
}
/**
* Service subscribe info for device discover
*
* @systemapi this method can be used only by system applications.
*/
interface SubscribeInfo {
/**
* Service subscribe ID, the value is in scope [0, 65535], should be unique for each discover process
*/
subscribeId: number;
/**
* Discovery mode for service subscription.
*/
mode: DiscoverMode;
/**
* Service subscription medium.
*/
medium: ExchangeMedium;
/**
* Service subscription frequency.
*/
freq: ExchangeFreq;
/**
* only find the device with the same account.
*/
isSameAccount: boolean;
/**
* find the sleeping devices.
*/
isWakeRemote: boolean;
/**
* Subscribe capability.
*/
capability: SubscribeCap;
}
/**
* Service publish info for device discover
* @since 9
* @systemapi this method can be used only by system applications.
*/
interface PublishInfo {
/**
* Service publish ID, the value is in scope [0, 65535], should be unique for each publish process
*/
publishId: number;
/**
* Discovery mode for service subscription.
*/
mode: DiscoverMode;
/**
* Service subscription frequency.
*/
freq: ExchangeFreq;
/**
* Whether the device should be ranged by discoverer.
*/
ranging : boolean;
}
/**
* device discover mode
*
* @systemapi this method can be used only by system applications.
*/
enum DiscoverMode {
/**
* when using this key at client side, it means discovering for available nearby devices by
* calling @startDeviceDiscovery function, while using this key at server side indicating that
* a device publication or advertisement by calling @publishDeviceDiscovery.
*/
DISCOVER_MODE_PASSIVE = 0x55,
/**
* when using this key at server side, it means discovering for available nearby devices by
* calling @startDeviceDiscovery function, while using this key at client side indicating that
* a device publication or advertisement by calling @publishDeviceDiscovery.
*/
DISCOVER_MODE_ACTIVE = 0xAA
}
/**
* device discover medium
*
* @systemapi this method can be used only by system applications.
*/
enum ExchangeMedium {
/**
* Automatic medium selection
*/
AUTO = 0,
/**
* Bluetooth
*/
BLE = 1,
/**
* Wi-Fi
*/
COAP = 2,
/**
* USB
*/
USB = 3
}
/**
* device discover freq
*
* @systemapi this method can be used only by system applications.
*/
enum ExchangeFreq {
/**
* Low
*/
LOW = 0,
/**
* Medium
*/
MID = 1,
/**
* High
*/
HIGH = 2,
/**
* Super-high
*/
SUPER_HIGH = 3
}
/**
* device discover capability
*
* @systemapi this method can be used only by system applications.
*/
enum SubscribeCap {
/**
* ddmpCapability, will be discarded later. Currently, it will be converted to OSD capability inner.
*/
SUBSCRIBE_CAPABILITY_DDMP = 0,
/**
* One Super Device Capability
*/
SUBSCRIBE_CAPABILITY_OSD = 1
}
/**
* Device Authentication param
*
* @systemapi this method can be used only by system applications
*/
interface AuthParam {
/**
* Authentication type, 1 for pin code.
*/
authType: number;
/**
* Authentication extra infos.
*/
extraInfo: {[key:string] : any};
}
/**
* Device auth info.
*
* @systemapi this method can be used only by system applications
*/
interface AuthInfo {
/**
* Authentication type, 1 for pin code.
*/
authType: number;
/**
* the token used for this authentication.
*/
token: number;
/**
* Authentication extra infos.
*/
extraInfo: {[key:string] : any};
}
/**
* Creates a {@code DeviceManager} instance.
*
*
To manage devices, you must first call this method to obtain a {@code DeviceManager} instance and then
* use this instance to call other device management methods.
*
* @param bundleName Indicates the bundle name of the application.
* @param callback Indicates the callback to be invoked upon {@code DeviceManager} instance creation.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
function createDeviceManager(bundleName: string, callback: AsyncCallback): void;
/**
* Provides methods for managing devices.
*/
interface DeviceManager {
/**
* Releases the {@code DeviceManager} instance after the methods for device management are no longer used.
*
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
release(): void;
/**
* Obtains a list of trusted devices.
*
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @returns Returns a list of trusted devices.
* @systemapi this method can be used only by system applications.
*/
getTrustedDeviceListSync(): Array;
/**
* Obtains a list of trusted devices.
*
* @since 8
* @param callback Indicates the callback to be invoked upon getTrustedDeviceList
* @throws {BusinessError} 401 - Input parameter error.
* @returns Returns a list of trusted devices.
* @systemapi this method can be used only by system applications.
*/
getTrustedDeviceList(callback:AsyncCallback>): void;
/**
* Obtains a list of trusted devices.
*
* @since 8
* @throws {BusinessError} 401 - Input parameter error.
* @returns Returns a list of trusted devices.
* @systemapi this method can be used only by system applications.
*/
getTrustedDeviceList(): Promise>;
/**
* Obtains local device info
*
* @since 8
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @returns Returns local device info.
* @systemapi this method can be used only by system applications.
*/
getLocalDeviceInfoSync(): DeviceInfo;
/**
* Obtains local device info
*
* @since 8
* @param callback Indicates the callback to be invoked upon getLocalDeviceInfo
* @throws {BusinessError} 401 - Input parameter error.
* @returns Returns local device info.
* @systemapi this method can be used only by system applications.
*/
getLocalDeviceInfo(callback:AsyncCallback): void;
/**
* Obtains local device info
*
* @since 8
* @throws {BusinessError} 401 - Input parameter error.
* @returns Returns local device info.
* @systemapi this method can be used only by system applications.
*/
getLocalDeviceInfo(): Promise;
/**
* Start to discover device.
*
* @since 8
* @param subscribeInfo subscribe info to discovery device
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 201 - Permission verify failed.
* @throws {BusinessError} 11600104 - Discovery invalid.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
startDeviceDiscovery(subscribeInfo: SubscribeInfo): void;
/**
* Start to discover device.
*
* @since 9
* @param subscribeInfo subscribe info to discovery device
* @param filterOptions filterOptions to filter discovery device
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 201 - Permission verify failed.
* @throws {BusinessError} 11600104 - Discovery invalid.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
startDeviceDiscovery(subscribeInfo: SubscribeInfo, filterOptions?: string): void;
/**
* Stop to discover device.
*
* @param subscribeId Service subscribe ID
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 201 - Permission verify failed.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
stopDeviceDiscovery(subscribeId: number): void;
/**
* Publish discover device.
* @since 9
* @param publishInfo publish info to Publish discovery device
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 201 - Permission verify failed.
* @throws {BusinessError} 11600105 - Publish invalid.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
publishDeviceDiscovery(publishInfo: PublishInfo): void;
/**
* UnPublish discover device.
* @since 9
* @param publishId Service publish ID, identify a publish operation, should be a unique id in package range
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 201 - Permission verify failed.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
unPublishDeviceDiscovery(publishId: number): void;
/**
* Authenticate the specified device.
*
* @param deviceInfo deviceInfo of device to authenticate
* @param authParam authParam of device to authenticate
* @param callback Indicates the callback to be invoked upon authenticateDevice
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
authenticateDevice(deviceInfo: DeviceInfo, authParam: AuthParam, callback: AsyncCallback<{deviceId: string, pinToken ?: number}>): void;
/**
* unAuthenticate the specified device.
*
* @since 8
* @param deviceInfo deviceInfo of device to unAuthenticate
* @throws {BusinessError} 401 - Input parameter error.
* @throws {BusinessError} 201 - Permission verify failed.
* @throws {BusinessError} 11600101 - Failed to execute the function.
* @systemapi this method can be used only by system applications.
*/
unAuthenticateDevice(deviceInfo: DeviceInfo): void
/**
* verify auth info, such as pin code.
*
* @param authInfo device auth info o verify
* @param callback Indicates the callback to be invoked upon verifyAuthInfo
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
verifyAuthInfo(authInfo: AuthInfo, callback: AsyncCallback<{deviceId: string, level: number}>): void;
/**
* Set user Operation from devicemanager Sea, this interface can only be used by devicemanager Sea.
*
* @since 9
* @param operateAction User Operation Actions.
* @param params Indicates the input param of the user.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
setUserOperation(operateAction: number, params: string): void;
/**
* Register a callback from deviceManager service so that the devicemanager ui can be notified when ui statue
* changes.
*
* @since 9
* @param callback Indicates the devicemanager ui state to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'uiStateChange', callback: Callback<{ param: string}>): void;
/**
* Unregister uiStatueChange, this interface can only be used by devicemanager ui.
*
* @since 9
* @param callback Indicates the devicemanager ui state to unregister.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'uiStateChange', callback?: Callback<{ param: string}>): void;
/**
* Register a device state callback so that the application can be notified upon device state changes based on
* the application bundle name.
*
* @param bundleName Indicates the bundle name of the application.
* @param callback Indicates the device state callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'deviceStateChange', callback: Callback<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void;
/**
* UnRegister device state callback based on the application bundle name.
*
* @param bundleName Indicates the bundle name of the application.
* @param callback Indicates the device state callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'deviceStateChange', callback?: Callback<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void;
/**
* Register a device found callback so that the application can be notified when the device was found
*
* @param callback Indicates the device found callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'deviceFound', callback: Callback<{ subscribeId: number, device: DeviceInfo }>): void;
/**
* UnRegister a device found callback so that the application can be notified when the device was found
*
* @param callback Indicates the device found callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'deviceFound', callback?: Callback<{ subscribeId: number, device: DeviceInfo }>): void;
/**
* Register a device found result callback so that the application can be notified when the device discover was failed
*
* @param callback Indicates the device found result callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'discoverFail', callback: Callback<{ subscribeId: number, reason: number }>): void;
/**
* UnRegister a device found result callback so that the application can be notified when the device discover was failed
*
* @param callback Indicates the device found result callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'discoverFail', callback?: Callback<{ subscribeId: number, reason: number }>): void;
/**
* Register a device publish result callback so that the application can be notified when the device publish success
*
* @since 9
* @param callback Indicates the device publish result callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'publishSuccess', callback: Callback<{ publishId: number }>): void;
/**
* UnRegister a device publish result callback so that the application can be notified when the device publish was failed
*
* @since 9
* @param callback Indicates the device publish result callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'publishSuccess', callback?: Callback<{ publishId: number }>): void;
/**
* Register a device publish result callback so that the application can be notified when the device publish was failed
*
* @since 9
* @param callback Indicates the device publish result callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'publishFail', callback: Callback<{ publishId: number, reason: number }>): void;
/**
* UnRegister a device publish result callback so that the application can be notified when the device publish was failed
*
* @since 9
* @param callback Indicates the device publish result callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'publishFail', callback?: Callback<{ publishId: number, reason: number }>): void;
/**
* Register a serviceError callback so that the application can be notified when devicemanager service died
*
* @param callback Indicates the service error callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
on(type: 'serviceDie', callback: () => void): void;
/**
* UnRegister a serviceError callback so that the application can be notified when devicemanager service died
*
* @param callback Indicates the service error callback to register.
* @throws {BusinessError} 401 - Input parameter error.
* @systemapi this method can be used only by system applications.
*/
off(type: 'serviceDie', callback?: () => void): void;
}
}
export default deviceManager;