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(); }
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; }
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); }
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; }
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); }
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); }
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; }
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; }
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; }
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; }