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

📄 maresmgr.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_FreeStreamAudio
 *
 *	Function:
 *			Free the specified stream audio resources.
 *	Argument:
 *			sa_id	stream audio id number
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_FreeStreamAudio
(
	UINT32	sa_map						/* stream audio map */
)
{
	SINT32	result;
	static UINT32 res_map[4] = { 0x00000000, 0x00000080, 0x00000060, 0x000000C0 };

	MARESMGR_DBGMSG(("    MaResMgr_FreeStreamAudio : sa_map=%08lX\n", sa_map));

	if ( sa_map == 0x00000000 ) return MASMW_SUCCESS;

	if ( ( sa_map & MA_SA_MAP_MASK ) != sa_map )
	{
		MARESMGR_DBGMSG(("illegal stream audio id\n"));
		return MASMW_ERROR_ARGUMENT;
	}

	if ( ( ma_resource_info.sa_map & sa_map ) != sa_map )
	{
		MARESMGR_DBGMSG(("can't free sa\n"));
		return MASMW_ERROR;
	}

	result = MaResMgr_FreeWtVoice( res_map[sa_map] );
	if ( result != MASMW_SUCCESS ) return result;
	
	result = MaResMgr_FreeRam( res_map[sa_map] );
	if ( result != MASMW_SUCCESS ) return result;

	result = MaResMgr_FreeSoftInt( sa_map );
	if ( result != MASMW_SUCCESS ) return result;

	result = MaResMgr_FreeTimer( 1 );
	if ( result != MASMW_SUCCESS ) return result;

	ma_resource_info.sa_map ^= sa_map;

	MARESMGR_DBGMSG((" -> sa_map=%08lX\n", ma_resource_info.sa_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_AllocRam
 *
 *	Function:
 *			Allocate the specified RAM block resources.
 *	Argument:
 *			rb_map		bit mapping of RAM block resources to allocate.
 *			ram_adrs	return the RAM address of each blocks.
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_AllocRam
(
	UINT32		rb_map					/* ram block map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_AllocRam        : rb_map=%08lX", rb_map));

	if ( ( rb_map & MA_RB_MAP_MASK ) != rb_map )
	{
		MARESMGR_DBGMSG(("illegal rb value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.rb_map & rb_map ) != 0 )
	{
		MARESMGR_DBGMSG(("can't alloc rb\n"));
		return MASMW_ERROR_RESOURCE_OVER;
	}

	ma_resource_info.rb_map |= rb_map;

	MARESMGR_DBGMSG((" -> rb_map=%08lX\n", ma_resource_info.rb_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_FreeRam
 *
 *	Function:
 *			Free RAM block resources.
 *	Argument:
 *			rb_map	bit mapping of RAM block resources to free
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_FreeRam
(
	UINT32	rb_map						/* ram block map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_FreeRam         : rb_map=%08lX", rb_map));

	if ( ( rb_map & MA_RB_MAP_MASK ) != rb_map )
	{
		MARESMGR_DBGMSG(("illegal rb value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.rb_map & rb_map ) != rb_map )
	{
		MARESMGR_DBGMSG(("can't free rb\n"));
		return MASMW_ERROR;
	}

	ma_resource_info.rb_map ^= rb_map;

	MARESMGR_DBGMSG((" -> rb_map=%08lX\n", ma_resource_info.rb_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_AllocCh
 *
 *	Function:
 *			Allocate the channel resources.
 *	Argument:
 *			ch_map	bit mapping of channel resources to allocate.
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_AllocCh
(
	UINT32	ch_map						/* channel map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_AllocCh         : ch_map=%08lX", ch_map));

	if ( ( ch_map & MA_CH_MAP_MASK ) != ch_map )
	{
		MARESMGR_DBGMSG((" illegal ch value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.ch_map & ch_map ) != 0 )
	{
		MARESMGR_DBGMSG((" can't alloc ch\n"));
		return MASMW_ERROR_RESOURCE_OVER;
	}

	ma_resource_info.ch_map |= ch_map;

	MARESMGR_DBGMSG((" -> ch_map=%08lX\n", ma_resource_info.ch_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_FreeCh
 *
 *	Function:
 *			Free the specified channel resources.
 *	Argument:
 *			ch_map	bit mapping of channel resources to free.
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_FreeCh
(
	UINT32	ch_map						/* channel map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_FreeCh          : ch_map=%08lX", ch_map));

	if ( ( ch_map & MA_CH_MAP_MASK ) != ch_map )
	{
		MARESMGR_DBGMSG(("illegal ch value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.ch_map & ch_map ) != ch_map )
	{
		MARESMGR_DBGMSG(("can't free ch\n"));
		return MASMW_ERROR;
	}

	ma_resource_info.ch_map ^= ch_map;

	MARESMGR_DBGMSG((" -> ch_map=%08lX\n", ma_resource_info.ch_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_AllocFmVoice
 *
 *	Function:
 *			Allocate the FM voice resources.
 *	Argument:
 *			fm_map	bit mapping of FM voice resources to allocate
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_AllocFmVoice
(
	UINT32	fm_map						/* FM voice map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_AllocFmVoice    : fm_map=%08lX", fm_map));

	if ( ( fm_map & MA_FM_MAP_MASK ) != fm_map )
	{
		MARESMGR_DBGMSG(("illegal fm voice value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.fm_map & fm_map ) != 0 )
	{
		MARESMGR_DBGMSG(("can't alloc fm voice\n"));
		return MASMW_ERROR_RESOURCE_OVER;
	}

	ma_resource_info.fm_map |= fm_map;

	MARESMGR_DBGMSG((" -> fm_map=%08lX\n", ma_resource_info.fm_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_FreeFmVoice
 *
 *	Function:
 *			Free the specified FM voice resources.
 *	Argument:
 *			fm_map	bit mapping of FM voice resources to free
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_FreeFmVoice
(
	UINT32	fm_map						/* FM voice map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_FreeFmVoice     : fm_map=%08lX", fm_map));

	if ( ( fm_map & MA_FM_MAP_MASK ) != fm_map )
	{
		MARESMGR_DBGMSG(("illegal fm voice value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.fm_map & fm_map ) != fm_map )
	{
		MARESMGR_DBGMSG(("can't free fm map\n"));
		return MASMW_ERROR;
	}

	ma_resource_info.fm_map ^= fm_map;

	MARESMGR_DBGMSG((" -> fm_map=%08lX\n", ma_resource_info.fm_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_AllocWtVoice
 *
 *	Function:
 *			Allocate the specified WT voice resources.
 *	Argument:
 *			wt_map	bit mapping of WT voice resources to allocate.
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_AllocWtVoice
(
	UINT32	wt_map						/* WT voice map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_AllocWtVoice    : wt_map=%08lX", wt_map));

	if ( ( wt_map & MA_WT_MAP_MASK ) != wt_map )
	{
		MARESMGR_DBGMSG(("illegal wt voice value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.wt_map & wt_map ) != 0 )
	{
		MARESMGR_DBGMSG(("can't alloc wt voice\n"));
		return MASMW_ERROR_RESOURCE_OVER;
	}

	ma_resource_info.wt_map |= wt_map;

	MARESMGR_DBGMSG((" -> wt_map=%08lX\n", ma_resource_info.wt_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_FreeWtVoice
 *
 *	Function:
 *			Free the specified WT voice resources.
 *	Argument:
 *			wt_map	bit mapping of WT voice resources to free.
 *	Return:
 *			0		success
 *			< 0		error codes
 *
 ****************************************************************************/
SINT32 MaResMgr_FreeWtVoice
(
	UINT32	wt_map						/* WT voice map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_FreeWtVoice     : wt_map=%08lX", wt_map));

	if ( ( wt_map & MA_WT_MAP_MASK ) != wt_map )
	{
		MARESMGR_DBGMSG(("illegal wt voice value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.wt_map & wt_map ) != wt_map )
	{
		MARESMGR_DBGMSG(("can't free wt map\n"));
		return MASMW_ERROR;
	}

	ma_resource_info.wt_map ^= wt_map;

	MARESMGR_DBGMSG((" -> wt_map=%08lX\n", ma_resource_info.wt_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_AllocSoftInt
 *
 *	Function:
 *			Allocate the specified software interrupt.
 *	Argument:
 *			si_map	bit mapping of software interrupt resources to allocate.
 *	Return:
 *			0		success
 *			< 0		error code
 *
 ****************************************************************************/
SINT32 MaResMgr_AllocSoftInt
(
	UINT32	si_map						/* software interrupt map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_AllocSoftInt    : si_map=%08lX", si_map));

	if ( ( si_map & MA_SI_MAP_MASK ) != si_map )
	{
		MARESMGR_DBGMSG(("illegal soft int value\n"));
		return MASMW_ERROR_ARGUMENT;
	}
	
	if ( ( ma_resource_info.si_map & si_map ) != 0 )
	{
		MARESMGR_DBGMSG(("can't alloc soft int\n"));
		return MASMW_ERROR_RESOURCE_OVER;
	}

	ma_resource_info.si_map |= si_map;

	MARESMGR_DBGMSG((" -> si_map=%08lX\n", ma_resource_info.si_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_FreeSoftInt
 *
 *	Function:
 *			Free the specified software interrupt.
 *			It is possible to specify some software interrupts at once.
 *	Argument:
 *			si_map	bit mapping of software interrupt resources to free.
 *	Return:
 *			0		success
 *			< 0		error code
 *
 ****************************************************************************/
SINT32 MaResMgr_FreeSoftInt
(
	UINT32	si_map						/* software interrupt map */
)
{
	MARESMGR_DBGMSG(("    MaResMgr_FreeSoftInt     : si_map=%08lX", si_map));

	if ( ( si_map & MA_SI_MAP_MASK ) != si_map )
	{
		MARESMGR_DBGMSG(("illegal soft int value\n"));
		return MASMW_ERROR_ARGUMENT;
	}

	if ( ( ma_resource_info.si_map & si_map ) != si_map )
	{
		MARESMGR_DBGMSG(("can't free soft int map\n"));
		return MASMW_ERROR;
	}

	ma_resource_info.si_map ^= si_map;

	MARESMGR_DBGMSG((" -> si_map=%08lX\n", ma_resource_info.si_map));

	return MASMW_SUCCESS;
}
/****************************************************************************
 *	MaResMgr_AllocLed
 *

⌨️ 快捷键说明

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