SCF_STATE CAM_SM::PowerUp_STC_ReadId(s_scf_event const *e) {
	switch (e->sig) {
		case SCF_STATE_ENTRY_SIG:
		{
			ENTRY;
			MSG0("PowerUp_STC_ReadId-SCF_STATE_ENTRY_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_ReadId-SCF_STATE_ENTRY_SIG", (&mENSComponent));
			pIspctlCom->queuePE(Sensor_Tuning_Status_u16_CurrentSubBlockIdValue_Byte0,0);
			pIspctlCom->readQueue();
			return 0;
		}
		case EVT_ISPCTL_LIST_INFO_SIG:
		{
			MSG0("PowerUp_STC_ReadId-EVT_ISPCTL_LIST_INFO_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_ReadId-EVT_ISPCTL_LIST_INFO_SIG", (&mENSComponent));
			if (e->type.ispctlInfo.info_id != ISP_READLIST_DONE) break;
//#if defined (OSI_DEBUG)
			for(t_uint16 i=0; i < e->type.ispctlInfo.number_of_pe; i++) {
				MSG3("   PE[%d] %s = 0x%lX\n", i, pSensor->GetPeName(e->type.ispctlInfo.Listvalue[i].pe_addr), e->type.ispctlInfo.Listvalue[i].pe_data );
				//OstTraceFiltStatic3(TRACE_DEBUG, "PE[%d] %s = 0x%lX", (&mENSComponent), i, CXp70::GetPeName(e->type.ispctlInfo.Listvalue[i].pe_addr), e->type.ispctlInfo.Listvalue[i].pe_data );
			}
//#endif
			// Store tuning BlockId value
			pFwSubBlockId[iCurrentFwSubBlockIndex] = (t_uint16)e->type.ispctlInfo.Listvalue[0].pe_data;
			MSG2("   FwSubBlockId[%d] = ID%d\n", iCurrentFwSubBlockIndex, pFwSubBlockId[iCurrentFwSubBlockIndex]);
			OstTraceFiltStatic2(TRACE_DEBUG, "FwSubBlockId[%d] = ID%d", (&mENSComponent), iCurrentFwSubBlockIndex, pFwSubBlockId[iCurrentFwSubBlockIndex]);
			// Another block to be fetched ?
			iCurrentFwSubBlockIndex++;
			if(iCurrentFwSubBlockIndex<iFwSubBlockIdsCount) {
				// Still some tuning blocks IDs are to be fetched
				MSG0("   Some blocks ID are to be fetched\n");
				OstTraceFiltStatic0(TRACE_DEBUG, "Some blocks ID are to be fetched", (&mENSComponent));
				SCF_TRANSIT_TO(&CAM_SM::PowerUp_STC_QueryId);
			}
			else {
				// All tuning blocks IDs were fetched
				MSG1("   All block IDs were fetched: total %d\n", iFwSubBlockIdsCount);
				OstTraceFiltStatic1(TRACE_DEBUG, "All block IDs were fetched: total %d", (&mENSComponent), iFwSubBlockIdsCount);
//#if defined (OSI_DEBUG)
				for(t_uint16 i=0; i<iFwSubBlockIdsCount; i++) {
					MSG2("   FwSubBlockId[%d] = ID%d\n", i, pFwSubBlockId[i]);
					OstTraceFiltStatic2(TRACE_DEBUG, "FwSubBlockId[%d] = ID%d", (&mENSComponent), i, pFwSubBlockId[i]);
				}
//#endif
				SCF_TRANSIT_TO(&CAM_SM::PowerUp_STC_LoadData);
			}
			return 0;
		}
		case SCF_STATE_EXIT_SIG:
		{
			EXIT;
			return 0;
		}
		default: break;
	}
	return SCF_STATE_PTR(&COM_SM::SHARED_ControlingISPState_Boot);
}
/*
 * This function sets the DefCor dampers
 */
t_damper_error_code CDefCorDamper::SetDamper( const t_defcor_damper_id aDamperId,
                                              const float*             pValues,
                                              const int                aNumRows,
                                              const int                aNumCols)
{
   IN0("\n");
   OstTraceFiltStatic0(TRACE_FLOW, "Entry CDefCorDamper::SetDamper", (mTraceObject));
   t_damper_error_code err = DAMPER_OK;
   if(aDamperId<0 || aDamperId>=DEFCOR_DAMPERS_NUM)
   {
      DBGT_ERROR("Invalid damper Id: %d\n", aDamperId);
      OstTraceFiltStatic1(TRACE_ERROR, "Invalid damper Id: %d", (mTraceObject), aDamperId);
      OUTR(" ",DAMPER_INVALID_ARGUMENT);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CDefCorDamper::SetDamper (%d)", (mTraceObject), DAMPER_INVALID_ARGUMENT);
      return DAMPER_INVALID_ARGUMENT;
   }
   MSG3("[%s] NumRows=%d, NumCols=%d\n", KDefCorDamperInfo[aDamperId].name, aNumRows, aNumCols);
   OstTraceFiltStatic3(TRACE_DEBUG, "[KDefCorDamperInfo[%d].name] NumRows=%d, NumCols=%d", (mTraceObject), aDamperId, aNumRows, aNumCols);
   err = DoSetDamper( aDamperId, pValues, aNumRows, aNumCols);
   if(err!=DAMPER_OK)
   {
      DBGT_ERROR("[%s] failed to set damper: err=%d\n", KDefCorDamperInfo[aDamperId].name, err);
      OstTraceFiltStatic2(TRACE_ERROR, "[KDefCorDamperInfo[%d].name] failed to set damper: err=%d", (mTraceObject), aDamperId, err);
      OUTR(" ",err);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CDefCorDamper::SetDamper (%d)", (mTraceObject), err);
      return err;
   }
   OUTR(" ",DAMPER_OK);
   OstTraceFiltStatic1(TRACE_FLOW, "Exit CDefCorDamper::SetDamper (%d)", (mTraceObject), DAMPER_OK);
   return DAMPER_OK;
}
Exemplo n.º 3
0
/*
 * This function sets the sharpening damper
 */
t_damper_error_code CSharpeningDamperLR::SetDamper( const t_sharpening_damper_lr_id aDamperId,
                                                    const float*                    pValues,
                                                    const int                       aNumRows,
                                                    const int                       aNumCols)
{
   IN0("\n");
   OstTraceFiltStatic0(TRACE_FLOW, "Entry CSharpeningDamperLR::SetDamper", (mTraceObject));
   t_damper_error_code err = DAMPER_OK;
   if(aDamperId<0 || aDamperId>=SHARPENING_DAMPERS_LR_NUM)
   {
      DBGT_ERROR("Invalid damper Id: %d\n", aDamperId);
      OstTraceFiltStatic1(TRACE_ERROR, "Invalid damper Id: %d", (mTraceObject), aDamperId);
      OUTR(" ",DAMPER_INVALID_ARGUMENT);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CSharpeningDamperLR::SetDamper (%d)", (mTraceObject), DAMPER_INVALID_ARGUMENT);
      return DAMPER_INVALID_ARGUMENT;
   }
   MSG3("[%s] NumRows=%d, NumCols=%d\n", SHARPENING_DAMPER_LR_NAME(aDamperId), aNumRows, aNumCols);
   OstTraceFiltStatic3(TRACE_DEBUG, "SHARPENING_DAMPER_LR_NAME(%d) NumRows=%d, NumCols=%d", (mTraceObject), aDamperId, aNumRows, aNumCols);
   err = DoSetDamper( aDamperId, pValues, aNumRows, aNumCols);
   if(err!=DAMPER_OK)
   {
      DBGT_ERROR("[%s] failed to set damper: err=%d\n", SHARPENING_DAMPER_LR_NAME(aDamperId), err);
      OstTraceFiltStatic2(TRACE_ERROR, "SHARPENING_DAMPER_LR_NAME(%d) failed to set damper: err=%d", (mTraceObject), aDamperId, err);
      OUTR(" ",err);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CSharpeningDamperLR::SetDamper (%d)", (mTraceObject), err);
      return err;
   }
   OUTR(" ",DAMPER_OK);
   OstTraceFiltStatic1(TRACE_FLOW, "Exit CSharpeningDamperLR::SetDamper (%d)", (mTraceObject), DAMPER_OK);
   return DAMPER_OK;
}
SCF_STATE CAM_SM::PowerUp_STC_QueryId(s_scf_event const *e) {
	switch (e->sig) {
		case SCF_STATE_ENTRY_SIG:
		{
			ENTRY;
			// Ask the next block ID and toggle the coin
			MSG2("   Query Block[%d], coin state=%d\n", iCurrentFwSubBlockIndex, (int)iStatusCoin);
			OstTraceFiltStatic2(TRACE_DEBUG, "   Query Block[%d], coin state=%d", (&mENSComponent), iCurrentFwSubBlockIndex, (int)iStatusCoin);
			pIspctlCom->queuePE(Sensor_Tuning_Control_u16_SelectedSubBlockIdIndex_Byte0,(t_uint32)iCurrentFwSubBlockIndex);
			pIspctlCom->queuePE(Sensor_Tuning_Control_e_Coin_SubBlock_Control_Byte0,(t_uint32)(iStatusCoin==Coin_e_Heads ? Coin_e_Tails : Coin_e_Heads));
			pIspctlCom->processQueue();
			return 0;
		}
		case EVT_ISPCTL_LIST_INFO_SIG:
		{
			MSG0("PowerUp_STC_QueryId-EVT_ISPCTL_LIST_INFO_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_QueryId-EVT_ISPCTL_LIST_INFO_SIG", (&mENSComponent));
			if (e->type.ispctlInfo.info_id != ISP_WRITELIST_DONE) break;
			SCF_TRANSIT_TO(&CAM_SM::PowerUp_STC_CheckCoin);
			return 0;
		}
		case SCF_STATE_EXIT_SIG:
		{
			EXIT;
			return 0;
		}
		default: break;
	}
	return SCF_STATE_PTR(&COM_SM::SHARED_ControlingISPState_Boot);
}
Exemplo n.º 5
0
/*
 * This function sets the OMX setting value
 */
void CSharpeningDamperLR::SetOmxMapping(float aGain, float aOffset)
{
   iScaleFactorGain   = aGain;
   iScaleFactorOffset = aOffset;
   MSG2("OMX Mapping: gain=%f, offset=%f\n", iScaleFactorGain, iScaleFactorOffset);
   OstTraceFiltStatic2(TRACE_DEBUG, "OMX Mapping: gain=%f, offset=%f", (mTraceObject), iScaleFactorGain, iScaleFactorOffset);
}
/*
 * This function launches the loading of the firmware tuning data
 */
TuningLoaderMgrError_t CTuningLoaderManager::loadFirmwareTuningData(const t_camera_info*    pCamInfo,
                                                                    const t_fw_blocks_info* pFwBlocksInfo)
{
    IN0("\n");
    OstTraceFiltStatic0(TRACE_FLOW, "Entry CTuningLoaderManager::loadFirmwareTuningData", (mTraceObject));

    // Check if constructed
    if(iNmfInstance == NULL) {
        MSG0("Instance not constructed\n");
        OstTraceFiltStatic0(TRACE_DEBUG, "Instance not constructed", (mTraceObject));
        OUTR(" ",TUNING_LOADER_MGR_NOT_CONSTRUCTED);
        OstTraceFiltStatic1(TRACE_FLOW, "Exit CTuningLoaderManager::loadFirmwareTuningData (%d)", (mTraceObject), TUNING_LOADER_MGR_NOT_CONSTRUCTED);
        return TUNING_LOADER_MGR_NOT_CONSTRUCTED;
    }

    // Aguments sanity check
    if( pCamInfo == NULL || pFwBlocksInfo == NULL)
    {
        MSG2("Bad argument: pCamInfo=%p, pFwBlocksInfo=%p\n", pCamInfo, pFwBlocksInfo);
        OstTraceFiltStatic2(TRACE_ERROR, "Bad argument: pCamInfo=0x%x, pFwBlocksInfo=0x%x", (mTraceObject), (t_uint32)pCamInfo, (t_uint32)pFwBlocksInfo);
        OUTR(" ",TUNING_LOADER_MGR_BAD_ARGUMENT);
        OstTraceFiltStatic1(TRACE_FLOW, "Exit CTuningLoaderManager::loadFirmwareTuningData (%d)", (mTraceObject), TUNING_LOADER_MGR_BAD_ARGUMENT);
        return TUNING_LOADER_MGR_BAD_ARGUMENT;
    }

    // Send command to NMF
    MSG0("Send 'loadFirmwareTuning' command to NMF\n");
    OstTraceFiltStatic0(TRACE_DEBUG, "Send 'loadFirmwareTuning' command to NMF", (mTraceObject));
    iNmfQueryIntf.loadFirmwareTuning(*pCamInfo, *pFwBlocksInfo);

    OUTR(" ",TUNING_LOADER_MGR_OK);
    OstTraceFiltStatic1(TRACE_FLOW, "Exit CTuningLoaderManager::loadFirmwareTuningData (%d)", (mTraceObject), TUNING_LOADER_MGR_OK);
    return TUNING_LOADER_MGR_OK;
}
void main(void)
{
    // Test All GROUPS
    OstTraceInt0 (TRACE_ERROR,  			"ST_OSTTC_TEST2 TRACE_ERROR: 				OstTraceInt0");
    OstTraceInt0 (TRACE_WARNING,  		"ST_OSTTC_TEST2 TRACE_WARNING: 			OstTraceInt0");
    OstTraceInt0 (TRACE_FLOW,  				"ST_OSTTC_TEST2 TRACE_FLOW:  				OstTraceInt0");
    OstTraceInt0 (TRACE_DEBUG,  			"ST_OSTTC_TEST2 TRACE_DEBUG:  				OstTraceInt0");
    OstTraceInt0 (TRACE_API,  				"ST_OSTTC_TEST2 TRACE_API:  					OstTraceInt0");
    OstTraceInt0 (TRACE_OMX_API,  		"ST_OSTTC_TEST2 TRACE_OMX_API: 			OstTraceInt0");
    OstTraceInt0 (TRACE_OMX_BUFFER, 	"ST_OSTTC_TEST2 TRACE_OMX_BUFFER: 		OstTraceInt0");
    OstTraceInt0 (TRACE_RESERVED, 		"ST_OSTTC_TEST2 TRACE_OMX_RESERVED: 	OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_0, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_0: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_1, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_1: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_2, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_2: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_3, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_3: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_4, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_4: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_5, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_5: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_6, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_6: 		OstTraceInt0");
    OstTraceInt0 (TRACE_MY_GROUP_7, 	"ST_OSTTC_TEST2 TRACE_MY_GROUP_7: 		OstTraceInt0");

    // Test OstTraceIntx API
    OstTraceInt1 (TRACE_ERROR,  			"ST_OSTTC_TEST2 TRACE_ERROR: 				OstTraceInt1: %d", test);
    OstTraceInt2 (TRACE_WARNING,  		"ST_OSTTC_TEST2 TRACE_WARNING: 			OstTraceInt2: %d %d", test, test);
    OstTraceInt3 (TRACE_MY_GROUP_6,  	"ST_OSTTC_TEST2 TRACE_MY_GROUP_6: 		OstTraceInt3: %d %d %d", test, test, test);
    OstTraceInt4 (TRACE_MY_GROUP_7,  	"ST_OSTTC_TEST2 TRACE_MY_GROUP_7: 		OstTraceInt4: %d %d %d %d", test, test, test, test);

    // Test OstTraceFiltStaticx API
    OstTraceFiltInst0 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic0:");
    OstTraceFiltInst1 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic1	: %d", test);
    OstTraceFiltInst2 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic2	: %d %d", test, test);
    OstTraceFiltInst3 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic3	: %d %d %d", test, test, test);
    OstTraceFiltInst4 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic4	: %d %d %d %d", test, test, test, test);

    // Test OstTraceFiltStaticx API
    OstTraceFiltStatic0 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic0:");
    OstTraceFiltStatic1 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic1	: %d", test);
    OstTraceFiltStatic2 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic2	: %d %d", test, test);
    OstTraceFiltStatic3 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic3	: %d %d %d", test, test, test);
    OstTraceFiltStatic4 (TRACE_OMX_API,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltStatic4	: %d %d %d %d", test, test, test, test);

    // Test trace Buffer API
    OstTraceArray (TRACE_RESERVED,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceArray %{int8[]}", ptr, size);
    OstTraceFiltInstData(TRACE_RESERVED,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltInstData %{int8[]}", ptr, size);
    OstTraceFiltStaticData(TRACE_RESERVED,  "ST_OSTTC_TEST2 TRACE_OMX_API: 	OstTraceFiltInstData %{int8[]}",aInstPtr, ptr, size);

    // Check Syntax ALL below syntax shall be parsed
    OstTraceInt0 (TRACE_ERROR,  			"ST_OSTTC_TEST2 TRACE_ERROR: 				OstTraceInt0");
    OstTraceInt0 ( TRACE_ERROR ,  		"ST_OSTTC_TEST2 TRACE_ERROR: 				OstTraceInt0");


}
Exemplo n.º 8
0
camSharedMemError_t CCamSharedMemory::cacheClean(camSharedMemChunkId_t chunkId)
{
    IN0("\n");
    OstTraceFiltStatic0(TRACE_FLOW, "Entry CCamSharedMemory::cacheClean", (mTraceObject));
    if (state != CCamSharedMemory::CAM_SHARED_MEM_STATE_OPEN) {
        OUT0("\n");
        OstTraceFiltStatic1(TRACE_FLOW, "Exit CCamSharedMemory::cacheClean (%d)", (mTraceObject), CAM_SHARED_MEM_ERR_BAD_STATE);
        return CAM_SHARED_MEM_ERR_BAD_STATE;
    }
    if (chunkId >= CAM_SHARED_MEM_CHUNK_MAX) {
        OUT0("\n");
        OstTraceFiltStatic1(TRACE_FLOW, "Exit CCamSharedMemory::cacheClean (%d)", (mTraceObject), CAM_SHARED_MEM_ERR_BAD_PARAMETER);
        return CAM_SHARED_MEM_ERR_BAD_PARAMETER;
    }
#ifndef CAM_SHARED_MEM_DEBUG
    /* Exceptionally allow cleaning before the chunk has been requested. For memory debug purpose. */
    if (! abBusyChunks[chunkId]) {
        OUT0("\n");
        OstTraceFiltStatic1(TRACE_FLOW, "Exit CCamSharedMemory::cacheClean (%d)", (mTraceObject), CAM_SHARED_MEM_ERR_BAD_PRECONDITION);
        return CAM_SHARED_MEM_ERR_BAD_PRECONDITION;
    }
#endif /* CAM_SHARED_MEM_DEBUG */
    OMX_U32 aPhysAddr; // out
    /* OMX_ERRORTYPE e_ret = sharedBufferPoolId->CacheSync(MMHwBuffer::ESyncBeforeReadHwOperation,
     * After the switch to the 2.6.35 kernel version, MMHwBuffer cache synchronization has changed
     * (switch from pmem to hwmem driver), with an impact on the API => sync before read AND before write are mandatory. */
    OMX_ERRORTYPE e_ret1 = sharedBufferPoolId->CacheSync(MMHwBuffer::ESyncBeforeReadHwOperation,
            (OMX_U32) aChunks[chunkId].armLogicalAddress,
            aChunks[chunkId].size, aPhysAddr);

    OMX_ERRORTYPE e_ret2 = sharedBufferPoolId->CacheSync(MMHwBuffer::ESyncBeforeWriteHwOperation,
            (OMX_U32) aChunks[chunkId].armLogicalAddress,
            aChunks[chunkId].size, aPhysAddr);
    if ((e_ret1 != OMX_ErrorNone) || (e_ret2 != OMX_ErrorNone)){
        MSG2("Problem cleaning data cache (err=%d);%d\n", e_ret1, e_ret2);
        OstTraceFiltStatic2(TRACE_DEBUG, "Problem cleaning data cache (err=%d);%d", (mTraceObject), e_ret1, e_ret2);
        OUT0("");
        OstTraceFiltStatic1(TRACE_FLOW, "Exit CCamSharedMemory::cacheClean (%d)", (mTraceObject), CAM_SHARED_MEM_ERR_NO_RESOURCE);
        return CAM_SHARED_MEM_ERR_NO_RESOURCE;
    }
    OUT0("\n");
    OstTraceFiltStatic1(TRACE_FLOW, "Exit CCamSharedMemory::cacheClean (%d)", (mTraceObject), CAM_SHARED_MEM_ERR_NONE);
    return CAM_SHARED_MEM_ERR_NONE;
}
Exemplo n.º 9
0
/*
 * This function computes the dampers and queues the Page Elements
 */
t_damper_error_code CNoiseModelDamper::ComputeAndQueuePEs( CIspctlCom*                 pIspctlCom,
                                                           const t_damper_base_values* pBaseValues,
                                                           const float                 aAverageDigitalGain)
{
   IN0("\n");
   OstTraceFiltStatic0(TRACE_FLOW, "Entry CNoiseModelDamper::ComputeAndQueuePEs", (mTraceObject));
   float pDampedValues[1] = { 0.0 };
   float fUserFrameSigma = 0.0;
   t_damper_error_code err = DAMPER_OK;

   // Evaluate Noise Model dampers
   err = DoEvaluate( pBaseValues, pDampedValues);
   if(err!=DAMPER_OK)
   {
      MSG1("Evaluation failed: err=%d\n", err);
      OstTraceFiltStatic1(TRACE_DEBUG, "Evaluation failed: err=%d", (mTraceObject), err);
      OUTR(" ",err);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CNoiseModelDamper::ComputeAndQueuePEs (%d)", (mTraceObject), err);
      return err;
   }

   // Scale the damper output by the reference Shading Correction Gain, Average Digital Gain and pipeline dynamic range
   // NOTE: the damper output is now the noise sigma at pipeline input, normalized to pipeline dynamic range
   MSG2("iShadingCorrectionGain=%f, aAverageDigitalGain=%f\n", iShadingCorrectionGain, aAverageDigitalGain);
   OstTraceFiltStatic2(TRACE_DEBUG, "iShadingCorrectionGain=%f, aAverageDigitalGain=%f", (mTraceObject), iShadingCorrectionGain, aAverageDigitalGain);
   fUserFrameSigma = pDampedValues[0] * iShadingCorrectionGain * aAverageDigitalGain  * 4095.0;

   // Clip against hardware limit
   if(fUserFrameSigma >= 1024) {
      fUserFrameSigma = 1024;
   }

   // Queue the Page Elements
   MSG2("%s = %f\n", CIspctlCom::pIspctlSensor->GetPeName(DusterControl_u16_FrameSigma_Byte0), fUserFrameSigma);
   OstTraceFiltStatic1(TRACE_DEBUG, "DusterControl_u16_FrameSigma = %f", (mTraceObject), fUserFrameSigma);
   pIspctlCom->queuePE( DusterControl_u16_FrameSigma_Byte0, (t_uint32)fUserFrameSigma);

   // Done
   OUTR(" ",DAMPER_OK);
   OstTraceFiltStatic1(TRACE_FLOW, "Exit CNoiseModelDamper::ComputeAndQueuePEs (%d)", (mTraceObject), DAMPER_OK);
   return DAMPER_OK;
}
/*
 * This function sets the Gaussian Weight damper
 */
t_damper_error_code CNoiseFilterDamper::SetDusterGaussianWeightDamper( const float* pValues,
                                                                       const int    aNumRows,
                                                                       const int    aNumCols)
{
   IN0("\n");
   OstTraceFiltStatic0(TRACE_FLOW, "Entry CNoiseFilterDamper::SetDusterGaussianWeightDamper", (mTraceObject));
   t_damper_error_code err = DAMPER_OK;
   MSG2("[Gaussian Weight] NumRows=%d, NumCols=%d\n", aNumRows, aNumCols);
   OstTraceFiltStatic2(TRACE_DEBUG, "[Gaussian Weight] NumRows=%d, NumCols=%d", (mTraceObject), aNumRows, aNumCols);
   err = DoSetDamper( pValues, aNumRows, aNumCols);
   if(err!=DAMPER_OK)
   {
      DBGT_ERROR("[Gaussian Weight] failed to set damper: err=%d\n", err);
      OstTraceFiltStatic1(TRACE_ERROR, "[Gaussian Weight] failed to set damper: err=%d", (mTraceObject), err);
      OUTR(" ",err);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CDefCorDamper::SetDamper (%d)", (mTraceObject), err);
      return err;
   }
   OUTR(" ",DAMPER_OK);
   OstTraceFiltStatic1(TRACE_FLOW, "Exit CDefCorDamper::SetDamper (%d)", (mTraceObject), DAMPER_OK);
   return DAMPER_OK;
}
Exemplo n.º 11
0
/*
 * This function sets the Noise Model damper
 */
t_damper_error_code CNoiseModelDamper::SetFrameSigmaDamper( const float* pValues,
                                                            const int    aNumRows,
                                                            const int    aNumCols)
{
   IN0("\n");
   OstTraceFiltStatic0(TRACE_FLOW, "Entry CNoiseModelDamper::SetFrameSigmaDamper", (mTraceObject));
   t_damper_error_code err = DAMPER_OK;
   MSG2("[Frame Sigma] NumRows=%d, NumCols=%d\n", aNumRows, aNumCols);
   OstTraceFiltStatic2(TRACE_DEBUG, "[Frame Sigma] NumRows=%d, NumCols=%d", (mTraceObject), aNumRows, aNumCols);
   err = DoSetDamper( pValues, aNumRows, aNumCols);
   if(err!=DAMPER_OK)
   {
      MSG1("[Frame Sigma] failed to set damper: err=%d\n", err);
      OstTraceFiltStatic1(TRACE_DEBUG, "[Frame Sigma] failed to set damper: err=%d", (mTraceObject), err);
      OUTR(" ",err);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CNoiseModelDamper::SetFrameSigmaDamper (%d)", (mTraceObject), err);
      return err;
   }
   OUTR(" ",DAMPER_OK);
   OstTraceFiltStatic1(TRACE_FLOW, "Exit CNoiseModelDamper::SetFrameSigmaDamper (%d)", (mTraceObject), DAMPER_OK);
   return DAMPER_OK;
}
/*
 * This function sets the Coring Level damper
 */
t_damper_error_code CScorpioDamper::SetCoringLevelDamper( const float* pValues,
                                                          const int    aNumRows,
                                                          const int    aNumCols)
{
   IN0("\n");
   OstTraceFiltStatic0(TRACE_FLOW, "Entry CScorpioDamper::SetCoringLevelDamper", (mTraceObject));
   t_damper_error_code err = DAMPER_OK;
   MSG2("[Coring Level] NumRows=%d, NumCols=%d\n", aNumRows, aNumCols);
   OstTraceFiltStatic2(TRACE_DEBUG, "[Coring Level] NumRows=%d, NumCols=%d", (mTraceObject), aNumRows, aNumCols);
   err = DoSetDamper( pValues, aNumRows, aNumCols);
   if(err!=DAMPER_OK)
   {
      DBGT_ERROR("[Coring Level] failed to set damper: err=%d\n", err);
      OstTraceFiltStatic1(TRACE_ERROR, "[Coring Level] failed to set damper: err=%d", (mTraceObject), err);
      OUTR(" ",err);
      OstTraceFiltStatic1(TRACE_FLOW, "Exit CScorpioDamper::SetCoringLevelDamper (%d)", (mTraceObject), err);
      return err;
   }
   OUTR(" ",DAMPER_OK);
   OstTraceFiltStatic1(TRACE_FLOW, "Exit CScorpioDamper::SetCoringLevelDamper (%d)", (mTraceObject), DAMPER_OK);
   return DAMPER_OK;
}
SCF_STATE CAM_SM::PowerUp_STC_LoadData(s_scf_event const *e) {
	switch (e->sig) {
		case SCF_STATE_ENTRY_SIG:
		{
			MSG0("PowerUp_STC_LoadData-SCF_STATE_ENTRY_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_LoadData-SCF_STATE_ENTRY_SIG", (&mENSComponent));
			TuningLoaderMgrError_t tlmErr = TUNING_LOADER_MGR_OK;

			t_camera_info camInfo;

			// Initialisation to remove Coverity Warning
  			camInfo.manufId = 0;
			camInfo.modelId = 0;
			camInfo.revNum = 0;
			camInfo.Fuse_Id[0] = 0;
			camInfo.Fuse_Id[1] = 0;
			camInfo.Fuse_Id[2] = 0;
			camInfo.Fuse_Id4   = 0;

			camInfo.manufId = pSensor->GetSensorManufacturer();
			camInfo.modelId = pSensor->GetSensorModel();
			camInfo.revNum  = pSensor->GetSensorRevNumber();

			t_fw_blocks_info fwBlocks;
			fwBlocks.subBlockCount = iFwSubBlockIdsCount;
			fwBlocks.pSubBlockId   = pFwSubBlockId;

			MSG0("PowerUp_STC_LoadData: loading firmware tuning data\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_LoadData: loading firmware tuning data", (&mENSComponent));
			tlmErr = pTuningLoaderManager->loadFirmwareTuningData(&camInfo, &fwBlocks);
			if(tlmErr != TUNING_LOADER_MGR_OK) {
				DBGT_ERROR("PowerUp_STC_LoadData: firmware tuning data loading failed err=%d (%s)\n",
					     tlmErr, CTuningLoaderManager::errorCode2String(tlmErr));
				OstTraceFiltStatic1(TRACE_ERROR, "PowerUp_STC_LoadData: firmware tuning data loading failed err=%d", (&mENSComponent), tlmErr);
				DBC_ASSERT(0);
				return 0;
			}
			return 0;
		}
		case TUNING_LOADER_OPERATION_DONE_SIG:
		{
			MSG0("PowerUp_STC_LoadData-TUNING_LOADER_OPERATION_DONE_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_LoadData-TUNING_LOADER_OPERATION_DONE_SIG", (&mENSComponent));
			MSG2("Deleting pFwSubBlockId=%p (%d entries)\n", pFwSubBlockId, iFwSubBlockIdsCount);
			OstTraceFiltStatic2(TRACE_DEBUG, "Deleting pFwSubBlockId=%0x%x (%d entries)", (&mENSComponent), (t_uint32)pFwSubBlockId, iFwSubBlockIdsCount);
			delete [] pFwSubBlockId;
			pFwSubBlockId = NULL;
			SCF_TRANSIT_TO(&CAM_SM::PowerUp_STC_SendDataToFirmware);
			return 0;
		}
		case TUNING_LOADER_OPERATION_FAILED_SIG:
		{
			MSG0("PowerUp_STC_LoadData-TUNING_LOADER_OPERATION_FAILED_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_LoadData-TUNING_LOADER_OPERATION_FAILED_SIG", (&mENSComponent));
			DBGT_ERROR("PowerUp_STC_LoadData: failed to load firmware tuning data err=%ld (%s)\n",
				     e->type.tuningLoaderEvent.error, pTuningLoaderManager->loaderErrorCode2String(e->type.tuningLoaderEvent.error));
			OstTraceFiltStatic1(TRACE_ERROR, "PowerUp_STC_LoadData: failed to load firmware tuning data err=%ld", (&mENSComponent), e->type.tuningLoaderEvent.error);
			DBC_ASSERT(0);
			return 0;
		}
		case SCF_STATE_EXIT_SIG:
		{
			EXIT;
			return 0;
		}
		default: break;
	}
	return SCF_STATE_PTR(&COM_SM::SHARED_ControlingISPState_Boot);
}
SCF_STATE CAM_SM::PowerUp_STC_GetNbBlockIds(s_scf_event const *e) {
	switch (e->sig) {
		case SCF_STATE_ENTRY_SIG:
		{
			ENTRY;
			MSG0("PowerUp_STC_GetNbBlockIds-SCF_STATE_ENTRY_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_GetNbBlockIds-SCF_STATE_ENTRY_SIG", (&mENSComponent));
			// Ask to firmware how many tuning blocks are supported and get current coin value
			pIspctlCom->queuePE(Sensor_Tuning_Status_u16_TotalSubBlockIdsCount_Byte0,0);
			pIspctlCom->queuePE(Sensor_Tuning_Status_e_Coin_SubBlock_Status_Byte0,0);
			pIspctlCom->readQueue();
			return 0;
		}
		case EVT_ISPCTL_LIST_INFO_SIG:
		{
			MSG0("PowerUp_STC_GetNbBlockIds-EVT_ISPCTL_LIST_INFO_SIG\n");
			OstTraceFiltStatic0(TRACE_DEBUG, "PowerUp_STC_GetNbBlockIds-EVT_ISPCTL_LIST_INFO_SIG", (&mENSComponent));
			if(e->type.ispctlInfo.info_id != ISP_READLIST_DONE) break;

			// Store the Firmware tuning info related data
			iFwSubBlockIdsCount = (t_uint16)e->type.ispctlInfo.Listvalue[0].pe_data;
			iStatusCoin         = (Coin_te) e->type.ispctlInfo.Listvalue[1].pe_data;

			if(iFwSubBlockIdsCount==0)
			{
				// Firmware does not support tuning
				MSG0("   Tuning not supported by the firmware\n");
				OstTraceFiltStatic0(TRACE_DEBUG, "Tuning not supported by the firmware", (&mENSComponent));
				pFwSubBlockId = NULL;
				SCF_TRANSIT_TO(&COM_SM::SHARED_ControlingISPState);
				return 0;
			}
			else
			{
				// Firmware supports tuning: retrieve the supported IDs
				MSG1("   Tuning supported by the firmware: %d FwSubBlocks supported\n", iFwSubBlockIdsCount);
				OstTraceFiltStatic1(TRACE_DEBUG, "Tuning supported by the firmware: %d FwSubBlocks supported", (&mENSComponent), iFwSubBlockIdsCount);
				iStatusCoinRetriesCount = 0;
				iCurrentFwSubBlockIndex = 0;
				pFwSubBlockId = new t_uint16[iFwSubBlockIdsCount];
				if(pFwSubBlockId==NULL) {
					DBGT_ERROR("   Failed to allocate %d entries for FwSubBlock IDs\n", iFwSubBlockIdsCount);
					OstTraceFiltStatic1(TRACE_ERROR, "Failed to allocate %d entries for FwSubBlock IDs", (&mENSComponent), iFwSubBlockIdsCount);
					DBC_ASSERT(0);
					return 0;
				}
				MSG2("   Allocated pFwSubBlockId=%p (%d entries)\n", pFwSubBlockId, iFwSubBlockIdsCount);
				OstTraceFiltStatic2(TRACE_DEBUG, "Allocated pFwSubBlockId=0x%x (%d entries)", (&mENSComponent), (t_uint32)pFwSubBlockId, iFwSubBlockIdsCount);
				SCF_TRANSIT_TO(&CAM_SM::PowerUp_STC_QueryId);
			}
			return 0;
		}
		case SCF_STATE_EXIT_SIG:
		{
			EXIT;
			return 0;
		}
		default: break;
	}
	return SCF_STATE_PTR(&COM_SM::SHARED_ControlingISPState_Boot);
}