コード例 #1
0
OMX_ERRORTYPE port_enable(HTEST *hTest, OMX_U32 nPortIndex)
{
    OMX_ERRORTYPE ret = OMX_ErrorNone;
    OMX_COMPONENTTYPE *hComponent;
    OMX_U32 i;

    hComponent = hTest->hComponent;
    ret = SendCommand(hTest, OMX_CommandPortEnable, nPortIndex, NULL, OMX_FALSE);
    if(ret != OMX_ErrorNone)
        return ret;

    prepare_port_buffers(hTest, nPortIndex);

    WaitCommand(hTest, OMX_CommandPortEnable, nPortIndex, NULL);

    hTest->bHoldBuffers = OMX_FALSE;
    for(i=0; i<hTest->nBufferHdr[nPortIndex]; i++) {
        if(hTest->PortDir[nPortIndex] == OMX_DirOutput) {
            OMX_FillThisBuffer(hTest->hComponent, hTest->pBufferHdr[nPortIndex][i]);
        }
    }

    printf("port enable done.\n");

    return OMX_ErrorNone;
}
コード例 #2
0
OMX_ERRORTYPE StateTrans(HTEST *hTest, OMX_STATETYPE eState)
{
	OMX_ERRORTYPE ret = OMX_ErrorNone;
	OMX_COMPONENTTYPE *hComponent = NULL;
	OMX_STATETYPE eCurState = OMX_StateInvalid;

	hComponent = hTest->hComponent;
	OMX_GetState(hComponent, &eCurState);
	ret = SendCommand(hTest, OMX_CommandStateSet,eState,NULL, OMX_FALSE);
	if(ret != OMX_ErrorNone)
	{
		printf("State trans to %d failed.\n", eState);
		return ret;
	}

	/* Loaded->Idle */
	if(eCurState == OMX_StateLoaded && eState == OMX_StateIdle)
		Load2Idle(hTest);
	/* Exec->Idle */
	else if(eCurState == OMX_StateExecuting && eState == OMX_StateIdle)
		hTest->bHoldBuffers = OMX_TRUE;
	/* Pause->Idle */
	else if(eCurState == OMX_StatePause && eState == OMX_StateIdle)
		hTest->bHoldBuffers = OMX_TRUE;
	/* Idle->Loaded */
	else if(eCurState == OMX_StateIdle && eState == OMX_StateLoaded)
		Idle2Load(hTest);
	else
		printf("Ivalid state trans.\n");

	ret = WaitCommand(hTest, OMX_CommandStateSet, eState, NULL);
	if(ret != OMX_ErrorNone)
		return ret;

	printf("State trans: [%x] -> [%d] done.\n", eCurState, eState);

	/* Idle->Exec/Idle->Pause done */
	if(eCurState == OMX_StateIdle && (eState == OMX_StateExecuting || eState == OMX_StatePause))
		start_data_process(hTest);

	return ret;
}
コード例 #3
0
OMX_ERRORTYPE port_disable(HTEST *hTest, OMX_U32 nPortIndex)
{
    OMX_COMPONENTTYPE *hComponent;
    OMX_ERRORTYPE ret = OMX_ErrorNone;

    hComponent = hTest->hComponent;
    ret = SendCommand(hTest, OMX_CommandPortDisable, nPortIndex, NULL, OMX_FALSE);
    if(ret != OMX_ErrorNone)
        return ret;

    hTest->bHoldBuffers = OMX_TRUE;

    free_port_buffers(hTest, nPortIndex);

    WaitCommand(hTest, OMX_CommandPortDisable, nPortIndex, NULL);

    printf("port disbale done.\n");

    return OMX_ErrorNone;
}
コード例 #4
0
OMX_ERRORTYPE SendCommand(
        HTEST *hTest, 
        OMX_COMMANDTYPE Cmd, 
        OMX_U32 nParam1,
        OMX_PTR pCmdData,
        OMX_BOOL bSync)
{
    OMX_ERRORTYPE ret = OMX_ErrorNone;
    OMX_HANDLETYPE hComponent = hTest->hComponent;

    hTest->sCmdDone.eEvent = OMX_EventMax;
    hTest->bError = OMX_FALSE;
    ret = OMX_SendCommand(hComponent, Cmd, nParam1, pCmdData);
    if(ret != OMX_ErrorNone && ret != OMX_ErrorNotComplete)
        return ret;

    if(bSync == OMX_TRUE)
        WaitCommand(hTest, Cmd, nParam1, pCmdData);

    return OMX_ErrorNone;
}
コード例 #5
0
ファイル: ftp.cpp プロジェクト: kaifengz/fasmio
void FtpConnHandler::HandleConnection(fasmio::runtime_env::ITCPSocket* sock, const char* addr)
{
    if (NULL == (sock_ = sock))
        return;

    if (!SendMessage(220, "Greeting %s", addr))
        return;

    // wait for USER, user name ignored
    while (true)
    {
        if (!WaitCommand())
            return;
        if (last_cmd_ != CMD_USER)
        {
            if (!SendMessage(530, "Please login with USER and PASS."))
                return;
            continue;
        }
        break;
    }

    if (!SendMessage(331, "Please specify the password."))
        return;

    // wait for PASS, the password will dropped immediately
    while (true)
    {
        if (!WaitCommand())
            return;
        if (last_cmd_ != CMD_PASS)
        {
            if (!SendMessage(530, "Please login with USER and PASS."))
                return;
            continue;
        }
        break;
    }

    if (!SendMessage(230, "Login successful.")) return;

    // command main loop
    while (true)
    {
        if (!WaitCommand())
            return;

        if (last_cmd_ == CMD_QUIT)
        {
            SendMessage(221, "Goodbye");
            break;
        }

        for (unsigned i=0; i<sizeof(commands)/sizeof(commands[0]); ++i)
        {
            if (commands[i].cmd == last_cmd_)
            {
                if (!((this->*(commands[i].cmd_handler))()))
                    return;
                break;
            }
        }
    }
}