diff --git a/android/android.make b/android/android.make new file mode 100644 index 0000000000..e87ba39793 --- /dev/null +++ b/android/android.make @@ -0,0 +1,16 @@ +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ +# $Id$ +# + +# pretty empty here: android port has no additional .c files to compile, +# but a different rule for the final librockbox.so + +.SECONDEXPANSION: # $$(OBJ) is not populated until after this + +$(BUILDDIR)/$(BINARY): $$(OBJ) $(VOICESPEEXLIB) $(FIRMLIB) $(SKINLIB) + $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) diff --git a/firmware/export/storage.h b/firmware/export/storage.h index e59a5e5bf6..9ff493e564 100644 --- a/firmware/export/storage.h +++ b/firmware/export/storage.h @@ -51,12 +51,31 @@ struct storage_info char *revision; }; -#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && !defined(CONFIG_STORAGE_MULTI) +#if (CONFIG_STORAGE == 0) +/* stubs for the plugin api */ +static inline void stub_storage_sleep(void) {} +static inline void stub_storage_spin(void) {} +static inline void stub_storage_spindown(int timeout) { (void)timeout; } +#endif + +#if defined(CONFIG_STORAGE) && !defined(CONFIG_STORAGE_MULTI) /* storage_spindown, storage_sleep and storage_spin are passed as * pointers, which doesn't work with argument-macros. */ #define storage_num_drives() NUM_DRIVES - #if (CONFIG_STORAGE & STORAGE_ATA) + #if (CONFIG_STORAGE == 0) /* application */ + #define STORANGE_FUNCTION(NAME) (stub_## NAME) + #define storage_spindown stub_storage_spindown + #define storage_sleep stub_storage_sleep + #define storage_spin stub_storage_spin + + #define storage_enable(on) + #define storage_sleepnow() + #define storage_disk_is_active() + #define storage_soft_reset() + #define storage_init() + #define storage_close() + #elif (CONFIG_STORAGE & STORAGE_ATA) #define STORAGE_FUNCTION(NAME) (ata_## NAME) #define storage_spindown ata_spindown #define storage_sleep ata_sleep diff --git a/firmware/target/hosted/android/powermgmt-android.c b/firmware/target/hosted/android/powermgmt-android.c new file mode 100644 index 0000000000..6dc7c8c814 --- /dev/null +++ b/firmware/target/hosted/android/powermgmt-android.c @@ -0,0 +1,86 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2010 by Thomas Martitz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + + +#include +#include +#include "config.h" + +extern JNIEnv *env_ptr; +extern jclass RockboxService_class; +extern jobject RockboxService_instance; + +static jfieldID _battery_level; + +void powermgmt_init_target(void) +{ + jmethodID initBatteryMonitor = (*env_ptr)->GetMethodID(env_ptr, + RockboxService_class, + "initBatteryMonitor", + "()V"); + /* start the monitor */ + (*env_ptr)->CallVoidMethod(env_ptr, + RockboxService_instance, + initBatteryMonitor); + + /* cache the battery level field id */ + _battery_level = (*env_ptr)->GetFieldID(env_ptr, + RockboxService_class, + "battery_level", + "I"); +} + +int battery_level(void) +{ + return (*env_ptr)->GetIntField(env_ptr, RockboxService_instance, _battery_level); +} + +int battery_time(void) +{ /* cannot calculate yet */ + return 0; +} + +/* could be useful to stop the service after some time of inactivity */ +void reset_poweroff_timer(void) {} +void set_poweroff_timeout(int timeout) { (void)timeout; }; + +/* should always be safe on android targets, the host shuts us down before */ +bool battery_level_safe(void) +{ + return true; +} + +/* TODO */ +unsigned battery_voltage(void) +{ + return 0; +} + +static int sleeptime; +void set_sleep_timer(int seconds) +{ + sleeptime = seconds; +} + +int get_sleep_timer(void) +{ + return sleeptime; +} diff --git a/tools/root.make b/tools/root.make index eda27b77c0..3d19e6287e 100644 --- a/tools/root.make +++ b/tools/root.make @@ -97,9 +97,13 @@ else include $(APPSDIR)/plugins/plugins.make endif - ifdef APP_TYPE + ifneq (,$(findstring sdl,$(APP_TYPE))) include $(ROOTDIR)/uisimulator/uisimulator.make endif + + ifneq (,$(findstring android, $(APP_TYPE))) + include $(ROOTDIR)/android/android.make + endif endif # bootloader diff --git a/uisimulator/common/SOURCES b/uisimulator/common/SOURCES index 5f068c5bdc..4f9fb05a6a 100644 --- a/uisimulator/common/SOURCES +++ b/uisimulator/common/SOURCES @@ -1,4 +1,4 @@ -#ifndef APPLICATION +#ifdef SIMULATOR lcd-common.c #ifdef HAVE_LCD_CHARCELLS font-player.c @@ -9,10 +9,8 @@ fmradio.c backlight-sim.c #endif -#if (CONFIG_PLATFORM & PLATFORM_SDL) io.c sim_tasks.c powermgmt-sim.c -#endif -/* this is still needed for application since it has some stubs */ stubs.c +/* this is still needed for application since it has some stubs */