Microchip® Advanced Software Framework

play_list.c File Reference
#include <string.h>
#include "conf_explorer.h"
#include "navigation.h"
#include "file.h"
#include "reader_txt.h"
#include "play_list.h"

Macros

#define PL_READONLY   true
 

Enumerations

enum  E_pl_type {
  E_PL_M3U,
  E_PL_PLS,
  E_PL_SMP
}
 Type of playlist file. More...
 

Functions

bool pl_add (const FS_STRING sz_filterext, uint8_t u8_mode)
 This function adds files in play list. More...
 
bool pl_main_close (void)
 This function closes the play list and selects this one in current navigator. More...
 
bool pl_main_ismodify (void)
 This function checks if the play list file is modified. More...
 
bool pl_main_isopen (void)
 This function checks if a play list file is already opened. More...
 
bool pl_main_modify (void)
 This function creates a copy of the play list in case of a restore action. More...
 
bool pl_main_new (const FS_STRING sz_name, bool b_undo)
 This function creates a new empty play list file. More...
 
bool pl_main_open (bool b_undo)
 This function opens the current selected file in the current navigator. More...
 
bool pl_main_readline (readline_opt_t opt, uint8_t id_nav, FS_STRING *sz_path, uint16_t *u16_size_line)
 This function reads and checks the next line. More...
 
bool pl_main_save (void)
 This function saves the play list file. More...
 
bool pl_nav_eol (void)
 This function checks the end of the play list. More...
 
uint16_t pl_nav_getnbfile (void)
 Return the number of files in play list. More...
 
uint16_t pl_nav_getpos (void)
 Return the position in the play list. More...
 
bool pl_nav_readentry (uint16_t u16_position, FS_STRING *sz_path, uint16_t *u16_size_line)
 This function read the playlist's entry at a specific position. More...
 
bool pl_nav_setpos (uint16_t u16_position)
 This function goes to a position in the play list. More...
 
bool pl_rem_dead (void)
 This function remove the dead file in the list. More...
 
bool pl_rem_sel (void)
 This function removes the selected file in the list. More...
 
bool pl_rem_sel_all (void)
 This function removes all files in the list. More...
 
bool pl_sel_isvalid (void)
 This function tests the valid path in list. More...
 

Variables

_MEM_TYPE_SLOW_ Fs_index copyfile_index
 File system index on the copy file of play list file (undo option must be ENABLE) More...
 
bool pl_g_list_is_modify
 If true then the current play list file is modified but it is not saved. More...
 
bool pl_g_list_is_open = false
 play list file is opened More...
 
bool pl_g_list_is_readonly
 If false then the play list modification is authorized. More...
 
_MEM_TYPE_SLOW_ E_pl_type pl_g_list_type
 Type of the play list. More...
 
bool pl_g_list_undo
 If true then authorize to copy the play list file in case of an undo on modifications. More...
 
_MEM_TYPE_SLOW_ uint16_t pl_g_u16_list_sel = 0
 Current file selected in play list (0= no file selected, 1= first file) More...
 
_MEM_TYPE_SLOW_ uint16_t pl_g_u16_list_size = 0
 Number of file included in play list. More...
 

#define PL_READONLY   true

enum E_pl_type

Type of playlist file.

Enumerator
E_PL_M3U 
E_PL_PLS 
E_PL_SMP 

bool pl_add ( const FS_STRING  sz_filterext,
uint8_t  u8_mode 
)

This function adds files in play list.

@param sz_filterext add file only corresponding to the  extension filter
@param u8_mode      PL_ADD_FILE, PL_ADD_DIR, PL_ADD_SUBDIR

@return    false in case of error, see global value "fs_g_status" for more detail
@return    true otherwise
//! It is possible to select a file or all files in a directory
//! 
bool pl_main_close ( void  )

This function closes the play list and selects this one in current navigator.

Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

References _MEM_TYPE_SLOW_, copyfile_index, file_close(), FS_NAME_GET, index, Is_unicode, nav_file_del(), nav_file_name(), nav_file_rename(), nav_get(), nav_getindex(), nav_gotoindex(), nav_select(), nav_string_length_disable(), nav_string_length_enable(), NULL, pl_g_list_is_modify, pl_g_list_is_open, pl_g_list_undo, and pl_main_isopen().

Referenced by navauto_close().

bool pl_main_ismodify ( void  )

This function checks if the play list file is modified.

Returns
true the play list file is modified

References pl_g_list_is_modify.

bool pl_main_isopen ( void  )

This function checks if a play list file is already opened.

Returns
true a play list file is opened

References FS_ERR_PL_NOT_OPEN, fs_g_status, and pl_g_list_is_open.

Referenced by ai_usb_ms_specific_nav_getplaylistfile(), pl_main_close(), pl_main_open(), pl_main_save(), and pl_sel_isvalid().

bool pl_main_modify ( void  )

This function creates a copy of the play list in case of a restore action.

Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

Referenced by pl_rem_sel(), and pl_rem_sel_all().

bool pl_main_new ( const FS_STRING  sz_name,
bool  b_undo 
)

This function creates a new empty play list file.

Parameters
sz_namecontains the file name (ASCII or UNICODE )
b_undotrue to authorize the undo feature
Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise
bool pl_main_open ( bool  b_undo)

This function opens the current selected file in the current navigator.

Parameters
b_undotrue to authorize the undo feature
Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

References E_PL_M3U, E_PL_PLS, E_PL_SMP, file_eof(), nav_copy(), nav_file_checkext(), nav_file_isreadonly(), nav_filelist_reset(), nav_get(), nav_select(), NULL, pl_g_list_is_modify, pl_g_list_is_open, pl_g_list_is_readonly, pl_g_list_type, pl_g_list_undo, pl_g_u16_list_sel, pl_g_u16_list_size, pl_main_isopen(), pl_main_readline(), PL_MAIN_READLINE_OPT_CHECKLINE, reader_txt_beg(), and reader_txt_open().

Referenced by navauto_open(), and pl_main_save().

bool pl_main_readline ( readline_opt_t  opt,
uint8_t  id_nav,
FS_STRING sz_path,
uint16_t *  u16_size_line 
)

This function reads and checks the next line.

Parameters
optPL_MAIN_READLINE_OPT_CHECKLINE to check the next line in the file.
PL_MAIN_READLINE_OPT_READSTRING to read the string in the text file.
PL_MAIN_READLINE_OPT_GOTOPATH to read, check and goto the path.
id_navID navigator to update with the selected file (ignore if b_gotopatch == false)
sz_pathAddress of the string returned. It is used only if PL_MAIN_READLINE_OPT_READSTRING or PL_MAIN_READLINE_OPT_GOTOPATH options are specified.
u16_size_lineThe length of the path. If this parameter is NULL, then the length is not returned.
Returns
true if a line with a correct path false line ignored or end of file

References E_PL_M3U, E_PL_PLS, E_PL_SMP, file_getpos(), file_seek(), FS_SEEK_SET, FS_UNICODE, Is_unicode, nav_copy(), nav_filelist_reset(), nav_select(), nav_setcwd(), NULL, pl_g_list_type, PL_MAIN_READLINE_OPT_CHECKLINE, PL_MAIN_READLINE_OPT_READSTRING, and reader_txt_get_line().

Referenced by pl_main_open(), pl_nav_readentry(), and pl_nav_setpos().

bool pl_main_save ( void  )

This function saves the play list file.

Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

References _MEM_TYPE_SLOW_, copyfile_index, file_close(), index, nav_file_del(), nav_get(), nav_getindex(), nav_gotoindex(), nav_select(), pl_g_list_is_modify, pl_g_list_is_open, pl_g_list_undo, pl_g_u16_list_sel, pl_main_isopen(), pl_main_open(), and pl_nav_setpos().

bool pl_nav_eol ( void  )

This function checks the end of the play list.

Returns
true if the position is the last file of the play list

References pl_g_u16_list_sel, and pl_g_u16_list_size.

uint16_t pl_nav_getnbfile ( void  )

Return the number of files in play list.

Returns
number of files in play list

References pl_g_u16_list_size.

Referenced by navauto_mov_playlist(), and navauto_open().

uint16_t pl_nav_getpos ( void  )

Return the position in the play list.

Returns
position in the play list

References pl_g_u16_list_sel.

Referenced by navauto_mov_playlist().

bool pl_nav_readentry ( uint16_t  u16_position,
FS_STRING sz_path,
uint16_t *  u16_size_line 
)

This function read the playlist's entry at a specific position.

Parameters
u16_positionPosition in play list.
sz_pathThe address of the string where is stored the information.
u16_size_lineThe length of the path.

References file_eof(), file_getpos(), file_seek(), FS_ERR_PL_OUT_LST, fs_g_status, FS_SEEK_SET, nav_get(), nav_select(), NULL, pl_g_u16_list_sel, pl_g_u16_list_size, pl_main_readline(), PL_MAIN_READLINE_OPT_CHECKLINE, PL_MAIN_READLINE_OPT_GOTOPATH, and reader_txt_beg().

bool pl_nav_setpos ( uint16_t  u16_position)
bool pl_rem_dead ( void  )

This function remove the dead file in the list.

Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

References nav_get(), nav_gotoindex(), nav_select(), pl_g_u16_list_sel, pl_g_u16_list_size, pl_nav_setpos(), and pl_rem_sel().

bool pl_rem_sel ( void  )

This function removes the selected file in the list.

Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

References file_putc(), file_seek(), FS_ERR_PL_OUT_LST, fs_g_status, FS_SEEK_CUR_RE, FS_SEEK_SET, nav_get(), nav_select(), pl_g_u16_list_sel, pl_g_u16_list_size, and pl_main_modify().

Referenced by pl_rem_dead().

bool pl_rem_sel_all ( void  )

This function removes all files in the list.

Returns
false in case of error, see global value "fs_g_status" for more detail
true otherwise

References file_seek(), file_set_eof(), FS_SEEK_SET, nav_get(), nav_select(), and pl_main_modify().

bool pl_sel_isvalid ( void  )

This function tests the valid path in list.

Returns
false = path is not valid in list - DEAD

References nav_filelist_validpos(), pl_g_u16_list_sel, and pl_main_isopen().

_MEM_TYPE_SLOW_ Fs_index copyfile_index

File system index on the copy file of play list file (undo option must be ENABLE)

Referenced by pl_main_close(), and pl_main_save().

bool pl_g_list_is_modify

If true then the current play list file is modified but it is not saved.

Referenced by pl_main_close(), pl_main_ismodify(), pl_main_open(), and pl_main_save().

bool pl_g_list_is_readonly

If false then the play list modification is authorized.

Referenced by pl_main_open().

_MEM_TYPE_SLOW_ E_pl_type pl_g_list_type

Type of the play list.

Referenced by pl_main_open(), and pl_main_readline().

bool pl_g_list_undo

If true then authorize to copy the play list file in case of an undo on modifications.

Referenced by pl_main_close(), pl_main_open(), and pl_main_save().

_MEM_TYPE_SLOW_ uint16_t pl_g_u16_list_sel = 0