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

📄 tcmiso.cpp

📁 李刚 请赶快放开我的权限 我上载的源码都是很精湛的,请查阅,qing请加我 li_xue_ming@msn.com必要的话可以和我在线沟通
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -