1831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// Copyright 2016 The Android Open Source Project 2831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// 3831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// Licensed under the Apache License, Version 2.0 (the "License"); 4831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// you may not use this file except in compliance with the License. 5831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// You may obtain a copy of the License at 6831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// 7831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// http://www.apache.org/licenses/LICENSE-2.0 8831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// 9831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// Unless required by applicable law or agreed to in writing, software 10831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// distributed under the License is distributed on an "AS IS" BASIS, 11831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// See the License for the specific language governing permissions and 13831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// limitations under the License. 14831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// 15831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 16831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// Handler for input events in /dev/input. AudioDaemonHandler is the base class 17831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan// that other handlers inherit. 18831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 19831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan#ifndef BRILLO_AUDIO_AUDIOSERVICE_AUDIO_DAEMON_HANDLER_H_ 20831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan#define BRILLO_AUDIO_AUDIOSERVICE_AUDIO_DAEMON_HANDLER_H_ 21831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 22831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan#include <linux/input.h> 23831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan#include <media/IAudioPolicyService.h> 24831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 25831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathannamespace brillo { 26831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 27831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathanclass AudioDaemonHandler { 28831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan public: 29831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan virtual ~AudioDaemonHandler(){}; 30831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 31831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // Initialize the handler. 32831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // 33831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // |aps| is a pointer to the binder object. 34831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan virtual void Init(android::sp<android::IAudioPolicyService> aps) = 0; 35831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 36831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // Process input events from the kernel. 37831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // 38831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // |event| is a pointer to an input_event. This function should be able to 39831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // gracefully handle input events that are not relevant to the functionality 40831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // provided by this class. 41831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan virtual void ProcessEvent(const struct input_event& event) = 0; 42831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 43831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // Inform the handler that the audio policy service has been disconnected. 44831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan virtual void APSDisconnect() = 0; 45831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 46831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // Inform the handler that the audio policy service is reconnected. 47831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // 48831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // |aps| is a pointer to the binder object. 49831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan virtual void APSConnect(android::sp<android::IAudioPolicyService> aps) = 0; 50831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 51831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan protected: 52831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan // Pointer to the audio policy service. 53831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan android::sp<android::IAudioPolicyService> aps_; 54831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan}; 55831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 56831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan} // namespace brillo 57831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan 58831b44060007dc2e1e1716e4b2c3d4774e5f218aRalph Nathan#endif // BRILLO_AUDIO_AUDIOSERVICE_AUDIO_DAEMON_HANDLER_H_ 59