コード例 #1
0
// Dump in ASCII the TiParams structure to a buffer
int TiParams_Sprintf( TiParams *params, char *buf  )
{
	char id_str[4];
	int rule;

	// Check for Null pointer
	if( params == (TiParams *)NULL )
	{
		fprintf( stderr, "%s: params=0\n", __FUNCTION__ );
		return D_RetCode_Err_Null_Pointer;
	}
	if( buf == (char *)NULL )
	{
		fprintf( stderr, "%s: buf=0\n", __FUNCTION__ );
		return D_RetCode_Err_Null_Pointer;
	}
	// If parameters were not set, just exit queitly
	if( params->Id < 0 )
		return D_RetCode_Sucsess;

	// VME info
	if( params->Id == 0 )
		sprintf(id_str, "*");
	else
		sprintf(id_str, "%d", params->Id );
	sprintf( buf, "%s# Ti %s configuration\n", buf, id_str );
	if( params->Id > 0 )
	{
		sprintf( buf, "%s# Ti %s Slot %d BaseAdr_A24_Reg=0x%08x BaseAdr_A32_Fifo=0x%08x\n",
			buf, id_str, params->Slot, params->BaseAdr_A24_Reg, params->BaseAdr_A32_Fifo );
		sprintf( buf, "%s# Ti %s Slot %d Mblk Min=0x%08x Max=0x%08x Rank=%s\n",
			buf, id_str, params->Slot,
			params->BaseAdr_A32m_Com_Min, params->BaseAdr_A32m_Com_Max, MblkRank2Str( params->Mblk_Rank ) );
	}

	// Global parameters: defived from global parameters
	sprintf( buf, "%s# Ti %s NbOfEvtPerBlk  %d\n",    buf, id_str, params->NbOfEvtPerBlk );

	// Clk source: defived from global parameters
	sprintf( buf, "%s# Ti %s ClkSrc         %s\n",    buf, id_str, TiClkSrc2Str(params->ClkSrc) );
	// Trg source
	sprintf( buf, "%sTi %s TrgSrc           %s\n",    buf, id_str, TiTrgSrc2Str(params->TrgSrc) );
	// Syn source
	sprintf( buf, "%sTi %s SynSrc           %s\n",    buf, id_str, TiSynSrc2Str(params->SynSrc) );
	// Busy source
	sprintf( buf, "%sTi %s BsySrc           %s\n",    buf, id_str, TiBsySrc2Str(params->BsySrc) );

	// Trigger parameters
	sprintf( buf, "%sTi %s TrgRate          %d\n",    buf, id_str, params->TrgRate );
	sprintf( buf, "%sTi %s TrgPrescale      %d\n",    buf, id_str, params->TrgPrescale );
	sprintf( buf, "%sTi %s TrgTimPar        %d %d\n", buf, id_str, params->TrgDel_4ns, params->TrgWid_4ns    );
	for( rule=0; rule<Def_Ti_TrgRules_MaxNum; rule++ )
		sprintf( buf, "%sTi %s TrgRule %d      %3d %d \n", buf, id_str, rule+1, params->TrgRules_UnitCount[rule], params->TrgRules_TimeUnit[rule] );

	// Sync parameters
	sprintf( buf, "%sTi %s SynDel           %d\n",    buf, id_str, params->SynDel_4ns );

	// Format: if set enables extended EventId and Timestamp
	sprintf( buf, "%sTi %s ExtEidTstp       %d\n",    buf, id_str, params->ExtEidTstp );

	// Trigger inhibit threshold in event blocks
	sprintf( buf, "%sTi %s TrgInhThr        %d\n",    buf, id_str, params->TrgInhThr );

	// All went fine
	return D_RetCode_Sucsess;
}
コード例 #2
0
// Dump in ASCII the BecParams structure to a buffer
int BecParams_Sprintf( BecParams *params, char *buf  )
{
	int beu;
	int feu;

	// Check for Null pointer
	if( params == (BecParams *)NULL )
	{
		fprintf( stderr, "%s: params=0\n", __FUNCTION__ );
		return D_RetCode_Err_Null_Pointer;
	}
	if( buf == (char *)NULL )
	{
		fprintf( stderr, "%s: buf=0\n", __FUNCTION__ );
		return D_RetCode_Err_Null_Pointer;
	}

	// If parameters were not set, just exit queitly
	if( params->Config_Id < 0 )
		return D_RetCode_Sucsess;

	// Create info
	sprintf( buf, "%sBec %d CrateId %d\n", buf, params->Config_Id, params->Crate_Id );
	// SD
	sprintf( buf, "%sBec %d Slot %d Sd  %d\n",
		buf, params->Config_Id, params->Sd_Slot, params->Sd_Id );
	// TI
	sprintf
	(
		buf,
		"%sBec %d Slot %d Ti  %d 0x%08x 0x%08x Mblk %s\n",
		buf,
		params->Config_Id, params->Ti_Slot, params->Ti_Id, params->Ti_BaseAdr_A24_Reg, params->Ti_BaseAdr_A32_Fifo,
		MblkRank2Str(params->Ti_Mblk_Rank)
	);
	// Beu
	for( beu=1; beu<DEF_MAX_NB_OF_BEU; beu++ )
	{
		if( (DEF_MIN_BEU_SLOT <= params->Beu_Slot[beu]) && (params->Beu_Slot[beu] <= DEF_MAX_BEU_SLOT) )
		{
			sprintf
			(
				buf,
				"%sBec %d Slot %d Beu %d 0x%08x 0x%08x Mblk %s\n",
				buf,
				params->Config_Id, params->Beu_Slot[beu], params->Beu_Id[beu], params->Beu_BaseAdr_A24_Reg[beu], params->Beu_BaseAdr_A32_Fifo[beu],
				MblkRank2Str(params->Beu_Mblk_Rank[beu])
			);
		}
	}

	// Common A32 memory address space
	sprintf
	(
		buf, "%sBec %d BaseAdr_A32m_Com %1d 0x%08x 0x%08x\n", buf,
		params->Config_Id, params->BaseAdr_A32m_Com_Enb,
		params->BaseAdr_A32m_Com_Min, params->BaseAdr_A32m_Com_Max
	);

	// System topology
	sprintf( buf, "%s# BE Crate %d topology\n", buf, params->Config_Id );
	for( beu=1; beu<DEF_MAX_NB_OF_BEU; beu++ )
	{
		if( (DEF_MIN_BEU_SLOT <= params->Beu_Slot[beu]) && (params->Beu_Slot[beu] <= DEF_MAX_BEU_SLOT) )
		{
			sprintf( buf, "%sBec %d Beu %d Feu", buf, params->Config_Id, beu );
			for( feu=0; feu<DEF_MAX_NB_OF_FEU_PER_BEU; feu++ )
			{
				if( params->BeuFeuConnectivity[beu][feu] < 0 )
					sprintf( buf, "%s  M", buf );
				else if( params->BeuFeuConnectivity[beu][feu] == 0 )
					sprintf( buf, "%s  E", buf );
				else if( params->BeuFeuConnectivity[beu][feu] <= DEF_MAX_NB_OF_FEU )
					sprintf( buf, "%s %2d", buf, params->BeuFeuConnectivity[beu][feu] );
				else
				{
					fprintf( stderr, "%s: Usupported FeuId=%d (>%d) for beu %d connection %d\n",
						__FUNCTION__, params->BeuFeuConnectivity[beu][feu], DEF_MAX_NB_OF_FEU-1, beu, feu );
					return D_RetCode_Err_Wrong_Param;
				}
			}
		}
		else if( params->Beu_Slot[beu] != 0 )
		{
			fprintf( stderr, "%s: BeuSlot=%d not in range [%d;%d] for beu %d\n",
				__FUNCTION__, params->Beu_Slot[beu], DEF_MIN_BEU_SLOT, DEF_MAX_BEU_SLOT, beu );
			return D_RetCode_Err_Wrong_Param;
		}
		sprintf( buf, "%s\n", buf );
	}
	for( feu=1; feu<DEF_MAX_NB_OF_FEU; feu++ )
	{
		if( params->FeuId2BeuId[feu] == 0 )
		{
			fprintf( stderr, "%s: Usupported BeuId 0 for feu %d\n", __FUNCTION__, feu );
			return D_RetCode_Err_Wrong_Param;
		}
		if( ((feu-1) % 4) == 0 )
			sprintf( buf, "%s#", buf );
		sprintf( buf, "%s Feu %2d <-> ", buf, feu );
		if( params->FeuId2BeuId[feu] > 0 )
		{
			if( (params->FeuId2BeuLnkId[feu]<0) || (DEF_MAX_NB_OF_FEU_PER_BEU<=params->FeuId2BeuLnkId[feu]) )
			{
				fprintf( stderr, "%s: Usupported beu %d link=%d for feu %d, must be in [0;%d] range\n",
				__FUNCTION__, params->FeuId2BeuId[feu], params->FeuId2BeuId[feu], feu, DEF_MAX_NB_OF_FEU_PER_BEU-1 );
				return D_RetCode_Err_Wrong_Param;
			}
			sprintf( buf, "%s Beu=%1d Lnk=%2d", buf, params->FeuId2BeuId[feu], params->FeuId2BeuLnkId[feu] );
		}
		else
			sprintf( buf, "%s  Inactive   ", buf );
		if( feu % 4 )
			sprintf( buf, "%s   ", buf );
		else
			sprintf( buf, "%s\n", buf );
	}

	// All went fine
	return D_RetCode_Sucsess;
}