From 6392e05476ab45f973dea611082d4dbcfe3db7cf Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Sat, 20 Jul 2019 04:46:14 -0500 Subject: [PATCH] Plugin API Reorganize Plugin functions in prep for API bump Stub in sound_current add sleep_timer Change-Id: I74b3a433c86bd6cec43a7c45ae0d2db95c97bb60 --- apps/plugin.c | 210 +++++++++++++++++++++++++-------------------- apps/plugin.h | 229 ++++++++++++++++++++++++++------------------------ 2 files changed, 239 insertions(+), 200 deletions(-) diff --git a/apps/plugin.c b/apps/plugin.c index 7d4199a607..12bfe485e5 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -84,7 +84,7 @@ char *plugin_get_current_filename(void); static void* plugin_get_audio_buffer(size_t *buffer_size); static void plugin_release_audio_buffer(void); static void plugin_tsr(bool (*exit_callback)(bool)); - +int sound_current(int setting); /*stub*/ #ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE /* File handle leak prophylaxis */ @@ -182,6 +182,8 @@ static const struct plugin_api rockbox_api = { language_strings, /* lcd */ + splash, + splashf, #ifdef HAVE_LCD_CONTRAST lcd_set_contrast, #endif @@ -203,7 +205,7 @@ static const struct plugin_api rockbox_api = { lcd_remove_cursor, lcd_icon, lcd_double_height, -#else +#else /* HAVE_LCD_BITMAP */ &lcd_static_framebuffer[0][0], lcd_set_viewport, lcd_set_framebuffer, @@ -274,20 +276,6 @@ static const struct plugin_api rockbox_api = { gui_scrollbar_draw, #endif /* HAVE_LCD_BITMAP */ - backlight_on, - backlight_off, - backlight_set_timeout, -#ifdef HAVE_BACKLIGHT_BRIGHTNESS - backlight_set_brightness, -#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ - -#if CONFIG_CHARGING - backlight_set_timeout_plugged, -#endif - is_backlight_on, - splash, - splashf, - #ifdef HAVE_REMOTE_LCD /* remote lcd */ lcd_remote_set_contrast, @@ -311,20 +299,7 @@ static const struct plugin_api rockbox_api = { &lcd_remote_static_framebuffer[0][0], lcd_remote_update, lcd_remote_update_rect, - - remote_backlight_on, - remote_backlight_off, - remote_backlight_set_timeout, -#if CONFIG_CHARGING - remote_backlight_set_timeout_plugged, -#endif -#endif /* HAVE_REMOTE_LCD */ -#if NB_SCREENS == 2 - {&screens[SCREEN_MAIN], &screens[SCREEN_REMOTE]}, -#else - {&screens[SCREEN_MAIN]}, -#endif -#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) +#if (LCD_REMOTE_DEPTH > 1) lcd_remote_set_foreground, lcd_remote_get_foreground, lcd_remote_set_background, @@ -332,6 +307,13 @@ static const struct plugin_api rockbox_api = { lcd_remote_bitmap_part, lcd_remote_bitmap, #endif +#endif /* HAVE_REMOTE_LCD */ +#if NB_SCREENS == 2 + {&screens[SCREEN_MAIN], &screens[SCREEN_REMOTE]}, +#else + {&screens[SCREEN_MAIN]}, +#endif + viewport_set_defaults, #ifdef HAVE_LCD_BITMAP viewportmanager_theme_enable, @@ -339,6 +321,35 @@ static const struct plugin_api rockbox_api = { viewport_set_fullscreen, #endif + /* lcd backlight */ + /* The backlight_* functions must be present in the API regardless whether + * HAVE_BACKLIGHT is defined or not. The reason is that the stock Ondio has + * no backlight but can be modded to have backlight (it's prepared on the + * PCB). This makes backlight an all-target feature API wise, and keeps API + * compatible between stock and modded Ondio. + * For OLED targets like the Sansa Clip, the backlight_* functions control + * the display enable, which has essentially the same effect. */ + is_backlight_on, + backlight_on, + backlight_off, + backlight_set_timeout, +#ifdef HAVE_BACKLIGHT_BRIGHTNESS + backlight_set_brightness, +#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + +#if CONFIG_CHARGING + backlight_set_timeout_plugged, +#endif + +#ifdef HAVE_REMOTE_LCD + remote_backlight_on, + remote_backlight_off, + remote_backlight_set_timeout, +#if CONFIG_CHARGING + remote_backlight_set_timeout_plugged, +#endif +#endif /* HAVE_REMOTE_LCD */ + /* list */ gui_synclist_init, gui_synclist_set_nb_items, @@ -358,6 +369,14 @@ static const struct plugin_api rockbox_api = { simplelist_info_init, simplelist_show_list, + /* action handling */ + get_custom_action, + get_action, +#ifdef HAVE_TOUCHSCREEN + action_get_touchscreen_press, +#endif + action_userabort, + /* button */ button_get, button_get_w_tmo, @@ -426,6 +445,11 @@ static const struct plugin_api rockbox_api = { /* browsing */ browse_context_init, rockbox_browse, + tree_get_context, + tree_get_entries, + tree_get_entry_at, + set_current_file, + set_dirfilter, /* talking */ talk_id, @@ -464,8 +488,14 @@ static const struct plugin_api rockbox_api = { mutex_lock, mutex_unlock, #endif - +#ifdef HAVE_SEMAPHORE_OBJECTS + semaphore_init, + semaphore_wait, + semaphore_release, +#endif reset_poweroff_timer, + set_sleeptimer_duration, /*stub*/ + get_sleep_timer, /*stub*/ #if (CONFIG_PLATFORM & PLATFORM_NATIVE) system_memory_guard, &cpu_frequency, @@ -507,10 +537,7 @@ static const struct plugin_api rockbox_api = { queue_send, queue_reply, #endif - usb_acknowledge, -#ifdef USB_ENABLE_HID - usb_hid_send, -#endif + #ifdef RB_PROFILE profile_thread, profstop, @@ -578,6 +605,7 @@ static const struct plugin_api rockbox_api = { /* sound */ sound_set, + sound_current, /*stub*/ sound_default, sound_min, sound_max, @@ -586,6 +614,10 @@ static const struct plugin_api rockbox_api = { #ifdef AUDIOHW_HAVE_EQ sound_enum_hw_eq_band_setting, #endif +#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \ + (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL) + sound_set_pitch, +#endif #if (CONFIG_PLATFORM & PLATFORM_NATIVE) mp3_play_data, mp3_play_pause, @@ -650,6 +682,37 @@ static const struct plugin_api rockbox_api = { system_sound_play, keyclick_click, #endif /* CONFIG_CODEC == SWCODEC */ + +#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) + peak_meter_scale_value, + peak_meter_set_use_dbfs, + peak_meter_get_use_dbfs, +#endif + + + /* metadata */ + get_metadata, + mp3info, + count_mp3_frames, + create_xing_header, + find_next_frame, +#ifdef HAVE_TAGCACHE + tagcache_search, + tagcache_search_set_uniqbuf, + tagcache_search_add_filter, + tagcache_get_next, + tagcache_retrieve, + tagcache_search_finish, + tagcache_get_numeric, +#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) + tagcache_fill_tags, +#endif +#endif /* HAVE_TAGCACHE */ + +#ifdef HAVE_ALBUMART + search_albumart_files, +#endif + /* playback control */ playlist_amount, playlist_resume, @@ -677,10 +740,6 @@ static const struct plugin_api rockbox_api = { #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) mpeg_get_last_header, #endif -#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \ - (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL) - sound_set_pitch, -#endif #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) /* MAS communication */ @@ -722,14 +781,6 @@ static const struct plugin_api rockbox_api = { set_color, #endif - /* action handling */ - get_custom_action, - get_action, -#ifdef HAVE_TOUCHSCREEN - action_get_touchscreen_press, -#endif - action_userabort, - /* power */ battery_level, battery_level_safe, @@ -741,8 +792,12 @@ static const struct plugin_api rockbox_api = { charging_state, # endif #endif + /* usb */ usb_inserted, - + usb_acknowledge, +#ifdef USB_ENABLE_HID + usb_hid_send, +#endif /* misc */ #if (CONFIG_PLATFORM & PLATFORM_NATIVE) __errno, @@ -757,14 +812,7 @@ static const struct plugin_api rockbox_api = { #if CONFIG_RTC mktime, #endif - plugin_get_buffer, - plugin_get_audio_buffer, /* defined in plugin.c */ - plugin_release_audio_buffer, /* defined in plugin.c */ - plugin_tsr, /* defined in plugin.c */ - plugin_get_current_filename, -#ifdef PLUGIN_USE_IRAM - audio_hard_stop, -#endif + #if defined(DEBUG) || defined(SIMULATOR) debugf, #endif @@ -781,16 +829,7 @@ static const struct plugin_api rockbox_api = { remove_array_ptr, round_value_to_list32, #endif /* CONFIG_CODEC == SWCODEC */ - get_metadata, - mp3info, - count_mp3_frames, - create_xing_header, - find_next_frame, -#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) - peak_meter_scale_value, - peak_meter_set_use_dbfs, - peak_meter_get_use_dbfs, -#endif + #ifdef HAVE_LCD_BITMAP read_bmp_file, read_bmp_fd, @@ -801,11 +840,6 @@ static const struct plugin_api rockbox_api = { screen_dump_set_hook, #endif show_logo, - tree_get_context, - tree_get_entries, - tree_get_entry_at, - set_current_file, - set_dirfilter, #ifdef HAVE_WHEEL_POSITION wheel_status, @@ -819,27 +853,15 @@ static const struct plugin_api rockbox_api = { detect_flashed_romimage, #endif led, -#ifdef HAVE_TAGCACHE - tagcache_search, - tagcache_search_set_uniqbuf, - tagcache_search_add_filter, - tagcache_get_next, - tagcache_retrieve, - tagcache_search_finish, - tagcache_get_numeric, -#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) - tagcache_fill_tags, -#endif -#endif -#ifdef HAVE_ALBUMART - search_albumart_files, -#endif - -#ifdef HAVE_SEMAPHORE_OBJECTS - semaphore_init, - semaphore_wait, - semaphore_release, + /*plugin*/ + plugin_get_buffer, + plugin_get_audio_buffer, /* defined in plugin.c */ + plugin_release_audio_buffer, /* defined in plugin.c */ + plugin_tsr, /* defined in plugin.c */ + plugin_get_current_filename, +#ifdef PLUGIN_USE_IRAM + audio_hard_stop, #endif /* new stuff at the end, sort into place next time @@ -1060,3 +1082,9 @@ char *plugin_get_current_filename(void) { return current_plugin; } + +int sound_current(int setting) /*stub*/ +{ + (void) setting; + return 0; +} diff --git a/apps/plugin.h b/apps/plugin.h index 50f71914e9..083dac0335 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -189,13 +189,14 @@ enum plugin_status { version */ struct plugin_api { - /* let's put these at the top */ const char *rbversion; struct user_settings* global_settings; struct system_status *global_status; unsigned char **language_strings; /* lcd */ + void (*splash)(int ticks, const char *str); + void (*splashf)(int ticks, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); #ifdef HAVE_LCD_CONTRAST void (*lcd_set_contrast)(int x); #endif @@ -307,27 +308,6 @@ struct plugin_api { int min_shown, int max_shown, unsigned flags); #endif /* HAVE_LCD_BITMAP */ - /* backlight */ - /* The backlight_* functions must be present in the API regardless whether - * HAVE_BACKLIGHT is defined or not. The reason is that the stock Ondio has - * no backlight but can be modded to have backlight (it's prepared on the - * PCB). This makes backlight an all-target feature API wise, and keeps API - * compatible between stock and modded Ondio. - * For OLED targets like the Sansa Clip, the backlight_* functions control - * the display enable, which has essentially the same effect. */ - void (*backlight_on)(void); - void (*backlight_off)(void); - void (*backlight_set_timeout)(int index); -#ifdef HAVE_BACKLIGHT_BRIGHTNESS - void (*backlight_set_brightness)(int val); -#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ - -#if CONFIG_CHARGING - void (*backlight_set_timeout_plugged)(int index); -#endif - bool (*is_backlight_on)(bool ignore_always_off); - void (*splash)(int ticks, const char *str); - void (*splashf)(int ticks, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); #ifdef HAVE_REMOTE_LCD /* remote lcd */ @@ -355,16 +335,7 @@ struct plugin_api { fb_remote_data* lcd_remote_framebuffer; void (*lcd_remote_update)(void); void (*lcd_remote_update_rect)(int x, int y, int width, int height); - - void (*remote_backlight_on)(void); - void (*remote_backlight_off)(void); - void (*remote_backlight_set_timeout)(int index); -#if CONFIG_CHARGING - void (*remote_backlight_set_timeout_plugged)(int index); -#endif -#endif /* HAVE_REMOTE_LCD */ - struct screen* screens[NB_SCREENS]; -#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) +#if (LCD_REMOTE_DEPTH > 1) void (*lcd_remote_set_foreground)(unsigned foreground); unsigned (*lcd_remote_get_foreground)(void); void (*lcd_remote_set_background)(unsigned background); @@ -375,6 +346,9 @@ struct plugin_api { void (*lcd_remote_bitmap)(const fb_remote_data *src, int x, int y, int width, int height); #endif +#endif /* HAVE_REMOTE_LCD */ + struct screen* screens[NB_SCREENS]; + void (*viewport_set_defaults)(struct viewport *vp, const enum screen_type screen); #ifdef HAVE_LCD_BITMAP @@ -384,6 +358,36 @@ struct plugin_api { void (*viewport_set_fullscreen)(struct viewport *vp, const enum screen_type screen); #endif + + /* lcd backlight */ + /* The backlight_* functions must be present in the API regardless whether + * HAVE_BACKLIGHT is defined or not. The reason is that the stock Ondio has + * no backlight but can be modded to have backlight (it's prepared on the + * PCB). This makes backlight an all-target feature API wise, and keeps API + * compatible between stock and modded Ondio. + * For OLED targets like the Sansa Clip, the backlight_* functions control + * the display enable, which has essentially the same effect. */ + bool (*is_backlight_on)(bool ignore_always_off); + void (*backlight_on)(void); + void (*backlight_off)(void); + void (*backlight_set_timeout)(int index); +#ifdef HAVE_BACKLIGHT_BRIGHTNESS + void (*backlight_set_brightness)(int val); +#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + +#if CONFIG_CHARGING + void (*backlight_set_timeout_plugged)(int index); +#endif + +#ifdef HAVE_REMOTE_LCD + void (*remote_backlight_on)(void); + void (*remote_backlight_off)(void); + void (*remote_backlight_set_timeout)(int index); +#if CONFIG_CHARGING + void (*remote_backlight_set_timeout_plugged)(int index); +#endif +#endif /* HAVE_REMOTE_LCD */ + /* list */ void (*gui_synclist_init)(struct gui_synclist * lists, list_get_name callback_get_item_name, void * data, @@ -413,6 +417,15 @@ struct plugin_api { int count, void* data); bool (*simplelist_show_list)(struct simplelist_info *info); + /* action handling */ + int (*get_custom_action)(int context,int timeout, + const struct button_mapping* (*get_context_map)(int)); + int (*get_action)(int context, int timeout); +#ifdef HAVE_TOUCHSCREEN + int (*action_get_touchscreen_press)(short *x, short *y); +#endif + bool (*action_userabort)(int timeout); + /* button */ long (*button_get)(bool block); long (*button_get_w_tmo)(int ticks); @@ -486,6 +499,12 @@ struct plugin_api { char *title, enum themable_icons icon, const char *root, const char *selected); int (*rockbox_browse)(struct browse_context *browse); + struct tree_context* (*tree_get_context)(void); + struct entry* (*tree_get_entries)(struct tree_context* t); + struct entry* (*tree_get_entry_at)(struct tree_context* t, int index); + + void (*set_current_file)(const char* path); + void (*set_dirfilter)(int l_dirfilter); /* talking */ int (*talk_id)(int32_t id, bool enqueue); @@ -532,8 +551,14 @@ struct plugin_api { void (*mutex_lock)(struct mutex *m); void (*mutex_unlock)(struct mutex *m); #endif - +#ifdef HAVE_SEMAPHORE_OBJECTS + void (*semaphore_init)(struct semaphore *s, int max, int start); + int (*semaphore_wait)(struct semaphore *s, int timeout); + void (*semaphore_release)(struct semaphore *s); +#endif void (*reset_poweroff_timer)(void); + void (*set_sleeptimer_duration)(int minutes); + int (*get_sleep_timer)(void); #if (CONFIG_PLATFORM & PLATFORM_NATIVE) int (*system_memory_guard)(int newmode); long *cpu_frequency; @@ -582,10 +607,6 @@ struct plugin_api { void (*queue_reply)(struct event_queue *q, intptr_t retval); #endif /* CONFIG_CODEC == SWCODEC */ - void (*usb_acknowledge)(long id); -#ifdef USB_ENABLE_HID - void (*usb_hid_send)(usage_page_t usage_page, int id); -#endif #ifdef RB_PROFILE void (*profile_thread)(void); void (*profstop)(void); @@ -658,6 +679,7 @@ struct plugin_api { /* sound */ void (*sound_set)(int setting, int value); + int (*sound_current)(int setting); /*stub*/ int (*sound_default)(int setting); int (*sound_min)(int setting); int (*sound_max)(int setting); @@ -667,6 +689,10 @@ struct plugin_api { int (*sound_enum_hw_eq_band_setting)(unsigned int band, unsigned int band_setting); #endif /* AUDIOHW_HAVE_EQ */ +#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \ + (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL) + void (*sound_set_pitch)(int32_t pitch); +#endif #if (CONFIG_PLATFORM & PLATFORM_NATIVE) void (*mp3_play_data)(const void* start, size_t size, mp3_play_callback_t get_more); @@ -743,7 +769,48 @@ struct plugin_api { void (*pcmbuf_fade)(bool fade, bool in); void (*system_sound_play)(enum system_sound sound); void (*keyclick_click)(bool rawbutton, int action); -#endif /* CONFIG_CODEC == SWCODC */ +#endif /* CONFIG_CODEC == SWCODEC */ + +#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) + unsigned short (*peak_meter_scale_value)(unsigned short val, + int meterwidth); + void (*peak_meter_set_use_dbfs)(bool use); + bool (*peak_meter_get_use_dbfs)(void); +#endif + + /* metadata */ + bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname); + bool (*mp3info)(struct mp3entry *entry, const char *filename); + int (*count_mp3_frames)(int fd, int startpos, int filesize, + void (*progressfunc)(int), + unsigned char* buf, size_t buflen); + int (*create_xing_header)(int fd, long startpos, long filesize, + unsigned char *buf, unsigned long num_frames, + unsigned long rec_time, unsigned long header_template, + void (*progressfunc)(int), bool generate_toc, + unsigned char* tempbuf, size_t tempbuf_len); + unsigned long (*find_next_frame)(int fd, long *offset, + long max_offset, unsigned long reference_header); +#ifdef HAVE_TAGCACHE + bool (*tagcache_search)(struct tagcache_search *tcs, int tag); + void (*tagcache_search_set_uniqbuf)(struct tagcache_search *tcs, + void *buffer, long length); + bool (*tagcache_search_add_filter)(struct tagcache_search *tcs, + int tag, int seek); + bool (*tagcache_get_next)(struct tagcache_search *tcs); + bool (*tagcache_retrieve)(struct tagcache_search *tcs, int idxid, + int tag, char *buf, long size); + void (*tagcache_search_finish)(struct tagcache_search *tcs); + long (*tagcache_get_numeric)(const struct tagcache_search *tcs, int tag); +#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) + bool (*tagcache_fill_tags)(struct mp3entry *id3, const char *filename); +#endif +#endif /* HAVE_TAGCACHE */ + +#ifdef HAVE_ALBUMART + bool (*search_albumart_files)(const struct mp3entry *id3, const char *size_string, + char *buf, int buflen); +#endif /* playback control */ int (*playlist_amount)(void); @@ -777,10 +844,6 @@ struct plugin_api { #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) unsigned long (*mpeg_get_last_header)(void); #endif -#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \ - (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL) - void (*sound_set_pitch)(int32_t pitch); -#endif /* MAS communication */ #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) @@ -795,7 +858,7 @@ struct plugin_api { void (*i2c_end)(void); int (*i2c_write)(int address, const unsigned char* buf, int count ); #endif -#endif +#endif /* !SIMULATOR && CONFIG_CODEC != SWCODEC */ /* menu */ struct menu_table *(*root_menu_get_options)(int *nb_options); @@ -805,7 +868,7 @@ struct plugin_api { char* (*root_menu_write_to_cfg)(void* setting, char*buf, int buf_len); void (*root_menu_load_from_cfg)(void* setting, char *value); - /* scroll bar */ + /* statusbars */ struct gui_syncstatusbar *statusbars; void (*gui_syncstatusbar_draw)(struct gui_syncstatusbar * bars, bool force_redraw); @@ -838,14 +901,6 @@ struct plugin_api { bool (*set_color)(struct screen *display, char *title, unsigned *color, unsigned banned_color); #endif - /* action handling */ - int (*get_custom_action)(int context,int timeout, - const struct button_mapping* (*get_context_map)(int)); - int (*get_action)(int context, int timeout); -#ifdef HAVE_TOUCHSCREEN - int (*action_get_touchscreen_press)(short *x, short *y); -#endif - bool (*action_userabort)(int timeout); /* power */ int (*battery_level)(void); @@ -860,7 +915,10 @@ struct plugin_api { #endif /* usb */ bool (*usb_inserted)(void); - + void (*usb_acknowledge)(long id); +#ifdef USB_ENABLE_HID + void (*usb_hid_send)(usage_page_t usage_page, int id); +#endif /* misc */ #if (CONFIG_PLATFORM & PLATFORM_NATIVE) int * (*__errno)(void); @@ -876,14 +934,7 @@ struct plugin_api { #if CONFIG_RTC time_t (*mktime)(struct tm *t); #endif - void* (*plugin_get_buffer)(size_t *buffer_size); - void* (*plugin_get_audio_buffer)(size_t *buffer_size); - void (*plugin_release_audio_buffer)(void); - void (*plugin_tsr)(bool (*exit_callback)(bool reenter)); - char* (*plugin_get_current_filename)(void); -#ifdef PLUGIN_USE_IRAM - void (*audio_hard_stop)(void); -#endif + #if defined(DEBUG) || defined(SIMULATOR) void (*debugf)(const char *fmt, ...) ATTRIBUTE_PRINTF(1, 2); #endif @@ -904,25 +955,7 @@ struct plugin_api { int count, bool signd); #endif /* CONFIG_CODEC == SWCODEC */ - bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname); - bool (*mp3info)(struct mp3entry *entry, const char *filename); - int (*count_mp3_frames)(int fd, int startpos, int filesize, - void (*progressfunc)(int), - unsigned char* buf, size_t buflen); - int (*create_xing_header)(int fd, long startpos, long filesize, - unsigned char *buf, unsigned long num_frames, - unsigned long rec_time, unsigned long header_template, - void (*progressfunc)(int), bool generate_toc, - unsigned char* tempbuf, size_t tempbuf_len); - unsigned long (*find_next_frame)(int fd, long *offset, - long max_offset, unsigned long reference_header); -#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) - unsigned short (*peak_meter_scale_value)(unsigned short val, - int meterwidth); - void (*peak_meter_set_use_dbfs)(bool use); - bool (*peak_meter_get_use_dbfs)(void); -#endif #ifdef HAVE_LCD_BITMAP int (*read_bmp_file)(const char* filename, struct bitmap *bm, int maxsize, int format, const struct custom_format *cformat); @@ -937,12 +970,6 @@ struct plugin_api { void (*screen_dump_set_hook)(void (*hook)(int fh)); #endif int (*show_logo)(void); - struct tree_context* (*tree_get_context)(void); - struct entry* (*tree_get_entries)(struct tree_context* t); - struct entry* (*tree_get_entry_at)(struct tree_context* t, int index); - - void (*set_current_file)(const char* path); - void (*set_dirfilter)(int l_dirfilter); #ifdef HAVE_WHEEL_POSITION int (*wheel_status)(void); @@ -958,32 +985,16 @@ struct plugin_api { void (*led)(bool on); -#ifdef HAVE_TAGCACHE - bool (*tagcache_search)(struct tagcache_search *tcs, int tag); - void (*tagcache_search_set_uniqbuf)(struct tagcache_search *tcs, - void *buffer, long length); - bool (*tagcache_search_add_filter)(struct tagcache_search *tcs, - int tag, int seek); - bool (*tagcache_get_next)(struct tagcache_search *tcs); - bool (*tagcache_retrieve)(struct tagcache_search *tcs, int idxid, - int tag, char *buf, long size); - void (*tagcache_search_finish)(struct tagcache_search *tcs); - long (*tagcache_get_numeric)(const struct tagcache_search *tcs, int tag); -#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) - bool (*tagcache_fill_tags)(struct mp3entry *id3, const char *filename); -#endif + /*plugin*/ + void* (*plugin_get_buffer)(size_t *buffer_size); + void* (*plugin_get_audio_buffer)(size_t *buffer_size); + void (*plugin_release_audio_buffer)(void); + void (*plugin_tsr)(bool (*exit_callback)(bool reenter)); + char* (*plugin_get_current_filename)(void); +#ifdef PLUGIN_USE_IRAM + void (*audio_hard_stop)(void); #endif -#ifdef HAVE_ALBUMART - bool (*search_albumart_files)(const struct mp3entry *id3, const char *size_string, - char *buf, int buflen); -#endif - -#ifdef HAVE_SEMAPHORE_OBJECTS - void (*semaphore_init)(struct semaphore *s, int max, int start); - int (*semaphore_wait)(struct semaphore *s, int timeout); - void (*semaphore_release)(struct semaphore *s); -#endif /* new stuff at the end, sort into place next time the API gets incompatible */