Code Search for Developers
 
 
  

ATestThread.cpp from Make Controller at Krugle


Show ATestThread.cpp syntax highlighted

/****************************************************************************
**
** Qt SAM7X Uploader.
** MakingThings 2006.
**
****************************************************************************/

#include "ATestThread.h"
#include "ATestWindow.h"
#include "ATestee.h"

ATestThread::ATestThread( QApplication* application, ATestWindow* aTestWindow ) : QThread()
{
  this->application = application;
  this->aTestWindow = aTestWindow;
  
	aTestee = new ATestee( this );
}

// 
void ATestThread::run()
{
	ATestee::Status aTesteeStatus;
	
	status( "Initializing" );
	
	message( 1, "Starting..." );
	aTesteeStatus = aTestee->start();
	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "Failed Startup\n" );
		message( 1, "  Are you running dumpOsc?\n" );
		aTestee->stop();
		return;
	}
	else
	  message( 1, "OK\n" );

	status( "Testing" );
		
	message( 1, "Checking for Ethernet Connection..." );
	aTesteeStatus = aTestee->checkForCTestProgram();
	if ( aTesteeStatus == ATestee::OK )
	{
	  message( 1, "OK\n" );
		message( 1, "Checking for ATest subsystem..." );

		aTesteeStatus = aTestee->checkForATestProgram();
		if ( aTesteeStatus != ATestee::OK )
    {
    	message( 1, "Need to reprogram - running old program\n" );
    	
    	aTestee->requestErase();
			  
    	message( 1, "PLEASE DISCONNECT AND RECONNECT\n" );

			failed();
    }
    else
		{
		  message( 1, "OK\n" );	
		}			
	}

	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "  None\n" );

		message( 1, "Checking for Samba... " );	
		aTesteeStatus = aTestee->checkForSamba();
		if ( aTesteeStatus == ATestee::OK )
		{
		  message( 1, "Found \n" );	
		  message( 1, "THIS CONTROLLER MAY BE UNTESTED\n" );
		  message( 1, "Loading Program" );	
		  
			if ( aTestee->flash() != ATestee::OK )
			{
				message( 1, "Load failed\n" );
				failed();
				return;
			}				
			message( 1, "OK\n" );

		  message( 1, "PLEASE UNPLUG AND REPLUG THE APPLICATION BOARD\n" );
			
	    // aTestee->restart();
	    
	    failed();
	    return;		
		}
		else
		{
			message( 1, "Not Found\n" );
		}

		message( 1, "Checking for Ethernet Connection..." );
		aTesteeStatus = aTestee->checkForATestProgram();
		if ( aTesteeStatus != ATestee::OK )
		{
			message( 1, "  No Connection to Testee\n" );
			message( 1, "  Check Ethernet Hardware\n" );
	    failed();
	    return;
		}
 
	  failed();
    return;
	}			
	    
	message( 1, "Testing Enable Off Lines Off..." );
  int result;
	aTesteeStatus = aTestee->performTest( 0, &result );
	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "Failed %d\n", result  );
		failed();
		return;
	}
	else
	  message( 1, "OK\n" );

	message( 1, "Testing Enable Off Lines On..." );
	aTesteeStatus = aTestee->performTest( 1, &result );
	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "Failed %d\n", result  );
		failed();
		return;
	}
	else
	  message( 1, "OK\n" );

	message( 1, "Testing Enable On Lines Off..." );
	aTesteeStatus = aTestee->performTest( 2, &result );
	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "Failed %d\n", result  );
		failed();
		return;
	}
	else
	  message( 1, "OK\n" );

	message( 1, "Testing Enable On Lines On..." );
	aTesteeStatus = aTestee->performTest( 3, &result );
	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "Failed %d\n", result  );
		failed();
		return;
	}
	else
	  message( 1, "OK\n" );

	message( 1, "Requesting Erase..." );
	aTesteeStatus = aTestee->requestErase( );
	if ( aTesteeStatus != ATestee::OK )
	{
		message( 1, "Failed %d\n", result  );
		failed();
		return;
	}
	else
	  message( 1, "OK\n" );

  message( 1, "ALL OK" );

	reset();
	
	status( "OK" );
}

void ATestThread::message( int level, char *format, ... )
{
	if ( level == 1 )
	{
		va_list args;
		char buffer[ 1000 ];
		
		va_start( args, format );
		vsnprintf( buffer, 1000, format, args );
		va_end( args );
		
		CTEvent* ctEvent = new CTEvent( false, level, buffer );
		
		application->postEvent( aTestWindow, ctEvent );
	}
}

void ATestThread::sleepMs( int ms )
{
  usleep( ms * 1000 );	
}

void ATestThread::failed( )
{
  status( "FAILED" );
	aTestee->stop();
}

void ATestThread::reset( )
{
	aTestee->stop();
}

void ATestThread::status( char *text )
{
	CTEvent* ctEvent = new CTEvent( true, 0, text );
	
	application->postEvent( aTestWindow, ctEvent );
}

CTEvent::CTEvent( bool statusBound, int level, char* message ) : QEvent( (Type)10000 )
{
	this->statusBound = statusBound;
	this->level = level;
	
  if ( message != 0 )
	  this->message = strdup( message ); 
	else
	  this->message = 0;
}

CTEvent::~CTEvent( )
{
  if ( message != 0 )
    free( message );
}





See more files for this project here

Make Controller

The Make Controller is an open microcontroller platform for Makers of all kinds, by MakingThings. This project maintains the official firmware for the board and source for the software tools used with the board.

Project homepage: http://sourceforge.net/projects/makingthings
Programming language(s): C,C#,C++
License: other

  .externalToolBuilders/
    qmake.launch
  debug/
    atest.exe
    ctestee.bin
    moc_ATestThread.cpp
    moc_ATestWindow.cpp
  release/
    atest.exe
    moc_ATestThread.cpp
    moc_ATestWindow.cpp
  .cdtproject
  .project
  ATestThread.cpp
  ATestThread.h
  ATestWindow.cpp
  ATestWindow.h
  ATestee.cpp
  ATestee.h
  Makefile
  Makefile.Debug
  Makefile.Release
  MessageInterface.h
  Osc.cpp
  Osc.h
  PacketInterface.h
  PacketUdp.cpp
  PacketUdp.h
  Samba.cpp
  Samba.h
  SetupAPI.Lib
  SetupAPI.h
  atest.pro
  atest.ui
  guid829.h
  loader256_data.h
  main.cpp
  object_script.ctest.Debug
  object_script.ctest.Release
  ui_atest.h