• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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