1 /* Copyright (C) 2010 The Android Open Source Project
2 **
3 ** This software is licensed under the terms of the GNU General Public
4 ** License version 2, as published by the Free Software Foundation, and
5 ** may be copied, distributed, and modified under those terms.
6 **
7 ** This program is distributed in the hope that it will be useful,
8 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
9 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 ** GNU General Public License for more details.
11 */
12
13 /*
14 * Contains implementation of the API for calling into the Core with the UI
15 * control commands for standalone (monolithic) emulator.
16 */
17
18 #include "android/android.h"
19 #include "android/globals.h"
20 #include "android/hw-sensors.h"
21 #include "telephony/modem_driver.h"
22 #include "android-trace.h"
23 #include "audio/audio.h"
24 #include "android/protocol/core-commands-api.h"
25
26 /* Implemented in vl-android.c */
27 extern char* qemu_find_file(int type, const char* filename);
28
29 int
corecmd_set_coarse_orientation(AndroidCoarseOrientation orient)30 corecmd_set_coarse_orientation(AndroidCoarseOrientation orient)
31 {
32 android_sensors_set_coarse_orientation(orient);
33 return 0;
34 }
35
36 int
corecmd_toggle_network()37 corecmd_toggle_network()
38 {
39 qemu_net_disable = !qemu_net_disable;
40 if (android_modem) {
41 amodem_set_data_registration(
42 android_modem,
43 qemu_net_disable ? A_REGISTRATION_UNREGISTERED
44 : A_REGISTRATION_HOME);
45 }
46 return 0;
47 }
48
corecmd_trace_control(int start)49 int corecmd_trace_control(int start)
50 {
51 if (start) {
52 start_tracing();
53 } else {
54 stop_tracing();
55 }
56 return 0;
57 }
58
corecmd_is_network_disabled()59 int corecmd_is_network_disabled()
60 {
61 return qemu_net_disable;
62 }
63
64 int
corecmd_get_netspeed(int index,NetworkSpeed ** netspeed)65 corecmd_get_netspeed(int index, NetworkSpeed** netspeed)
66 {
67 if (index >= android_netspeeds_count ||
68 android_netspeeds[index].name == NULL) {
69 return -1;
70 }
71 *netspeed = (NetworkSpeed*)malloc(sizeof(NetworkSpeed));
72 memcpy(*netspeed, &android_netspeeds[index], sizeof(NetworkSpeed));
73 return 0;
74 }
75
76 int
corecmd_get_netdelay(int index,NetworkLatency ** netdelay)77 corecmd_get_netdelay(int index, NetworkLatency** netdelay)
78 {
79 if (index >= android_netdelays_count ||
80 android_netdelays[index].name == NULL) {
81 return -1;
82 }
83 *netdelay = (NetworkLatency*)malloc(sizeof(NetworkLatency));
84 memcpy(*netdelay, &android_netdelays[index], sizeof(NetworkLatency));
85 return 0;
86 }
87
88 int
corecmd_get_qemu_path(int type,const char * filename,char * path,size_t path_buf_size)89 corecmd_get_qemu_path(int type,
90 const char* filename,
91 char* path,
92 size_t path_buf_size)
93 {
94 char* filepath = qemu_find_file(type, filename);
95 if (filepath == NULL) {
96 return -1;
97 }
98 strncpy(path, filepath, path_buf_size);
99 path[path_buf_size - 1] = '\0';
100 qemu_free(filepath);
101 return 0;
102 }
103
104 int
corecmd_get_hw_lcd_density(void)105 corecmd_get_hw_lcd_density(void)
106 {
107 return android_hw->hw_lcd_density;
108 }
109