/*
 * Copyright (c) 2025 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.
 */

sequenceable light_agent_type..LightColor;
sequenceable light_animation_ipc..OHOS.Sensors.LightAnimationIPC;
sequenceable light_info_ipc..OHOS.Sensors.LightInfoIPC;
sequenceable OHOS.IRemoteObject;
sequenceable raw_file_descriptor..OHOS.Sensors.RawFileDescriptor;
sequenceable vibrator_infos..OHOS.Sensors.VibratePattern;
sequenceable vibrator_infos..OHOS.Sensors.VibratorCapacity;
sequenceable vibrator_infos..OHOS.Sensors.VibratorIdentifierIPC;
sequenceable vibrator_infos..OHOS.Sensors.VibratorInfoIPC;
sequenceable vibrator_infos..OHOS.Sensors.EffectInfoIPC;
sequenceable vibrator_infos..OHOS.Sensors.CustomHapticInfoIPC;
sequenceable vibrator_infos..OHOS.Sensors.PrimitiveEffectIPC;
sequenceable vibrator_infos..OHOS.Sensors.VibratePackage;

interface OHOS.Sensors.IMiscdeviceService {
    void Vibrate([in] VibratorIdentifierIPC identifier, [in] int timeOut, [in] int usage, [in] boolean systemUsage);
    void PlayVibratorEffect([in] VibratorIdentifierIPC identifier, [in] String effect, [in] int loopCount, [in] int usage, [in] boolean systemUsage);
    void StopVibrator([in] VibratorIdentifierIPC identifier);
    void StopVibratorByMode([in] VibratorIdentifierIPC identifier, [in] String mode);
    void IsSupportEffect([in] VibratorIdentifierIPC identifier, [in] String effect, [out] boolean state);
    void GetLightList([out] LightInfoIPC[] lightInfoIpcList);
    void TurnOn([in] int lightId, [in] int singleColor, [in] LightAnimationIPC animation);
    void TurnOff([in] int lightId);
    void GetDelayTime([in] VibratorIdentifierIPC identifier, [out] int delayTime);
    void PlayPattern([in] VibratorIdentifierIPC identifier, [in] VibratePattern pattern, [in] CustomHapticInfoIPC customHapticInfoIPC);
    void TransferClientRemoteObject([in] IRemoteObject vibratorClient);
    void PlayPrimitiveEffect([in] VibratorIdentifierIPC identifier, [in] String effect, [in] PrimitiveEffectIPC primitiveEffectIPC);
    void GetVibratorCapacity([in] VibratorIdentifierIPC identifier, [out] VibratorCapacity capacity);
    void GetVibratorList([in] VibratorIdentifierIPC identifier, [out] VibratorInfoIPC[] vibratorInfoIPC);
    void GetEffectInfo([in] VibratorIdentifierIPC identifier, [in] String effectType, [out] EffectInfoIPC effectInfoIPC);
    void SubscribeVibratorPlugInfo([in] IRemoteObject vibratorClient);
    void PlayPackageBySessionId([in] VibratorIdentifierIPC identifier, [in] VibratePackage packageIPC, [in] CustomHapticInfoIPC customHapticInfoIPC);
    void StopVibrateBySessionId([in] VibratorIdentifierIPC identifier, [in] unsigned int sessionId);
    void DisableVibratorByPid([in] int pid);
    void EnableVibratorByPid([in] int pid);
}