void Pn5180AnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ )
{
	//export_type_user_id is only important if we have more than one export type.


	std::stringstream ss;
	void* f = AnalyzerHelpers::StartFile( file );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	ss << "Time [s],Packet ID,MOSI,MISO" << std::endl;

	bool mosi_used = true;
	bool miso_used = true;

	if( mSettings->mMosiChannel == UNDEFINED_CHANNEL )
		mosi_used = false;

	if( mSettings->mMisoChannel == UNDEFINED_CHANNEL )
		miso_used = false;

	U64 num_frames = GetNumFrames();
	for( U32 i=0; i < num_frames; i++ )
	{
		Frame frame = GetFrame( i );

		if( ( frame.mFlags & Pn5180_ERROR_FLAG ) != 0 )
			continue;
		
		char time_str[128];
		AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

		char mosi_str[128] = "";
		if( mosi_used == true )
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, mosi_str, 128 );

		char miso_str[128] = "";
		if( miso_used == true )
			AnalyzerHelpers::GetNumberString( frame.mData2, display_base, 8, miso_str, 128 );

		U64 packet_id = GetPacketContainingFrameSequential( i ); 
		if( packet_id != INVALID_RESULT_INDEX )
			ss << time_str << "," << packet_id << "," << mosi_str << "," << miso_str << std::endl;
		else
			ss << time_str << ",," << mosi_str << "," << miso_str << std::endl;  //it's ok for a frame not to be included in a packet.
	
		AnalyzerHelpers::AppendToFile( (U8*)ss.str().c_str(), ss.str().length(), f );
		ss.str( std::string() );
							
		if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
		{
			AnalyzerHelpers::EndFile( f );
			return;
		}
	}

	UpdateExportProgressAndCheckForCancel( num_frames, num_frames );
	AnalyzerHelpers::EndFile( f );
}
Esempio n. 2
0
void J2716AnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 export_type_user_id )
{
	std::ofstream file_stream( file, std::ios::out );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	file_stream << "Time [s],Value" << std::endl;

	U64 num_frames = GetNumFrames();
	for( U32 i=0; i < num_frames; i++ )
	{
		Frame frame = GetFrame( i );
		
		char time_str[128];
		AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

		char number_str[128];
		AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, number_str, 128 );

		file_stream << time_str << "," << number_str << std::endl;

		if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
		{
			file_stream.close();
			return;
		}
	}

	file_stream.close();
}
void SDIOAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 export_type_user_id )
{
	std::ofstream file_stream( file, std::ios::out );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	file_stream << "Time [s],Value" << std::endl;

	U64 num_frames = GetNumFrames();
	for( U32 i=0; i < num_frames; i++ )
	{
		Frame frame = GetFrame( i );
		
		char time_str[128];
		AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

		char number_str[128];
		AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, number_str, 128 );

		file_stream << time_str << ",";
		
		if (frame.mType == SDIOAnalyzer::FRAME_DIR){
			file_stream << "DIR:";
			if (frame.mData1){
				file_stream << "from Host";
			}else{
				file_stream << "from Slave";
			}
		}else if (frame.mType == SDIOAnalyzer::FRAME_CMD){
			file_stream << "CMD:" << number_str;
		}else if (frame.mType == SDIOAnalyzer::FRAME_ARG){
			file_stream << "ARG:" << number_str;
		}else if (frame.mType == SDIOAnalyzer::FRAME_LONG_ARG){
			file_stream << "LONG_ARG:" << number_str;
		}else if (frame.mType == SDIOAnalyzer::FRAME_CRC){
			file_stream << "CRC:" << number_str;
		}
		
		file_stream << std::endl;

		if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
		{
			file_stream.close();
			return;
		}
	}

	file_stream.close();
}
void ManchesterAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ )
{
	std::stringstream ss;
	void* f = AnalyzerHelpers::StartFile( file );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();
	U64 num_frames = GetNumFrames();

	ss << "Time [s],Data" << std::endl;

	for( U32 i=0; i < num_frames; i++ )
	{
		Frame frame = GetFrame( i );
		
		//static void GetTimeString( U64 sample, U64 trigger_sample, U32 sample_rate_hz, char* result_string, U32 result_string_max_length );
		char time_str[128];
		AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

		char number_str[128];
		AnalyzerHelpers::GetNumberString( frame.mData1, display_base, mSettings->mBitsPerTransfer, number_str, 128);

		ss << time_str << "," << number_str;
		ss << std::endl;

		AnalyzerHelpers::AppendToFile( (U8*)ss.str().c_str(), ss.str().length(), f );
		ss.str( std::string() );
							
		if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
		{
			AnalyzerHelpers::EndFile( f );
			return;
		}
	}
	UpdateExportProgressAndCheckForCancel( num_frames, num_frames );
	AnalyzerHelpers::EndFile( f );
}
void UnioAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ )
{
	//export_type_user_id is only important if we have more than one export type.

	std::stringstream ss;
	void* f = AnalyzerHelpers::StartFile( file );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	ss << "Time [s],Packet ID,Address,Data,MAK,SAK" << std::endl;

	U64 num_frames = GetNumFrames();
	char address_str[128] = "";
	for( U32 i=0; i < num_frames; i++ )
	{
		Frame frame = GetFrame( i );

		if( frame.mType == AddressFrame8 )
		{
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, address_str, 128 );
			if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
			{
				AnalyzerHelpers::EndFile( f );
				return;
			}
			continue;
		}

		if( frame.mType == AddressFrame12 )
		{
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, address_str, 128 );
			if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
			{
				AnalyzerHelpers::EndFile( f );
				return;
			}
			continue;
		}

		if( frame.mType == DataFrame )
		{
			char time_str[128];
			AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

			char data_str[128];
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, data_str, 128 );

			ss << time_str << ",";

			U64 packet_id = GetPacketContainingFrameSequential( i );
			if( packet_id != INVALID_RESULT_INDEX )
				ss << packet_id;
	
			ss << "," << address_str << "," << data_str;

			if( ( frame.mFlags & MASTER_ACK ) != 0 )
				ss << ",MAK";
			else
				ss << ",NoMAK";

			if( ( frame.mFlags & SLAVE_ACK ) != 0 )
				ss << ",SAK";
			else
				ss << ",NoSAK";

			ss << std::endl;
		}

		AnalyzerHelpers::AppendToFile( (U8*)ss.str().c_str(), ss.str().length(), f );
		ss.str( std::string() );
							
		if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
		{
			AnalyzerHelpers::EndFile( f );
			return;
		}
	}

	UpdateExportProgressAndCheckForCancel( num_frames, num_frames );
	AnalyzerHelpers::EndFile( f );
}
// export_type_user_id is needed if we have more than one export type
void MDIOAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ )
{
	std::ofstream file_stream( file, std::ios::out );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	file_stream << "Time [s],Packet ID,MDIOClause,OP,PHYADDR,REGADDR/DEVTYPE,ADDR/DATA" << std::endl;

	U64 num_packets = GetNumPackets();

	for( U32 packet_id=0; packet_id < num_packets; ++packet_id )
	{

		// get the frames contained in packet with index packet_id
		U64 first_frame_id;
		U64 last_frame_id;
		GetFramesContainedInPacket( packet_id, &first_frame_id, &last_frame_id );
	
		U64 frame_id = first_frame_id;

		// get MDIO_START frame to get the MDIOClause column value
		Frame frame = GetFrame( frame_id );

		char time_str[128];
		AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

		// Time [s] and Packet ID column
		file_stream << time_str << "," << packet_id << ",";
		
		if( frame.mType == MDIO_C22_START ) 
		{
			file_stream << "22,";
		}
		else if( frame.mType == MDIO_C45_START ) 
		{
			file_stream << "45,";
		}
		else 
		{
			file_stream << ",";
		}

		++frame_id;

		if( frame_id > last_frame_id )
		{
			continue;
		}

		// OP frame
		frame = GetFrame( frame_id );

		switch( frame.mType ) 
		{
			case MDIO_OP_W: 				file_stream << "Write,"; break;
			case MDIO_OP_R: 				file_stream << "Read,"; break;
			case MDIO_C45_OP_ADDR: 			file_stream << "Address,"; break;
			case MDIO_C45_OP_READ_INC_ADDR: file_stream << "Read +Addr,"; break;
			default: 						file_stream << ","; break;
		}

		++frame_id;

		if( frame_id > last_frame_id ) 
		{
			continue;
		}

		// PHYADDR frame
		frame = GetFrame( frame_id );

		if( frame.mType != MDIO_PHYADDR ) 
		{
			file_stream << ",";
		}

		char number_str[128];
		AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 5, number_str, 128 );
		
		file_stream << number_str << ",";
		
		++frame_id;
		
		if( frame_id > last_frame_id ) 
		{
			continue;
		}

		// REGADR or DEVTYPE frame
		frame = GetFrame( frame_id );

		char number_str2[128];
		AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 5, number_str2, 128 );
		
		switch( frame.mType ) 
		{
			case MDIO_C22_REGADDR: 			file_stream << number_str2 << ","; break;
			case MDIO_C45_DEVTYPE_RESERVED:	file_stream << number_str2 << "(Reserved),"; break;
			case MDIO_C45_DEVTYPE_PMD_PMA:	file_stream << number_str2 << "(PMD/PMA),"; break;
			case MDIO_C45_DEVTYPE_WIS: 		file_stream << number_str2 << "(WIS),"; break;
			case MDIO_C45_DEVTYPE_PCS:		file_stream << number_str2 << "(PCS),"; break;
			case MDIO_C45_DEVTYPE_PHY_XS:	file_stream << number_str2 << "(PHY XS),"; break;
			case MDIO_C45_DEVTYPE_DTE_XS:	file_stream << number_str2 << "(DTE XS),"; break;
			case MDIO_C45_DEVTYPE_OTHER:	file_stream << number_str2 << "(Other),"; break;
			default:						file_stream << ","; 
		}
		
		++frame_id;
		if( frame_id > last_frame_id ) 
		{
			continue;
		}
		
		// TA frame
		frame = GetFrame( frame_id );
		
		if( frame.mType != MDIO_TA ) 
		{
			file_stream << ",";
		}
		
		++frame_id;
		if( frame_id > last_frame_id ) 
		{
			continue;
		}
		
		// MDIO_C22_DATA or MDIO_C45_ADDRDATA frame
		frame = GetFrame( frame_id );
		
		if( frame.mType == MDIO_C22_DATA || 
			frame.mType == MDIO_C45_ADDR || 
			frame.mType == MDIO_C45_DATA ) 
		{
			char number_str[128];
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 16, number_str, 128 );
			file_stream << number_str;
		}
		else 
		{
			file_stream << ",";
		}
	
		file_stream << std::endl;
	
		// check for cancel and update progress
		if( UpdateExportProgressAndCheckForCancel( packet_id, num_packets ) )
		{
			return;
		}
	
	}

	UpdateExportProgressAndCheckForCancel( num_packets, num_packets );
}
void SDIOAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 export_type_user_id )
{
	std::ofstream file_stream( file, std::ios::out );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();
    double timeStamp = 0.0;


    if ( (export_type_user_id == SDIO_EXPORT_FULL) ||(export_type_user_id == SDIO_EXPORT_SHORT))
    {
        // if you want sample numbers
        // file_stream << "Sample Number, Time [s] ,Value ,Description" << std::endl;
        file_stream << "Time [s] ,Value ,Description" << std::endl;
    }
    else
    {
        // if you want sample numbers
        file_stream << "Sample Number, Time [s] ,Value ,Description" << std::endl;
        // file_stream << "Time [s] ,Value"<< std::endl;
    }

	U64 num_frames = GetNumFrames();
    

	for( U32 i=0; i < num_frames; i++ )
	{
		Frame frame = GetFrame( i );
        U64 cmdType = frame.mData1;
		
		char time_str[128];
        timeStamp = (double)frame.mStartingSampleInclusive;
        timeStamp -= trigger_sample;
        timeStamp /= sample_rate;

        if ( (export_type_user_id == SDIO_EXPORT_FULL) ||(export_type_user_id == SDIO_EXPORT_SHORT))
        {
            // only if we want sample numbers
            // sprintf(time_str, "%012lld %0.10f", frame.mStartingSampleInclusive,timeStamp);
            sprintf(time_str, "%0.10f", timeStamp);
        }
        else
        {
            // only if we want sample numbers
            // sprintf(time_str, "%012lld %0.10f", frame.mStartingSampleInclusive,timeStamp);
            sprintf(time_str, "%0.10f", timeStamp);
        }

        // if regular CMD line data
        if (frame.mType == FRAME_TYPE_CMD_DATA)
        {
            SdioCmd *tmp = SdioCmd::CreateSdioCmd(frame.mData1);

            if (tmp->getCmd() == 52)
            {

                // set up the CCCR for exporting
                // the cccr will be static, so no need to free it
                CCCR *cccr = CCCR::BuildCCCR(frame.mData1);
            }
           
            if (export_type_user_id == SDIO_EXPORT_FULL)
            {
				// const char* detail = tmp->getDetailedString();
				string *s = tmp->getDetailedString();
				file_stream << time_str << "," << "\t" << s->c_str() << endl;
                delete s;
            }
            else if (export_type_user_id == SDIO_EXPORT_SHORT)
            {
                string *s = tmp->getShortString();
                file_stream << time_str << "," << "\t" << s->c_str() << endl;
                delete s;
            }
            else
            {
                // just data
                char number_str[128];
                sprintf(number_str, "0x%012llX", frame.mData1);
                file_stream << time_str << "," << "\t" << number_str << endl;
            }
        }
        else
        {
            char number_str[128];
            // this is DATA Line Data
            sprintf(number_str, "0x%02llX", frame.mData1);
            file_stream << time_str << "," << "\t"<<number_str <<std::endl;
        }

		if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true )
		{
			file_stream.close();
			return;
		}
	}
    CCCR::DumpCCCRTable(file_stream);
    CCCR::DumpFBRTable(file_stream);
    CCCR::CleanupCCCR();


	file_stream.close();
}
void AtmelSWIAnalyzerResults::GenerateExportFile(const char* file, DisplayBase display_base, U32 export_type_user_id)
{
	std::ofstream file_stream(file, std::ios::out);

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	Frame f;
	char time_str[128], number_str[128];
	const U64 num_frames = GetNumFrames();
	std::vector<std::string> texts;
	for (U64 fcnt = 0; fcnt < num_frames; fcnt++)
	{
		// get the frame
		f = GetFrame(fcnt);

		// make the time string
		AnalyzerHelpers::GetTimeString(f.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, sizeof(time_str));

		switch (f.mType)
		{
		case FrameToken:
			file_stream << "Token ";

			if (f.mData1 == SWI_Wake)
				file_stream << "Wake";
			else if (f.mData1 == SWI_One)
				file_stream << "One";
			else if (f.mData1 == SWI_Zero)
				file_stream << "Zero";

			file_stream << " at " << time_str << std::endl << std::endl;

			break;
		case FrameByte:
			AnalyzerHelpers::GetNumberString(f.mData1, display_base, 8, number_str, sizeof(number_str));
			file_stream << "Byte (" << number_str << ") at " << time_str << std::endl;
			break;
		case FrameFlag:
			AnalyzerHelpers::GetNumberString(f.mData1, display_base, 8, number_str, sizeof(number_str));
			file_stream << "Flag " << GetFlagName(static_cast<SWI_Flag>(f.mData1)) 
						<< " (" << number_str << ") at " << time_str << std::endl << std::endl;
			break;
		case FrameCount:
			// start the IO block section and write the count byte
			AnalyzerHelpers::GetNumberString(f.mData1, display_base, 8, number_str, sizeof(number_str));
			file_stream << "I/O Block at " << time_str << std::endl;
			file_stream << "Count (" << number_str << ")" << std::endl;

			break;
		case FramePacketSegment:

			// get the packet segment texts
			GetTextsForPacketSegmentFrame(f, display_base, texts);
			file_stream << texts.front() << std::endl;

			break;
		case FrameChecksum:

			// get the checksum texts
			GetTextsForChecksumFrame(f, display_base, texts);
			file_stream << texts.front() << std::endl << std::endl;

			break;
		}

		if (UpdateExportProgressAndCheckForCancel(fcnt, num_frames))
			return;
	}

	// end
	UpdateExportProgressAndCheckForCancel(num_frames, num_frames);
}
void CanAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ )
{
	//export_type_user_id is only important if we have more than one export type.
	std::stringstream ss;
	void* f = AnalyzerHelpers::StartFile( file );

	U64 trigger_sample = mAnalyzer->GetTriggerSample();
	U32 sample_rate = mAnalyzer->GetSampleRate();

	ss << "Time [s],Packet,Type,Identifier,Control,Data,CRC,ACK" << std::endl;
	U64 num_frames = GetNumFrames();
	U64 num_packets = GetNumPackets();
	for( U32 i=0; i < num_packets; i++ )
	{
		if( i != 0 )
		{
			//below, we "continue" the loop rather than run to the end.  So we need to save to the file here.
			ss << std::endl;

			AnalyzerHelpers::AppendToFile( (U8*)ss.str().c_str(), ss.str().length(), f );
			ss.str( std::string() );


			if( UpdateExportProgressAndCheckForCancel( i, num_packets ) == true )
			{
				AnalyzerHelpers::EndFile( f );
				return;
			}
		}


		U64 first_frame_id;
		U64 last_frame_id;
		GetFramesContainedInPacket( i, &first_frame_id, &last_frame_id );
		Frame frame = GetFrame( first_frame_id );
		
		//static void GetTimeString( U64 sample, U64 trigger_sample, U32 sample_rate_hz, char* result_string, U32 result_string_max_length );
		char time_str[128];
		AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 );

		char packet_str[128];
		AnalyzerHelpers::GetNumberString( i, Decimal, 0, packet_str, 128 );

		if( frame.HasFlag( REMOTE_FRAME ) == false )
			ss << time_str << "," << packet_str << ",DATA";
		else
			ss << time_str << "," << packet_str << ",REMOTE";
		
		U64 frame_id = first_frame_id;

		frame = GetFrame( frame_id );

		char number_str[128];

		if( frame.mType == IdentifierField )
		{
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 12, number_str, 128);
			ss << "," << number_str;
			++frame_id;
		}
		else if( frame.mType == IdentifierFieldEx )
		{
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 32, number_str, 128 );
			ss << "," << number_str;
			++frame_id;
		}
		else
		{
			ss << ",";
		}

		if( frame_id > last_frame_id )
			continue;

		frame = GetFrame( frame_id );
		if( frame.mType == ControlField )
		{
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 4, number_str, 128);
			ss << "," << number_str;
			++frame_id;
		}
		else
		{
			ss << ",";
		}
		ss << ",";
		if( frame_id > last_frame_id )
			continue;

		for( ; ; )
		{
			frame = GetFrame( frame_id );
			if( frame.mType != DataField )
				break;

			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, number_str, 128 );
			ss << number_str;
			if( frame_id == last_frame_id )
				break;

			++frame_id;
			if( GetFrame( frame_id ).mType == DataField )
				ss << " ";
		}

		if( frame_id > last_frame_id )
			continue;

		frame = GetFrame( frame_id );
		if( frame.mType == CrcField )
		{
			AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 15, number_str, 128);
			ss << "," << number_str;
			++frame_id;
		}else
		{
			ss << ",";
		}
		if( frame_id > last_frame_id )
			continue;

		frame = GetFrame( frame_id );
		if( frame.mType == AckField )
		{
			if( bool( frame.mData1 ) == true )
				ss << "," << "ACK";
			else
				ss << "," << "NAK";

			++frame_id;
		}else
		{
			ss << ",";
		}
	}

	UpdateExportProgressAndCheckForCancel( num_frames, num_frames );
	AnalyzerHelpers::EndFile( f );
}