[Tinyos-contrib-commits] CVS: tinyos-1.x/contrib/shockfish/tools/java_tc65/src/com/shockfish/tinyos/apps/demo Makefile, NONE, 1.1 OscopeDataCaptureThread.java, NONE, 1.1 MamaBoardDemo.java, 1.1, 1.2 MamaBoardDemoManager.java, 1.1, 1.2

rogmeier rogmeier at users.sourceforge.net
Mon Sep 11 06:40:07 PDT 2006


Update of /cvsroot/tinyos/tinyos-1.x/contrib/shockfish/tools/java_tc65/src/com/shockfish/tinyos/apps/demo
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv28926/src/com/shockfish/tinyos/apps/demo

Modified Files:
	MamaBoardDemo.java MamaBoardDemoManager.java 
Added Files:
	Makefile OscopeDataCaptureThread.java 
Log Message:
TC65/TinyNode foundations.

--- NEW FILE: Makefile ---
TOS = $(shell ncc -print-tosdir)
PACKAGE = com.shockfish.tinyos.apps.demo
APP = ${TOSROOT}/apps/Oscilloscope
MIG = mig  -target=tinynode -I ${TOSROOT}/contrib/shockfish/tos/platform/tinynode cldcjava

MSGS = OscopeMsg.java

all: cleanmig ${MSGS}


INITIAL_TARGETS = $(MSGS)
OTHER_CLEAN = cleanmig

OscopeMsg.java:
	$(MIG) -v -java-classname=$(PACKAGE).OscopeMsg ${APP}/OscopeMsg.h OscopeMsg -o $@

cleanmig:
	rm -f $(MSGS)


--- NEW FILE: OscopeDataCaptureThread.java ---
package com.shockfish.tinyos.apps.demo;

import java.io.IOException;

import com.shockfish.tinyos.tools.MamaBoardManager;
import com.shockfish.tinyos.gateway.TOSBuffer;
import com.shockfish.tinyos.tools.CldcLogger;
import com.shockfish.tinyos.message.tinynode.TOSMsg;
import com.shockfish.tinyos.packet.CldcPacketizer;
import net.tinyos.util.PrintStreamMessenger;

public class OscopeDataCaptureThread extends Thread {

    public final static int SENSOR_SAMPLING = 10;
    
    private CldcPacketizer serialPacketizer;
    public TOSBuffer buffer;
    boolean running;
    
    public OscopeDataCaptureThread(MamaBoardManager mamaBoardManager) {
        this.serialPacketizer = mamaBoardManager.serialAsc0Packetizer;
        this.buffer = new TOSBuffer();
    }

    public void run() {
        
        int samples = 0;
        
        try {
            serialPacketizer.open(PrintStreamMessenger.err);
        } catch (IOException e) {
            CldcLogger.severe("Error on opening the packetizer:"+e.getMessage());
            return;
        }
        
        running = true;
        
        // capture loop
        while (running) {
            byte[] packet = null;
            try {
                packet = serialPacketizer.readPacket();
            } catch (IOException ioe) {
                CldcLogger.severe("Error on reading packet :"+ioe.getMessage());
                continue;
            }
            
            TOSMsg tosMsg = new TOSMsg(packet);
            
            // Cldc does support reflection, so we have to DIY
            if (tosMsg.get_type() == OscopeMsg.AM_TYPE) {
                OscopeMsg oscopeMsg = new OscopeMsg();
                oscopeMsg.dataSet(tosMsg.dataGet(), tosMsg.offset_data(0), 0,tosMsg.get_length());
                
                // dump the packet in pretty format
                System.out.println(oscopeMsg);
                
                // we are only interested in the light sensor.
                if (oscopeMsg.get_channel() == 2) {
                    samples++;
                    if (samples >= SENSOR_SAMPLING) {
                        samples = 0;
                        buffer.addElement(oscopeMsg.dataGet());
                    }
                }
            }
        }
        
        // try to close (even though we may have been closed already in stopRequest
        closePacketizer();
        return;
    }
    
    public void stopRequest() {
        running = false;
        closePacketizer();
    }
    
    private void closePacketizer() {
        try {
            serialPacketizer.close();
        } catch (Exception e) {
            //CldcLogger.severe("Error on closing the packetizer:"+.e.getMessage());
        }
    }
    
}

Index: MamaBoardDemo.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/shockfish/tools/java_tc65/src/com/shockfish/tinyos/apps/demo/MamaBoardDemo.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MamaBoardDemo.java	22 Jun 2006 17:36:41 -0000	1.1
--- MamaBoardDemo.java	11 Sep 2006 13:40:02 -0000	1.2
***************
*** 1,67 ****
  package com.shockfish.tinyos.apps.demo;
  
! import javax.microedition.midlet.*;
! import java.io.*;
! import javax.microedition.io.*;
! import com.siemens.icm.io.*;
! import com.shockfish.tinyos.tools.Tc65Manager;
! import javax.microedition.midlet.*;
! import java.io.*;
! import javax.microedition.io.*;
! import com.siemens.icm.io.*;
! import net.tinyos.message.Dump;
! import net.tinyos.util.PrintStreamMessenger;
! import com.shockfish.tinyos.packet.CldcNetworkByteSource;
! import com.shockfish.tinyos.packet.Tc65SerialByteSource;
! import com.shockfish.tinyos.packet.CldcPacketizer;
! //import com.shockfish.tinyos.message.*;
  
! //TODO cleanup imports
  
  public class MamaBoardDemo extends MIDlet {
! 	
! 	MamaBoardDemoManager mbdm;
! 	Tc65SerialByteSource tsb;
! 	CldcPacketizer packetizer;
! 		
! 	public MamaBoardDemo() {
! 		
! 	}
! 	
! 	public void startApp() throws MIDletStateChangeException {
! 		
  
! 		
! 		tsb = null;
! 		packetizer = null;
! 		System.out.println("Shockfish GPRS module");
! 		System.out.println("Available COM Ports: " + System.getProperty("microedition.commports"));
! 		
! 		try {
! 			tsb = new Tc65SerialByteSource("SERIAL", 0);
! 			packetizer = new CldcPacketizer("SERIAL",tsb, 0); // 0 is tinynode
! 			
! 			// simulation : init the bridge now
! 			mbdm = new MamaBoardDemoManager(packetizer);
! 			mbdm.runBridge();
  
! 		} catch (Exception e) {
! 			e.printStackTrace();
! 		}
  
! 		
! 		
! 		// destroyApp(true);
! 	}
! 	
! 	public void pauseApp() {
! 		System.out.println("pauseApp()");
! 	}
! 	
! 	public void destroyApp(boolean cond) {
! 		notifyDestroyed();
! 	}
! 	
! }
  
  
--- 1,31 ----
  package com.shockfish.tinyos.apps.demo;
  
! /**
!  * @author Pierre Metrailler, Shockfish SA
!  */
  
! import javax.microedition.midlet.MIDlet;
! import javax.microedition.midlet.MIDletStateChangeException;
  
  public class MamaBoardDemo extends MIDlet {
!     
!     private static MamaBoardDemoManager mbdm;
  
!     public MamaBoardDemo() { }
  
!     public void startApp() throws MIDletStateChangeException {
!         try {
!             mbdm = new MamaBoardDemoManager();            
!         } catch (Exception e) {
!             e.printStackTrace();
!         }
!     }
  
!     public void pauseApp() { }
  
+     public void destroyApp(boolean cond) {
+         notifyDestroyed();
+     }
+ 
+ }
  

Index: MamaBoardDemoManager.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/shockfish/tools/java_tc65/src/com/shockfish/tinyos/apps/demo/MamaBoardDemoManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MamaBoardDemoManager.java	22 Jun 2006 17:36:41 -0000	1.1
--- MamaBoardDemoManager.java	11 Sep 2006 13:40:02 -0000	1.2
***************
*** 1,67 ****
  package com.shockfish.tinyos.apps.demo;
  
  import com.shockfish.tinyos.tools.MamaBoardManager;
! import com.shockfish.tinyos.packet.CldcPacketizer;
! import com.shockfish.tinyos.bridge.CldcBridgeThread;
! import net.tinyos.util.PrintStreamMessenger;
! import java.io.*;
! import javax.microedition.io.*;
  
- public class MamaBoardDemoManager extends MamaBoardManager {
  
! 	CldcPacketizer serialPacketizer;
  
- 	public MamaBoardDemoManager(CldcPacketizer serialPacketizer) {
- 		super();
- 		this.serialPacketizer = serialPacketizer;
  
! 	}
  
! 	// TODO implemented registration-like system.
  
! 	protected void OtapCommandCalled(String command, String args) {
! 		if (command.startsWith("SET")) {
! 			String prop = command.substring(3);
! 			setProp(prop, args);
! 			// read it for fun : TODO remove
! 			readProp(prop);
! 			return;
! 		}
  
! 		if (command.equals("SENDSTATUSSMS")) {
! 			sendSms(args, getTc65Status());
! 			return;
! 		}
! 		if (command.equals("STARTBR")) {
! 			runBridge();
  
  		}
! 
! 
  	}
  
! 	public void runBridge() {
! 		// this.nsb = new CldcNetworkByteSource("www2.shockfish.com", 2020,
! 		// manager.getGprsConf());
! 		CldcBridgeThread br = new CldcBridgeThread(serialPacketizer, this,
! 				"xxx.xxx.xxx.xxx", 2020);
! 		br.start();
  		try {
! 			serialPacketizer.open(PrintStreamMessenger.err);
! 		} catch (IOException e) {
  			e.printStackTrace();
  		}
- 		int packetCnt = 0;
- 		for (;;) {
- 			try {
- 				
- 				byte[] packet = serialPacketizer.readPacket();
- 			} catch (IOException e) {
- 				e.printStackTrace();
- 			}
- 		}
  
  	}
  
! 
! }
--- 1,90 ----
  package com.shockfish.tinyos.apps.demo;
  
+ import java.util.Timer;
+ 
  import com.shockfish.tinyos.tools.MamaBoardManager;
! import com.shockfish.tinyos.net.CldcFtpClient;
! import com.shockfish.tinyos.gateway.UpdateDate;
! import com.shockfish.tinyos.gateway.SenderTask;
! import com.shockfish.tinyos.gateway.SenderTimerControl;
! import com.shockfish.tinyos.tools.CldcLogger;
  
  
! public class MamaBoardDemoManager extends MamaBoardManager implements SenderTimerControl {
  
  
! 	private final static String OTAP_SECRET = "mysecret";
! 	
!     private OscopeDataCaptureThread oscopeThread;
!     private SenderTask senderTask;
!     private Timer senderTimer;
!     private UpdateDate updateDate;
  
!     
! 	public MamaBoardDemoManager() {
! 		super();
!         // GPIO and packetizer are initialized after this.
!         CldcLogger.setLevelOfDisplay(CldcLogger.DEBUG_LEVEL);
!         
!         oscopeThread = new OscopeDataCaptureThread(this);
!         
!         // kick the capture thread
!         oscopeThread.start();
  
!         // kick the sender thread
!         startSenderTimer();
!         
!         // kick the time update thread
!         updateDate= new UpdateDate(this);
!         updateDate.start();
! 	}
  
!     
!     // this is terribly ugly and needs to be changed.
!     public void startSenderTimer() {
!         this.senderTask = new SenderTask(this, oscopeThread.buffer, this);
!         this.senderTimer = new Timer();
!         this.senderTimer.schedule(senderTask, 20 * 1000);
!     }
!     
!     public void stopSenderTimer() {
!         senderTimer.cancel();
!     }
!     
! 	protected String getSecret() {
! 		return OTAP_SECRET;
! 	}	
! 	
!     public void enterBridgeMode() {	 
!         // TODO stop the capture thread
!     }
!     public void leaveBridgeMode() {  
!         // TODO restart the capture thread
!     }
! 	
! 	protected boolean customCommandHandler(String command, String args) {
  
+ 		if (command.equals("SENDSTATUSFTP")) {
+ 			uploadStatus();
+ 			return true;
  		}
! 		return false;
  	}
  
! 	void uploadStatus() {
  		try {
!             CldcLogger.info("Uploading ");
! 			CldcFtpClient ftp = new CldcFtpClient();
!             String report = "Report\n" + getTc65Status();
! 			String fileName = "gprseport" + System.currentTimeMillis() + ".txt";
!             ftp.connect("shockfish.com", 21, "tinynodetest", "shockfish", getGprsConf());
! 			ftp.ascii();
! 			ftp.putData(report, fileName);
! 			ftp.disconnect();
! 		} catch (Exception e) {
  			e.printStackTrace();
  		}
  
  	}
  
! }
\ No newline at end of file



More information about the Tinyos-contrib-commits mailing list