diff options
21 files changed, 361 insertions, 16 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index bd969df0c0..a574896d63 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -663,7 +663,7 @@ static bool dbg_hw_info(void) while (!(action_userabort(TIMEOUT_BLOCK))); -#else +#elif (CONFIG_PLATFORM & PLATFORM_NATIVE) /* Define this function in your target tree */ return __dbg_hw_info(); #endif /* CONFIG_CPU */ diff --git a/firmware/SOURCES b/firmware/SOURCES index 57f7258282..926891eeea 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -35,6 +35,12 @@ target/hosted/sdl/lcd-sdl.c target/hosted/sdl/system-sdl.c target/hosted/sdl/thread-sdl.c target/hosted/sdl/timer-sdl.c +#ifdef HAVE_TOUCHSCREEN +target/hosted/sdl/key_to_touch-sdl.c +#endif +#ifdef APPLICATION +target/hosted/sdl/app/button-application.c +#endif #endif panic.c debug.c diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h index b8214e67b9..05fdb67e1e 100644 --- a/firmware/export/audiohw.h +++ b/firmware/export/audiohw.h @@ -69,6 +69,10 @@ #if defined(HAVE_SDL_AUDIO) /* #include <SDL_audio.h> gives errors in other code areas, * we don't really need it here, so don't. but it should maybe be fixed */ +#ifndef SIMULATOR /* simulator gets values from the target .h files */ +#define VOLUME_MIN -990 +#define VOLUME_MAX 0 +#endif #endif diff --git a/firmware/export/config.h b/firmware/export/config.h index 29d68cd100..e0581507b5 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -424,6 +424,9 @@ Lyre prototype 1 */ #include "config/vibe500.h" #elif defined(MPIO_HD200) #include "config/mpiohd200.h" + +#elif defined(APPLICATION) +#include "config/application.h" #else /* no known platform */ #endif diff --git a/firmware/export/config/application.h b/firmware/export/config/application.h new file mode 100644 index 0000000000..48c384d1a6 --- /dev/null +++ b/firmware/export/config/application.h @@ -0,0 +1,94 @@ +/* + * This config file is for Rockbox as an application! + */ +#define TARGET_TREE /* this target is using the target tree system */ + +/* We don't run on hardware directly */ +#define CONFIG_PLATFORM PLATFORM_HOSTED +/* For Rolo and boot loader */ +/* +#define MODEL_NUMBER 24 +*/ + +#define MODEL_NAME "Rockbox" + +#define USB_NONE + +/* define this if you have a bitmap LCD display */ +#define HAVE_LCD_BITMAP + +/* define this if you have a colour LCD */ +#define HAVE_LCD_COLOR + +/* define this if you want album art for this target */ +#define HAVE_ALBUMART + +/* define this to enable bitmap scaling */ +#define HAVE_BMP_SCALING + +/* define this to enable JPEG decoding */ +#define HAVE_JPEG + +/* define this if you have access to the quickscreen */ +#define HAVE_QUICKSCREEN +/* define this if you have access to the pitchscreen */ +#define HAVE_PITCHSCREEN + +/* define this if you would like tagcache to build on this target */ +#define HAVE_TAGCACHE + +/* LCD dimensions */ +#define LCD_WIDTH 320 +#define LCD_HEIGHT 240 +#define LCD_DEPTH 16 +#define LCD_PIXELFORMAT 565 + +/* define this to indicate your device's keypad */ +#define HAVE_TOUCHSCREEN +#define HAVE_BUTTON_DATA + +/* define this if you have RTC RAM available for settings */ +//#define HAVE_RTC_RAM + +/* The number of bytes reserved for loadable codecs */ +#define CODEC_SIZE 0x100000 + +/* The number of bytes reserved for loadable plugins */ +#define PLUGIN_BUFFER_SIZE 0x80000 + +#define AB_REPEAT_ENABLE 1 + +/* Define this if you do software codec */ +#define CONFIG_CODEC SWCODEC + +#define CONFIG_KEYPAD COWON_D2_PAD +/* Use SDL audio/pcm in a SDL app build */ +#define HAVE_SDL + +#ifdef HAVE_SDL +#define HAVE_SDL_AUDIO +#endif + +/* Use WM8985 EQ1 & EQ5 as hardware tone controls */ +/* #define HAVE_SW_TONE_CONTROLS */ + +/* Define current usage levels. */ +#define CURRENT_NORMAL 88 /* 18 hours from a 1600 mAh battery */ +#define CURRENT_BACKLIGHT 30 /* TBD */ +#define CURRENT_RECORD 0 /* no recording yet */ + +/* Define this to the CPU frequency */ +/* +#define CPU_FREQ 48000000 +*/ + +/* Offset ( in the firmware file's header ) to the file CRC */ +#define FIRMWARE_OFFSET_FILE_CRC 0 + +/* Offset ( in the firmware file's header ) to the real data */ +#define FIRMWARE_OFFSET_FILE_DATA 8 + +#define CONFIG_LCD LCD_COWOND2 + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/target/hosted/sdl/app/adc-target.h b/firmware/target/hosted/sdl/app/adc-target.h new file mode 100644 index 0000000000..f8069be6f5 --- /dev/null +++ b/firmware/target/hosted/sdl/app/adc-target.h @@ -0,0 +1,25 @@ +/*************************************************************************** + * __________ __ ___. + * 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. + * + ****************************************************************************/ + +#ifndef __ADC_TARGET_H__ +#define __ADC_TARGET_H__ + +#endif /* __ADC_TARGET_H__ */ diff --git a/firmware/target/hosted/sdl/app/backlight-target.h b/firmware/target/hosted/sdl/app/backlight-target.h new file mode 100644 index 0000000000..f753e7c1dd --- /dev/null +++ b/firmware/target/hosted/sdl/app/backlight-target.h @@ -0,0 +1,25 @@ +/*************************************************************************** + * __________ __ ___. + * 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. + * + ****************************************************************************/ + +#ifndef __BACKLIGHT_TARGET_H__ +#define __BACKLIGHT_TARGET_H__ + +#endif /* __BACKLIGHT_TARGET_H__ */ diff --git a/firmware/target/hosted/sdl/app/button-application.c b/firmware/target/hosted/sdl/app/button-application.c new file mode 100644 index 0000000000..a27f769718 --- /dev/null +++ b/firmware/target/hosted/sdl/app/button-application.c @@ -0,0 +1,29 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2010 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. + * + ***************************************************9*************************/ + + +#include "button.h" + +int key_to_button(int keyboard_key) +{ + (void)keyboard_key; + return BUTTON_NONE; +} diff --git a/firmware/target/hosted/sdl/app/button-target.h b/firmware/target/hosted/sdl/app/button-target.h new file mode 100644 index 0000000000..54ae3a2fae --- /dev/null +++ b/firmware/target/hosted/sdl/app/button-target.h @@ -0,0 +1,68 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2007 by Rob Purchase + * + * 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. + * + ****************************************************************************/ + +#ifndef _BUTTON_TARGET_H_ +#define _BUTTON_TARGET_H_ + +#include <stdbool.h> +#include "config.h" +/* + +#define HAS_BUTTON_HOLD + +bool button_hold(void); +*/ +void button_init_device(void); +int button_read_device(int *data); + +/* Main unit's buttons */ +#define BUTTON_POWER 0x00000001 +#define BUTTON_PLUS 0x00000002 +#define BUTTON_MINUS 0x00000004 +#define BUTTON_MENU 0x00000008 + +/* Compatibility hacks for flipping. Needs a somewhat better fix. */ +#define BUTTON_LEFT BUTTON_MIDLEFT +#define BUTTON_RIGHT BUTTON_MIDRIGHT +#define BUTTON_UP BUTTON_TOPMIDDLE +#define BUTTON_DOWN BUTTON_BOTTOMMIDDLE + +/* Touch Screen Area Buttons */ +#define BUTTON_TOPLEFT 0x00000010 +#define BUTTON_TOPMIDDLE 0x00000020 +#define BUTTON_TOPRIGHT 0x00000040 +#define BUTTON_MIDLEFT 0x00000080 +#define BUTTON_CENTER 0x00000100 +#define BUTTON_MIDRIGHT 0x00000200 +#define BUTTON_BOTTOMLEFT 0x00000400 +#define BUTTON_BOTTOMMIDDLE 0x00000800 +#define BUTTON_BOTTOMRIGHT 0x00001000 + +#define BUTTON_MAIN 0x1FFF + +/* No remote */ +#define BUTTON_REMOTE 0 + +/* Software power-off */ +#define POWEROFF_BUTTON BUTTON_POWER +#define POWEROFF_COUNT 10 + +#endif /* _BUTTON_TARGET_H_ */ diff --git a/firmware/target/hosted/sdl/app/i2c-target.h b/firmware/target/hosted/sdl/app/i2c-target.h new file mode 100644 index 0000000000..89f0436b9e --- /dev/null +++ b/firmware/target/hosted/sdl/app/i2c-target.h @@ -0,0 +1,25 @@ +/*************************************************************************** + * __________ __ ___. + * 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. + * + ****************************************************************************/ + +#ifndef __I2C_TARGET_H__ +#define __I2C_TARGET_H__ + +#endif /* __I2C_TARGET_H__ */ diff --git a/firmware/target/hosted/sdl/app/usb-target.h b/firmware/target/hosted/sdl/app/usb-target.h new file mode 100644 index 0000000000..10e04677f9 --- /dev/null +++ b/firmware/target/hosted/sdl/app/usb-target.h @@ -0,0 +1,25 @@ +/*************************************************************************** + * __________ __ ___. + * 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. + * + ****************************************************************************/ + +#ifndef __USB_TARGET_H__ +#define __USB_TARGET_H__ + +#endif /* __USB_TARGET_H__ */ diff --git a/firmware/target/hosted/sdl/button-sdl.c b/firmware/target/hosted/sdl/button-sdl.c index 8b236c19f1..837c16c2ea 100644 --- a/firmware/target/hosted/sdl/button-sdl.c +++ b/firmware/target/hosted/sdl/button-sdl.c @@ -31,10 +31,8 @@ #include "misc.h" #include "button-sdl.h" #include "backlight.h" -#ifdef SIMULATOR #include "sim_tasks.h" #include "buttonmap.h" -#endif #include "debug.h" #ifdef HAVE_TOUCHSCREEN @@ -139,6 +137,7 @@ bool gui_message_loop(void) x = event.button.x; y = event.button.y; } +#ifdef SIMULATOR if ( background ) { xybutton = xy2button( event.button.x, event.button.y ); if( xybutton ) { @@ -146,6 +145,7 @@ bool gui_message_loop(void) break; } } +#endif #ifdef HAVE_TOUCHSCREEN touchscreen_event(event.button.x, event.button.y); #endif diff --git a/uisimulator/buttonmap/buttonmap.h b/firmware/target/hosted/sdl/buttonmap.h index 2f14cea9c4..e90b8a40d4 100644 --- a/uisimulator/buttonmap/buttonmap.h +++ b/firmware/target/hosted/sdl/buttonmap.h @@ -34,6 +34,7 @@ extern struct button_map bm[]; int xy2button( int x, int y); +/* for the sim, these function is implemented in uisimulator/buttonmap/ *.c */ int key_to_button(int keyboard_button); #ifdef HAVE_TOUCHSCREEN int key_to_touch(int keyboard_button, unsigned int mouse_coords); diff --git a/uisimulator/buttonmap/touchscreen.c b/firmware/target/hosted/sdl/key_to_touch-sdl.c index 90518c7c7e..90518c7c7e 100644 --- a/uisimulator/buttonmap/touchscreen.c +++ b/firmware/target/hosted/sdl/key_to_touch-sdl.c diff --git a/firmware/target/hosted/sdl/sim-ui-defines.h b/firmware/target/hosted/sdl/sim-ui-defines.h index 567a618fc3..926356dd9f 100644 --- a/firmware/target/hosted/sdl/sim-ui-defines.h +++ b/firmware/target/hosted/sdl/sim-ui-defines.h @@ -397,6 +397,13 @@ #define UI_LCD_POSX 101 #define UI_LCD_POSY 195 +#elif defined(APPLICATION) +#define UI_TITLE "Rockbox" +#define UI_LCD_POSX 0 +#define UI_LCD_POSY 0 +#define UI_WIDTH LCD_WIDTH +#define UI_HEIGHT LCD_HEIGHT + #elif defined(SIMULATOR) #error no UI defines #endif diff --git a/firmware/target/hosted/sdl/system-target.h b/firmware/target/hosted/sdl/system-target.h new file mode 100644 index 0000000000..31194fc33a --- /dev/null +++ b/firmware/target/hosted/sdl/system-target.h @@ -0,0 +1 @@ +#include "system-sdl.h" diff --git a/tools/buildzip.pl b/tools/buildzip.pl index aa25e26b13..f0a2c6a030 100755 --- a/tools/buildzip.pl +++ b/tools/buildzip.pl @@ -474,6 +474,7 @@ $year+=1900; # made once for all targets sub runone { my ($target, $fonts)=@_; + my $samedir = abs_path($install) == abs_path($rbdir); # build a full install .rockbox ($rbdir) directory buildzip($target, $fonts); @@ -498,14 +499,18 @@ sub runone { if ($install =~ /\/dev\/null/) { die "ERROR: No PREFIX given\n" } - system("cp -r $rbdir \"$install\" >/dev/null"); + if (!$samedir) { + system("cp -r $rbdir \"$install\" >/dev/null"); + } } else { system("$ziptool $output $rbdir $target >/dev/null"); } # remove the $rbdir afterwards - rmtree($rbdir); + if (!$samedir) { + rmtree($rbdir); + } }; if(!$exe) { diff --git a/tools/configure b/tools/configure index 79032c006e..1b88c30a6f 100755 --- a/tools/configure +++ b/tools/configure @@ -971,8 +971,9 @@ cat <<EOF 142) YH-925 ==Packard Bell== 130) Lyre proto 1 143) YP-S3 160) Vibe 500 131) Mini2440 - ==MPIO== - 170) HD200 + ==MPIO== == Application == + 170) HD200 200) SDL 320x240 + EOF buildfor=`input`; @@ -2600,6 +2601,28 @@ fi t_model="hd200" ;; + 200|app*) + target_id=100 + modelname="application" + target="-DAPPLICATION" + memory=32 + uname=`uname` + simcc "sdl" + tool="cp " + boottool="cp " + bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" + bmp2rb_native="$rootdir/tools/bmp2rb -f 4" + output="rockbox" + bootoutput="bootloader-cowond2.bin" + appextra="recorder:gui:radio" + plugins="" + swcodec="yes" + # architecture, manufacturer and model for the target-tree build + t_cpu="hosted" + t_manufacturer="sdl" + t_model="app" + ;; + *) echo "Please select a supported target platform!" exit 7 diff --git a/uisimulator/buttonmap/SOURCES b/uisimulator/buttonmap/SOURCES index f5a409b156..0fc9d16097 100644 --- a/uisimulator/buttonmap/SOURCES +++ b/uisimulator/buttonmap/SOURCES @@ -1,8 +1,5 @@ #ifdef SIMULATOR buttonmaps.c -#ifdef HAVE_TOUCHSCREEN -touchscreen.c -#endif #if CONFIG_KEYPAD == GIGABEAT_PAD gigabeat.c #elif CONFIG_KEYPAD == GIGABEAT_S_PAD diff --git a/uisimulator/common/SOURCES b/uisimulator/common/SOURCES index 4d7165a719..a30b5abeb2 100644 --- a/uisimulator/common/SOURCES +++ b/uisimulator/common/SOURCES @@ -1,13 +1,16 @@ -fmradio.c -io.c +#ifndef APPLICATION lcd-common.c #ifdef HAVE_LCD_CHARCELLS font-player.c lcd-playersim.c sim_icons.c #endif -sim_tasks.c -stubs.c -powermgmt-sim.c +fmradio.c backlight-sim.c +#endif +/* this is still needed for application since it has some stubs */ +powermgmt-sim.c +io.c +sim_tasks.c +stubs.c diff --git a/uisimulator/uisimulator.make b/uisimulator/uisimulator.make index 7efffe9b6c..b06b48c0d2 100644 --- a/uisimulator/uisimulator.make +++ b/uisimulator/uisimulator.make @@ -18,7 +18,11 @@ SIMOBJ = $(call c2obj,$(SIMSRC)) OTHER_SRC += $(SIMSRC) SIMLIB = $(BUILDDIR)/uisimulator/libuisimulator.a -UIBMP = $(BUILDDIR)/UI256.bmp +ifeq ($(MODELNAME), application) +UIBMP= +else +UIBMP=$(BUILDDIR)/UI256.bmp +endif .SECONDEXPANSION: # $$(OBJ) is not populated until after this |