[Tinyos-2-commits] CVS: tinyos-2.x-contrib/timetossim/tinyos-2.x/tools/cgram/examples AsmParser.java, NONE, 1.1 FileList.java, NONE, 1.1 Line.java, NONE, 1.1 Makefile, NONE, 1.1 Postmartem.java, NONE, 1.1 PreMica2.java, NONE, 1.1 PreTossim.java, NONE, 1.1 Preprocessor.java, NONE, 1.1 SourceFile.java, NONE, 1.1 SourceLine.java, NONE, 1.1 TempTest.java, NONE, 1.1 Test.java, NONE, 1.1 TestLex.java, NONE, 1.1 TestThrough.java, NONE, 1.1 TestThrough.java~, NONE, 1.1 check_time3.c, NONE, 1.1 check_time3b.c, NONE, 1.1 tTossim.jar, NONE, 1.1

Muhammad Hamad Alizai alizai at users.sourceforge.net
Fri Sep 19 09:08:31 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x-contrib/timetossim/tinyos-2.x/tools/cgram/examples
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv6212/tinyos-2.x/tools/cgram/examples

Added Files:
	AsmParser.java FileList.java Line.java Makefile 
	Postmartem.java PreMica2.java PreTossim.java Preprocessor.java 
	SourceFile.java SourceLine.java TempTest.java Test.java 
	TestLex.java TestThrough.java TestThrough.java~ check_time3.c 
	check_time3b.c tTossim.jar 
Log Message:
All files added


--- NEW FILE: AsmParser.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/

import java.io.*;

public class AsmParser
{

	public static BufferedReader asmReader;
	public static FileList fList;

public AsmParser(String s) 
{
	try{
	fList = new FileList();
	asmReader=  new BufferedReader(new FileReader(s));
	}
	catch(FileNotFoundException e){
		System.out.println("asm file not found");
		System.exit(1);
	}
}

/*
public static void main(String args[])throws FileNotFoundException,IOException
{
	AsmParser asm=new AsmParser(args[0]);
	asm.parse();
	asm.print();
		
}
*/






public void parse() 
{
	boolean b = true;
	boolean c = true;
	boolean d = true;
	String str;
	String temp;
	String tempPath;
	String tempLine;
	String tempComp;
	String start = "__bad_interrupt():";
	String functionName = "";
	int sIndex;
	int eIndex;
	SourceFile currF;
	SourceLine currL;

	SourceFile curr2F;
	SourceLine curr2L;

	try{	
		fList.first = new SourceFile();
		fList.first.line = new SourceLine();

		currF = fList.first;
		currL= currF.line;
		curr2L = currL;
		while((str = asmReader.readLine()).compareTo(start) != 0)
		{
		
		}
	
		while((str = asmReader.readLine()) != null)
		{
			if(((sIndex = str.indexOf("/"))) != -1)
			{
				d = true;
				eIndex = str.indexOf(":");
				if(b)
				{
					
					currF.path = str.substring(sIndex,eIndex);
					currF.component = str.substring(str.lastIndexOf("/")+1,eIndex);
					currL.lineNum = str.substring(eIndex+1);
					//System.out.println(currF.functionName);
					b = false;
					curr2L = currL;	
				}
				else
				{
					
					curr2F = fList.first;
					tempPath = str.substring(sIndex,eIndex);
					tempComp = str.substring(str.lastIndexOf("/")+1,eIndex);
					tempLine = str.substring(eIndex+1);
					while(curr2F != null)
					{
						if(tempPath.compareTo(curr2F.path) == 0)
						{
							curr2L = curr2F.line;
							while(curr2L.nextLine != null)
							{
								curr2L = curr2L.nextLine;
							}
							curr2L.nextLine = new SourceLine();
							curr2L = curr2L.nextLine;
							curr2L.lineNum = tempLine;
							curr2L.inFunction = functionName;
							c = false;
							break;
						}
						curr2F = curr2F.nextFile;
					}
					if(c)
					{
						currF.nextFile = new SourceFile();
						currF = currF.nextFile;
						currF.path = tempPath;
						currF.component = tempComp;
						//System.out.println(currF.functionName);
						currF.line = new SourceLine();
						currL = currF.line;
						currL.lineNum = tempLine;
						currL.inFunction = functionName;
						curr2L = currL;
						
					}
					c = true;

					
				}
			
				
			}

			
			else if((sIndex = str.indexOf("\t", str.indexOf("\t")+1)) != -1)
			{
				if((eIndex = str.indexOf("\t", sIndex+1)) != -1)
				{
					temp = str.substring(sIndex+1,eIndex);
					

				}
				else
				{	
					temp = str.substring(sIndex+1);
				}
				for(int i=0; i < SourceLine.cc.length; i++)
				{
					if(temp.compareTo(SourceLine.op[i]) == 0)
					{
						if(d)
						curr2L.numOfCycles += SourceLine.cc[i]; 
						break;
					}
				}

				
			}
			else
			{
				if((sIndex = str.indexOf("<")) != -1)
				{
					eIndex = str.indexOf(">");
					functionName = str.substring(sIndex+1,eIndex);
				}
				d = false;
			}
					
					

		}


	}
	catch(IOException e){
		System.out.println("io exception");
		System.exit(1);
	}
}




public static void print()
{



	SourceFile currF;
	SourceLine currL;

	currF = fList.first;


	while (currF != null)
	{
		currL= currF.line;
		while (currL != null)
		{
			System.out.println(currF.path + ":" + currF.component + ":"+ currL.lineNum + "\t\t" + 			        currL.numOfCycles + "\t\t" + currL.inFunction);
			currL = currL.nextLine;		
		}
		currF = currF.nextFile; 	
	}







}

}
	


/*
	
	while((str = asmReader.readLine()) != null)
	{

		if (str == "")
		{
			continue;
		}	
		else
		{

			if(((sIndex = str.indexOf("/"))) != -1)
			{
				if(b)
				{
					eIndex = str.indexOf(":");
					currF.path = str.substring(sIndex,eIndex);
					//System.out.println(currF.functionName);
					b = false;	
				}
				else
				{
					currF.nextFile = new SourceFile();
					currF = currF.nextFile;
					eIndex = str.indexOf(">");
					currF.path = str.substring(sIndex+1,eIndex);
					//System.out.println(currF.functionName);
					currF.line = new SourceLine();
					currI = currF.instructions;
					c = true;
					

				}
			}
			
			if((sIndex = str.indexOf("\t", str.indexOf("\t")+1)) != -1)
			{
				if((eIndex = str.indexOf("\t", sIndex+1)) != -1)
				{
					temp = str.substring(sIndex+1,eIndex);
					//System.out.println(temp);

				}
				else
				{	
					temp = str.substring(sIndex+1,str.length());
					//System.out.println(temp);
				}

					if(c)
					{	
						currI.opcode = temp;
						c = false;
					}			
					else{
						currI.nextInstruction = new AsmInstruction();
						currI = currI.nextInstruction;
						currI.opcode = temp;

					}
			}

				
		}
	}

	
	countCycles(); 
	

public void countCycles()
{

	AsmFunction currF;
	AsmInstruction currI;


	currF = fList.first;



	while(currF != null)
	{
		//System.out.println(currF.functionName);
		currI= currF.instructions;
		while(currI != null)
		{
			for(int i=0; i < AsmInstruction.cc.length; i++)
			{
				if(currI.opcode.compareTo(AsmInstruction.op[i]) == 0)
				{
					currI.numOfCycles = AsmInstruction.cc[i];
					currF.cycleCount += AsmInstruction.cc[i]; 
					break;
				}
			}
			//System.out.println(currI.opcode + "\t" + currI.numOfCycles);	
			currI = currI.nextInstruction;	
		}
		//System.out.println("Total=" + "\t" + currF.cycleCount);
		currF = currF.nextFunction;
		
	}

}


*/

--- NEW FILE: FileList.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


public class FileList{

public SourceFile first;


}

--- NEW FILE: Line.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


public class Line{
	public String line;
	public String path;
	public int lineNum;	
	public boolean isDirective;
	public Line nextLine;
}

--- NEW FILE: Makefile ---
tTossim.jar: TestThrough.class AsmParser.class FileList.class SourceFile.class SourceLine.class Preprocessor.class PreMica2.class PreTossim.class Line.class
	jar cf tTossim.jar TestThrough.class AsmParser.class FileList.class SourceFile.class SourceLine.class Preprocessor.class PreMica2.class PreTossim.class Line.class

TestThrough.class: AsmParser.class TestThrough.java
	javac TestThrough.java


AsmParser.class: SourceLine.class FileList.class SourceFile.class AsmParser.java
	javac AsmParser.java 


FileList.class: SourceFile.class FileList.java 
	javac FileList.java

SourceFile.class: SourceLine.class SourceFile.java
	javac SourceFile.java

SourceLine.class: SourceLine.java
	javac SourceLine.java

Preprocessor.class: Line.class Preprocessor.java
	javac Preprocessor.java

PreMica2.class: PreMica2.java
	javac PreMica2.java

PreTossim.class: PreTossim.java
	javac PreTossim.java	

Line.class: Line.java
	javac Line.java	


--- NEW FILE: Postmartem.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


import java.io.*;

public class Postmartem{

	public BufferedReader asmReader;
	

public Postmartem(String s) 
{
	try{
		
		asmReader=  new BufferedReader(new FileReader(s));
	}
	catch(FileNotFoundException e){
		System.out.println("trace file not found");
		System.exit(1);
	}
}


public static void main(String args[])throws FileNotFoundException,IOException
{
	Postmartem prp=new Postmartem(args[0]);
	prp.parse();
		
}







void parse() 
{

	String str;
	String start = "start";
	int sIndex;
	int eIndex;
	Line curr;
	long startValueAvrora=0;
	long startValueTossim=0;
	long offset=0;
        long temp =0;
	
	
	

	try{	
		
		while((str = asmReader.readLine()).compareTo(start) != 0)
		{	
			System.out.println(str);
		}
		System.out.println(str);
		str = asmReader.readLine();
		System.out.println(str);
		startValueAvrora = Long.valueOf(str);
		str = asmReader.readLine();
		sIndex = str.indexOf(":");
		eIndex = str.indexOf(":",sIndex+1);
		startValueTossim = Long.valueOf(str.substring(sIndex+1,eIndex));
		offset = startValueAvrora - startValueTossim;
		temp = startValueTossim + offset; 
		System.out.println("\"" + temp + "\" " + str );
		

		while((str = asmReader.readLine())!= null)
		{	
			sIndex = str.indexOf(":");
			eIndex = str.indexOf(":",sIndex+1);
			startValueTossim = Long.valueOf(str.substring(sIndex+1,eIndex));
			temp = startValueTossim+offset; 
			System.out.println("\"" + temp + "\" " + str );	
		}
	}
	catch(IOException e){
		System.out.println("io exception");
		System.exit(1);
	}


}
	
}


--- NEW FILE: PreMica2.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


import java.io.*;

public class PreMica2{

	public BufferedReader asmReader;


public PreMica2(String s) 
{
	try{
		asmReader=  new BufferedReader(new FileReader(s));
	}
	catch(FileNotFoundException e){
		System.out.println("C Source-file not found");
		System.exit(1);
	}
}


public static void main(String args[])throws FileNotFoundException,IOException
{
	PreMica2 prp=new PreMica2(args[0]);
	prp.parse();
		
}







void parse() 
{

	String str;
	//String start = "inline static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c94e0){";
	//String start = "static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c9e10){";
        String str1 = "static  void SchedulerBasicP$TaskBasic$runTask";
        String str2 = "{";
	int counter=0;
	
	
	

	try{	
		
		while(!(((str = asmReader.readLine()).indexOf(str1) != -1) && (str.indexOf(str2) != -1)))
		{
			System.out.println(str);	
		}
		System.out.println("// ***Start point for deleting line directives****");
		//System.out.println("inline static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c9e10)");
		//System.out.println("static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c9e10)");
                String printString = str.substring(0, str.indexOf("{"));
                System.out.println(printString);
		System.out.println("# 64 \"/opt/tinyos-2.x/tos/interfaces/TaskBasic.nc\"");
		System.out.println("{");

		while((str = asmReader.readLine()) != null)
		{
			
		
			if((str.startsWith("#")) && (str.indexOf("#line 64") != -1)){
				continue;
			}
			if((str.startsWith("#")) && (str.indexOf("#line 64") == -1)){
				System.out.println("// ***End point for deleting line directives****");
				break;
			}
			System.out.println(str);	
		
		}
		System.out.println(str);
		while((str = asmReader.readLine()) != null)
		{
			System.out.println(str);	
		}
		
	}
	catch(IOException e){
		System.out.println("io exception");
		System.exit(1);
	}
}


}
	



--- NEW FILE: PreTossim.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


import java.io.*;

public class PreTossim{

	public BufferedReader asmReader;


public PreTossim(String s) 
{
	try{
		asmReader=  new BufferedReader(new FileReader(s));
	}
	catch(FileNotFoundException e){
		System.out.println("C Source-file not found");
		System.exit(1);
	}
}


public static void main(String args[])throws FileNotFoundException,IOException
{
	PreTossim prp=new PreTossim(args[0]);
	prp.parse();
		
}







void parse() 
{	
	
	String str;
	//String start = "inline static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c94e0){";
	//String start = "static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c9e10){";
        String str1 = "static  void SimSchedulerBasicP$TaskBasic$runTask";
        String str2 = "{";
	int counter=0;
	
	
	

	try{	
		
		while(!(((str = asmReader.readLine()).indexOf(str1) != -1) && (str.indexOf(str2) != -1)))
		{
			System.out.println(str);	
		}
		System.out.println("// ***Start point for deleting line directives****");
		//System.out.println("inline static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c9e10)");
		//System.out.println("static  void SchedulerBasicP$TaskBasic$runTask(uint8_t arg_0x402c9e10)");
                String printString = str.substring(0, str.indexOf("{"));
                System.out.println(printString);
		System.out.println("# 64 \"/opt/tinyos-2.x/tos/interfaces/TaskBasic.nc\"");
		System.out.println("{");

		while((str = asmReader.readLine()) != null)
		{
			
		
			if((str.startsWith("#")) && (str.indexOf("#line 64") != -1)){
				continue;
			}
			if((str.startsWith("#")) && (str.indexOf("#line 64") == -1)){
				System.out.println("// ***End point for deleting line directives****");
				break;
			}
			System.out.println(str);	
		
		}
		System.out.println(str);
		while((str = asmReader.readLine()) != null)
		{
			System.out.println(str);	
		}
		
	}
	catch(IOException e){
		System.out.println("io exception");
		System.exit(1);
	}
}


}
	



--- NEW FILE: Preprocessor.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


import java.io.*;

public class Preprocessor{

	public BufferedReader asmReader;
	public Line fList;
	public Line eList;

public Preprocessor(String s) 
{
	try{
		fList = new Line();
		asmReader=  new BufferedReader(new FileReader(s));
	}
	catch(FileNotFoundException e){
		System.out.println("C Source-file not found");
		System.exit(1);
	}
}


public static void main(String args[])throws FileNotFoundException,IOException
{
	Preprocessor prp=new Preprocessor(args[0]);
	prp.parse();
		
}







void parse() 
{

	String str;
	String start = "static inline void init_heap(heap_t *heap)";
	int sIndex;
	int eIndex;
	Line curr;
	int ln=0;
	
	
	

	try{	
		curr=this.fList;
		while((str = asmReader.readLine()).compareTo(start) != 0)
		{
			System.out.println(str);	
		}
		System.out.println("// ***Start point for adding missing line directives****");
		System.out.println(str);
		while(!((str = asmReader.readLine()).startsWith("#")))
		{
			System.out.println(str);	
		}
		
		curr.line = str;
		curr.isDirective = true;
		sIndex = curr.line.indexOf("\"");
		eIndex = curr.line.indexOf("\"",sIndex+1);
		curr.path = curr.line.substring(sIndex+1,eIndex);
		curr.lineNum = Integer.valueOf(curr.line.substring(2,sIndex-1));
		

		while((str = asmReader.readLine()) != null)
		{
			if(str.startsWith("#")){
				curr.nextLine = new Line();
				curr = curr.nextLine;
				curr.line = str;
				curr.isDirective = true;
				sIndex = curr.line.indexOf("\"");
				eIndex = curr.line.indexOf("\"",sIndex+1);
				curr.path = curr.line.substring(sIndex+1,eIndex);
				curr.lineNum = Integer.valueOf(curr.line.substring(2,sIndex-1));
				eList = curr;
				this.print();
				fList = this.eList ;
				curr  = this.fList;
				eList = null;
			}
			else{
				curr.nextLine = new Line();
				curr = curr.nextLine;
				curr.line = str;
				curr.isDirective = false;
			}
		}
		// do remaining printing here
		curr = fList;
		while(curr != null){
			if(curr.isDirective){
				System.out.println(curr.line);
				ln = curr.lineNum;
				curr=curr.nextLine;

			}
			else{
				ln++;
				System.out.println(curr.line);
				if((curr.nextLine != null)&& (curr.nextLine.line.indexOf("else") == -1))
				System.out.println("# " + ln + " \"" + this.fList.path + "\"" );
				curr = curr.nextLine;
			}
		}
		
	}
	catch(IOException e){
		System.out.println("io exception");
		System.exit(1);
	}
}




void print()
{
	String s = "\"";
	Line curr;
	int l=0;
	curr = this.fList;
	if((this.fList.lineNum == this.eList.lineNum) && (this.fList.path.compareTo(this.eList.path)==0)){
		while(curr != this.eList){
			System.out.println(curr.line);
			curr = curr.nextLine;
		}
	}
	else{
		while(curr != eList){
			if(curr.isDirective){
				System.out.println(curr.line);
				l = curr.lineNum;
				curr = curr.nextLine;
			}
			else{
				l++;
				if((l < eList.lineNum) && (this.fList.path.compareTo(this.eList.path)==0)){
					System.out.println(curr.line);
					if(!(curr.nextLine == this.eList)&& (curr.nextLine.line.indexOf("else") == -1))
						System.out.println("# " + l + " " + s + this.fList.path + s );
				}
				else if(this.fList.path.compareTo(this.eList.path)!=0){
					System.out.println(curr.line);
					if(!(curr.nextLine == this.eList) && (curr.nextLine.line.indexOf("else") == -1))
						System.out.println("# " + l + " " + s + this.fList.path + s );
				}
				else{
					System.out.println(curr.line);
				}
				curr = curr.nextLine;
			}
		}
		
	}
}



}
	



--- NEW FILE: SourceFile.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


public class SourceFile{

public String path;
public String component;
public SourceLine line;
public SourceFile nextFile;

}

--- NEW FILE: SourceLine.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/


public class SourceLine{

public String lineNum;
public String inFunction;
public double numOfCycles;
public SourceLine nextLine;



public static double[] cc = new double[115];
public static String[] op = new String[115];


static{

op[0] = "add";
cc[0]	= 1;

op[1] = "adc";
cc[1] = 1;

op[2] = "adiw";
cc[2] = 2;

op[3] = "sub";
cc[3] = 1;


op[4] = "subi";
cc[4] = 1;

op[5] = "sbc";
cc[5] = 1;


op[6] = "sbci";
cc[6] = 1;

op[7] = "sbiw";
cc[7] = 2;

op[8] = "and";
cc[8] = 1;

op[9] = "andi";
cc[9] = 1;

op[10] = "or";
cc[10] = 1;

op[11] = "ori";
cc[11] = 1;

op[12] = "eor";
cc[12] = 1;

op[13] = "com";
cc[13] = 1;

op[14] = "neg";
cc[14] = 1;

op[15] = "sbr";
cc[15] = 1;

op[16] = "cbr";
cc[16] = 1;

op[17] = "inc";
cc[17] = 1;

op[18] = "dec";
cc[18] = 1;

op[19] = "tst";
cc[19] = 1;

op[20] = "clr";
cc[20] = 1;

op[21] = "ser";
cc[21] = 1;

op[22] = "mul";
cc[22] = 2;

op[23] = "muls";
cc[23] = 2;

op[24] = "mulsu";
cc[24] = 2;

op[25] = "fmul";
cc[25] = 2;


op[26] = "fmuls";
cc[26] = 2;

op[27] = "fmulsu";
cc[27] = 2;

op[28] = "rjmp";
cc[28] = 2;

op[29] = "ijmp";
cc[29] = 2;

op[30] = "eijmp";
cc[30] = 2;

op[31] = "jmp";
cc[31] = 3;

op[32] = "rcall";
cc[32] = 3;

op[33] = "icall";
cc[33] = 3;

op[34] = "eicall";
cc[34] = 4;

op[35] = "call";
cc[35] = 4;

op[36] = "ret";
cc[36] = 4;

op[37] = "reti";
cc[37] = 4;

op[38] = "cpse";
cc[38] = 1;

op[39] = "cp";
cc[39] = 1;

op[40] = "cpc";
cc[40] = 1;

op[41] = "cpi";
cc[41] = 1;

op[42] = "sbrc";
cc[42] = 1;

op[43] = "sbrs";
cc[43] = 1;

op[44] = "sbic";
cc[44] = 1;

op[45] = "sbis";
cc[45] = 1;

op[46] = "brbs";
cc[46] = 1;

op[47] = "brbc";
cc[47] = 1;

op[48] = "breq";
cc[48] = 1;

op[49] = "brne";
cc[49] = 1;

op[50] = "brcs";
cc[50] = 1;

op[51] = "brcc";
cc[51] = 1;

op[52] = "brsh";
cc[52] = 1;

op[53] = "brlo";
cc[53] = 1;

op[54] = "brmi";
cc[54] = 1;

op[55] = "brmi";
cc[55] = 1.5;

op[56] = "brpl";
cc[56] = 1;

op[57] = "brge";
cc[57] = 1;


op[58] = "brlt";
cc[58] = 1;

op[59] = "brhs";
cc[59] = 1;

op[60] = "brhc";
cc[60] = 1;

op[61] = "brts";
cc[61] = 1;


op[62] = "brtc";
cc[62] = 1;

op[63] = "brvs";
cc[63] = 1;

op[64] = "brvc";
cc[64] = 1;

op[65] = "brie";
cc[65] = 1;

op[66] = "brid";
cc[66] = 1;

op[67] = "mov";
cc[67] = 1;

op[68] = "mov";
cc[68] = 1;

op[69] = "movw";
cc[69] = 1;

op[70] = "ldi";
cc[70] = 1;

op[71] = "lds";
cc[71] = 2;

op[72] = "ld";
cc[72] = 2;

op[73] = "ldd";
cc[73] = 2;

op[74] = "sts";
cc[74] = 2;

op[75] = "st";
cc[75] = 2;

op[76] = "std";
cc[76] = 2;


op[77] = "lpm";
cc[77] = 3;

op[78] = "elpm";
cc[78] = 3;

op[79] = "spm";
cc[79] = 0;

op[80] = "in";
cc[80] = 1;

op[81] = "out";
cc[81] = 1;

op[82] = "push";
cc[82] = 2;

op[83] = "pop";
cc[83] = 2;

op[84] = "lsl";
cc[84] = 1;

op[85] = "lsr";
cc[85] = 1;

op[86] = "rol";
cc[86] = 1;

op[87] = "asr";
cc[87] = 1;

op[88] = "swap";
cc[88] = 1;

op[89] = "bset";
cc[89] = 1;

op[90] = "bclr";
cc[90] = 1;

op[91] = "sbi";
cc[91] = 2;

op[92] = "cbi";
cc[92] = 2;

op[93] = "bst";
cc[93] = 1;

op[94] = "bld";
cc[94] = 1;

op[95] = "sec";
cc[95] = 1;

op[96] = "clc";
cc[96] = 1;

op[97] = "sen";
cc[97] = 1;

op[98] = "cln";
cc[98] = 1;

op[99] = "sez";
cc[99] = 1;

op[100] = "clz";
cc[100] = 1;

op[101] = "sei";
cc[101] = 1;

op[102] = "cli";
cc[102] = 1;

op[103] = "ses";
cc[103] = 1;

op[104] = "cls";
cc[104] = 1;

op[105] = "sev";
cc[105] = 1;

op[106] = "clv";
cc[106] = 1;

op[107] = "set";
cc[107] = 1;

op[108] = "clt";
cc[108] = 1;

op[109] = "seh";
cc[109] = 1;

op[110] = "clh";
cc[110] = 1;

op[111] = "break";
cc[111] = 1;

op[112] = "nop";
cc[112] = 1;

op[113] = "sleep";
cc[113] = 1;

op[114] = "wdr";
cc[114] = 1;
}



}

--- NEW FILE: TempTest.java ---
import java.io.*;

import antlr.*;

import antlr.debug.misc.*;
import antlr.collections.*;

public class TempTest
{
    public static void main(String[] args)
    {
        for (int i=0; i<args.length; i++)
        {
        try
            {
	   
            String programName = args[i];
	    String str;
            String originalSource = "";
            DataInputStream dis = null;
	    String s = "/opt/tinyos-2.x/apps/timeTossim/cgram/examples/check_time3.c";
	    BufferedReader reader = new BufferedReader(new FileReader(s));
	    //System.out.println("typedef long long int sim_time_t;"); 
	    System.out.println("int check_time(long long int avr_time);");
	    
            if (programName.equals("-")) {
                dis = new DataInputStream( System.in );
            }   
            else {
                dis = new DataInputStream(new FileInputStream(programName));
            }
            GnuCLexer lexer =
                new GnuCLexer ( dis );
            lexer.setTokenObjectClass("CToken");
            lexer.initialize();
            // Parse the input expression.
            GnuCParser parser = new GnuCParser ( lexer );
            
            // set AST node type to TNode or get nasty cast class errors
            parser.setASTNodeType(TNode.class.getName());
            TNode.setTokenVocabulary("GNUCTokenTypes");

            // invoke parser
            try {
                parser.translationUnit();
            }
            catch (RecognitionException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
            catch (TokenStreamException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
	
	    	TNode superNode = new TNode();
		AST ast = parser.getAST();
        	superNode.addChild(((TNode)ast).deepCopyWithRightSiblings());
        
        	ASTFrame inputFrame = new ASTFrame("hello", superNode);
        	inputFrame.setVisible(true);
	
            // Garbage collection hint
            System.gc();

//          System.out.println("AST:" + parser.getAST());
//          TNode.printTree(parser.getAST());
    
            // run through the treeParser, doesn't do anything 
            // but verify that the grammar is ok
            GnuCTreeParser treeParser = new GnuCTreeParser();
            
            // set AST node type to TNode or get nasty cast class errors
            treeParser.setASTNodeType(TNode.class.getName());

            // walk that tree (it doesn't build a new tree -- 
            // it would just be a copy if it did)
            treeParser.translationUnit( parser.getAST() );

//          System.out.println(treeParser.getAST().toStringList());
            // Garbage collection hint
            System.gc();

            GnuCEmitter e = new GnuCEmitter(lexer.getPreprocessorInfoChannel());
			e.asmP = new AsmParser("asm.txt");
			e.asmP.parse();
            // set AST node type to TNode or get nasty cast class errors
            e.setASTNodeType(TNode.class.getName());

            // walk that tree
			
			AST ast1 = parser.getAST();
			((TNode)ast1).doubleLink();
			e.translationUnit( ast1 );
            //e.translationUnit( parser.getAST() );

            // Garbage collection hint
	    //while((str = reader.readLine()) != null)
	    //{
		//System.out.println(str);
            //}
            System.gc();
		
            }
        catch ( Exception e )
            {
            System.err.println ( "exception: " + e);
            e.printStackTrace();
            }
        }
	
    }
}

        


--- NEW FILE: Test.java ---
import java.io.*;

import antlr.*;

public class Test
{
    public static void main(String[] args)
    {
        for (int i=0; i<args.length; i++)
        {
        try
            {
            String programName = args[i];
//      System.out.println("\nworking on " + programName);
//      System.out.flush();
//      System.err.println("\nworking on " + programName);
//      System.err.flush();
            DataInputStream dis = null;
            if (programName.equals("-")) {
                dis = new DataInputStream( System.in );
            }   
            else {
                dis = new DataInputStream(new FileInputStream(programName));
            }
            GnuCLexer lexer =
                new GnuCLexer ( dis );
            lexer.setTokenObjectClass("CToken");
            lexer.initialize();
            // Parse the input expression.
            GnuCParser parser = new GnuCParser ( lexer );
            
            // set AST node type to TNode or get nasty cast class errors
            parser.setASTNodeType(TNode.class.getName());
            TNode.setTokenVocabulary("GNUCTokenTypes");

            // invoke parser
            try {
                parser.translationUnit();
            }
            catch (RecognitionException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
            catch (TokenStreamException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }

            // Garbage collection hint
            System.gc();
            
//      System.out.println(lexer.getPreprocessorInfoChannel());
//    TNode.printTree(parser.getAST());      System.out.flush();  

            // Garbage collection hint
            System.gc();

            GnuCEmitter e = new GnuCEmitter(lexer.getPreprocessorInfoChannel());
            
            // set AST node type to TNode or get nasty cast class errors
            e.setASTNodeType(TNode.class.getName());

            // walk that tree
            e.translationUnit( parser.getAST() );

            // Garbage collection hint
            System.gc();

            }
        catch ( Exception e )
            {
            System.err.println ( "exception: " + e);
            e.printStackTrace();
            }
        }
    }
}


--- NEW FILE: TestLex.java ---
import java.io.*;

import antlr.CommonAST;
import antlr.DumpASTVisitor;
import antlr.Token;
public class TestLex
{
    public static void main(String[] args)
    {
        for (int i=0; i<args.length; i++)
        {
        try
            {
            String programName = args[i];
            DataInputStream dis = null;
            if (programName.equals("-")) {
                dis = new DataInputStream( System.in );
            }   
            else {
                dis = new DataInputStream(new FileInputStream(programName));
            }
            GnuCLexer lexer =
                new GnuCLexer ( dis );
            lexer.setTokenObjectClass("CToken");
            lexer.initialize();
            Token t= lexer.nextToken();
            while (t.getType() != 1 ) {
                System.out.println( t.getText() );
                t = lexer.nextToken();
            }

            }
        catch ( Exception e )
            {
            System.err.println ( "exception: " + e);
            e.printStackTrace();
            }
        }
    }
}
        


--- NEW FILE: TestThrough.java ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen University ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/



import java.io.*;

import antlr.*;

import antlr.debug.misc.*;
import antlr.collections.*;

public class TestThrough
{
    public static void main(String[] args)
    {
        for (int i=0; i<args.length; i++)
        {
        try
            {
	   
            String programName = args[i];
	    String str;
            String originalSource = "";
            DataInputStream dis = null;
	    String en = System.getenv("HOME");
	    String s = en + "/tinyos-2.x-contrib/timetossim/tinyos-2.x/tools/cgram/examples/check_time3.c";
	    BufferedReader reader = new BufferedReader(new FileReader(s));
	    //System.out.println("typedef long long int sim_time_t;"); 
	    System.out.println("inline int check_time(long long int avr_time);");
	    
            if (programName.equals("-")) {
                dis = new DataInputStream( System.in );
            }   
            else {
                dis = new DataInputStream(new FileInputStream(programName));
            }
            GnuCLexer lexer =
                new GnuCLexer ( dis );
            lexer.setTokenObjectClass("CToken");
            lexer.initialize();
            // Parse the input expression.
            GnuCParser parser = new GnuCParser ( lexer );
            
            // set AST node type to TNode or get nasty cast class errors
            parser.setASTNodeType(TNode.class.getName());
            TNode.setTokenVocabulary("GNUCTokenTypes");

            // invoke parser
            try {
                parser.translationUnit();
            }
            catch (RecognitionException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
            catch (TokenStreamException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
	/*
	    	TNode superNode = new TNode();
		AST ast = parser.getAST();
        	superNode.addChild(((TNode)ast).deepCopyWithRightSiblings());
        
        	ASTFrame inputFrame = new ASTFrame("hello", superNode);
        	inputFrame.setVisible(true);
	*/
            // Garbage collection hint
            System.gc();

//          System.out.println("AST:" + parser.getAST());
//          TNode.printTree(parser.getAST());
    
            // run through the treeParser, doesn't do anything 
            // but verify that the grammar is ok
            GnuCTreeParser treeParser = new GnuCTreeParser();
            
            // set AST node type to TNode or get nasty cast class errors
            treeParser.setASTNodeType(TNode.class.getName());

            // walk that tree (it doesn't build a new tree -- 
            // it would just be a copy if it did)
            treeParser.translationUnit( parser.getAST() );

//          System.out.println(treeParser.getAST().toStringList());
            // Garbage collection hint
            System.gc();

            GnuCEmitter e = new GnuCEmitter(lexer.getPreprocessorInfoChannel());
			e.asmP = new AsmParser("build/micaz/asm.txt");
			e.asmP.parse();
            // set AST node type to TNode or get nasty cast class errors
            e.setASTNodeType(TNode.class.getName());

            // walk that tree
			
			AST ast = parser.getAST();
			((TNode)ast).doubleLink();
			e.translationUnit( ast );
            //e.translationUnit( parser.getAST() );

            // Garbage collection hint
	    while((str = reader.readLine()) != null)
	    {
		System.out.println(str);
            }
            System.gc();
		
            }
        catch ( Exception e )
            {
            System.err.println ( "exception: " + e);
            e.printStackTrace();
            }
        }
	
    }
}

        


--- NEW FILE: TestThrough.java~ ---
/*
* Copyright (c) 2007 #### RWTH Aachen Universtiy ####.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the
*   distribution.
* - Neither the name of #### RWTH Aachen ####  nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
* UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @author Muhammad Hamad Alizai <hamad.alizai at rwth-aachen.de>
*/



import java.io.*;

import antlr.*;

import antlr.debug.misc.*;
import antlr.collections.*;

public class TestThrough
{
    public static void main(String[] args)
    {
        for (int i=0; i<args.length; i++)
        {
        try
            {
	   
            String programName = args[i];
	    String str;
            String originalSource = "";
            DataInputStream dis = null;
	    String en = System.getenv("HOME");
	    String s = en + "/tinyos-2.x-contrib/timetossim/tinyos-2.x/tools/cgram/examples/check_time3.c";
	    BufferedReader reader = new BufferedReader(new FileReader(s));
	    //System.out.println("typedef long long int sim_time_t;"); 
	    System.out.println("inline int check_time(long long int avr_time);");
	    
            if (programName.equals("-")) {
                dis = new DataInputStream( System.in );
            }   
            else {
                dis = new DataInputStream(new FileInputStream(programName));
            }
            GnuCLexer lexer =
                new GnuCLexer ( dis );
            lexer.setTokenObjectClass("CToken");
            lexer.initialize();
            // Parse the input expression.
            GnuCParser parser = new GnuCParser ( lexer );
            
            // set AST node type to TNode or get nasty cast class errors
            parser.setASTNodeType(TNode.class.getName());
            TNode.setTokenVocabulary("GNUCTokenTypes");

            // invoke parser
            try {
                parser.translationUnit();
            }
            catch (RecognitionException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
            catch (TokenStreamException e) {
                System.err.println("Fatal IO error:\n"+e);
                System.exit(1);
            }
	/*
	    	TNode superNode = new TNode();
		AST ast = parser.getAST();
        	superNode.addChild(((TNode)ast).deepCopyWithRightSiblings());
        
        	ASTFrame inputFrame = new ASTFrame("hello", superNode);
        	inputFrame.setVisible(true);
	*/
            // Garbage collection hint
            System.gc();

//          System.out.println("AST:" + parser.getAST());
//          TNode.printTree(parser.getAST());
    
            // run through the treeParser, doesn't do anything 
            // but verify that the grammar is ok
            GnuCTreeParser treeParser = new GnuCTreeParser();
            
            // set AST node type to TNode or get nasty cast class errors
            treeParser.setASTNodeType(TNode.class.getName());

            // walk that tree (it doesn't build a new tree -- 
            // it would just be a copy if it did)
            treeParser.translationUnit( parser.getAST() );

//          System.out.println(treeParser.getAST().toStringList());
            // Garbage collection hint
            System.gc();

            GnuCEmitter e = new GnuCEmitter(lexer.getPreprocessorInfoChannel());
			e.asmP = new AsmParser("build/micaz/asm.txt");
			e.asmP.parse();
            // set AST node type to TNode or get nasty cast class errors
            e.setASTNodeType(TNode.class.getName());

            // walk that tree
			
			AST ast = parser.getAST();
			((TNode)ast).doubleLink();
			e.translationUnit( ast );
            //e.translationUnit( parser.getAST() );

            // Garbage collection hint
	    while((str = reader.readLine()) != null)
	    {
		System.out.println(str);
            }
            System.gc();
		
            }
        catch ( Exception e )
            {
            System.err.println ( "exception: " + e);
            e.printStackTrace();
            }
        }
	
    }
}

        


--- NEW FILE: check_time3.c ---
inline int check_time(sim_time_t avr_time){
	//printf("%lld",sim_time());
	sim_time_t temp=((sim_time_t)avr_time * sim_ticks_per_sec());
    	temp /= 7372800ULL;			
	sim_set_time(sim_time()+temp);

return 0;
}

--- NEW FILE: check_time3b.c ---
typedef struct Event_Data{
	sim_event_t * tevent;
	struct Event_Data * next;
}Event_Data;

typedef struct Event_List{
	struct Event_Data *first;
}Event_List;

sim_time_t nodeTime;
bool noNode;

inline int adjust_queue(long long increase){
bool a = 1;
bool b = 0;
int prior=0;
Event_List list;
Event_Data *curr; 
Event_Data *prev;
long long increment=0;
list.first = (void *)0;
nodeTime=0;
noNode =1;
if(!sim_queue_is_empty () ){
	if( sim_time() <= sim_queue_peek_time()){
		//printf("Event Queue Unchanged\n");
		return 0;
	}
}
//printf("{  reading the queue\n");
while(!sim_queue_is_empty () ) { 
	
	

	sim_event_t * event = sim_queue_pop(); 
	if (current_node != event->mote){
		if(a){
			list.first = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ;
			list.first->tevent = event;
			curr=list.first;
			curr->next=(void *)0;
			a = 0;
		}
		else{
			curr->next = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ; 
			curr->next->tevent = event;
			curr = curr->next;
			curr->next=(void *)0;
		}
	}
	else{
		noNode = 0;
		if(  sim_time() <= event->time){
			if(a){
				list.first = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ;
				list.first->tevent = event;
				curr=list.first;
				curr->next=(void *)0;
				a = 0;
			}
			else{
				curr->next = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ; 
				curr->next->tevent = event;
				curr = curr->next;
				curr->next=(void *)0;
			}
			nodeTime = event->time;

			break;
		}
		else{
			if((currentPriority < event->priority) && (!isAtomic)){
				//printf("Event Preempted\n");
				prior = currentPriority;
				sim_queue_insert(event);
				sim_run_next_event();
				currentPriority = prior;
				//printf("Return from Preemption\n");
			}
			else{
				//printf("Event Delayed and Queue Rescheduled\n");
				event->time =  sim_time() + (++increment);
				//printf("%lld\n",event->time);
			
				if(a){
					list.first = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ;
					list.first->tevent = event;
					curr=list.first;
					curr->next=(void *)0;
					a = 0;
				}
				else{
					curr->next = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ; 
					curr->next->tevent = event;
					curr = curr->next;
					curr->next=(void *)0;
				}
			}
		}
		
	}
	if( sim_time() <= sim_queue_peek_time()){
			break;
	}

}

curr = list.first;
//printf("writing the queue\n");
increment=0;

while(curr != (void *)0 ) {
 
		if(curr->tevent->mote == sim_node())
			curr->tevent->time = sim_time() + (++increment);
		sim_queue_insert(curr->tevent ) ;
		prev = curr;
		curr= curr->next;
		free(prev);
		
		
}

//printf("writing done  }\n");
return 0;
}




inline int check_time(sim_time_t avr_time){
	//printf("%lld",sim_time());
	sim_time_t temp=((sim_time_t)avr_time * sim_ticks_per_sec());
    	temp /= 7372800ULL;			
	sim_set_time(sim_time()+temp);
	//printf("   %lld\n",sim_time());
		if (firstCall){
			firstCall = 0; 
			adjust_queue(temp);
		} 
		else{
			if(noNode) return 0;
			if((nodeTime != 0) && (nodeTime < sim_time())){
				adjust_queue(temp);
			}
			if(nodeTime == 0){
				adjust_queue(temp);
			}

                }		
	

return 0;
}

inline int adjust_queue_sch(long long increase){
bool a = 1;
bool b = 0;
int prior=0;
Event_List list;
Event_Data *curr; 
Event_Data *prev;
long long increment=0;
list.first = (void *)0;

if(!sim_queue_is_empty () ){
	if( sim_time() <= sim_queue_peek_time()){
		//printf("Event Queue Unchanged\n");
		return 0;
	}
}
//printf("{  reading the queue\n");
while(!sim_queue_is_empty () ) { 
	
	

	sim_event_t * event = sim_queue_pop(); 
	if (current_node != event->mote){
		if(a){
			list.first = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ;
			list.first->tevent = event;
			curr=list.first;
			curr->next=(void *)0;
			a = 0;
		}
		else{
			curr->next = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ; 
			curr->next->tevent = event;
			curr = curr->next;
			curr->next=(void *)0;
		}
	}
	else{

		if(  sim_time() <= event->time){
			if(a){
				list.first = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ;
				list.first->tevent = event;
				curr=list.first;
				curr->next=(void *)0;
				a = 0;
			}
			else{
				curr->next = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ; 
				curr->next->tevent = event;
				curr = curr->next;
				curr->next=(void *)0;
			}

			break;
		}
		else{
			
			
			event->time =  sim_time() + (++increment);
			if(a){
				list.first = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ;
				list.first->tevent = event;
				curr=list.first;
				curr->next=(void *)0;
				a = 0;
			}
			else{
				curr->next = ( Event_Data * ) malloc ( sizeof ( Event_Data ) ) ; 
				curr->next->tevent = event;
				curr = curr->next;
				curr->next=(void *)0;
			}
		}
		
	}
	if( sim_time() <= sim_queue_peek_time()){
			break;
	}

}

curr = list.first;
//printf("writing the queue\n");
increment=0;

while(curr != (void *)0 ) {
 
		if(curr->tevent->mote == sim_node())
			curr->tevent->time = sim_time() + (++increment);
		sim_queue_insert(curr->tevent ) ;
		prev = curr;
		curr= curr->next;
		free(prev);
		
		
}

//printf("writing done  }\n");
return 0;
}
inline int check_time_sch(sim_time_t avr_time){
	//printf("%lld",sim_time());
	sim_time_t temp=((sim_time_t)avr_time * sim_ticks_per_sec());
    	temp /= 7372800ULL;			
	sim_set_time(sim_time()+temp);
	//printf("   %lld\n",sim_time());
		adjust_queue_sch(temp);

return 0;
}


--- NEW FILE: tTossim.jar ---
PK
ûx1‚­b12¼p¸l+ÂÝÀch¾‚€ÿ9c*ÚbFYüžåŒ³õý*…u¯‚ûB¸_Å5Óúž=ÈœQvr€gyå!CxXÅ
xDÁ£
hXk9V°N 6¶l§@]—;,fõXŽìËe†¤—4†l¢Ôe˘»­gŸ1fÄmÃIÇÏrҝ¬¨¸9Ï”›-ž”~ñÜ\z¤ƒÅ5l@—
D«¢BdÜOóðŒ†gñœ@‡åØ”šVË	Z§Çl×I·–fc^™¼¬SÁó^ÀÓ¢]ÁQ
/â¥jÐäh£ÝN6PìÒÈhx¯°·c3dÌð'×Õ#ó¹¡+éŽJGëó5αÊì~Ãó+è_¨OöѦ*xCÛ8¢á-ÆÓ´¥o°¢œÏJ_ÃÛlá¶Ðb8íÅwHÓMSmX®³)oÊ,O4ç,ÌÞLÀíÖîm­Òó\/¡òv½«á=¼?¥^¶]Á<CývÐÄ“ž”U˜ø}$aÖ¦ŒLÿŸpŸRÐëýLEZ yˆk$ž±LcÜð3A>Ðð>×ðº4|ÉÃ	ÞêæéêšÂ@>dužhÕp’Ef,…7­¶mhŸ4ƒ³Hã~ iÒ2Î˜ÀÒØyŽÄ?I¤ad³Òhÿ_“GC[!	̍×ô¼óY¤cÙ<I§BªTt™Zëæ(¦yS¬~’Ÿ¬¯ÎjÖÎ&(Y^ÙÎÙ¹˜DÕ ïζŽJò:—í¨áËcÚጂ&‡bçe”ñû2(WRÅV—møäEå;Ë2lk¿ä+©çW֝5dRO¡-ë32¤ÔDv×”×?þª£®iålÃ'g8¾mp­’KÊü9ûWò_ö¯NæY¹.Ö͸jÒf¥z€€NZÁoº¶M–È—'éµÄ.Àb3-d¡ß“YÏ5¥ï»^·³×í1GÚÉê˜d÷âØ™å&@‡ªŸEÏÔ¡#ú,Ï(÷ÃnŽ:5ˆQ*LJö0÷
ÊU¶R-†9šôSb	n¢vË_
ÝûtÿÓ¸‘V‹èO­
„±[*¢5¨6‘À+µk.?}\<¿|áªÞhM¢N$ꣵ§P—h(¡>UDƒÞP€
ÑP at 8¡” ¦Jˆ¤t¥­ˆÆDè$š¢³
˜ÝS@ô¢%4§Nbnóõ˜ËËæ§ÚЏ¨L+aAJ¯/BO„õp´¥€…z¸€‹KX”ÒÃE\’Puµ‹h-`IôÒS¸LW¸|›‘“X:‰+z%AÒ#Ĺ¯;…e¸ì¿DNaE	mÄmODôHÕM‡añV–®J1¤UE\Ðt­„kRÑk‹¸î¬Öµ¯±º€5ºVÕ½¾¬™hÔ¿cJB×ôÆ:uJÙÚTß÷h¤µ“÷‰¿~%ÛXÒ;á:BØ6f7>"ÄÄŸÎ	Ôâ}º¥?Ãåÿ,GHd…O/ŒÊ®žFœÆ8Bô$Ñpfc5½˜Ö ×c%Tk±ë0€1D+Ÿöýª€G©£›úeu¦^²¾ìï&OtÉ'ññ­Ï`~Æ­ø…g¿a¿cÀ
<1cb.òâRŒ‹•Ø/Öà>Ñ…b+;pP¤èýcâÈà°ÈR[ó©exFÁ³â9ÄÅË8JQÜ\.àî¿PK—ß‹Ö.

Tø£	sK.>`¦wb$)KÓÚ-V+K‘;ߑ̥C&Gp¬ÏÄ·²Vº‰}ëðb­€:^Ç]X#P=Æ•3lP²‹6^Žêhŝ‹çêlIf{“¹DxÃ`ÈLe£IêÝ1ƒ8N¾¨GµÒ©M$³µÖR𠎇ØÝÃx„4úû‚á~ªÂL§s©¬§Þ+
û'<õÿ†í?³-ȨêP2Nˆ5w&ÿë>Ê.š›ƒ}ÒÎä2Ó–ÕŸoÞ(r*˜=HÀ™ï¬<Ìd}%w<™0yBÜžù½)±â„Q}	s0[¬O‹&zs‰PñšòâdUÏSKB!ZöôÐ’LÑ-ì™7¹D.Þé>Š™‚)[ƒ©”™Ü6_kþ%šÆ¹ªñôüß±šMEXJ¯ìjz’%Øxr‰²ñøÓnà©¦µ¸8½©~º.CŒC
\†åsÈã(ŒÃh¼å2ÔÏaËùyå•úìòp|FdÔb94¢:ÈÅ2¨´j$ÕဝÎ*é´upâVz}W¢Š4;±¶Ú£Ð•”áF¹]î;++¼¶J§Wæè.Ê£rUÄŒ jˆw¢ºÈ{í†}Õ^‡áð:‡aÀW6h¿aÖüÔŸ%Ù„øÅ+1Üh-—Þ+äNâߪ/B‡a7dw¹›ŠªÅbæŠê7Éû§…K©èòþ1ÔŽb©¥cæ§.NgRQ²÷Z¯7öª%K¯bTL `XŠ,¦<ß@“Õ^§áÁ²	Ø;»¾f8K/›–NC¡è´i£XnéÈ“>™×y+òSÖÁgØKM«ãæÔqk±(•˰Ïv±Ô½¢SGÁ)×%wä''¨ˆ›ùGMâÜW:‡C,r—OKt’Tqé3¥–åá(ò\m™¥Õåv
ã–¯ÞC“Q6Ûu{¡ê¡ÆpFPOÇnWKhõyØNºD~ê‡üäF
Ó0s]0ˆk,\ÖÜXš¥3?¹$—×ň¼m"R«´†ÐV@¤ÐÐEˆ\ACp¡ÒCŸ M„ÏfBç,¢!h$®"M/¡’q¹=؇^İ	øp÷Ð?Öf<ƒ-¸@Ÿ)—°
“Ö(vá
}G\E
P]Éã²’è%3tã–2ÝR¤ëÇpû½œ¶1¬¢!f™??õ)ÖmÊO½óÅ›ûN\‚¯QŽoèuø–>¾£RÔÓÃø‘4ׯ®¿PK_ßáÑR

Â@„góoLŒ/`a§kÅF°
Z(ö—xÊ…˜@rñ½¬À‡/A‘…™oXØ×ûñ0CàB‡g÷Ñ#˜'QV’àE»¢.¾Ÿ¬…È…\ôÑø@0VÅ‘‚Hä|S_b^îYœ)âþ¯~c‘¨ä4eWæÁ‚Mp~Ðop˜±ünã”'Chê€Ô0¿›ºSê¨4h3`Nî [[w”Z-l*W¹†îPKŠZÂ[®

¢&‰êBAô{gÃÊÙ“ËK%Qø~”x»‘œæÍ›™·ï½?Ï€1Ú.òh:ð´
g®­àȯ|sµ­u*Õ~ÂP‰’Ó9QBiòÅR	/X'—41r”•¸é…ŒÿÃH)M¥’zƐïõ·Ÿ';2ù&·¼œB‘nxhbn–"9#C³‡*<†F¶Û*<ŠH£‹@£Q¤Ž~ü¡ƒ²Å
\‹Ì¡Z#Ö±(`w+ש–죑|Â_PKžq!uÑ
mýósB±Õ>R
a~¶ømL‹îJT{'*bÁõ$ý¤.ìÕ~¤Î¿}v"Z¥£5Ñ6–ðg²+¢A›N¥ƒ<ä©hÐÖ6Äý9ýÖ¿—nP|VjêVšØ«ÌäÉšZÿ.:1-nÔTÛ(	ŃA1S½hSÇ1ÅNFÓÁÑtpA‘úT4X`x¤>¢­¹Ð¤¹ìdÊ\¶Q,P8n*-ÑUZ‚U÷KÄl‹˜m©j-ñ:-µ1-õq-Uf@<­¥ÚŒ«6ãÒFi£F£F£˜Ö­¶®1¸kuÁ²Äƒõð[o+^¡Ý M“YzÃSiëýr¢ZìTÐZ±D°ˆ
Á©Ô7'm×Ï©Oŵ
V(YôCAßI­NéÍ7-¤>0mÃz¼°žFJ—<h?¡ý„ö×j­öul\¹à}òû)í7j¿Qûæ¡Ñ+‰Vkßo]	B+ƒG.8e7FƒS_]‘üñý0ïä½eášh$îþGîzÿÃÊáüÔï.mª—ár­WàJ¿6^#­þkãWËßâ¿]~{½¯¿’_Ý~»@ê°
MÓ}Æ
™]³wÁ	>½3y©=Y;`奞†½Îv8¶¸s¶Ã²sË}8âp®dpóÁ=Éèé¶,i KÁ’€yž´”gvÌË’–ʬ¦iòXr5hÚ½™ä)›fK+e¶asesÃi­Ì1l!ùʆ-¥²¥a®´UææI;eža+i¯le(ÒA)†­¥£²µa¾tRæ¶‘ÎÊ6†m¥@Ù6s‰í¤‹í2A{éªAûLÐAºiÐ!t”ît̝¤‡2Agé©AçLP ½4(È]¤Pƒ.™ «œ¥A×|ôÖ ›ôÕ [&è.ý4èž	zH
zäc€=e=3A/¬A¯LP(C4(ÌgÉP
Î2·§·œ­ìmØG†)ûö•áʾ†ýäe?Ãþ2BÙßp€ŒT0(£”
Éhå ÃÁ2F9ØpˆŒU1*EÊ¡†gË8åÙ†Ãä\å0Ãá2^9Üð)Vžc8BÎSŽ0ÙÄ‘ù˜ Á(™¨Á(³}´LRŽ6#“•cÇÊåXÃ"™ª,2'Ó”ãÏ•éÊs
ÇËåxÃb)Už'ç+Ï3œ 3•K¤LYb8±‰
'É,å$ÃÉ2[9ÙpŠ”+§d¼©2Gƒ©™`šÌÕ`Z&˜.ó4˜ž	fÈ|
fd‚RY Ai&8_jp~æY)‹4˜™	Êd±e-•³d‰r–9ËÙrr¶a¹,U–gæŸ#Ë4˜“	æÊr
æšód…ržá|	)ç.°ráB‰(.’
å"ÃÅU.6\"•Ê%™#_ U\	–JµKÍ€eS.3\.5Êå†+d¥r…aHâʐaXj•aÈ$”Ã
©SVF¥^5¬”UÊJÃ*I*««%¥¬6ŒIZ3¬‘eáJiT®4ŒËjeܰV.TÖ&d2aX'k•u†õr‘²Þp•¬S®2LÊÅÊdnù_’öVóûÙÈBsä"mÑ
Ñ=‘¾¾† F¡Æ£#&ùß´¥è‚rtÃ"ÿÛ{9z¡
…H 7ÑÇÿ.ïçO÷÷çˆM„Íþè{0Û0;1»1{1û00Q„Ç£þìÇQŒ“˜€3(!“¨%&SL¥L£^˜APJÃ0“Æ¢Œ&`6MG9ÍÆ\Z„yƪÁBJa1]„%t9–ÒuXF¢ÍÓVTÐCˆÒ.Tѳ¨¦—QC¯c%D-F‚>E=}…UôR–´•ƒF+«­¬±
±Ö„uÖ\lÇzk
.±fáRk!.³B¸ÂŠáJ«W[âk=®µ®ÂuÖl°6ák3n´îÁMÖ6ÜlíÄFk7n±öâVkn³àvë 6[‡±Å:Š;¬ã¸Ó:‰»¬3¸Ûö°Õn‰{í6¸Ï.Àýv/l³àA{¶Çâ{¶ÛӱލÇìExÜ^'ìj<i¯Ân{
öØ—àûj<k߀çí[°×Þ‚ýu~É~/ۏá{öÛ/àU{?^³ßÄëö!°àMûÞ²OàmûÞñ%t²ð®“‹÷œ¶xß邜Bvâˆ39EøØ)Á'ÎuÊñ©³Ÿ9|î¬ÄNǝu8á\¯ëñ³	ß:[pÒ¹ß9ã{ç	üËy§Wü¯o9‡Èvސã#Ï9AYÎ)j悲Ý,Êqs©…ÛžrÝn”çö%q‡Rkwµq‹©­;…Ú»eÔÁOÜeÔٍR·–ººiêîeÔ˽–
Ý›¨·{õqï¢~îÔßÝIÝ=4ÈÝKCÜý4Ô=@ÃÜC4Ü=L#Üc4Ò=N£ÝS4Æ=CEþ¿¦ã¼–4ÞkKÅ^Mð
©Ä@“¼á4ÙKS½šæM§^9•z‹h¦¢2¯šf{õTî­¦¹Þzšç]I¼
´ÐÛH‹½Í´Ä»›–zÛh™·ƒVx»)ä=OoUxoP¥wª¼)æ¥ïKŠ{'©Ö;M	ÿmý¹þî½ñßPKÝÀ˜<¸	
͉Ê霙ëôŠv~lûi…à!'k)¬•sÇK#Vñ”9’£&8aÚy…
‰ó«ŒžÊXÏvò.á
fÑå¡@B¶BZ<:蔊ëˆ-þšŠV¡èd,×uŠ]âRGYP uìÁ£D[ý†
±…
qVQÊñÇD¸:ë¾[¡e©ÍqÇ;â”òÙZ”<%L*l<dTÛ1JC#ïxƨ˜jøºŽ)ñyßPЗ¬ã+kÒõLÏÎv>Ç IÇÎ’àáqË,$D{FRÆv/àE
Wu¼„k
wwÉdrÐ3‹žQp˜‚
3›eB	Ûueô½fí¢•ñìIË偤‚jÓñ2^Ññ*^Óq¯Sժ㮉¸©ã›xCÇ-¼¦á[:¾7u|oéø.ÞÖñ=<ªc¯ˆ'ýd[9©ÓÆ•%í-Ù9?Ñum†Žïãïrié=¼¨°n!»©þZN™$Û1¬Å¥2}÷\âMx6Q£n•²B“%†ƒW\Ïš œÍ›kÖB$Fh™û—„°D­ ùlËåårS6)qávV¸¥°>Ñ~?‰—àëø½eœ	rÙ:å|Á'“"­])¢{ÆöÆ¿ÀèƒÈùȱÕpרîÓ5fÎh­Ùù¬5Õ?*ßÛý'R‚Zï–FÜj”©Ôª7
L	ªiq+•÷¬1)¬6iæJ–@l_-äô}Gè.ÂÄž–cþ—Í ´\¥M0j®"ykÊ«d8l
V>«°ã¿8_F7BlI¬r“ÅíˆçTTØÊ湓->
é-WÁ­{%¾jœM¯Ù%3›0*^Æ%B=™0CüÈ!’ÛF‘¢‰ÏÛ*ÎãÃùÞ˜u7XuëŽÕe#!§âÜa[ÖÚDÒe
Ô7ÐÊ"TB^ÅšÀ\ǃ|DPÅ«‚[ÆÌÀ.iÚ®k[Z¡ô[õ
÷–Lß.mNm›þG-qÊ«;Ba`«ØÄ]	[*
ØfȆ–L&éZ͵QØÓ,^áµO«P¯5Ëöx)°w¹O¡Iï‚:—Mhs³Ú¤áÖƒB÷]?Íìë„½²Yâ¾ÑåqJ“T?¡âÞ§›$ZÈs³3m
+Žõ?	0œ>jkn£ÛLÕv5~¬ÆŽgacçåSžÞ¿Î؉è	,ìû¯Òp¸u
éFoÒ,4Qܬ.ô”ï13H5¡U¨r˜ïÙ”Ös^&·%f–áŒ>ýß	ý7–ÀlÇâ{弆½*¿¾ãw¢Gõ\îDdÅ?Ö¿g_€té]Ÿ£Í@G-I!’hé{‘´! '›`ÉCô*¦š7Ñÿ"ˆ­}9m@	SO(/Œ1¼‰¤Iʼ@%ë)²ÇÈ3€³DC¸„aò$0E+ET›¡¨>:c‡P‹ÉP¶‰|ªÁ'-†m°Åf´…5„	¼BZ„r$Â…xmÞ¬@H²üZ‹ÇÖCsáä·ˆ40\Ì_n Þ÷%ÔTZ1@ü©ˆrðüq“Ó$¦B©xŒ¼
œ™ï'ãD?…s¤s’Sé>Ãb*>ÚÀØçˆ¥âãmøÈÁó?¬ãëcŠä	Q¬§ì©ðØù׆[âg{ZÅSüLWn7¥L
lh¤J•P,XÀ@ü
fñ¶BÊœ„Ë
9ÓâsEÆUó"cAÁ5¼#ãº8ß•qCÆ¢—d,˸)aEƪ„[aënqÃä.ÃXcè–£/ÕËeîr³íY`]³lË¿Î0œhUû¾ž÷]˾¿0õ!CpÙ19Ã`βùz½ºÍÝ‚±]!K°jX6ÃHâã㕕ݯù–c{ý5Ãõ()h¹òNÝ-ñUKàD6]^p<ϪN¯ãÁϘ!vèÙm£HÑÄç=gqŽálo̺ã¯:uÛìÒ‘Uñ>n3Œ.km&é2j¶ãke*!§bM`®cƒZÙe¨âMAî’ç¾UÒ´Ç2µ¼UÍ—p³^áî’áY¥ÍÉ‚á}Ú'ݺ-ö™ŠMÜ‘°¥"CF×µd2™÷
××jŽe‹â®fò
÷©‡Z…®™–ËK¾µÃ=
Mªø
Uò]‹Òƒ‰¬€—ÉmŠÁe8•˜úï˜þ›@ËF`–mòݍò+žD–æÁ«o{è‘D6{,²â‰ëݵü¯@º‡óô¸ÏÐz ¿#—¤

Œ…Ý,NpÈ:u ¾–•‰…ÀCÏ$6÷˽çž3w¶»Ÿ_
cç=j+åÞ±_¯ßò(¨™¡)ôÌ™
}ò"¨XýéÒ¥ž´FÆ×”onŸ™4X¾Rn¤û¤LO*Ë9I¦Ëu1Ó#㛪—;þ:NpJÛ>µùÛ$[ði\£ÄO





More information about the Tinyos-2-commits mailing list