- #include "chains_vipSingleCam_ColorToGray_priv.h"
- #include <src/hlos/adas/include/chains.h>
- #include <src/hlos/common/chains_common.h>
- #define CAPTURE_SENSOR_WIDTH (1280)
- #define CAPTURE_SENSOR_HEIGHT (720)
- #define NUMBER_OF_CAM (2)
- #define NUMBER_OF_PORT (NUMBER_OF_CAM / 2)
- /**
- *******************************************************************************
- *
- * \brief Use-case object
- *
- * This structure contains all the LinksId's and create Params.
- * The same is passed to all create, start, stop functions.
- *
- *******************************************************************************
- */
- typedef struct {
- chains_vipSingleCam_ColorToGrayObj ucObj;
- UInt32 captureOutWidth;
- UInt32 captureOutHeight;
- UInt32 displayWidth;
- UInt32 displayHeight;
- Chains_Ctrl *chainsCfg;
- VideoSensorCreateAndStartAppPrm vidSensorPrm;
- UInt32 appCtrlLinkId;
- UInt32 displayActiveChId;
- /**< CH ID which is shown on display, by default 2x2 SW Mosaic
- * is shown on display
- */
- UInt32 numLvdsCh;
- /**< Number of channels of LVDS to enable */
- } Chains_vipSingleCam_ColorToGrayAppObj;
- /**
- *******************************************************************************
- * \brief Run Time Menu string.
- *******************************************************************************
- */
- char gChains_vipSingleCam_ColorToGray_runTimeMenu[] = {
- "\r\n "
- "\r\n ===================="
- "\r\n Chains Run-time Menu"
- "\r\n ===================="
- "\r\n "
- "\r\n 0: Stop Chain"
- "\r\n "
- "\r\n 2: Pause Capture"
- "\r\n 3: Resume Capture"
- "\r\n "
- "\r\n p: Print Performance Statistics "
- "\r\n "
- "\r\n Enter Choice: "
- "\r\n "
- };
- static void chains_vipSingleCam_ColorToGray_SetVpePrm(VpeLink_CreateParams *pPrm, UInt32 numLvdsCh)
- {
- UInt32 chId;
- VpeLink_ChannelParams *chPrms;
- pPrm->enableOut[0] = TRUE;
- for(chId = 0; chId < numLvdsCh; chId++)
- {
- pPrm->chParams[chId].outParams[0].width = CAPTURE_SENSOR_WIDTH;
- pPrm->chParams[chId].outParams[0].height = CAPTURE_SENSOR_HEIGHT;
- pPrm->chParams[chId].outParams[0].dataFormat = SYSTEM_DF_YUV422I_YUYV;
- pPrm->chParams[chId].outParams[0].numBufsPerCh = 4;
- chPrms = &pPrm->chParams[chId];
- chPrms->scCfg.bypass = FALSE;
- chPrms->scCfg.nonLinear = FALSE;
- chPrms->scCfg.stripSize = 0;
- chPrms->scCropCfg.cropStartX = 0;
- chPrms->scCropCfg.cropStartY = 0;
- chPrms->scCropCfg.cropWidth = CAPTURE_SENSOR_WIDTH;
- chPrms->scCropCfg.cropHeight = CAPTURE_SENSOR_HEIGHT;
- }
- }
- static void chains_vipSingleCam_ColorToGray_SetSelectPrm(
- SelectLink_CreateParams *pPrm)
- {
- pPrm->numOutQue = 1;
- pPrm->outQueChInfo[0].outQueId = 0;
- pPrm->outQueChInfo[0].numOutCh = 1;
- pPrm->outQueChInfo[0].inChNum[0] = 0;
- }
- /**
- *******************************************************************************
- *
- * \brief Set link Parameters
- *
- * It is called in Create function of the auto generated use-case file.
- *
- * \param pUcObj [IN] Auto-generated usecase object
- * \param appObj [IN] Application specific object
- *
- *******************************************************************************
- */
- Void chains_vipSingleCam_ColorToGray_SetAppPrms(chains_vipSingleCam_ColorToGrayObj *pUcObj, Void *appObj)
- {
- Chains_vipSingleCam_ColorToGrayAppObj *pObj
- = (Chains_vipSingleCam_ColorToGrayAppObj*)appObj;
- UInt32 portId[VIDEO_SENSOR_MAX_LVDS_CAMERAS];
- pObj->displayActiveChId = 0;
- pObj->numLvdsCh = NUMBER_OF_CAM;
- pObj->captureOutWidth = CAPTURE_SENSOR_WIDTH;
- pObj->captureOutHeight = CAPTURE_SENSOR_HEIGHT;
- ChainsCommon_GetDisplayWidthHeight(
- pObj->chainsCfg->displayType,
- &pObj->displayWidth,
- &pObj->displayHeight
- );
- portId[0] = SC_VIDEO_SENSOR_1_2;
- ChainsCommon_SetCapturePrms(
- &pUcObj->CapturePrm,
- CAPTURE_SENSOR_WIDTH * 2,
- CAPTURE_SENSOR_HEIGHT,
- portId,
- pObj->numLvdsCh / 2
- );
- chains_vipSingleCam_ColorToGray_SetSelectPrm(&pUcObj->SelectPrm);
- chains_vipSingleCam_ColorToGray_SetVpePrm(&pUcObj->VPEPrm, 1);
- ChainsCommon_SetGrpxSrcPrms(
- &pUcObj->GrpxSrcPrm,
- pObj->displayWidth,
- pObj->displayHeight
- );
- pUcObj->GrpxSrcPrm.grpxBufInfo.dataFormat = SYSTEM_DF_BGRA16_4444;
- ChainsCommon_SetDisplayPrms(
- &pUcObj->DisplayPrm,
- &pUcObj->Display_GrpxPrm,
- pObj->chainsCfg->displayType,
- pObj->displayWidth,
- pObj->displayHeight
- );
- ChainsCommon_StartDisplayCtrl(
- pObj->chainsCfg->displayType,
- pObj->displayWidth,
- pObj->displayHeight
- );
- }
- /**
- *******************************************************************************
- *
- * \brief Start the capture display Links
- *
- * Function sends a control command to capture and display link to
- * to Start all the required links . Links are started in reverce
- * order as information of next link is required to connect.
- * System_linkStart is called with LinkId to start the links.
- *
- * \param pObj [IN] Chains_vipSingleCam_ColorToGrayObj
- *
- * \return SYSTEM_LINK_STATUS_SOK on success
- *
- *******************************************************************************
- */
- static Void chains_vipSingleCam_ColorToGray_StartApp(Chains_vipSingleCam_ColorToGrayAppObj *pObj)
- {
- pObj->vidSensorPrm.captureSrcId = CHAINS_CAPTURE_SRC_OV10635;
- pObj->vidSensorPrm.isLVDSCaptMode = TRUE;
- pObj->vidSensorPrm.numLvdsCh = 2;
- pObj->vidSensorPrm.chipType = SCV;
- system("./ub964_SV.sh");
- System_linkControl(SYSTEM_LINK_ID_APP_CTRL,
- APP_CTRL_LINK_CMD_VIDEO_SENSOR_CREATE_AND_START,
- &pObj->vidSensorPrm,
- sizeof(VideoSensorCreateAndStartAppPrm),
- TRUE);
- ChainsCommon_statCollectorReset();
- ChainsCommon_memPrintHeapStatus();
- chains_vipSingleCam_ColorToGray_Start(&pObj->ucObj);
- ChainsCommon_prfLoadCalcEnable(TRUE, FALSE, FALSE);
- }
- /**
- *******************************************************************************
- *
- * \brief Delete the capture display Links
- *
- * Function sends a control command to capture and display link to
- * to delete all the prior created links
- * System_linkDelete is called with LinkId to delete the links.
- *
- * \param pObj [IN] Chains_vipSingleCam_ColorToGrayObj
- *
- *******************************************************************************
- */
- static Void chains_vipSingleCam_ColorToGray_StopAndDeleteApp(Chains_vipSingleCam_ColorToGrayAppObj *pObj)
- {
- chains_vipSingleCam_ColorToGray_Stop(&pObj->ucObj);
- chains_vipSingleCam_ColorToGray_Delete(&pObj->ucObj);
- ChainsCommon_StopDisplayCtrl();
- System_linkControl(SYSTEM_LINK_ID_APP_CTRL,
- APP_CTRL_LINK_CMD_VIDEO_SENSOR_STOP_AND_DELETE,
- &pObj->vidSensorPrm,
- sizeof(VideoSensorCreateAndStartAppPrm),
- TRUE);
- /* Print the HWI, SWI and all tasks load */
- /* Reset the accumulated timer ticks */
- ChainsCommon_prfLoadCalcEnable(FALSE, FALSE, FALSE);
- }
- /**
- *******************************************************************************
- *
- * \brief Single Channel Capture Display usecase function
- *
- * This functions executes the create, start functions
- *
- * Further in a while loop displays run time menu and waits
- * for user inputs to print the statistics or to end the demo.
- *
- * Once the user inputs end of demo stop and delete
- * functions are executed.
- *
- * \param chainsCfg [IN] Chains_Ctrl
- *
- *******************************************************************************
- */
- Void Chains_vipSingleCam_ColorToGray(Chains_Ctrl *chainsCfg)
- {
- char ch;
- UInt32 done = FALSE;
- Chains_vipSingleCam_ColorToGrayAppObj chainsObj;
- Int32 status;
- chainsObj.numLvdsCh = 0; /* KW error fix */
- chainsObj.displayActiveChId = 0; /* KW error fix */
- chainsObj.chainsCfg = chainsCfg;
- chains_vipSingleCam_ColorToGray_Create(&chainsObj.ucObj, &chainsObj);
- chains_vipSingleCam_ColorToGray_StartApp(&chainsObj);
- while(!done)
- {
- Vps_printf(gChains_vipSingleCam_ColorToGray_runTimeMenu);
- ch = Chains_readChar();
- switch(ch)
- {
- case '0':
- done = TRUE;
- break;
- case '2':
- status = System_linkStop(chainsObj.ucObj.CaptureLinkID);
- UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
- break;
- case '3':
- status = System_linkStart(chainsObj.ucObj.CaptureLinkID);
- UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
- break;
- case 'p':
- case 'P':
- ChainsCommon_PrintStatistics();
- chains_vipSingleCam_ColorToGray_printStatistics(&chainsObj.ucObj);
- break;
- default:
- Vps_printf("\nUnsupported option '%c'. Please try again\n", ch);
- break;
- }
- }
- chains_vipSingleCam_ColorToGray_StopAndDeleteApp(&chainsObj);
- }