| /*************************************************************************** |
| * __________ __ ___. |
| * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| * \/ \/ \/ \/ \/ |
| * $Id$ |
| * |
| * Copyright (C) 2007 Nicolas Pennequin |
| * |
| * 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 _SKIN_TOKENS_H_ |
| #define _SKIN_TOKENS_H_ |
| |
| #include <stdbool.h> |
| |
| |
| enum wps_token_type { |
| |
| TOKEN_MARKER_CONTROL_TOKENS = -1, |
| WPS_NO_TOKEN = 0, /* for WPS tags we don't want to save as tokens */ |
| WPS_TOKEN_UNKNOWN, |
| |
| /* Markers */ |
| WPS_TOKEN_CHARACTER, |
| WPS_TOKEN_STRING, |
| WPS_TOKEN_TRANSLATEDSTRING, |
| |
| /* Alignment */ |
| WPS_TOKEN_ALIGN_LEFT, |
| WPS_TOKEN_ALIGN_LEFT_RTL, |
| WPS_TOKEN_ALIGN_CENTER, |
| WPS_TOKEN_ALIGN_RIGHT, |
| WPS_TOKEN_ALIGN_RIGHT_RTL, |
| |
| /* Sublines */ |
| WPS_TOKEN_SUBLINE_TIMEOUT, |
| |
| /* Conditional */ |
| WPS_TOKEN_CONDITIONAL, |
| WPS_TOKEN_CONDITIONAL_START, |
| WPS_TOKEN_CONDITIONAL_OPTION, |
| WPS_TOKEN_CONDITIONAL_END, |
| |
| /* Viewport display */ |
| WPS_VIEWPORT_ENABLE, |
| WPS_VIEWPORT_CUSTOMLIST, |
| WPS_TOKEN_UIVIEWPORT_ENABLE, |
| WPS_TOKEN_VIEWPORT_FGCOLOUR, |
| WPS_TOKEN_VIEWPORT_BGCOLOUR, |
| |
| /* Battery */ |
| TOKEN_MARKER_BATTERY, |
| WPS_TOKEN_BATTERY_PERCENT, |
| WPS_TOKEN_BATTERY_PERCENTBAR, |
| WPS_TOKEN_BATTERY_VOLTS, |
| WPS_TOKEN_BATTERY_TIME, |
| WPS_TOKEN_BATTERY_CHARGER_CONNECTED, |
| WPS_TOKEN_BATTERY_CHARGING, |
| WPS_TOKEN_BATTERY_SLEEPTIME, |
| WPS_TOKEN_USB_POWERED, |
| |
| /* Sound */ |
| TOKEN_MARKER_SOUND, |
| #if (CONFIG_CODEC != MAS3507D) |
| WPS_TOKEN_SOUND_PITCH, |
| #endif |
| #if (CONFIG_CODEC == SWCODEC) |
| WPS_TOKEN_SOUND_SPEED, |
| WPS_TOKEN_REPLAYGAIN, |
| WPS_TOKEN_CROSSFADE, |
| #endif |
| |
| /* Time */ |
| TOKEN_MARKER_RTC, |
| WPS_TOKEN_RTC_PRESENT, |
| |
| /* The begin/end values allow us to know if a token is an RTC one. |
| New RTC tokens should be added between the markers. */ |
| |
| WPS_TOKENS_RTC_BEGIN, /* just the start marker, not an actual token */ |
| |
| WPS_TOKEN_RTC_DAY_OF_MONTH, |
| WPS_TOKEN_RTC_DAY_OF_MONTH_BLANK_PADDED, |
| WPS_TOKEN_RTC_12HOUR_CFG, |
| WPS_TOKEN_RTC_HOUR_24_ZERO_PADDED, |
| WPS_TOKEN_RTC_HOUR_24, |
| WPS_TOKEN_RTC_HOUR_12_ZERO_PADDED, |
| WPS_TOKEN_RTC_HOUR_12, |
| WPS_TOKEN_RTC_MONTH, |
| WPS_TOKEN_RTC_MINUTE, |
| WPS_TOKEN_RTC_SECOND, |
| WPS_TOKEN_RTC_YEAR_2_DIGITS, |
| WPS_TOKEN_RTC_YEAR_4_DIGITS, |
| WPS_TOKEN_RTC_AM_PM_UPPER, |
| WPS_TOKEN_RTC_AM_PM_LOWER, |
| WPS_TOKEN_RTC_WEEKDAY_NAME, |
| WPS_TOKEN_RTC_MONTH_NAME, |
| WPS_TOKEN_RTC_DAY_OF_WEEK_START_MON, |
| WPS_TOKEN_RTC_DAY_OF_WEEK_START_SUN, |
| |
| WPS_TOKENS_RTC_END, /* just the end marker, not an actual token */ |
| |
| /* Database */ |
| TOKEN_MARKER_DATABASE, |
| #ifdef HAVE_TAGCACHE |
| WPS_TOKEN_DATABASE_PLAYCOUNT, |
| WPS_TOKEN_DATABASE_RATING, |
| WPS_TOKEN_DATABASE_AUTOSCORE, |
| #endif |
| |
| /* File */ |
| TOKEN_MARKER_FILE, |
| WPS_TOKEN_FILE_BITRATE, |
| WPS_TOKEN_FILE_CODEC, |
| WPS_TOKEN_FILE_FREQUENCY, |
| WPS_TOKEN_FILE_FREQUENCY_KHZ, |
| WPS_TOKEN_FILE_NAME, |
| WPS_TOKEN_FILE_NAME_WITH_EXTENSION, |
| WPS_TOKEN_FILE_PATH, |
| WPS_TOKEN_FILE_SIZE, |
| WPS_TOKEN_FILE_VBR, |
| WPS_TOKEN_FILE_DIRECTORY, |
| |
| /* Image */ |
| TOKEN_MARKER_IMAGES, |
| #ifdef HAVE_LCD_BITMAP |
| WPS_TOKEN_IMAGE_BACKDROP, |
| WPS_TOKEN_IMAGE_PROGRESS_BAR, |
| WPS_TOKEN_IMAGE_PRELOAD, |
| WPS_TOKEN_IMAGE_PRELOAD_DISPLAY, |
| WPS_TOKEN_IMAGE_DISPLAY, |
| #endif |
| |
| #ifdef HAVE_ALBUMART |
| /* Albumart */ |
| WPS_TOKEN_ALBUMART_DISPLAY, |
| WPS_TOKEN_ALBUMART_FOUND, |
| #endif |
| |
| /* Metadata */ |
| TOKEN_MARKER_METADATA, |
| WPS_TOKEN_METADATA_ARTIST, |
| WPS_TOKEN_METADATA_COMPOSER, |
| WPS_TOKEN_METADATA_ALBUM_ARTIST, |
| WPS_TOKEN_METADATA_GROUPING, |
| WPS_TOKEN_METADATA_ALBUM, |
| WPS_TOKEN_METADATA_GENRE, |
| WPS_TOKEN_METADATA_DISC_NUMBER, |
| WPS_TOKEN_METADATA_TRACK_NUMBER, |
| WPS_TOKEN_METADATA_TRACK_TITLE, |
| WPS_TOKEN_METADATA_VERSION, |
| WPS_TOKEN_METADATA_YEAR, |
| WPS_TOKEN_METADATA_COMMENT, |
| |
| TOKEN_MARKER_PLAYBACK_INFO, |
| /* Mode */ |
| WPS_TOKEN_REPEAT_MODE, |
| WPS_TOKEN_PLAYBACK_STATUS, |
| /* Progressbar */ |
| WPS_TOKEN_PROGRESSBAR, |
| #ifdef HAVE_LCD_CHARCELLS |
| WPS_TOKEN_PLAYER_PROGRESSBAR, |
| #endif |
| #ifdef HAVE_LCD_BITMAP |
| /* Peakmeter */ |
| WPS_TOKEN_PEAKMETER, |
| #endif |
| |
| /* Current track */ |
| WPS_TOKEN_TRACK_ELAPSED_PERCENT, |
| WPS_TOKEN_TRACK_TIME_ELAPSED, |
| WPS_TOKEN_TRACK_TIME_REMAINING, |
| WPS_TOKEN_TRACK_LENGTH, |
| WPS_TOKEN_TRACK_STARTING, |
| WPS_TOKEN_TRACK_ENDING, |
| |
| /* Playlist */ |
| TOKEN_MARKER_PLAYLIST, |
| WPS_TOKEN_PLAYLIST_ENTRIES, |
| WPS_TOKEN_PLAYLIST_NAME, |
| WPS_TOKEN_PLAYLIST_POSITION, |
| WPS_TOKEN_PLAYLIST_SHUFFLE, |
| |
| |
| /* buttons */ |
| TOKEN_MARKER_MISC, |
| WPS_TOKEN_DRAW_INBUILTBAR, |
| WPS_TOKEN_LIST_TITLE_TEXT, |
| WPS_TOKEN_LIST_TITLE_ICON, |
| WPS_TOKEN_BUTTON_VOLUME, |
| WPS_TOKEN_LASTTOUCH, |
| #if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD) |
| /* Virtual LED */ |
| WPS_TOKEN_VLED_HDD, |
| #endif |
| /* Volume level */ |
| WPS_TOKEN_VOLUME, |
| WPS_TOKEN_VOLUMEBAR, |
| /* hold */ |
| WPS_TOKEN_MAIN_HOLD, |
| #ifdef HAS_REMOTE_BUTTON_HOLD |
| WPS_TOKEN_REMOTE_HOLD, |
| #endif |
| |
| /* Setting option */ |
| WPS_TOKEN_SETTING, |
| WPS_TOKEN_CURRENT_SCREEN, |
| WPS_TOKEN_LANG_IS_RTL, |
| |
| /* Recording Tokens */ |
| TOKEN_MARKER_RECORDING, |
| WPS_TOKEN_HAVE_RECORDING, |
| WPS_TOKEN_IS_RECORDING, |
| WPS_TOKEN_REC_FREQ, |
| WPS_TOKEN_REC_ENCODER, |
| WPS_TOKEN_REC_BITRATE, /* SWCODEC: MP3 bitrate, HWCODEC: MP3 "quality" */ |
| WPS_TOKEN_REC_MONO, |
| WPS_TOKEN_REC_SECONDS, |
| WPS_TOKEN_REC_MINUTES, |
| WPS_TOKEN_REC_HOURS, |
| |
| |
| /* Radio Tokens */ |
| TOKEN_MARKER_TUNER, |
| WPS_TOKEN_HAVE_TUNER, |
| #if CONFIG_TUNER |
| WPS_TOKEN_TUNER_TUNED, |
| WPS_TOKEN_TUNER_SCANMODE, |
| WPS_TOKEN_TUNER_STEREO, |
| WPS_TOKEN_TUNER_MINFREQ, /* changes based on "region" */ |
| WPS_TOKEN_TUNER_MAXFREQ, /* changes based on "region" */ |
| WPS_TOKEN_TUNER_CURFREQ, |
| WPS_TOKEN_PRESET_ID, /* "id" of this preset.. really the array element number */ |
| WPS_TOKEN_PRESET_NAME, |
| WPS_TOKEN_PRESET_FREQ, |
| WPS_TOKEN_PRESET_COUNT, |
| /* RDS tokens */ |
| WPS_TOKEN_HAVE_RDS, |
| #ifdef HAVE_RDS_CAP |
| WPS_TOKEN_RDS_NAME, |
| WPS_TOKEN_RDS_TEXT, |
| #endif |
| #endif /* CONFIG_TUNER */ |
| |
| |
| TOKEN_MARKER_END, /* this needs to be the last value in this enum */ |
| }; |
| |
| struct wps_token { |
| unsigned char type; /* enough to store the token type */ |
| |
| /* Whether the tag (e.g. track name or the album) refers the |
| current or the next song (false=current, true=next) */ |
| bool next; |
| |
| union { |
| char c; |
| unsigned short i; |
| void* data; |
| } value; |
| }; |
| |
| struct skin_token_list { |
| struct wps_token *token; |
| struct skin_token_list *next; |
| }; |
| |
| char* get_dir(char* buf, int buf_size, const char* path, int level); |
| |
| #endif |