📄 maresmgr.c
字号:
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 + -