Simulator for Samsung YP-R0

Enable simulator for the target ypr0 to
be built and used.

Change-Id: I1b080f07ab90f5c4856881d08ad70e1053bbb0c0
Reviewed-on: http://gerrit.rockbox.org/618
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
This commit is contained in:
Lorenzo Miori 2013-09-16 00:02:28 +02:00 committed by Frank Gevaerts
parent d13e5b964e
commit 9a8ed6ba35
7 changed files with 114 additions and 9 deletions

View file

@ -14,7 +14,7 @@ powermgmt.c
target/hosted/cpuinfo-linux.c target/hosted/cpuinfo-linux.c
#endif #endif
#ifndef SAMSUNG_YPR0 /* uses as3514 rtc */ #if !defined(SAMSUNG_YPR0) || defined(SIMULATOR) /* uses as3514 rtc */
target/hosted/rtc.c target/hosted/rtc.c
#endif #endif
@ -74,7 +74,7 @@ target/hosted/sdl/app/button-application.c
#endif #endif
#endif #endif
#ifdef SAMSUNG_YPR0 #if defined(SAMSUNG_YPR0) && !defined(SIMULATOR)
drivers/adc-as3514.c drivers/adc-as3514.c
drivers/lcd-memframe.c drivers/lcd-memframe.c
#if (CONFIG_RTC == RTC_AS3514) #if (CONFIG_RTC == RTC_AS3514)

View file

@ -5,16 +5,15 @@
/* We don't run on hardware directly */ /* We don't run on hardware directly */
/* YP-R0 need it too of course */ /* YP-R0 need it too of course */
#ifndef SIMULATOR
#define CONFIG_PLATFORM (PLATFORM_HOSTED) #define CONFIG_PLATFORM (PLATFORM_HOSTED)
#endif
/* For Rolo and boot loader */ /* For Rolo and boot loader */
#define MODEL_NUMBER 100 #define MODEL_NUMBER 100
#define MODEL_NAME "Samsung YP-R0" #define MODEL_NAME "Samsung YP-R0"
/*TODO: implement USB data transfer management -> see safe mode script and think a way to implemtent it in the code */
#define USB_NONE
/* define this if you have a bitmap LCD display */ /* define this if you have a bitmap LCD display */
#define HAVE_LCD_BITMAP #define HAVE_LCD_BITMAP
@ -90,6 +89,12 @@
#define CONFIG_KEYPAD SAMSUNG_YPR0_PAD #define CONFIG_KEYPAD SAMSUNG_YPR0_PAD
#define BUTTON_DRIVER_CLOSE #define BUTTON_DRIVER_CLOSE
/** Non-simulator section **/
#ifndef SIMULATOR
/*TODO: implement USB data transfer management -> see safe mode script and think a way to implemtent it in the code */
#define USB_NONE
/* The YPR0 has a as3534 codec */ /* The YPR0 has a as3534 codec */
#define HAVE_AS3514 #define HAVE_AS3514
#define HAVE_AS3543 #define HAVE_AS3543
@ -109,6 +114,12 @@
/* We have a GPIO pin that detects this */ /* We have a GPIO pin that detects this */
#define HAVE_HEADPHONE_DETECTION #define HAVE_HEADPHONE_DETECTION
/* Define current usage levels. */
#define CURRENT_NORMAL 24 /* ~25h, on 600mAh that's about 24mA */
#define CURRENT_BACKLIGHT 62 /* ~6,5h -> 92mA. Minus 24mA normal that gives us 68mA */
#endif /* SIMULATOR */
/* FIXME /* FIXME
* Lot of people reports bad battery life and funny charging times. * Lot of people reports bad battery life and funny charging times.
* Check what's going on... * Check what's going on...
@ -120,10 +131,6 @@
#define BATTERY_CAPACITY_INC 0 /* capacity increment */ #define BATTERY_CAPACITY_INC 0 /* capacity increment */
#define BATTERY_TYPES_COUNT 1 /* only one type */ #define BATTERY_TYPES_COUNT 1 /* only one type */
/* Define current usage levels. */
#define CURRENT_NORMAL 24 /* ~25h, on 600mAh that's about 24mA */
#define CURRENT_BACKLIGHT 62 /* ~6,5h -> 92mA. Minus 24mA normal that gives us 68mA */
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE #define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
/* Linux controlls charging, we can monitor */ /* Linux controlls charging, we can monitor */

View file

@ -473,6 +473,13 @@
#define UI_WIDTH LCD_WIDTH #define UI_WIDTH LCD_WIDTH
#define UI_HEIGHT LCD_HEIGHT #define UI_HEIGHT LCD_HEIGHT
#elif defined(SAMSUNG_YPR0)
#define UI_TITLE "Samsung YP-R0"
#define UI_WIDTH 313 /* width of GUI window */
#define UI_HEIGHT 560 /* height of GUI window */
#define UI_LCD_POSX 36
#define UI_LCD_POSY 37
#elif defined(SIMULATOR) #elif defined(SIMULATOR)
#error no UI defines #error no UI defines
#endif #endif

8
tools/configure vendored
View file

@ -3701,6 +3701,14 @@ if [ -z "$debug" ]; then
GCCOPTS="$GCCOPTS $GCCOPTIMIZE" GCCOPTS="$GCCOPTS $GCCOPTIMIZE"
fi fi
# if building a simulator for an hosted port, APPLICATION
# define clashes with SIMULATOR define
if [ "yes" = "$simulator" ]; then
echo Unsetting APPLICATION define for SIMULATOR build
unset application
fi
if [ "yes" = "$application" ]; then if [ "yes" = "$application" ]; then
echo Building Rockbox as an Application echo Building Rockbox as an Application
extradefines="$extradefines -DAPPLICATION" extradefines="$extradefines -DAPPLICATION"

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

View file

@ -75,5 +75,7 @@ creative-zenxfi2.c
sansa-connect.c sansa-connect.c
#elif CONFIG_KEYPAD == SONY_NWZ_PAD #elif CONFIG_KEYPAD == SONY_NWZ_PAD
sony-nwz.c sony-nwz.c
#elif CONFIG_KEYPAD == SAMSUNG_YPR0_PAD
samsung-ypr0.c
#endif #endif
#endif /* SIMULATOR */ #endif /* SIMULATOR */

View file

@ -0,0 +1,81 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2013 by Lorenzo Miori
*
* 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 <SDL.h>
#include "button.h"
#include "buttonmap.h"
int key_to_button(int keyboard_button)
{
int new_btn = BUTTON_NONE;
switch (keyboard_button)
{
case SDLK_KP4:
case SDLK_LEFT:
new_btn = BUTTON_LEFT;
break;
case SDLK_KP6:
case SDLK_RIGHT:
new_btn = BUTTON_RIGHT;
break;
case SDLK_KP8:
case SDLK_UP:
new_btn = BUTTON_UP;
break;
case SDLK_KP2:
case SDLK_DOWN:
new_btn = BUTTON_DOWN;
break;
case SDLK_PAGEUP:
case SDLK_KP9:
new_btn = BUTTON_MENU;
break;
case SDLK_KP7:
new_btn = BUTTON_BACK;
break;
case SDLK_KP5:
case SDLK_SPACE:
case SDLK_KP_ENTER:
case SDLK_RETURN:
new_btn = BUTTON_SELECT;
break;
case SDLK_KP3:
new_btn = BUTTON_POWER;
break;
case SDLK_KP1:
new_btn = BUTTON_USER;
break;
}
return new_btn;
}
struct button_map bm[] = {
{ SDLK_KP7, 66, 423, 25, "Back" },
{ SDLK_KP8, 152, 406, 25, "Up" },
{ SDLK_KP9, 249, 429, 25, "Menu" },
{ SDLK_KP4, 105, 451, 25, "Left" },
{ SDLK_KP5, 155, 450, 25, "Select" },
{ SDLK_KP6, 208, 449, 25, "Right" },
{ SDLK_KP1, 65, 484, 25, "User" },
{ SDLK_KP2, 154, 501, 25, "Down" },
{ SDLK_KP3, 248, 484, 25, "Power" },
{ 0, 0, 0, 0, "None" }
};