| /* Copyright (C) 2010 The Android Open Source Project |
| ** |
| ** This software is licensed under the terms of the GNU General Public |
| ** License version 2, as published by the Free Software Foundation, and |
| ** may be copied, distributed, and modified under those terms. |
| ** |
| ** This program is distributed in the hope that it will be useful, |
| ** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ** GNU General Public License for more details. |
| */ |
| |
| /* |
| * Contains implementation of the API for calling into the Core with the UI |
| * control commands for standalone (monolithic) emulator. |
| */ |
| |
| #include "android/android.h" |
| #include "android/globals.h" |
| #include "android/hw-sensors.h" |
| #include "telephony/modem_driver.h" |
| #include "android-trace.h" |
| #include "audio/audio.h" |
| #include "android/protocol/core-commands-api.h" |
| |
| /* Implemented in vl-android.c */ |
| extern char* qemu_find_file(int type, const char* filename); |
| |
| int |
| corecmd_set_coarse_orientation(AndroidCoarseOrientation orient) |
| { |
| android_sensors_set_coarse_orientation(orient); |
| return 0; |
| } |
| |
| int |
| corecmd_toggle_network() |
| { |
| qemu_net_disable = !qemu_net_disable; |
| if (android_modem) { |
| amodem_set_data_registration( |
| android_modem, |
| qemu_net_disable ? A_REGISTRATION_UNREGISTERED |
| : A_REGISTRATION_HOME); |
| } |
| return 0; |
| } |
| |
| int corecmd_trace_control(int start) |
| { |
| if (start) { |
| start_tracing(); |
| } else { |
| stop_tracing(); |
| } |
| return 0; |
| } |
| |
| int corecmd_is_network_disabled() |
| { |
| return qemu_net_disable; |
| } |
| |
| int |
| corecmd_get_netspeed(int index, NetworkSpeed** netspeed) |
| { |
| if (index >= android_netspeeds_count || |
| android_netspeeds[index].name == NULL) { |
| return -1; |
| } |
| *netspeed = (NetworkSpeed*)malloc(sizeof(NetworkSpeed)); |
| memcpy(*netspeed, &android_netspeeds[index], sizeof(NetworkSpeed)); |
| return 0; |
| } |
| |
| int |
| corecmd_get_netdelay(int index, NetworkLatency** netdelay) |
| { |
| if (index >= android_netdelays_count || |
| android_netdelays[index].name == NULL) { |
| return -1; |
| } |
| *netdelay = (NetworkLatency*)malloc(sizeof(NetworkLatency)); |
| memcpy(*netdelay, &android_netdelays[index], sizeof(NetworkLatency)); |
| return 0; |
| } |
| |
| int |
| corecmd_get_qemu_path(int type, |
| const char* filename, |
| char* path, |
| size_t path_buf_size) |
| { |
| char* filepath = qemu_find_file(type, filename); |
| if (filepath == NULL) { |
| return -1; |
| } |
| strncpy(path, filepath, path_buf_size); |
| path[path_buf_size - 1] = '\0'; |
| qemu_free(filepath); |
| return 0; |
| } |
| |
| int |
| corecmd_get_hw_lcd_density(void) |
| { |
| return android_hw->hw_lcd_density; |
| } |