anbox-platform-sdk  1.25.0
Anbox Platform SDK API documentation
anbox_proxy.h
Go to the documentation of this file.
1 /*
2  * This file is part of Anbox Platform SDK
3  *
4  * Copyright 2021 Canonical Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #ifndef ANBOX_SDK_ANBOX_PROXY_H_
20 #define ANBOX_SDK_ANBOX_PROXY_H_
21 
23 
24 #include <errno.h>
25 #include <stdint.h>
26 #include <unistd.h>
27 
32 typedef int (*AnboxChangeScreenOrientationCallback)(AnboxScreenOrientationType orientation_type, void* user_data);
33 
38 typedef int (*AnboxChangeDisplayDensityCallback)(uint32_t density, void* user_data);
39 
44 typedef int (*AnboxChangeDisplaySizeCallback)(uint32_t width, uint32_t height, void* user_data);
45 
51 typedef int (*AnboxTriggerActionCallback)(const char* name, const char **args, size_t args_len, void* user_data);
52 
57 typedef int (*AnboxCreateADBConnectionCallback)(const char* id, void* user_data);
58 
63 typedef int (*AnboxDisconnectADBConnectionCallback)(const char* id, void* user_data);
64 
65 namespace anbox {
71 class AnboxProxy {
72  public:
73  AnboxProxy() = default;
74  virtual ~AnboxProxy() = default;
75  AnboxProxy(const AnboxProxy &) = delete;
76  AnboxProxy& operator=(const AnboxProxy &) = delete;
77 
85  if (!change_screen_orientation_callback_)
86  return -EINVAL;
87  return change_screen_orientation_callback_(orientation_type, screen_orientation_callback_user_data_);
88  }
89 
92  void* user_data) {
93  change_screen_orientation_callback_ = callback;
94  screen_orientation_callback_user_data_ = user_data;
95  }
96 
103  int change_display_density(uint32_t density) {
104  if (!change_display_density_callback_)
105  return -EINVAL;
106  return change_display_density_callback_(density, display_density_callback_user_data_);
107  }
108 
111  void* user_data) {
112  change_display_density_callback_ = callback;
113  display_density_callback_user_data_ = user_data;
114  }
115 
123  int change_display_size(uint32_t width, uint32_t height) {
124  if (!change_display_size_callback_)
125  return -EINVAL;
126  return change_display_size_callback_(width, height, display_size_callback_user_data_);
127  }
128 
131  void* user_data) {
132  change_display_size_callback_ = callback;
133  display_size_callback_user_data_ = user_data;
134  }
135 
152  int trigger_action(const char* name, const char** args, size_t args_len) {
153  if (!trigger_action_callback_)
154  return -EINVAL;
155  return trigger_action_callback_(name, args, args_len, trigger_action_callback_user_data_);
156  }
157 
160  void* user_data) {
161  trigger_action_callback_ = callback;
162  trigger_action_callback_user_data_ = user_data;
163  }
164 
174  virtual int send_message(const char* type, size_t type_size,
175  const char* data, size_t data_size) {
176  (void) type;
177  (void) type_size;
178  (void) data;
179  (void) data_size;
180  return -EIO;
181  }
182 
190  int create_adb_connection(const char* id) {
191  if (!create_adb_connection_callback_)
192  return -EINVAL;
193  return create_adb_connection_callback_(id, create_adb_connection_callback_user_data_);
194  }
195 
198  void* user_data) {
199  create_adb_connection_callback_ = callback;
200  create_adb_connection_callback_user_data_ = user_data;
201  }
202 
209  int disconnect_adb_connection(const char* id) {
210  if (!disconnect_adb_connection_callback_)
211  return -EINVAL;
212  return disconnect_adb_connection_callback_(id, disconnect_adb_connection_callback_user_data_);
213  }
214 
217  void* user_data) {
218  disconnect_adb_connection_callback_ = callback;
219  disconnect_adb_connection_callback_user_data_ = user_data;
220  }
221 
222  private:
223  AnboxChangeScreenOrientationCallback change_screen_orientation_callback_{nullptr};
224  AnboxChangeDisplayDensityCallback change_display_density_callback_{nullptr};
225  AnboxChangeDisplaySizeCallback change_display_size_callback_{nullptr};
226  AnboxTriggerActionCallback trigger_action_callback_{nullptr};
227  AnboxCreateADBConnectionCallback create_adb_connection_callback_{nullptr};
228  AnboxDisconnectADBConnectionCallback disconnect_adb_connection_callback_{nullptr};
229 
230  void* screen_orientation_callback_user_data_{nullptr};
231  void* display_density_callback_user_data_{nullptr};
232  void* display_size_callback_user_data_{nullptr};
233  void* trigger_action_callback_user_data_{nullptr};
234  void* create_adb_connection_callback_user_data_{nullptr};
235  void* disconnect_adb_connection_callback_user_data_{nullptr};
236 };
237 } // namespace anbox
238 
239 #endif
int(* AnboxCreateADBConnectionCallback)(const char *id, void *user_data)
AnboxCreateADBConnectionCallback is invoked when creating ADB connection.
Definition: anbox_proxy.h:57
int(* AnboxDisconnectADBConnectionCallback)(const char *id, void *user_data)
AnboxDisconnectADBConnectionCallback is invoked when disconnecting ADB connection.
Definition: anbox_proxy.h:63
int(* AnboxChangeDisplaySizeCallback)(uint32_t width, uint32_t height, void *user_data)
AnboxChangeDisplaySizeCallback is invoked when changing the display size.
Definition: anbox_proxy.h:44
int(* AnboxTriggerActionCallback)(const char *name, const char **args, size_t args_len, void *user_data)
AnboxTriggerActionCallback is invoked when an action is triggered within the Android system.
Definition: anbox_proxy.h:51
int(* AnboxChangeScreenOrientationCallback)(AnboxScreenOrientationType orientation_type, void *user_data)
AnboxChangeScreenOrientationCallback is invoked when changing the screen orientation.
Definition: anbox_proxy.h:32
int(* AnboxChangeDisplayDensityCallback)(uint32_t density, void *user_data)
AnboxChangeDisplayDensityCallback is invoked when changing the display density.
Definition: anbox_proxy.h:38
AnboxProxy provides a proxy layer which encapsulates callbacks that can be used by a platform to chan...
Definition: anbox_proxy.h:71
void set_change_display_size_callback(const AnboxChangeDisplaySizeCallback &callback, void *user_data)
Set the display size change callback.
Definition: anbox_proxy.h:130
AnboxProxy()=default
AnboxProxy(const AnboxProxy &)=delete
void set_change_screen_orientation_callback(const AnboxChangeScreenOrientationCallback &callback, void *user_data)
Set the screen orientation change callback.
Definition: anbox_proxy.h:91
void set_disconnect_adb_connection_callback(const AnboxDisconnectADBConnectionCallback &callback, void *user_data)
Set the ADB connection disconnect callback.
Definition: anbox_proxy.h:216
int trigger_action(const char *name, const char **args, size_t args_len)
Trigger an action which is executed within the Android container.
Definition: anbox_proxy.h:152
void set_create_adb_connection_callback(const AnboxCreateADBConnectionCallback &callback, void *user_data)
Set the ADB connection creation callback.
Definition: anbox_proxy.h:197
int change_display_size(uint32_t width, uint32_t height)
Change the display size.
Definition: anbox_proxy.h:123
virtual int send_message(const char *type, size_t type_size, const char *data, size_t data_size)
Send a message from Anbox to the platform.
Definition: anbox_proxy.h:174
int disconnect_adb_connection(const char *id)
Disconnect ADB connection.
Definition: anbox_proxy.h:209
int change_screen_orientation(AnboxScreenOrientationType orientation_type)
Change the screen orientation.
Definition: anbox_proxy.h:84
virtual ~AnboxProxy()=default
void set_change_display_density_callback(const AnboxChangeDisplayDensityCallback &callback, void *user_data)
Set the display density change callback.
Definition: anbox_proxy.h:110
void set_trigger_action_callback(const AnboxTriggerActionCallback &callback, void *user_data)
Set the trigger action callback.
Definition: anbox_proxy.h:159
int change_display_density(uint32_t density)
Change the display density.
Definition: anbox_proxy.h:103
int create_adb_connection(const char *id)
Create ADB connection.
Definition: anbox_proxy.h:190
AnboxProxy & operator=(const AnboxProxy &)=delete
AnboxScreenOrientationType
AnboxScreenOrientationType describes the type of display orientation.
Definition: types.h:689