13a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood/*
23a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Copyright (C) 2009 The Android Open Source Project
33a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood *
43a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
53a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * you may not use this file except in compliance with the License.
63a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * You may obtain a copy of the License at
73a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood *
83a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
93a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood *
103a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Unless required by applicable law or agreed to in writing, software
113a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
123a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * See the License for the specific language governing permissions and
143a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * limitations under the License.
153a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood */
163a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
173a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#define LOG_TAG "VibratorService"
183a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
193a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include "jni.h"
203a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include "JNIHelp.h"
213a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include "android_runtime/AndroidRuntime.h"
223a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
233a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include <utils/misc.h>
243a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include <utils/Log.h>
253a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include <hardware_legacy/vibrator.h>
263a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
273a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood#include <stdio.h>
283a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
293a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodnamespace android
303a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood{
313a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
32ea9020e0854427d47e566a1394df6749f3265410Dianne Hackbornstatic jboolean vibratorExists(JNIEnv *env, jobject clazz)
33ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn{
34ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn    return vibrator_exists() > 0 ? JNI_TRUE : JNI_FALSE;
35ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn}
36ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn
373a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodstatic void vibratorOn(JNIEnv *env, jobject clazz, jlong timeout_ms)
383a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood{
396215d3ff4b5dfa52a5d8b9a42e343051f31066a5Steve Block    // ALOGI("vibratorOn\n");
403a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood    vibrator_on(timeout_ms);
413a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood}
423a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
433a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodstatic void vibratorOff(JNIEnv *env, jobject clazz)
443a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood{
456215d3ff4b5dfa52a5d8b9a42e343051f31066a5Steve Block    // ALOGI("vibratorOff\n");
463a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood    vibrator_off();
473a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood}
483a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
493a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodstatic JNINativeMethod method_table[] = {
50ea9020e0854427d47e566a1394df6749f3265410Dianne Hackborn    { "vibratorExists", "()Z", (void*)vibratorExists },
513a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood    { "vibratorOn", "(J)V", (void*)vibratorOn },
523a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood    { "vibratorOff", "()V", (void*)vibratorOff }
533a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood};
543a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
553a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodint register_android_server_VibratorService(JNIEnv *env)
563a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood{
573a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood    return jniRegisterNativeMethods(env, "com/android/server/VibratorService",
583a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood            method_table, NELEM(method_table));
593a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood}
603a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood
613a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood};
62