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

📄 moduleld.c

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 C
字号:
#include "global.h"
#include "config.h"
#include "memmap.h"
#include "hwsetup.h"
#include "fs9660.h"
#include "framebuf.h"

#ifdef COMPRESS_MODULE

#ifdef SUPPORT_EPP_DBG
#define	DBU_MODULE_LOAD		0
#endif

// Totally module on program
#define	TOT_MODULE		7

// moudel entry define
#define	MODULE_FS9660		0
#define	MODULE_JPG		1
#define	MODULE_MP3		2
#define	MODULE_FUDU		3
#define	MODULE_PREV_PROG	4
#define	MODULE_SETUP		5
#define	MODULE_FIX		6

// load flag control
#define	FS9660_DRV_LOAD		(1 << MODULE_FS9660)
#define	MP3_DRV_LOAD		(1 << MODULE_MP3)
#define	JPG_DRV_LOAD		(1 << MODULE_JPG)
/*
#define	FUDU_LOAD		(1 << MODULE_FUDU)
*/
#define	PREV_PROG_LOAD		(1 << MODULE_PREV_PROG)
#define	SETUP_LOAD		(1 << MODULE_SETUP)
/*
#define	FIX_LOAD		(1 << MODULE_FIX)
*/

// each module load address
extern const BYTE	_fs9660_drv_m_ps[0];
extern const BYTE	_jpg_drv_m_ps[0];
extern const BYTE	_mp3_drv_m_ps[0];
extern const BYTE	_fudu_drv_m_ps[0];
extern const BYTE	_prev_prog_drv_m_ps[0];
extern const BYTE	_setup_drv_m_ps[0];
extern const BYTE	_fix_drv_m_ps[0];

#define FS9660_DRV_START    _fs9660_drv_m_ps	// 0x881e7c00 // (SDRAM_BASE+_fs9660_drv_m)
#define JPEG_DRV_START      _jpg_drv_m_ps	// 0x881e4000 // (SDRAM_BASE+_jpg_drv_m)
#define MP3_DRV_START       _mp3_drv_m_ps	// 0x881e0400 // (SDRAM_BASE+_mp3_drv_m)
#define FUDU_DRV_START      _fudu_drv_m_ps	// 0x881eac00 // (SDRAM_BASE+_fudu_drv_m)
#define PREV_PROG_DRV_START _prev_prog_drv_m_ps	// 0x881ec800 // (SDRAM_BASE+_setup_drv_m)
#define SETUP_DRV_START     _setup_drv_m_ps	// 0x881ec800 // (SDRAM_BASE+_prev_prog_drv_m)
#define FIX_DRV_START       _fix_drv_m_ps	// 0x881ee800 // (SDRAM_BASE+_fix_drv_m)

extern void		DeCompress();
extern const BYTE	_etextf[];

UINT16			IsMp3DrvLoad(void);
void			Fs9660DrvInit(void);
void			LoadFs9660Drv(void);
void			LoadJpegDrv(void);
void			LoadMp3drv(void);
void			LoadFuduDrv(void);
void			LoadPrevProgDrv(void);
void			LoadSetupDrv(void);
void			LoadFixDrv(void);

UINT16 IsMp3DrvLoad()
{
    return (unDriverFlag & MP3_DRV_LOAD);
}

void Fs9660DrvInit(void)
{
    disable_video();
    config_framebuffer(MEM_CONFIG_MP3);
    clrFrameBuffer(FRAME_REF0);
    enable_video();
    LoadFs9660Drv();
    LoadMp3drv();
}

void LoadModule(int iModuleIndex, BYTE *pDestAddr)
{
    BYTE		*p;
    UINT32		unOffset;

    unOffset = ((UINT32 *)_etextf)[iModuleIndex];
    p = (BYTE *)(_etextf+unOffset + TOT_MODULE * 4);
    DeCompress(p, pDestAddr);
}

void LoadFs9660Drv(void)
{
    if ((unDriverFlag & FS9660_DRV_LOAD) == 0) {
#ifdef DBU_MODULE_LOAD
	epp_write_wait("Load fs9660 drv\n");
#endif
	LoadModule(MODULE_FS9660, (BYTE *)FS9660_DRV_START);
	unDriverFlag |= FS9660_DRV_LOAD;
    }
#ifdef DBU_MODULE_LOAD
    else
	epp_write_wait("fs9660 drv exist\n");
#endif
}

void LoadMp3drv(void)
{
    if ((unDriverFlag&MP3_DRV_LOAD) == 0) {
#ifdef DBU_MODULE_LOAD
	epp_write_wait("Load mp3 drv\n");
#endif
	LoadModule(MODULE_MP3, (BYTE *)MP3_DRV_START);
	unDriverFlag &= ~JPG_DRV_LOAD;
	unDriverFlag |=  MP3_DRV_LOAD;
    }
#ifdef DBU_MODULE_LOAD
    else
	epp_write_wait("mp3 drv exist\n");
#endif
}

void LoadPrevProgDrv(void)
{
    if ((unDriverFlag & PREV_PROG_LOAD) == 0) {
#ifdef DBU_MODULE_LOAD
	epp_write_wait("Load preview/prog drv\n");
#endif
	LoadModule(MODULE_PREV_PROG, (BYTE *)PREV_PROG_DRV_START);
	unDriverFlag &= ~SETUP_LOAD;
	unDriverFlag |=  PREV_PROG_LOAD;
    }
#ifdef DBU_MODULE_LOAD
    else
	epp_write_wait("preview/prog drv exist\n");
#endif
}

void LoadSetupDrv(void)
{
    if ((unDriverFlag & SETUP_LOAD) == 0) {
#ifdef DBU_MODULE_LOAD
	epp_write_wait("Load setup drv\n");
#endif
	LoadModule(MODULE_SETUP, (BYTE *)SETUP_DRV_START);
	unDriverFlag &= ~PREV_PROG_LOAD;
	unDriverFlag |=  SETUP_LOAD;
    }
#ifdef DBU_MODULE_LOAD
    else
	epp_write_wait("setup drv exist\n");
#endif
}

void LoadFixDrv(void)
{
#ifdef DBU_MODULE_LOAD
    epp_write_wait("Load fix drv\n");
#endif
    LoadModule(MODULE_FIX, (BYTE *)FIX_DRV_START);
}

void LoadFuduDrv(void)
{
#ifdef DBU_MODULE_LOAD
    epp_write_wait("Load fudu drv\n");
#endif
    LoadModule(MODULE_FUDU, (BYTE *)FUDU_DRV_START);
}

#ifdef SUPPORT_JPG
void LoadJpegDrv(void)
{
    if ((unDriverFlag & JPG_DRV_LOAD) == 0) {
#ifdef DBU_MODULE_LOAD
	epp_write_wait("Load jpg drv\n");
#endif
//	load jpeg driver
	LoadModule(MODULE_JPG, (BYTE *)JPEG_DRV_START);
//	DeCompress(p, (BYTE *)JPEG_DRV_START);
	unDriverFlag &= ~MP3_DRV_LOAD;
	unDriverFlag |=  JPG_DRV_LOAD;
    }
#ifdef DBU_MODULE_LOAD
    else
	epp_write_wait("jpeg drv exist\n");
#endif
}
#endif
#endif

⌨️ 快捷键说明

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