main-common.h revision 25eb6557b94da066d6e137c07aeced39badf5aa6
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
26void user_config_init( void );
27void user_config_done( void );
28
29void user_config_get_window_pos( int *window_x, int *window_y );
30
31#define  ONE_MB  (1024*1024)
32
33unsigned convertBytesToMB( uint64_t  size );
34uint64_t convertMBToBytes( unsigned  megaBytes );
35
36extern SkinKeyset*  android_keyset;
37void parse_keyset(const char*  keyset, AndroidOptions*  opts);
38void write_default_keyset( void );
39
40#define NETWORK_SPEED_DEFAULT  "full"
41#define NETWORK_DELAY_DEFAULT  "none"
42
43extern const char*  skin_network_speed;
44extern 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 */
49void 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. */
57int64_t  get_screen_pixels(AConfig*  skinConfig);
58
59void 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 */
67void 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 */
77struct 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 */
82void 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 */
93void 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 */
99void 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 */
104int attach_ui_to_core( AndroidOptions* opts );
105
106#endif /* ANDROID_MAIN_COMMON_H */
107