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