[Tinyos-contrib-commits] CVS: tinyos-1.x/contrib/diku/sensinode/apps/TestMicro4Flash TestMicro4.nc, NONE, 1.1 TestMicro4M.nc, NONE, 1.1 Makefile, NONE, 1.1

Marcus Chang marcus_chang at users.sourceforge.net
Thu Mar 15 08:09:26 PDT 2007


Update of /cvsroot/tinyos/tinyos-1.x/contrib/diku/sensinode/apps/TestMicro4Flash
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv11354/sensinode/apps/TestMicro4Flash

Added Files:
	TestMicro4.nc TestMicro4M.nc Makefile 
Log Message:
Added test applications for the Micro.4 platform

* 1-wire: reads unique from 1-wire bus
* accell: continously sampling of acceleration from U510R board
* flash: read/write/erase test
* radio: send/receive/on/off test

--- NEW FILE: TestMicro4.nc ---
configuration TestMicro4 {

}
implementation {
	components Main,TestMicro4M, TimerC, StdOutC, FlashAccessC, HPLSpiM, 
			LedsC, BusArbitrationC;
			

	Main.StdControl -> TestMicro4M.StdControl;
	Main.StdControl -> TimerC.StdControl;

    TestMicro4M.Spi -> HPLSpiM;
	TestMicro4M.Leds -> LedsC;
	TestMicro4M.Timer -> TimerC.Timer[unique("Timer")];

	TestMicro4M.StdOut -> StdOutC;
	TestMicro4M.FlashAccess -> FlashAccessC;
	TestMicro4M.FlashControl -> FlashAccessC;

	TestMicro4M.BusArbitration 	->	BusArbitrationC.BusArbitration[unique("BusArbitration")];

}


--- NEW FILE: TestMicro4M.nc ---
module TestMicro4M {
	provides {
		interface StdControl;
	}
	uses {
		interface Leds;
		interface Timer;
		interface StdOut;
		interface FlashAccess;
		interface StdControl as FlashControl;
		interface BusArbitration;
        interface Spi;
	}
}

implementation {

#include "HPLSpi.h"

	///////////////////////////////////////////////////////////////////////
	///////////////////////////////////////////////////////////////////////
	command result_t StdControl.init() {

        call Spi.init();
		call Leds.init(); 
        call FlashControl.init();

		return SUCCESS;
	}

	command result_t StdControl.start() {

		call StdOut.init();

		call Leds.greenOn();

		// call Timer.start(TIMER_REPEAT, 250);


		call StdOut.print("Program initialized\n\r");


		return SUCCESS;
	}

	command result_t StdControl.stop() {
	
		return SUCCESS;
	}

	event result_t Timer.fired() 
	{
		call Leds.greenToggle();
		
		return SUCCESS;
	}

	///////////////////////////////////////////////////////////////////////
	// BusArbitration
	///////////////////////////////////////////////////////////////////////
	event result_t BusArbitration.busFree()
	{
		call StdOut.print("Bus released\r\n");

		return SUCCESS;
	}

	///////////////////////////////////////////////////////////////////////
	// HALSTM25P40
	///////////////////////////////////////////////////////////////////////
	uint8_t readbuffer[256];
    uint8_t writebuffer[256];

	event void FlashAccess.readReady(uint16_t page_no, void * page, uint16_t length)
	{
		uint16_t i;
		
		call StdOut.print("Read ready: ");
		call StdOut.printHexword(page_no);
		call StdOut.print("\r\n");

		// print buffer
		for (i = 0; i < length; i++) {
			call StdOut.printHex( ((uint8_t *)page)[i]);
		}

		call StdOut.print("\r\n");
	}

	event void FlashAccess.eraseDone(uint16_t page_no)
	{
		call StdOut.print("Sector erase done: ");
		call StdOut.printHexword(page_no);
		call StdOut.print("\r\n");
	}

	event void FlashAccess.eraseAllDone()
	{
		call StdOut.print("Bulk erase done\r\n");
	}
	
	event void FlashAccess.writeDone(uint16_t page_no, void *page)
	{
		call StdOut.print("Write done: ");
		call StdOut.printHexword(page_no);
		call StdOut.print("\r\n");
	}


	///////////////////////////////////////////////////////////////////////
	// StdOut
	///////////////////////////////////////////////////////////////////////
	uint8_t keyBuffer;
	task void consoleTask();
	
	async event result_t StdOut.get(uint8_t data) {
		
		keyBuffer = data;

		// call Leds.redToggle();

		post consoleTask();

		return SUCCESS;
	}
		
	task void consoleTask() 
	{
		uint8_t data[2];
				uint16_t i;
		
		atomic data[0] = keyBuffer;
		data[1] = '\0';

		switch(data[0]) 
		{
			case '1':

				call StdOut.print("Wake-up: ");
				call StdOut.printHex(call FlashControl.start());
				call StdOut.print("\r\n");

				break;


			case '2':

				call StdOut.print("Sleep: ");
				call StdOut.printHex(call FlashControl.stop());
				call StdOut.print("\r\n");

				break;

			case '3':

				// clear buffer
				for (i = 0; i < 256; i++)
				{
					readbuffer[i] = 0;
				}

				// read from buffer
				if (call FlashAccess.read(0x06FF, readbuffer) == SUCCESS) {
					call StdOut.print("Read from page: 0x06FF\r\n");
				} else 	{
					call StdOut.print("Read failed\r\n");
				}

				break;

			case '4':

				for (i = 0; i < 256; i++)
				{
					writebuffer[i] = i;
				}

				call StdOut.print("Write numbers to page: 0x06FF\r\n");

				call FlashAccess.write(0x06FF, writebuffer);

				break;

			case '5':

				// clear buffer
				for (i = 0; i < 256; i++)
				{
					readbuffer[i] = 0;
				}

				// read from buffer
				if (call FlashAccess.read(0x0700, readbuffer) == SUCCESS) {
					call StdOut.print("Read from page: 0x0700\r\n");
				} else 	{
					call StdOut.print("Read failed\r\n");
				}

				break;

			case '6':

				for (i = 0; i < 256; i++)
				{
					writebuffer[i] = i;
				}

				call StdOut.print("Write numbers to page: 0x0700\r\n");

				call FlashAccess.write(0x0700, writebuffer);

				break;

			case '7':

				call StdOut.print("Erase sector: 0x060000\r\n");

				call FlashAccess.erase(0x0600);

				//call FlashAccess.eraseAll();

				break;

			case '8':

				call StdOut.print("Erase sector: 0x070000\r\n");

				call FlashAccess.erase(0x0700);

				//call FlashAccess.eraseAll();

				break;

			case '9':

				call StdOut.print("Erase all\r\n");

				call FlashAccess.eraseAll();

				break;

			case 'q':
				if (call BusArbitration.getBus() == SUCCESS) 
				{
					call StdOut.print("Bus locked\r\n");
				} else 
				{
					call StdOut.print("Bus locked failed\r\n");
				}
				break;

			case 'w':
				call BusArbitration.releaseBus();
				break;

			case '\r':
				call StdOut.print("\r\n");
				break;

			default:
				call StdOut.print(data);
		}
		
		return;
	}

}



--- NEW FILE: Makefile ---
COMPONENT=TestMicro4
include ../Makerules




More information about the Tinyos-contrib-commits mailing list