Android-cuttlefish cvd tool
connection_observer.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <functional>
20
21#include <json/json.h>
22
24
25namespace cuttlefish {
26namespace webrtc_streaming {
27
28// The ConnectionObserver is the boundary between device specific code and
29// general WebRTC streaming code. Device specific code should be left to
30// implementations of this class while code that could be shared between any
31// device using this streaming library should remain in the library.
32// For example:
33// - Parsing JSON messages to obtain input events is common to all android
34// devices and should stay in the library.
35// - Sending input events to the device by writing to a socket is cuttlefish
36// specific and should be done in the ConnectionObserver implementation. Other
37// devices could choose to send those events over ADB for example. A good rule
38// of thumb is: if it was encoded client side in cf_webrtc.js it should be
39// decoded in the library.
41 public:
42 ConnectionObserver() = default;
43 virtual ~ConnectionObserver() = default;
44
45 virtual void OnConnected() = 0;
46
47 virtual Result<void> OnMouseMoveEvent(int x, int y) = 0;
48 virtual Result<void> OnMouseButtonEvent(int button, bool down) = 0;
49 virtual Result<void> OnMouseWheelEvent(int pixels) = 0;
50 virtual Result<void> OnGamepadKeyEvent(int button, bool down) = 0;
51 virtual Result<void> OnGamepadMotionEvent(int code, int value) = 0;
52 virtual Result<void> OnTouchEvent(const std::string& device_label, int x,
53 int y, bool down) = 0;
54 virtual Result<void> OnMultiTouchEvent(const std::string& label,
55 Json::Value id, Json::Value x,
56 Json::Value y, bool down,
57 int size) = 0;
58
59 virtual Result<void> OnKeyboardEvent(uint16_t keycode, bool down) = 0;
60
61 virtual Result<void> OnRotaryWheelEvent(int pixels) = 0;
62
63 virtual void OnAdbChannelOpen(
64 std::function<bool(const uint8_t*, size_t)> adb_message_sender) = 0;
65 virtual void OnAdbMessage(const uint8_t* msg, size_t size) = 0;
66
68 std::function<bool(const Json::Value)> control_message_sender) = 0;
69 virtual Result<void> OnLidStateChange(bool lid_open) = 0;
70 virtual void OnHingeAngleChange(int hinge_angle) = 0;
71 virtual Result<void> OnPowerButton(bool button_down) = 0;
72 virtual Result<void> OnBackButton(bool button_down) = 0;
73 virtual Result<void> OnHomeButton(bool button_down) = 0;
74 virtual Result<void> OnMenuButton(bool button_down) = 0;
75 virtual Result<void> OnVolumeDownButton(bool button_down) = 0;
76 virtual Result<void> OnVolumeUpButton(bool button_down) = 0;
77 virtual void OnCustomActionButton(const std::string& command,
78 const std::string& button_state) = 0;
79
80 virtual void OnCameraControlMsg(const Json::Value& msg) = 0;
81 virtual void OnDisplayControlMsg(const Json::Value& msg) = 0;
82 virtual void OnDisplayAddMsg(const Json::Value& msg) = 0;
83 virtual void OnDisplayRemoveMsg(const Json::Value& msg) = 0;
84
86 std::function<bool(const uint8_t*, size_t)> bluetooth_message_sender) = 0;
87 virtual void OnBluetoothMessage(const uint8_t* msg, size_t size) = 0;
89 std::function<bool(const uint8_t*, size_t)> sensors_message_sender) = 0;
90 virtual void OnSensorsMessage(const uint8_t* msg, size_t size) = 0;
91 virtual void OnSensorsChannelClosed() = 0;
92 virtual void OnLightsChannelOpen(
93 std::function<bool(const Json::Value&)> lights_message_sender) = 0;
94 virtual void OnLightsChannelClosed() = 0;
96 std::function<bool(const uint8_t*, size_t)> location_message_sender) = 0;
97 virtual void OnLocationMessage(const uint8_t* msg, size_t size) = 0;
98
100 std::function<bool(const uint8_t*, size_t)>
101 kml_locations_message_sender) = 0;
102
104 std::function<bool(const uint8_t*, size_t)>
105 gpx_locations_message_sender) = 0;
106 virtual void OnKmlLocationsMessage(const uint8_t* msg, size_t size) = 0;
107 virtual void OnGpxLocationsMessage(const uint8_t* msg, size_t size) = 0;
108
109 virtual void OnCameraData(const std::vector<char>& data) = 0;
110};
111
113 public:
114 virtual ~ConnectionObserverFactory() = default;
115 // Called when a new connection is requested
116 virtual std::shared_ptr<ConnectionObserver> CreateObserver() = 0;
117};
118
119} // namespace webrtc_streaming
120} // namespace cuttlefish
121
Definition: expected.h:86
Definition: connection_observer.h:112
virtual std::shared_ptr< ConnectionObserver > CreateObserver()=0
Definition: connection_observer.h:40
virtual void OnBluetoothChannelOpen(std::function< bool(const uint8_t *, size_t)> bluetooth_message_sender)=0
virtual void OnHingeAngleChange(int hinge_angle)=0
virtual void OnCameraData(const std::vector< char > &data)=0
virtual void OnCameraControlMsg(const Json::Value &msg)=0
virtual void OnBluetoothMessage(const uint8_t *msg, size_t size)=0
virtual Result< void > OnKeyboardEvent(uint16_t keycode, bool down)=0
virtual void OnGpxLocationsChannelOpen(std::function< bool(const uint8_t *, size_t)> gpx_locations_message_sender)=0
virtual Result< void > OnMouseWheelEvent(int pixels)=0
virtual void OnKmlLocationsMessage(const uint8_t *msg, size_t size)=0
virtual Result< void > OnMenuButton(bool button_down)=0
virtual void OnCustomActionButton(const std::string &command, const std::string &button_state)=0
virtual void OnLocationMessage(const uint8_t *msg, size_t size)=0
virtual Result< void > OnMultiTouchEvent(const std::string &label, Json::Value id, Json::Value x, Json::Value y, bool down, int size)=0
virtual void OnGpxLocationsMessage(const uint8_t *msg, size_t size)=0
virtual void OnDisplayAddMsg(const Json::Value &msg)=0
virtual Result< void > OnMouseMoveEvent(int x, int y)=0
virtual void OnSensorsChannelOpen(std::function< bool(const uint8_t *, size_t)> sensors_message_sender)=0
virtual Result< void > OnGamepadKeyEvent(int button, bool down)=0
virtual void OnControlChannelOpen(std::function< bool(const Json::Value)> control_message_sender)=0
virtual void OnLocationChannelOpen(std::function< bool(const uint8_t *, size_t)> location_message_sender)=0
virtual Result< void > OnMouseButtonEvent(int button, bool down)=0
virtual Result< void > OnLidStateChange(bool lid_open)=0
virtual void OnKmlLocationsChannelOpen(std::function< bool(const uint8_t *, size_t)> kml_locations_message_sender)=0
virtual void OnSensorsMessage(const uint8_t *msg, size_t size)=0
virtual Result< void > OnBackButton(bool button_down)=0
virtual Result< void > OnRotaryWheelEvent(int pixels)=0
virtual void OnAdbChannelOpen(std::function< bool(const uint8_t *, size_t)> adb_message_sender)=0
virtual Result< void > OnGamepadMotionEvent(int code, int value)=0
virtual void OnAdbMessage(const uint8_t *msg, size_t size)=0
virtual Result< void > OnHomeButton(bool button_down)=0
virtual Result< void > OnTouchEvent(const std::string &device_label, int x, int y, bool down)=0
virtual Result< void > OnVolumeDownButton(bool button_down)=0
virtual Result< void > OnVolumeUpButton(bool button_down)=0
virtual void OnDisplayRemoveMsg(const Json::Value &msg)=0
virtual void OnDisplayControlMsg(const Json::Value &msg)=0
virtual Result< void > OnPowerButton(bool button_down)=0
virtual void OnLightsChannelOpen(std::function< bool(const Json::Value &)> lights_message_sender)=0
char data[Size]
Definition: incremental_server.cpp:1
uint32_t size
Definition: io.h:2
Definition: alloc_utils.cpp:23