Something went wrong. Try again.
A modern, network-enabled music player platform built on Rockbox technology. rockboxd.tsiry-sandratraina.com
rust deno navidrome airplay libadwaita zig mpris snapcast mpd rockbox audio subsonic
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * * Copyright (C) 2020 by William Wilgus * * 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 OPEN_PLUGIN_H#define OPEN_PLUGIN_H
/* Open_plugin module * OP stores and retrieves plugin path and parameters by key * from a dictionary file * * plugins can load other plugins * return rb->plugin_open(path, parameter); */
#ifndef __PCTOOL__/* open_plugin path lookup */#define OPEN_PLUGIN_DAT PLUGIN_DIR "/plugin.dat"#define OPEN_RBPLUGIN_DAT PLUGIN_DIR "/rb_plugins.dat"#define OPEN_PLUGIN_BUFSZ MAX_PATH#define OPEN_PLUGIN_NAMESZ 32#define OPEN_PLUGIN_CFGNAME "openplugin"
enum { OPEN_PLUGIN_LANG_INVALID = (-1), OPEN_PLUGIN_LANG_IGNORE = (-2), OPEN_PLUGIN_LANG_IGNOREALL = (-3), OPEN_PLUGIN_INVALID_ENTRY = (-1), OPEN_PLUGIN_NOT_FOUND = (-2), OPEN_PLUGIN_NEEDS_FLUSHED = (-3),};
struct open_plugin_entry_t{/* hash lang_id checksum need to be the first items */ uint32_t hash; int32_t lang_id; uint32_t checksum; char name[OPEN_PLUGIN_NAMESZ+1]; /*char key[OPEN_PLUGIN_BUFSZ+1];*/ char path[OPEN_PLUGIN_BUFSZ+1]; char param[OPEN_PLUGIN_BUFSZ+1];};
#define OPEN_PLUGIN_CHECKSUM (uint32_t) \( \ (sizeof(struct open_plugin_entry_t) << 16) + \ offsetof(struct open_plugin_entry_t, hash) + \ offsetof(struct open_plugin_entry_t, lang_id) + \ offsetof(struct open_plugin_entry_t, checksum) + \ offsetof(struct open_plugin_entry_t, name) + \ offsetof(struct open_plugin_entry_t, path) + \ offsetof(struct open_plugin_entry_t, param))
#define OPEN_PLUGIN_SEED 0x811C9DC5; //seed, 2166136261;inline static void open_plugin_get_hash(const char *key, uint32_t *hash){ /* Calculate modified FNV1a hash of string */ const uint32_t p = 16777619; *hash = OPEN_PLUGIN_SEED; while(*key) *hash = (*key++ ^ *hash) * p;}
#ifndef PLUGINstruct open_plugin_entry_t* open_plugin_get_entry(void);uint32_t open_plugin_add_path(const char *key, const char *plugin, const char *parameter);int open_plugin_load_entry(const char *key);void open_plugin_browse(const char *key);int open_plugin_run(const char *key);void open_plugin_cache_flush(void); /* flush to disk */void open_plugin_import(const char *cfg_file);void open_plugin_export(int cfg_fd);#endif
#endif /*ndef __PCTOOL__ */#endif /* OPEN_PLUGIN_H */