IDE_RC cmpCallbackBASEHandshake(cmiProtocolContext *aProtocolContext,
                                cmiProtocol        *aProtocol,
                                void               * /*aSessionOwner*/,
                                void               * /*aUserContext*/)
{
    cmpArgBASEHandshake *sArg     = CMI_PROTOCOL_GET_ARG(*aProtocol, BASE, Handshake);
    cmmSession          *sSession = aProtocolContext->mSession;
    UChar                sBaseVersion;
    UChar                sModuleVersion;

    
    /*
     * Module ID 검사
     */
    if (sSession != NULL)
    {
        IDE_TEST_RAISE(sSession->mModuleID != sArg->mModuleID, InvalidModule);
    }
    else
    {
        IDE_TEST_RAISE((sArg->mModuleID == CMP_MODULE_BASE) || (sArg->mModuleID >= CMP_MODULE_MAX),
                       InvalidModule);
    }

    /*
     * 사용할 Version 세팅
     */
    sBaseVersion   = IDL_MIN(sArg->mBaseVersion, gCmpModule[CMP_MODULE_BASE]->mVersionMax - 1);
    sModuleVersion = IDL_MIN(sArg->mModuleVersion, gCmpModule[sArg->mModuleID]->mVersionMax - 1);

    /*
     * Session에 Version 세팅
     */
    if (sSession != NULL)
    {
        sSession->mBaseVersion   = sBaseVersion;
        sSession->mModuleVersion = sModuleVersion;
    }

    return answerHandshake(aProtocolContext, sBaseVersion, sArg->mModuleID, sModuleVersion);

    IDE_EXCEPTION(InvalidModule);
    {
        IDE_SET(ideSetErrorCode(cmERR_ABORT_INVALID_MODULE));
    }
    IDE_EXCEPTION_END;

    return answerError(aProtocolContext);
}
Exemple #2
0
void eapsUta12Port::receivedMsg( QByteArray msg )
{
    unsigned char msgValues[MESSAGE_LENGTH];
    if( !checkAnswerFormat( msg, msgValues ) )
    {
        return;
    }

    switch( msgValues[3] )
    {
        case 0x1F:
        {
            answerSetVoltage();
            break;
        }
        case 0x2F:
        {
            answerGetVoltage( msgValues );
            break;
        }
        case 0x3F:
        {
            answerSetCurrent();
            break;
        }
        case 0x4F:
        {
            answerGetCurrent( msgValues );
            break;
        }
        case 0x5F:
        {
            answerSetStatus();
            break;
        }
        case 0x6F:
        {
            answerGetStatus( msgValues );
            break;
        }
        case 0x7F:
        {
            answerSetIdString();
            break;
        }
        case 0x8F:
        {
            answerGetIdString( msg );
            break;
        }
        case 0x9F:
        {
            answerEcho( msgValues );
            break;
        }
        case 0xAF:
        {
            answerError( msgValues );
            break;
        }
        case 0xEF:
        {
            answerSetIdn();
            break;
        }
        case 0xFF:
        {            
            answerGetIdn( msgValues );
            break;
        }
        case 0x48:
        {
            answerGetMaxValues( msgValues );
            break;
        }
        case 0xC8:
        {
            answerSetUserText();
            break;
        }
        case 0xD8:
        {
            answerGetUserText( msg );
            break;
        }
    default: emit portError( "Unknown answer!" );
            break;
    }
}