1 /* Copyright (C) 2011 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 #ifndef ANDROID_MAIN_COMMON_H 13 #define ANDROID_MAIN_COMMON_H 14 15 #include <stdint.h> 16 #include "android/cmdline-option.h" 17 #include "android/skin/keyset.h" 18 #include "android/config.h" 19 #include "android/avd/hw-config.h" 20 21 /* Common routines used by both android/main.c and android/main-ui.c */ 22 23 /** Emulator user configuration (e.g. last window position) 24 **/ 25 26 void user_config_init( void ); 27 void user_config_done( void ); 28 29 void user_config_get_window_pos( int *window_x, int *window_y ); 30 31 #define ONE_MB (1024*1024) 32 33 unsigned convertBytesToMB( uint64_t size ); 34 uint64_t convertMBToBytes( unsigned megaBytes ); 35 36 extern SkinKeyset* android_keyset; 37 void parse_keyset(const char* keyset, AndroidOptions* opts); 38 void write_default_keyset( void ); 39 40 #define NETWORK_SPEED_DEFAULT "full" 41 #define NETWORK_DELAY_DEFAULT "none" 42 43 extern const char* skin_network_speed; 44 extern const char* skin_network_delay; 45 46 /* Find the skin corresponding to our options, and return an AConfig pointer 47 * and the base path to load skin data from 48 */ 49 void parse_skin_files(const char* skinDirPath, 50 const char* skinName, 51 AndroidOptions* opts, 52 AndroidHwConfig* hwConfig, 53 AConfig* *skinConfig, 54 char* *skinPath); 55 56 /* Returns the amount of pixels used by the default display. */ 57 int64_t get_screen_pixels(AConfig* skinConfig); 58 59 void init_sdl_ui(AConfig* skinConfig, 60 const char* skinPath, 61 AndroidOptions* opts); 62 63 /* Sanitize options. This deals with a few legacy options that are now 64 * handled differently. Call before anything else that needs to read 65 * the options list. 66 */ 67 void sanitizeOptions( AndroidOptions* opts ); 68 69 /* Creates and initializes AvdInfo instance for the given options. 70 * Param: 71 * opts - Options passed to the main() 72 * inAndroidBuild - Upon exit contains 0 if AvdInfo has been initialized from 73 * AVD file, or 1 if AvdInfo has been initialized from the build directory. 74 * Return: 75 * AvdInfo instance initialized for the given options. 76 */ 77 struct AvdInfo* createAVD(AndroidOptions* opts, int* inAndroidBuild); 78 79 /* Populate the hwConfig fields corresponding to the kernel/disk images 80 * used by the emulator. This will zero *hwConfig first. 81 */ 82 void findImagePaths( AndroidHwConfig* hwConfig, 83 AndroidOptions* opts ); 84 85 /* Updates hardware configuration for the given AVD and options. 86 * Param: 87 * hwConfig - Hardware configuration to update. 88 * avd - AVD info containig paths for the hardware configuration. 89 * opts - Options passed to the main() 90 * inAndroidBuild - 0 if AVD has been initialized from AVD file, or 1 if AVD 91 * has been initialized from the build directory. 92 */ 93 void updateHwConfigFromAVD(AndroidHwConfig* hwConfig, struct AvdInfo* avd, 94 AndroidOptions* opts, int inAndroidBuild); 95 96 /* Called from android/main.c to handle options specific to the standalone 97 * UI program. This is a no-op otherwise. 98 */ 99 void handle_ui_options( AndroidOptions* opts ); 100 101 /* Called from android/main.c to potentially attach to a core from the 102 * standalone UI program. This is a no-op otherwise. 103 */ 104 int attach_ui_to_core( AndroidOptions* opts ); 105 106 #endif /* ANDROID_MAIN_COMMON_H */ 107