ISensorEventConnection.cpp revision 589ce85ee4174829cfedce91b6b2509d2a4002eb
1589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian/* 2589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * Copyright (C) 2010 The Android Open Source Project 3589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * 4589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * you may not use this file except in compliance with the License. 6589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * You may obtain a copy of the License at 7589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * 8589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * 10589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * Unless required by applicable law or agreed to in writing, software 11589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * See the License for the specific language governing permissions and 14589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian * limitations under the License. 15589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian */ 16589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 17589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <stdint.h> 18589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <sys/types.h> 19589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 20589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <utils/Errors.h> 21589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <utils/RefBase.h> 22589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <utils/Timers.h> 23589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 24589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <binder/Parcel.h> 25589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <binder/IInterface.h> 26589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 27589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <gui/ISensorEventConnection.h> 28589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian#include <gui/SensorChannel.h> 29589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 30589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopiannamespace android { 31589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian// ---------------------------------------------------------------------------- 32589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 33589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopianenum { 34589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian GET_SENSOR_CHANNEL = IBinder::FIRST_CALL_TRANSACTION, 35589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian ENABLE_DISABLE, 36589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian SET_EVENT_RATE 37589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian}; 38589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 39589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopianclass BpSensorEventConnection : public BpInterface<ISensorEventConnection> 40589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian{ 41589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopianpublic: 42589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian BpSensorEventConnection(const sp<IBinder>& impl) 43589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian : BpInterface<ISensorEventConnection>(impl) 44589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian { 45589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } 46589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 47589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian virtual sp<SensorChannel> getSensorChannel() const 48589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian { 49589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian Parcel data, reply; 50589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian remote()->transact(GET_SENSOR_CHANNEL, data, &reply); 51589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return new SensorChannel(reply); 52589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } 53589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 54589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian virtual status_t enableDisable(int handle, bool enabled) 55589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian { 56589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian Parcel data, reply; 57589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian data.writeInt32(handle); 58589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian data.writeInt32(enabled); 59589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian remote()->transact(ENABLE_DISABLE, data, &reply); 60589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return reply.readInt32(); 61589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } 62589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 63589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian virtual status_t setEventRate(int handle, nsecs_t ns) 64589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian { 65589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian Parcel data, reply; 66589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian data.writeInt32(handle); 67589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian data.writeInt64(ns); 68589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian remote()->transact(SET_EVENT_RATE, data, &reply); 69589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return reply.readInt32(); 70589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } 71589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian}; 72589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 73589ce85ee4174829cfedce91b6b2509d2a4002ebMathias AgopianIMPLEMENT_META_INTERFACE(SensorEventConnection, "android.gui.SensorEventConnection"); 74589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 75589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian// ---------------------------------------------------------------------------- 76589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 77589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopianstatus_t BnSensorEventConnection::onTransact( 78589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 79589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian{ 80589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian switch(code) { 81589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian case GET_SENSOR_CHANNEL: { 82589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian CHECK_INTERFACE(ISensorEventConnection, data, reply); 83589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian sp<SensorChannel> channel(getSensorChannel()); 84589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian channel->writeToParcel(reply); 85589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return NO_ERROR; 86589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } break; 87589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian case ENABLE_DISABLE: { 88589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian CHECK_INTERFACE(ISensorEventConnection, data, reply); 89589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian int handle = data.readInt32(); 90589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian int enabled = data.readInt32(); 91589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian status_t result = enableDisable(handle, enabled); 92589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian reply->writeInt32(result); 93589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return NO_ERROR; 94589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } break; 95589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian case SET_EVENT_RATE: { 96589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian CHECK_INTERFACE(ISensorEventConnection, data, reply); 97589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian int handle = data.readInt32(); 98589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian int ns = data.readInt64(); 99589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian status_t result = setEventRate(handle, ns); 100589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian reply->writeInt32(result); 101589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return NO_ERROR; 102589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } break; 103589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian } 104589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian return BBinder::onTransact(code, data, reply, flags); 105589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian} 106589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian 107589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian// ---------------------------------------------------------------------------- 108589ce85ee4174829cfedce91b6b2509d2a4002ebMathias Agopian}; // namespace android 109