コード例 #1
0
ファイル: main.c プロジェクト: ajaxhe/dvs_project
int main()
{
	gblSetExitState(DVS_WORKING);
	// 设置当前设备的视频通道数;
	gblSetVideoChannels(16);
	//gblSetVideoChannels(8);

	// init ortp interface
	rtp_init();
	
	// tcp listen thread create
	if (tcp_listen_thread_start(LOCAL_TCP_PORT) != 0)
	{
		printf("[main] open tcp listen thread failed!\n");
		return -1;
	}
	// uart tcp listen thread create
	if (uart_tcp_listen_thread_start(UART_LOCAL_TCP_PORT) != 0)
	{
		printf("[main] open uart tcp listen thread failed!\n");
		return -1;
	}

	OSA_ThrHndl sshThrHandle;
	if (OSA_thrCreate(&sshThrHandle,ssh_interact_thr,OSA_THR_PRI_DEFAULT,OSA_THR_STACK_SIZE_DEFAULT,NULL))
	{
		printf("open ssh interact thread failed\n");
		return -1;
	}

	if (start_all_threads() < 0)
		return -1;

	while ( gblGetExitState() == DVS_WORKING )
	{
		sleep(1);
	}

	stop_all_threads();

	// close ortp interface
	rtp_exit();

	// close tcp listen thread
	clean_tcp_listen_thread();

	// close uart tcp listen thread
	clean_uart_tcp_listen_thread();
	

	return gblGetExitState();
}
コード例 #2
0
ファイル: osa_tsk.c プロジェクト: JammyWei/ipc_dm36x
int OSA_tskCreate(OSA_TskHndl *pPrc, OSA_TskFncMain fncMain, Uint32 tskPri, Uint32 tskStackSize, Uint32 initState)
{
  pPrc->curState      = initState;
  pPrc->fncMain       = fncMain;

  OSA_assert(pPrc->fncMain      != NULL);

  OSA_mbxCreate(&pPrc->mbxHndl);

  OSA_assertSuccess( OSA_thrCreate(&pPrc->thrHndl, OSA_tskThrMain, tskPri, tskStackSize,  pPrc) );
  
  return OSA_SOK;
}
コード例 #3
0
static Void VcapVencVdecVdis_ipcBitsInitThrObj(VcapVencVdecVdis_IpcBitsCtrlThrObj *thrObj)
{

    OSA_semCreate(&thrObj->bitsInNotifySem,
                  MCFW_IPCBITS_MAX_PENDING_RECV_SEM_COUNT,0);
    thrObj->exitBitsInThread = FALSE;
    thrObj->exitBitsOutThread = FALSE;
    OSA_queCreate(&thrObj->bufQFreeBufs,MCFW_IPCBITS_FREE_QUE_MAX_LEN);
    OSA_queCreate(&thrObj->bufQFullBufs,MCFW_IPCBITS_FULL_QUE_MAX_LEN);
    OSA_thrCreate(&thrObj->thrHandleBitsOut,
                  VcapVencVdecVdis_ipcBitsSendFxn,
                  MCFW_IPCBITS_SENDFXN_TSK_PRI,
                  MCFW_IPCBITS_SENDFXN_TSK_STACK_SIZE,
                  thrObj);

    OSA_thrCreate(&thrObj->thrHandleBitsIn,
                  VcapVencVdecVdis_ipcBitsRecvFxn,
                  MCFW_IPCBITS_RECVFXN_TSK_PRI,
                  MCFW_IPCBITS_RECVFXN_TSK_STACK_SIZE,
                  &gVcapVencVdecVdis_ipcBitsCtrl);

}
コード例 #4
0
ファイル: main.c プロジェクト: ajaxhe/dvs_project
int start_all_threads()
{
	// Open the object which synchronizes the thread initialization and clean
	Rendezvous_open(&g_threadMgr.threadEnv.rendezvousInit, NUM_OF_THREADS);
	Rendezvous_open(&g_threadMgr.threadEnv.rendezvousCleanup, NUM_OF_THREADS);

	printf("NUM_OF_THREADS=%d\n", NUM_OF_THREADS);
	
	// create net session thread
	if( OSA_thrCreate(&g_threadMgr.hThread[ORTP_SESSION_THR],sessionThrFxn,OSA_THR_PRI_DEFAULT,OSA_THR_STACK_SIZE_DEFAULT,&g_threadMgr.threadEnv) )
	{   
		printf("session pthread_create fail!\n");
		return -1; 
	} 

	// create video encode thread
	if( OSA_thrCreate(&g_threadMgr.hThread[VIDEO_ENCODE_THR], videoEncodeThrFxn,OSA_THR_PRI_DEFAULT,OSA_THR_STACK_SIZE_DEFAULT,&g_threadMgr.threadEnv) )
	{   
		printf("video encode pthread_create fail!\n");
		return -1; 
	} 

	// create audio encode thread
	if( OSA_thrCreate(&g_threadMgr.hThread[AUDIO_ENCODE_THR], audioEncodeThrFxn,OSA_THR_PRI_DEFAULT,OSA_THR_STACK_SIZE_DEFAULT,&g_threadMgr.threadEnv) )
	{   
		printf("audio encode pthread_create fail!\n");
		return -1; 
	} 

	// create alarm input thread
	if ( OSA_thrCreate(&g_threadMgr.hThread[ALARM_INPUT_THR], alarmInputThrFxn, OSA_THR_PRI_DEFAULT,OSA_THR_STACK_SIZE_DEFAULT,&g_threadMgr.threadEnv) )
	{   
		printf("alarm input thread create failed\n");  
		return  -1; 
	}  

	return 0;
}
コード例 #5
0
static Void  VdecVdis_ipcFramesInitThrObj( VdecVdis_IpcFramesCtrl *ipcFramesObj)
{
    VdecVdis_IpcFramesCtrlThrObj *thrObj;

    thrObj = &ipcFramesObj->thrObj;
    thrObj->exitFramesOutThread = FALSE;
    OSA_semCreate(&thrObj->thrStartSem,1,0);
    OSA_thrCreate(&thrObj->thrHandleFramesOut,
                   VdecVdis_ipcFramesSendFxn,
                  MCFW_IPCFRAMES_SENDFXN_TSK_PRI,
                  MCFW_IPCFRAMES_SENDFXN_TSK_STACK_SIZE,
                  ipcFramesObj);

}
コード例 #6
0
static Void VdecVdis_bitsRdInitThrObj()
{
    int status;

    gVdecVdis_obj.thrExit = FALSE;
    status = OSA_semCreate(&gVdecVdis_obj.thrStartSem,1,0);
    OSA_assert(status==OSA_SOK);

    status = OSA_thrCreate(&gVdecVdis_obj.thrHandle,
            VdecVdis_bitsRdSendFxn,
            MCFW_IPCBITS_SENDFXN_TSK_PRI,
            MCFW_IPCBITS_SENDFXN_TSK_STACK_SIZE,
            &gVdecVdis_obj);

    OSA_assert(status==OSA_SOK);
}
コード例 #7
0
Int32 VcapVenc_bitsWriteCreate()
{
    VENC_CALLBACK_S callback;

    Int32 status;

    gVcapVenc_ctrl.fileWriteChn = 0;

    gVcapVenc_ctrl.fileWriteEnable = Demo_getFileWriteEnable();

    if(gVcapVenc_ctrl.fileWriteEnable)
    {
        char path[256];

        Demo_getFileWritePath(path, "/dev/shm");

        gVcapVenc_ctrl.fileWriteChn = Demo_getChId("File Write", gDemo_info.maxVencChannels);

        sprintf(gVcapVenc_ctrl.fileWriteName, "%s/VID_CH%02d.h264", path, gVcapVenc_ctrl.fileWriteChn);
    }

    gVcapVenc_ctrl.exitWrThr = FALSE;
    gVcapVenc_ctrl.isWrThrStopDone = FALSE;

    callback.newDataAvailableCb = VcapVenc_bitsWriteCbFxn;

    /* Register call back with encoder */
    Venc_registerCallback(&callback,
                          (Ptr)&gVcapVenc_ctrl);

    status = OSA_semCreate(&gVcapVenc_ctrl.wrSem, 1, 0);
    OSA_assert(status==OSA_SOK);

    status = OSA_thrCreate(
                 &gVcapVenc_ctrl.wrThrHndl,
                 VcapVenc_bitsWriteMain,
                 OSA_THR_PRI_DEFAULT,
                 0,
                 &gVcapVenc_ctrl
             );

    OSA_assert(status==OSA_SOK);

    return OSA_SOK;
}
コード例 #8
0
ファイル: SD_demo_bits_wr.c プロジェクト: JammyWei/dm8168
Int32 SD_Demo_bitsWriteCreate()
{

    Int32 status;

    gSD_Demo_Ipc_Ctrl.fileWriteChn = 0;

    gSD_Demo_Ipc_Ctrl.fileWriteEnable = SD_Demo_getFileWriteEnable();

    if(gSD_Demo_Ipc_Ctrl.fileWriteEnable)
    {
        char path[256];

        SD_Demo_getFileWritePath(path, "/dev/shm");

        gSD_Demo_Ipc_Ctrl.fileWriteChn = SD_Demo_getChId("File Write", gSD_Demo_ctrl.numCapChannels);

        sprintf(gSD_Demo_Ipc_Ctrl.fileWriteName, "%s/VID_CH%02d.h264", path, gSD_Demo_Ipc_Ctrl.fileWriteChn);
    }

    gSD_Demo_Ipc_Ctrl.exitWrThr = FALSE;
    gSD_Demo_Ipc_Ctrl.isWrThrStopDone = FALSE;


    status = OSA_semCreate(&gSD_Demo_Ipc_Ctrl.wrSem, 1, 0);
    OSA_assert(status==OSA_SOK);

    status = OSA_thrCreate(
                 &gSD_Demo_Ipc_Ctrl.wrThrHndl,
                 SD_Demo_bitsWriteMain,
                 OSA_THR_PRI_DEFAULT,
                 0,
                 &gSD_Demo_Ipc_Ctrl
             );

    OSA_assert(status==OSA_SOK);

    OSA_waitMsecs(100); // allow for print to complete
    return OSA_SOK;
}
コード例 #9
0
ファイル: system_ipc_msgq.c プロジェクト: Lichanglu/Edukit-MW
Int32 System_ipcMsgQTskCreate()
{
    Int32 status;

    status = OSA_mutexCreate(&gSystem_ipcObj.msgQLock);
    UTILS_assert(status==OSA_SOK);
    /*
     * Create task
     */
//	printf("( System_ipcMsgQTaskMain) = %p\n",(System_ipcMsgQTaskMain));

    status = OSA_thrCreate(
                &gSystem_ipcObj.msgQTask,
                System_ipcMsgQTaskMain,
                SYSTEM_MSGQ_TSK_PRI,
                SYSTEM_MSGQ_TSK_STACK_SIZE,
                NULL
            );
    UTILS_assert(status==OSA_SOK);

    return OSA_SOK;
}
コード例 #10
0
ファイル: drv_imageTune.c プロジェクト: JammyWei/ipc_dm36x
int DRV_imageTuneInit()
{
    DRV_ImgsIsifConfig      *pIsifCfg;
    DRV_ImgsIpipeConfig     *pIpipeCfg;
    DRV_ImgsLdcConfig       *pLdcCfg;
    awb_calc_data_t         *pAwbCfg;
    ALG_vnfParams           *pVnfCfg;
    IMAGE_TUNE_ParamSet     *prm;

    int status = OSA_SOK;

    memset(&gDRV_imageTuneObj, 0, sizeof(gDRV_imageTuneObj));

    // init and set default handlers
    status = IMAGE_TUNE_Init();
    if (status != OSA_SOK)
    {
        OSA_ERROR("IMAGE TUNE: init\n");
        return OSA_EFAIL;
    }

    // override with system specific handlers
    IMAGE_TUNE_AttachCmdHandler(IMAGE_TUNE_SYS_SAVE_RAW_DATA, DRV_imageTuneCmdExecuteSaveRawData);
    IMAGE_TUNE_AttachCmdHandler(IMAGE_TUNE_SYS_SAVE_YUV_DATA, DRV_imageTuneCmdExecuteSaveYuvData);
    IMAGE_TUNE_AttachCmdHandler(IMAGE_TUNE_LDC_PRM          , DRV_ldcImageTuneCmdExecuteLdc     );
    IMAGE_TUNE_AttachCmdHandler(IMAGE_TUNE_CCDC_LSC         , DRV_isifImageTuneCmdExecuteLsc    );
    IMAGE_TUNE_AttachCmdHandler(IMAGE_TUNE_SYS_SEND_RAW_DATA, DRV_imageTuneCmdExecuteSendRawData);
    IMAGE_TUNE_AttachCmdHandler(IMAGE_TUNE_SYS_SEND_YUV_DATA, DRV_imageTuneCmdExecuteSendYuvData);

    //printf("%p\n", drvImgsFunc->imgsGetIsifConfig);
    pIsifCfg  = drvImgsFunc->imgsGetIsifConfig(DRV_IMGS_SENSOR_MODE_DEFAULT);
    pIpipeCfg = drvImgsFunc->imgsGetIpipeConfig(DRV_IMGS_SENSOR_MODE_DEFAULT, 0);
    pLdcCfg   = drvImgsFunc->imgsGetLdcConfig(DRV_IMGS_SENSOR_MODE_DEFAULT, 0, 0);
    pAwbCfg   = ImageTune_imgsGetAwbConfig(0);
    pVnfCfg   = ImageTune_imgsGetVnfConfig(0);

    if (pIsifCfg != NULL)
    {
        gDRV_imageTuneObj.imgsDefaultPrm.pCcdcPrm = &pIsifCfg->ccdcParams;
    }

    if (pIpipeCfg != NULL)
    {
        gDRV_imageTuneObj.imgsDefaultPrm.pIpipePrm   = &pIpipeCfg->ipipeParams;
        gDRV_imageTuneObj.imgsDefaultPrm.pIpipeifPrm = &pIpipeCfg->ipipeifParams;
    }

    if (pLdcCfg != NULL)
    {
        gDRV_imageTuneObj.imgsDefaultPrm.pLdcPrm = &pLdcCfg->ldcParams;
    }

    if (pAwbCfg != NULL)
    {
        gDRV_imageTuneObj.imgsDefaultPrm.pAwbPrm = pAwbCfg;
    }

    if (pVnfCfg != NULL)
    {
        gDRV_imageTuneObj.imgsDefaultPrm.pVnfPrm = pVnfCfg;
    }

    status = IMAGE_TUNE_ReadParamset(0);                                    /* Read Paramset file */
    status = IMAGE_TUNE_SetParams(&gDRV_imageTuneObj.imgsDefaultPrm);       /* Get Default vaule */
    status = IMAGE_TUNE_SaveParamSetList(prm, IMAGE_TUNE_DEFAULT_PARAMSET); /* Set Default vaule to Paramset "0" */

#ifndef IMAGE_TUNE_USE_FACTORY_PARAMSET
    /*if IMAGE_TUNE_USE_FACTORY_PARAMSET enabled, uses the paramset in the code (hard coded) as
      default paramset during boot else IMAGE_TUNE_USE_DEFAULT_PARAMSET as boot paramset if it is available
      and may change based on the boot paramset ID - now in vnf - Revisit*/
    status = DRV_imageTuneLoadParamSet(0, IMAGE_TUNE_USE_DEFAULT_PARAMSET);
#endif

    status = OSA_flgCreate(&gDRV_imageTuneObj.dataSaveFlg, 0);
    if (status != OSA_SOK)
    {
        OSA_ERROR("OSA_flgCreate()\n");
        return status;
    }

    status = IMAGE_TUNE_ServerOpen(IMAGE_TUNE_SERVER_DEFAULT_PORT);
    if (status != OSA_SOK)
    {
        OSA_ERROR("IMAGE_TUNE_ServerOpen()\n");
        OSA_flgDelete(&gDRV_imageTuneObj.dataSaveFlg);
        return status;
    }

    status = OSA_thrCreate(&gDRV_imageTuneObj.thrHndl, DRV_imageTuneThrMain, DRV_IMAGE_TUNE_THR_PRI, DRV_IMAGE_TUNE_THR_STACK_SIZE, NULL);
    if (status != OSA_SOK)
    {
        OSA_ERROR("OSA_thrCreate()\n");
        OSA_flgDelete(&gDRV_imageTuneObj.dataSaveFlg);
        IMAGE_TUNE_ServerClose();
        return status;
    }

    return status;
}