⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fs9660.h

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 H
字号:
#ifndef __FS9660_H
#define __FS9660_H

#define	FILE_SYS_DEBUG
#define	DIR_REC_LEN		sizeof(DIR_REC)		// 20
/*
#define	ISO9660_DIR_OFFSET	(0x88000000 + (MP3_EVBYA_DEF - 20) * 1024)
#define	ISO9660_FILE_OFFSET	(0x88000000 + (MP3_EVBYA_DEF - 10) * 1024)
*/

#if CONFIG==CONFIG_COMBO_VCD
/*
#define	ISO9660_DIR_OFFSET	(0x88000000 + (310 - 20) * 1024)
#define	ISO9660_FILE_OFFSET	(0x88000000 + (310 - 15) * 1024)
*/
#define	ISO9660_DIR_OFFSET	(0x88000000 + (512 - 20) * 1024)
#define	ISO9660_FILE_OFFSET	(0x88000000 + (512 - 15) * 1024)
#else
#ifdef SUPPORT_CD_MOVE
#define	ISO9660_DIR_OFFSET	(0x88000000 + (MP3_DIR_START  * 1024))
#define	ISO9660_FILE_OFFSET	(0x88000000 + (MP3_FILE_START * 1024))
#else
#define	ISO9660_DIR_OFFSET	(0x88000000 + (MP3_DIR_START  * 1024))
#define	ISO9660_FILE_OFFSET	(0x88000000 + (MP3_FILE_START * 1024))
#endif
#endif

#define	iso9660_dir		((DIR_REC *)ISO9660_DIR_OFFSET)
#define	iso9660_file		((DIR_REC *)ISO9660_FILE_OFFSET)

#ifdef SUPPORT_UDF
#define	GRAPH_UDF_VAT		(2033 * 1024)
/*
#define	GRAPH_ISO9660_FILE	((358 - 26) * 1024)
*/
#define	UDF_VAT_OFFSET		(0x88000000 + GRAPH_UDF_VAT)
#endif

#define	SHADOW_WID		2
#define	LIGHT_WID		2

//	Background color
#define	BKG_Y			0x15
#define	BKG_CRCB		0x71a3

//	Black color
#define	BLACK_Y			0x20
#define	BLACK_CRCB		0x8080

//	White color
#define	WHITE_Y			0xeb
#define	WHITE_CRCB		0x8080

//	Red color
#define	RED_Y			0x23
#define	RED_CRCB		0xd040

//	Yellow color
#define	YELLOW_Y		0xa2
#define	YELLOW_CRCB		0x8e2c

//	Light yellow color
#define	LIGHTYELLOW_Y		0xd0
#define	LIGHTYELLOW_CRCB	0x9050

//	Font color
#define	FS_FONTCOLOR_FILE_Y1	0xa2
#define	FS_FONTCOLOR_FILE_CrCb1	0x8e2c
#define	FS_FONTCOLOR_FILE_Y2	0xa2
#define	FS_FONTCOLOR_FILE_CrCb2	0x8e2c

//	Region definition
#define	X1			160

#ifdef SUPPORT_ID3
#define	Y1			50		// 80
#define	FS_DIRLIST_YSTART	(Y1 + 20)	// 100	// dir string start-y
#else
#define	Y1			80
#define	FS_DIRLIST_YSTART	100		// dir string start-y
#endif
#define	Y3			252

#define	FS_DIRLIST_XSTART	44		// dir string start-x
#define	FS_FILELIST_YSTEP	16		// file(dir) list item height
#define	FS_FILELIST_XSTART	(X1 + 10)	// file ICON start-x

#define	DIRICON_X		(FS_DIRLIST_XSTART - 22)
#define	DIRICON_Y		FS_DIRLIST_YSTART
#define	DIRICON_W		15
#define	DIRICON_H		(PER_PAGE * FS_FILELIST_YSTEP)

#define	DIRITEM_X		FS_DIRLIST_XSTART
#define	DIRITEM_Y		FS_DIRLIST_YSTART
#define	DIRITEM_W		X1 - FS_DIRLIST_XSTART
#define	DIRITEM_H		PER_PAGE * FS_FILELIST_YSTEP

#define	FILEICON_X		(FS_FILELIST_XSTART - 15)
#define	FILEICON_Y		FS_DIRLIST_YSTART
#define	FILEICON_W		12
#define	FILEICON_H		12

#define	FILEITEM_X		FS_FILELIST_XSTART
#define	FILEITEM_Y		FS_DIRLIST_YSTART
#define	FILEITEM_W		140
#define	FILEITEM_H		PER_PAGE * FS_FILELIST_YSTEP

#define	INFO_X_SFT		50
#define	INFO_X			30 + INFO_X_SFT
#define	INFO_Y			(Y1 - 25)
#define	INFO_W			250 - INFO_X_SFT
#define	INFO_H			18

#define	SLOT_X			310
#define	SLOT_Y			(FS_DIRLIST_YSTART - 1)
#define	SLOT_W			8
#define	SLOT_H			(PER_PAGE * FS_FILELIST_YSTEP)

#define	BAR_X			311
#define	BAR_Y			FS_DIRLIST_YSTART
#define	BAR_W			6
#define	BAR_H			(PER_PAGE * FS_FILELIST_YSTEP - 2)

#define	CONT_X1			(DIRITEM_X + 10)
#define	CONT_X2			(FILEITEM_X + 10)
#define	CONT_Y			(Y1 + 6)
#define	CONT_W			11
#define	CONT_H			5

#define	TIME_X			(270)
#define	TIME_Y			(Y1 - 25)
#define	TIME_W			60
#define	TIME_H			18

#define	ISO_DIR_MAX		150		// 200
#define	ISO_FILE_MAX		1500		// extend mp3 file storage

#define	ItemNum			PER_PAGE	// 8
#define	HorzSpace		10
#define	DIR_SIZE		32
#define	MAX_DIR_CNT		64

#define	bin2asc(x)		((x > 9) ? x + 'A' - 10 : x + '0')

enum {
    ERROR_FILE_NOT_FOUND	= -100,
    ERROR_FILE_ENTRY_FULL	= -101,
    ERROR_FILE_ENTRY_INVALID	= -102,
    ERROR_FILE_PATH		= -103,
    ERROR_FILE_SUBPATH_TOO_LONG	= -105,
    ERROR_FILE_MSF_INVALID	= -2,
    ERROR_GENERIC		= -1
};

enum {
    FS_FUNC_IDLE		= 0,
    FS_FUNC_MP3			= 1,
    FS_FUNC_JPEG		= 2,
    FS_FUNC_GAME		= 3,
};

enum {
    FS_STATE_INIT		= 0,
    FS_STATE_LIST		= 1,
    FS_STATE_MP3		= 2,
    FS_STATE_JPEG		= 3,
    FS_STATE_GAME		= 4,
};

typedef struct
{
    UINT16		xStart;
    UINT16		yStart;
    UINT16		xSize;
    UINT16		ySize;
}   BTNAREA;

enum {
    CNT_AREA_FILE		= 0,
    CNT_AREA_DIR		= 1,
    CNT_AREA_MP3BUTTON		= 2,
    CNT_AREA_JPEGBUTTON		= 3,
    CNT_AREA_GAMEBUTTON		= 4,
};

enum {
    FS_AREA_BACKGROUND		= 0,
    FS_AREA_DIRICON		= 1,
    FS_AREA_DIRITEM		= 2,
    FS_AREA_FILEICON		= 3,
    FS_AREA_FILEITEM		= 4,
    FS_AREA_SLOT		= 5,
    FS_AREA_MOVEBAR		= 6,
    FS_AREA_PATHINFO		= 7,
    FS_AREA_PREVIEWJPG		= 8,
    FS_AREA_BUTTON		= 9,
};

typedef struct
{
    BYTE		len_of_record;
    BYTE		len_of_attr;
    BYTE		location_le[4];
    BYTE		location_be[4];
    BYTE		length_le[4];
    BYTE		length_be[4];
    BYTE		time_stamp[7];
    BYTE		file_flag;
    BYTE		file_unit_size;
    BYTE		interleave_gap;
    UINT16		volume_seq_le;
    UINT16		volume_seq_be;
    BYTE		len_of_filename;
    BYTE		filename[31];
}   CDDirRecord;

typedef struct
{
    BYTE		len_of_dirid;
    BYTE		len_of_attr;
    BYTE		location_of_ext[4];
    BYTE		parent_dir_num[2];
    BYTE		dirname[31];
}   ISO_PATH_TABLE;

typedef struct
{
    UINT32		loc;		/* mmssff */
    int			size;		/* in sectors */
    short		dir;
    char		name[10];
    char		ext[6];
}   DIR_REC;

#ifdef SUPPORT_ID3
#define	SECTOR_SIZE		2048
#ifdef SUPPORT_ID3_V10
typedef struct
{
    char		tag[3];
    char		song_title[30];
    char		artist[30];
    char		album[30];
    char		year[4];
    char		comment[30];
    BYTE		genre;
}   ID3_TAG;

ID3_TAG			id3_info;

void			get_id3_v1();
void			show_id3_v1();
#endif

#ifdef SUPPORT_ID3_V20
typedef struct
{
    char		id3[3];
    BYTE		main_version;
    BYTE		sub_version;
    BYTE		flag;
    BYTE		size[4];
}   ID3_V2_HEADER;	// 10 bytes in total

typedef struct
{
    char		frame_id[4];
    BYTE		size[4];
    BYTE		flag[2];
    char		content[30];	// In v2.3,the frame size is not fixed,but since the
					// vcd osd has its limite,I cut them to a fixed size.
}   ID3_FRAME;		// 30 bytes in total

void			show_id3_v2(UINT16 mp3_track_num);
#endif

#ifdef SUPPORT_LYRICS
typedef struct
{
    char		t1;
    BYTE		timestamp_min[2];
    char		t2;
    BYTE		timestamp_sec[2];
    char		t3;
    char		text[56];	// the real length is not fixed,I set this for convinient
}   LYRICS_TEXT;
  
UINT32			text_size;
UINT32			text_skip;
UINT32			lyrics_start_msf;

BYTE			lyrics_represent_min,lyrics_represent_sec;
  
void			lyrics_init(UINT32 msf, UINT32 len);
void			lyrics_get_text();
void			lyrics_show_text();
#endif
#endif

#if defined(SUPPORT_OKO_DISC) 
#define	MAX_MENU_NO		10
#define	MAX_FILE_NAME_LEN	12

typedef struct
{
    int			trk_no;		// how many files which a oko menu include
    char		filename[MAX_FILE_NAME_LEN];
}   OKO_MENU_DATA;
OKO_MENU_DATA		oko_menu[MAX_MENU_NO];
#endif

#define	BIGA			0
#define	NUM0			26
#define	ARROW			0
#define	HAND			1
#define	DOT			36
#define	SPACE			37
#define	NEXT			38
#define	PREV			39
#define	QUESTION		40
#define	PERCENT			41
#define	LEFTB			42
#define	RIGHTB			43
#define	COLON			44
#define	BLINE			45
#define	CURV			46

/************************************************/
/*	Function prototype declaration		*/
/************************************************/
void			read_iso9660(void);
void			DrawTime(BYTE mm, BYTE ss);
void			check_name(char *, BYTE);
void			ShowMP3Reading(BYTE);
UINT8			ReadFile(int *);
void			read_iso9660_init(void);
int			read_iso9660_dir(void);
int			read_iso9660_files(void);
int			rec_dir_file(UINT32, int);
void			iso9660_sort(void);
void			iso9660_MSFSort(void);
void			iso9660_assign_name(char *, char *, int, int, BYTE);
int			iso_search_str(char *, char *, int);

void			mp3_select(void);
void			mp3_select_file(UINT16);
void			FSGUI_Menu(void);
void			mp3_dir_list(void);
void			mp3_file_list(UINT16);
void			calc_file_page(UINT16);
UINT32			mp3_file_msf(UINT16);
UINT32			mp3_file_length(UINT16);
char			*mp3_file_name(UINT16);
void			clr_window(int, int, int, int);
void			FSGUI_FillFrameBuf(int,int,int,int,UINT16,UINT16);
void			FillRedColor(int,int);                                                   
void			mp3_control_icon(int);
void			mp3_show_path(void);
void			mp3_dir_icon(void);
int			NormalNext();
int			NormalPrev();
void			Return2Menu(void);
int			FileNext(void);
void			MoveScroll(UINT16);

#ifdef SUPPORT_UDF
int			read_udf_dir();
int			read_udf_files(void);
UINT32			VatLookup(UINT32 VrtSect);
void			UdfScanDir(UINT32 Msf);
void			UdfGetName(BYTE *BufSrc, BYTE *BufDst, int Len, int Num);
int			UdfCompString(BYTE *StrSrc, BYTE *StrDst, int Len);
void			UdfScanFile(int DirNum);
UINT32			mp3_udf_file_msf(UINT16);
UINT32			mp3_udf_file_length(UINT16);
#endif

#ifdef SUPPORT_ID3
void			capitalize(char*, BYTE);
void			symble_filter(char*);
void			unicode_filter(char*);
void			do_cdrom_read_data(BYTE*, UINT32, UINT32, BYTE);
#endif

#endif	__FS9660.H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -