📄 boardmodule.cpp
字号:
#include "boardmodule.h"
CTAQUEUEHD TBoardModule::m_ctaqueuehd;
CTAHD TBoardModule::m_ctahd;
bool TBoardModule::m_bInited = false;
bool TBoardModule::Init()
{
if(m_bInited)
return true;
CTA_EVENT event;
if( 0 != ctaCreateQueue( NULL, 0, &m_ctaqueuehd))
return false;
if( 0!= ctaCreateContext(m_ctaqueuehd, 0, "boardcontext", &m_ctahd))
return false;
CTA_SERVICE_DESC svcDescriptions[] = {{ { "ADI", "ADIMGR" }, {0},{0},{0} }};
svcDescriptions[0].mvipaddr.board = ADI_DRIVER_ONLY;
if( 0 != ctaOpenServices( m_ctahd, svcDescriptions, 1/*num*/))
return false;
ctaWaitEvent(m_ctaqueuehd, &event, CTA_WAIT_FOREVER/*forevenr*/);
if((event.id != CTAEVN_OPEN_SERVICES_DONE) || (event.value != CTA_REASON_FINISHED))
return false;
m_bInited = true;
return true;
}
bool TBoardModule::GetBoardInfo(int board, int *dspstream, int *numtrunk)
{
if(!Init())
return false;
CTA_ERROR_HANDLER hdlr;
ADI_BOARD_INFO boardinfo;
ctaSetErrorHandler(NULL, &hdlr); //disable err handle
if( adiGetBoardInfo(m_ctahd, board, sizeof(boardinfo), &boardinfo ) != 0 )
{
ctaSetErrorHandler(hdlr, NULL);
return false;
}
*numtrunk = boardinfo.numtrunks;
switch(boardinfo.boardtype)
{
case ADI_BOARDTYPE_AG4000_1E:
case ADI_BOARDTYPE_AG4000_2E:
case ADI_BOARDTYPE_AG4000_4E:
case ADI_BOARDTYPE_AG4000C_2E:
case ADI_BOARDTYPE_AG4000C_4E:
case ADI_BOARDTYPE_CG6000:
case ADI_BOARDTYPE_CG6000C_QUAD:
*dspstream = 16;
break;
case ADI_BOARDTYPE_CG6100C:
case ADI_BOARDTYPE_CG6500C:
case ADI_BOARDTYPE_CG6060:
case ADI_BOARDTYPE_CG6060C:
case ADI_BOARDTYPE_CG6565:
case ADI_BOARDTYPE_CG6565C:
*dspstream = 64;
break;
default:
*dspstream = 0;
}
ctaSetErrorHandler(hdlr, NULL);
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -