📄 tcmiso.cpp
字号:
// tcmiso.cpp
//
#include "testdef.h"
#include "tcmiso.h"
#include "trm.h"
#include "lpo.h"
/*
* 统计变量
*/
/* 记数 */
WORD32 g_nCmisTestCounter = 0;
/* 记时 */
CTime g_cCmisTestBeginTime, g_cCmisTestEndTime;
/* 消息长度 */
SWORD32 g_nCmisTestReqLength = 0;
SWORD32 g_nCmisTestRspLength = 0;
//
// 状态机
/* */
#define ST_CTF_INIT 0
#define ST_CTF_MACMIS 1
#define ST_CTF_AMCMIS 2
#define ST_CTF_AACMIS 3
#define ST_CTF_BPCMIS 4
#define ST_CTF_TESTFSM 5
/* */
#define EV_TEST 60000
/* */
#define EV_TEST_AACMIS ( EV_TEST + 0 )
#define EV_TEST_BPCMIS ( EV_TEST + 10 )
#define EV_TEST_MACMIS ( EV_TEST + 20 )
#define EV_TEST_AMCMIS ( EV_TEST + 30 )
#define EV_TEST_TESTFSM ( EV_TEST + 100 )
/* */
#define EV_TST_AACMIS_GET ( EV_TEST_AACMIS + 0 )
#define EV_TST_AACMIS_CREATE ( EV_TEST_AACMIS + 1 )
#define EV_TST_AACMIS_EVENTREPORT ( EV_TEST_AACMIS + 2 )
/* */
#define EV_TST_BPCMIS_CREATE ( EV_TEST_BPCMIS + 0 )
/* */
#define EV_TST_AMCMIS_GET ( EV_TEST_AMCMIS + 0 )
/* */
#define EV_TST_MACMIS_GET ( EV_TEST_MACMIS + 0 )
/* */
#define EV_TST_TESTFSM ( EV_TEST_TESTFSM + 0 )
CCmisTestFsm::CCmisTestFsm()
{
BEGIN_FSM_MAP ( )
BEGIN_FSM_STATE ( ST_CTF_INIT )
EVENT_MAP ( //EV_AMP_SYS_NORMAL_RPT,
EV_FSM_START, OnSystemNormal, ST_CTF_INIT )
END_FSM_STATE ( )
BEGIN_FSM_STATE ( ST_CTF_AACMIS )
//
EVENT_MAP ( EV_TST_AACMIS_GET, OnTestAACmisGet, ST_CTF_AACMIS )
EVENT_MAP ( EV_CMIS_M_GET_REQ, OnAACmisGetReq, ST_CTF_AACMIS )
EVENT_MAP ( EV_CMIS_M_GET_RSP, OnAACmisGetRsp, ST_CTF_AACMIS )
//
EVENT_MAP ( EV_TST_AACMIS_CREATE, OnTestAACmisCreate, ST_CTF_AACMIS )
EVENT_MAP ( EV_CMIS_M_CREATE_REQ, OnAACmisCreateReq, ST_CTF_AACMIS )
EVENT_MAP ( EV_CMIS_M_CREATE_RSP, OnAACmisCreateRsp, ST_CTF_AACMIS )
//
EVENT_MAP ( EV_TST_AACMIS_EVENTREPORT, OnTestAACmisEventReport, ST_CTF_AACMIS )
EVENT_MAP ( EV_CMIS_M_EVENTREPORT_REQ, OnAACmisEventReportReq, ST_CTF_AACMIS )
EVENT_MAP ( EV_CMIS_M_EVENTREPORT_RSP, OnAACmisEventReportRsp, ST_CTF_AACMIS )
END_FSM_STATE ( )
BEGIN_FSM_STATE ( ST_CTF_MACMIS )
EVENT_MAP ( EV_TST_MACMIS_GET, OnTestMACmisGet, ST_CTF_MACMIS )
EVENT_MAP ( EV_CMIS_M_GET_RSP, OnMACmisGetRsp, ST_CTF_MACMIS )
END_FSM_STATE ( )
BEGIN_FSM_STATE ( ST_CTF_AMCMIS )
EVENT_MAP ( EV_CMIS_M_GET_REQ, OnAMCmisGetReq, ST_CTF_AMCMIS )
END_FSM_STATE ( )
BEGIN_FSM_STATE ( ST_CTF_BPCMIS )
EVENT_MAP ( EV_TST_BPCMIS_CREATE, OnTestBPCmisCreate, ST_CTF_BPCMIS )
EVENT_MAP ( EV_CMIS_M_CREATE_RSP, OnBPCmisCreateRsp, ST_CTF_BPCMIS )
END_FSM_STATE ( )
BEGIN_FSM_STATE ( ST_CTF_TESTFSM )
EVENT_MAP ( EV_TST_TESTFSM, OnTestFsm, ST_CTF_TESTFSM )
EVENT_MAP ( EV_TST_TESTFSMMSG, OnTestFsmMsg, ST_CTF_TESTFSM )
END_FSM_STATE ( )
END_FSM_MAP ( )
// 初始化
m_pcMACmis = NULL;
m_pcAMCmis = NULL;
m_pcAACmis = NULL;
m_pcBPCmis = NULL;
FidAssign( m_tSelfFid, NULL );
}
CCmisTestFsm::~CCmisTestFsm()
{
if ( m_pcMACmis != NULL )
delete m_pcMACmis;
if ( m_pcAMCmis != NULL )
delete m_pcAMCmis;
if ( m_pcAACmis != NULL )
delete m_pcAACmis;
if ( m_pcBPCmis != NULL )
delete m_pcBPCmis;
}
void CCmisTestFsm::InitMACmis()
{
if ( m_pcMACmis == NULL )
m_pcMACmis = new CMACmis;
ASSERT( m_pcMACmis );
m_pcMACmis->InstallAppFsm(this);
m_pcMACmis->Register( m_tSelfFid );
}
void CCmisTestFsm::InitAMCmis()
{
if ( m_pcAMCmis == NULL )
m_pcAMCmis = new CAMCmis;
ASSERT( m_pcAMCmis );
m_pcAMCmis->InstallAppFsm(this);
m_pcAMCmis->Register( m_tSelfFid );
}
void CCmisTestFsm::InitAACmis()
{
if ( m_pcAACmis == NULL )
m_pcAACmis = new CAACmis;
ASSERT( m_pcAACmis );
m_pcAACmis->InstallAppFsm(this);
m_pcAACmis->Register( m_tSelfFid );
}
void CCmisTestFsm::InitBPCmis()
{
if ( m_pcBPCmis == NULL )
{
m_pcBPCmis = new CBPCmis;
ASSERT( m_pcBPCmis );
m_pcBPCmis->InstallAppFsm( this );
m_pcBPCmis->Register( m_tSelfFid );
FID BafTxFid, BafRxFid;
CTransmitProc *BafTx = new CTransmitProc;
BafTx->FsmCreate( &BafTxFid );
CReceiveProc *BafRx = new CReceiveProc;
BafRx->FsmCreate( &BafRxFid );
m_pcBPCmis->InstallCommProvider(
BafTxFid, EV_CMISTOBAF, BafRxFid, EV_BAFTOCMIS );
TModulInfo tModuleInfo;
FsmSelf( &tModuleInfo.BafCtrlFid );
memset( (void *)&tModuleInfo.BmfReceiver, 0, sizeof(BSCPID) );
memset( (void *)&tModuleInfo.BmfSender, 0, sizeof(BSCPID) );
tModuleInfo.CMISFid = m_pcBPCmis->GetCmipm();
tModuleInfo.BmfReceiver.byModule = 1;
tModuleInfo.BmfReceiver.wPno = 70;
tModuleInfo.BmfSender.byModule = 1;
tModuleInfo.BmfSender.wPno = 71;
if( SUCCESS != FsmASend( EV_NOTIFYPID,
(LPBYTE)&tModuleInfo, sizeof( TModulInfo ), BafTxFid) )
{
TRACE( (LPSTR)"error send to BafTx\n" );
return;
}
if( SUCCESS != FsmASend( EV_NOTIFYPID,
(LPBYTE)&tModuleInfo, sizeof( TModulInfo ), BafRxFid) )
{
TRACE( (LPSTR)"error send to BafRx\n" );
return;
}
}
}
void CCmisTestFsm::TestFsm()
{
FsmNextState( ST_CTF_TESTFSM );
FsmASend( EV_TST_TESTFSM, NULL, 0, m_tSelfFid );
}
void CCmisTestFsm::TestMACmis()
{
FsmNextState( ST_CTF_MACMIS );
FsmASend( EV_TST_MACMIS_GET, NULL, 0, m_tSelfFid );
}
void CCmisTestFsm::TestAMCmis()
{
FsmNextState( ST_CTF_AMCMIS );
//FsmASend( EV_TST_AMCMIS_GET, NULL, 0, m_tSelfFid );
}
void CCmisTestFsm::TestAACmis()
{
FsmNextState( ST_CTF_AACMIS );
FsmASend( EV_TST_AACMIS_GET, NULL, 0, m_tSelfFid );
//FsmASend( EV_TST_AACMIS_CREATE, NULL, 0, m_tSelfFid );
//FsmASend( EV_TST_AACMIS_EVENTREPORT, NULL, 0, m_tSelfFid );
}
void CCmisTestFsm::TestBPCmis()
{
FsmNextState( ST_CTF_BPCMIS );
//FsmASend( EV_TST_BPCMIS_GET, NULL, 0, m_tSelfFid );
FsmASend( EV_TST_BPCMIS_CREATE, NULL, 0, m_tSelfFid );
}
void CCmisTestFsm::SetGetReqArgument( CGetArgument & cGetArgument )
{
// 设置基管理对象类:使用INTEGER形式
cGetArgument.GetBaseManagedObjectClass().Set( 100 );
// 设置基管理对象实例:使用DN形式
cGetArgument.GetBaseManagedObjectInstance().ChoiceDistinguishedName();
CDistinguishedName &cDN
= cGetArgument.GetBaseManagedObjectInstance().GetDistinguishedName();
POSITION tPos;
CRelativeDistinguishedName * pcRDN = cDN.NewElement(tPos);
pcRDN->NewElement(tPos)->Set( 100, new CAsnInteger( 2 ) );
#if defined( TEST_TYP_MID ) || defined( TEST_TYP_MAX )
// 设置ACCESSCONTROL: OPTIONAL不用设置
//cGetArgument.GetAccessControl().Set();
cGetArgument.PresentAccessControl();
cGetArgument.GetAccessControl().SetTransaction( (WORD16) 0x73 );
cGetArgument.GetAccessControl().SetNewTransaction( );
cGetArgument.GetAccessControl().SetMmiCommand( "aaaa" );
// 设置同步: DEFAULT不用设置
cGetArgument.SetCmisSync( CMIS_SYN_ATOMIC );
// 设置范围: DEFAULT不用设置
cGetArgument.SetScope( CMIS_SCP_FIRSTLEVELONLY );
// 设置筛选器: DEFAULT不用设置
cGetArgument.PresentCmisFilter();
CAttributeId cAttribId( 3005 );
CAttribute cAttrib( cAttribId, new CAsnBoolean(FALSE) );
SET_CMIS_FILTER ( cGetArgument.GetCmisFilter(),
CMIS_FLT_NOT (
CMIS_FLT_AND ( 3,
CMIS_FLT_ITEM ( CMIS_FLT_EQUALITY, 3006, new CAsnInteger(2) ) ,
CMIS_FLT_OR ( 1,
CMIS_FLT_ITEM ( CMIS_FLT_EQUALITY, cAttrib ) ),
CMIS_FLT_ITEM ( CMIS_FLT_PRESENT, cAttribId ) ) ) ) ;
CAttributeIdList cAttrIdList;
for ( int i = 0; i < 7; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2120 + i ) );
#if defined( TEST_TYP_MAX )
for ( i = 0; i < 10; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2127 + i ) );
for ( i = 0; i < 13; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2139 + i ) );
for ( i = 0; i < 10; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2168 + i ) );
for ( i = 0; i < 20; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2180 + i ) );
for ( i = 0; i < 16; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2213 + i ) );
for ( i = 0; i < 16; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2231 + i ) );
for ( i = 0; i < 9; i ++ )
cAttrIdList.AddTailElement( CAttributeId( 2250 + i ) );
#endif //defined( TEST_TYP_MAX )
cGetArgument.SetAttributeIdList( cAttrIdList );
#endif //defined( TEST_TYP_MID ) || defined( TEST_TYP_MAX )
}
void CCmisTestFsm::SetGetRspArgument( CGetRspArgument & cGetRspArgument )
{
cGetRspArgument.ChoiceResult();
#if defined( TEST_TYP_MID ) || defined( TEST_TYP_MAX )
cGetRspArgument.GetResult().SetManagedObjectClass( 100 );
CAsnGeneralizedTime cTime( 2000, 3, 3, 3, 3, 3, 3 );
cGetRspArgument.GetResult().SetCurrentTime( cTime );
CAttributeList cAttrList;
for ( int i = 0; i < 7; i ++ )
cAttrList.AddHeadElement( CAttribute( 2120 + i, CAsnInteger( 1 ) ) );
#if defined( TEST_TYP_MAX )
for ( i = 0; i < 10; i ++ )
cAttrList.AddHeadElement( CAttribute( 2127 + i, CAsnInteger( 1 ) ) );
for ( i = 0; i < 13; i ++ )
cAttrList.AddHeadElement( CAttribute( 2139 + i, CAsnInteger( 1 ) ) );
for ( i = 0; i < 10; i ++ )
cAttrList.AddHeadElement( CAttribute( 2168 + i, CAsnInteger( 1 ) ) );
for ( i = 0; i < 20; i ++ )
cAttrList.AddHeadElement( CAttribute( 2180 + i, CAsnInteger( 1 ) ) );
for ( i = 0; i < 16; i ++ )
cAttrList.AddHeadElement( CAttribute( 2213 + i, CAsnInteger( 1 ) ) );
for ( i = 0; i < 16; i ++ )
cAttrList.AddHeadElement( CAttribute( 2231 + i, CAsnInteger( 1 ) ) );
for ( i = 0; i < 9; i ++ )
cAttrList.AddHeadElement( CAttribute( 2250 + i, CAsnInteger( 1 ) ) );
#endif // defined( TEST_TYP_MAX )
cGetRspArgument.GetResult().SetAttributeList( cAttrList );
#endif //defined( TEST_TYP_MID ) || defined( TEST_TYP_MAX )
/*
cGetRspArgument.ChoiceError();
CProcessingFailure cProcessingFailure;
cProcessingFailure.SetManagedObjectClass( 100 );
cGetRspArgument.GetError().Set( CMIS_ERR_PROCESSINGFAILURE,
cProcessingFailure );
*/
}
void CCmisTestFsm::
SetEventReportReqArgument( CEventReportReqArgument & cEventReportArgument )
{
// 构造DN
POSITION tPos;
CDistinguishedName cDN;
CRelativeDistinguishedName * pcRDN = cDN.NewElement(tPos);
CAsnInteger * pcValue = new CAsnInteger( 2 );
ASSERT ( pcValue );
pcRDN->NewElement(tPos)->Set( 100, pcValue );
// 设置基管理对象类:使用INTEGER形式
cEventReportArgument.GetManagedObjectClass().Set( 100 );
// 设置基管理对象实例:使用DN形式
cEventReportArgument.GetManagedObjectInstance().Set( cDN );
cEventReportArgument.SetEventType( 3481 );
}
void CCmisTestFsm::
SetEventReportRspArgument( CEventReportRspArgument & cEventReportRspArgument )
{
cEventReportRspArgument.ChoiceResult();
cEventReportRspArgument.GetResult().SetManagedObjectClass( 100 );
CAsnGeneralizedTime cTime( 2000, 3, 3, 3, 3, 3, 3 );
cEventReportRspArgument.GetResult().SetCurrentTime( cTime );
}
void CCmisTestFsm::SetCreateReqArgument( CCreateReqArgument & cCreateArgument )
{
cCreateArgument.SetManagedObjectClass( 302 );
cCreateArgument.PresentManagedObjectInstance();
cCreateArgument.GetManagedObjectInstance().ChoiceDistinguishedName();
CDN & cDN = cCreateArgument.GetManagedObjectInstance().GetDistinguishedName();
POSITION tPos;
CRDN * pcRDN = cDN.NewElement(tPos);
CAttribute * pcAttrib = pcRDN->NewElement(tPos);
pcAttrib->Set( 100, new CAsnInteger(4) );
pcRDN = cDN.NewElement( tPos );
pcAttrib = pcRDN->NewElement(tPos );
pcAttrib->Set( 3006, new CAsnInteger(5) );
CAttributeList al;
CAsnInteger ai(2);
CAttribute * pa;
pa = new CAttribute;
pa->Set( 3006, ai );
al.AddTailElement( pa );
ai = -88;
pa = new CAttribute;
pa->Set( 3007, ai );
al.AddTailElement( pa );
cCreateArgument.SetAttributeList( al );
}
void CCmisTestFsm::TestCmis()
{
// 时间计算开始
if ( g_nCmisTestCounter <= 0 )
{
PrintMsg( (LPSTR)"Test Cmis Begin ................\n" );
g_cCmisTestBeginTime = CTime::GetCurrentTime();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -