#ifndef __VSHCTRL_H__
#define __VSHCTRL_H__

/**
 * This api is for vsh menu. (flash0:/vsh/module/satelite.prx)
 *
 * The vsh menu is an user mode module, and because of this, these functions are
 * only available to user mode.
*/

/**
 * Registers the vsh menu.
 * When HOME is pressed, vshctrl will load the satelite module.
 * In module_start, call this function to register the vsh menu.
 *
 * @param ctrl - The function that will be executed each time 
 * the system calls ReadBufferPositive. Despite satelite.prx being
 * an user module, this function will be executed in kernel mode.
 *
 * @returns 0 on success, < 0 on error.
*/
int vctrlVSHRegisterVshMenu(int (* ctrl)(SceCtrlData *, int));

/**
 * Exits the vsh menu. 
 * vshmenu module must call this module after destroying vsh menu display and 
 * freeing resources.
 *
 * vshmenu module doesn't need to stop-unload itself, as that is vshctrl job. 
 *
 * @param conf - Indicates the new config. vshctrl will update the internal
 * vshctrl and systemctrl variables with the new configuration given by this param.
 * However is job of satelite.prx to save those settings to the configuration file.
 * using sctrlSESetConfig.
 *
 * @param videoiso - Indicates the videoiso to mount, or NULL if none.
 * @param disctype - The disctype of the videoiso (0x20=video, 0x40=audio)
 *
 * @returns 0 on success, < 0 on error.
*/
int vctrlVSHExitVSHMenu(SEConfig *conf, char *videoiso, int disctype);


#endif

