Thread: [Firebug-cvs] firebug/project/java/src/org/firebug FireLogger.java,NONE,1.1 DBLogger.java,1.24,1.25
Brought to you by:
doolin
From: <do...@us...> - 2004-02-18 01:26:22
|
Update of /cvsroot/firebug/firebug/project/java/src/org/firebug In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9898/src/org/firebug Modified Files: DBLogger.java ListenFB.java RawPacket.java Added Files: FireLogger.java Log Message: Updated firebug java tools to work with new stuff. --- NEW FILE: FireLogger.java --- package org.firebug; import org.firebug.database.MysqlDBHandler; import java.io.*; import java.sql.*; import java.util.Random; import net.tinyos.message.*; public class FireLogger implements ListenFB.PacketPrinter { private MysqlDBHandler dbh; // Move this into some test code later. private Random rand = new Random(); public FireLogger (String dbname) { dbh = new MysqlDBHandler("localhost","3306","root","",dbname,true); } public void print(InputStream in) { } private int get_packet_type(byte [] packet) { return (int)packet[2]; } public void print_packet_raw(byte [] packet) { for (int i = 0; i < packet.length; i++) { String val = Integer.toHexString((int)packet[i]); if (val.length() == 1) { val = "0" + val; } System.out.print(val + " "); } System.out.println("\n"); } /** Put everything in print for now. */ public void print(byte [] packet) { // Given a packet, we need to get a TOS // message. System.out.println("FireLogger.print(byte [] packet)\n"); FireMsg fmsg = new FireMsg(packet,5); Connection conn = dbh.getConnection(); // Ugh what a kludge. The GPS date/time format // is not compatible with java. The date/time // should probably be stored as a string in the // database, then converted whenever it needs to // be displayed. int time = (int)System.currentTimeMillis(); int mote_id = fmsg.get_addr(); int cnt = fmsg.get_cnt(); float temp = fmsg.get_temp(); float rel_hum = fmsg.get_rel_hum(); float baro_pres = fmsg.get_baro_pres(); System.out.println("mote_id: " + mote_id); System.out.println("cnt: " + cnt); System.out.println("temp: " + temp); /* if (get_packet_type(packet) != 1){ dbh.return_connection(conn); return; } */ print_packet_raw(packet); // This needs to throw an exception. /* if ( get_packet_type(packet) == 1 && packet[7] == -1) { dbh.return_connection(conn); return; } */ //base station ID is 1; if (mote_id == 1) { dbh.return_connection(conn); return; } /** FIXME: Ugly flow control using exception logic to * to track down a bbad statement, needs to be cleaned up. */ try { ResultSet rs; Statement stmt = conn.createStatement(); String updatequery = "UPDATE current " + "SET " //+ "time=" + time + ", " + "cnt=" + cnt + "," + "rel_hum=" + rel_hum + ", " + "baro_pres=" + baro_pres + ", " + "temp=" + temp + " WHERE mote_id=" + mote_id; String insertquery = "INSERT INTO cumulative VALUES (" + mote_id + ", " + "NULL," // NULL lets timestamp do its thing. //time + ", " + temp + ", " + rel_hum + ", " + baro_pres + ", " + cnt + ")"; try { rs = stmt.executeQuery(insertquery); } catch (SQLException sqle) { System.out.println("Problem with insert statement: " + insertquery); sqle.printStackTrace(); } try { rs = stmt.executeQuery(updatequery); } catch (SQLException sqle) { System.out.println("Problem with update statement: " + updatequery); sqle.printStackTrace(); } stmt.close(); } catch (SQLException sqle) { System.out.println("Problem with statement"); sqle.printStackTrace(); } dbh.return_connection(conn); /* FIXME: Need to be able to return a url as well as a * description. */ //return result; } private static void test() { String database_name = "test"; FireLogger fl = new FireLogger(database_name); while (true) { TestFireLogger.test(fl); try { Thread.sleep(3000); } catch (Exception e) { System.out.println(e); } } // Unreachable /* if (TestDBLogger.test(dbl)) { System.out.println("Passed DBLogger test"); } else { System.out.println("Failed DBLogger test"); } */ } public static void main(String [] args) { test(); } } /** The TestDBLogger class exists only to construct * example packets to be fed into the DBLogger class. */ class TestFireLogger { /** "test" is the _only_public_method_ in this * class. */ public static boolean test(FireLogger fl) { byte mote_id = (byte)0xff; FireMsg fmsg = new FireMsg(); fmsg.set_addr(getRandomID(1)); fmsg.set_cnt(15); fmsg.set_temp(getRandomTemp((float)27.0)); fmsg.set_rel_hum(getRandomRelHum((float)55.0)); fmsg.set_baro_pres(getRandomBaroPres((float)1000)); fmsg.set_lux(14); fl.print(fmsg.dataGet()); //fl.print_packet_raw(fmsg.dataGet()); return false; } /** All of the following methods are private * for a reason: they are only to be used in this * class. */ private static int getRandomID(int baseID) { int id = baseID + Math.abs(rand.nextInt())%5; return id; } private static float getRandomTemp(float basetemp) { float temp = (float)(basetemp + (3*rand.nextGaussian())); return temp; } private static float getRandomRelHum(float baserelhum) { float relhum = (float)(baserelhum + (3*rand.nextGaussian())); return relhum; } private static float getRandomBaroPres(float basebaropres) { float baropres = (float)(basebaropres + (3*rand.nextGaussian())); return baropres; } private static Random rand = new Random(); } Index: DBLogger.java =================================================================== RCS file: /cvsroot/firebug/firebug/project/java/src/org/firebug/DBLogger.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** DBLogger.java 22 Nov 2003 02:15:56 -0000 1.24 --- DBLogger.java 18 Feb 2004 01:17:07 -0000 1.25 *************** *** 42,50 **** } ! private void print_packet_raw(byte [] packet) { ! ! //int size = packet.size; ! for (int i = 0; i < 15; i++) { System.out.print(packet[i] + " "); } --- 42,48 ---- } ! public void print_packet_raw(byte [] packet) { ! for (int i = 0; i < packet.length; i++) { System.out.print(packet[i] + " "); } *************** *** 59,64 **** // Given a packet, we need to get a TOS // message. ! System.out.println("dblogger.print\n"); ! SensorMsg msg = new SensorMsg(packet,5,19); --- 57,70 ---- // Given a packet, we need to get a TOS // message. ! System.out.println("dblogger.print(byte [] packet)\n"); ! ! ! // The following line gets an ArrayOutOfBounds exception: ! //SensorMsg msg = new SensorMsg(packet,5,19); ! ! SensorMsg msg = new SensorMsg(); ! //SensorMsg msg = new SensorMsg(packet,5,12); ! ! FireMsg fmsg = new FireMsg(); *************** *** 190,195 **** private static void test() { ! DBLogger dbl = new DBLogger("test"); while (true) { --- 196,203 ---- private static void test() { + + String database_name = "test"; ! DBLogger dbl = new DBLogger(database_name); while (true) { *************** *** 232,240 **** byte mote_id = (byte)0xff; byte [] packet = {0x7e, //header 0x0, //header 0x0a, //packet type ! 0x7d, //header ! 0x1a, //header 0x01, //routing 0x01, //routing --- 240,265 ---- byte mote_id = (byte)0xff; + FireMsg fmsg = new FireMsg(); + + /* + uint16_t addr; + uint16_t cnt; + float temp; + float rel_hum; + float baro_pres; + */ + + fmsg.set_addr(1); + fmsg.set_cnt(15); + fmsg.set_temp(11); + fmsg.set_rel_hum(12); + fmsg.set_baro_pres(13); + fmsg.set_lux(14); + byte [] packet = {0x7e, //header 0x0, //header 0x0a, //packet type ! 0x7d, //group id ! 0x1a, //payload length 0x01, //routing 0x01, //routing *************** *** 251,254 **** --- 276,281 ---- dbl.print(packet); + dbl.print_packet_raw(fmsg.dataGet()); + return false; } Index: ListenFB.java =================================================================== RCS file: /cvsroot/firebug/firebug/project/java/src/org/firebug/ListenFB.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ListenFB.java 3 Jan 2004 13:38:51 -0000 1.15 --- ListenFB.java 18 Feb 2004 01:17:07 -0000 1.16 *************** *** 266,273 **** ListenFB reader = new ListenFB(port); //SensorPacket print = new SensorPacket(); ! DBLogger dblogger = new DBLogger(dbname); //printers.add(print); ! printers.add(dblogger); try { --- 266,276 ---- ListenFB reader = new ListenFB(port); //SensorPacket print = new SensorPacket(); ! //DBLogger dblogger = new DBLogger(dbname); ! RawPacket rawpacket = new RawPacket(); ! FireLogger firelogger = new FireLogger(dbname); //printers.add(print); ! //printers.add(dblogger); ! printers.add(firelogger); try { Index: RawPacket.java =================================================================== RCS file: /cvsroot/firebug/firebug/project/java/src/org/firebug/RawPacket.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** RawPacket.java 14 May 2003 01:25:12 -0000 1.2 --- RawPacket.java 18 Feb 2004 01:17:07 -0000 1.3 *************** *** 48,51 **** --- 48,58 ---- public void print(byte [] packet) { + + for (int i = 0; i < packet.length; i++) { + + System.out.print(Integer.toHexString((int)packet[i]) + " "); + } + System.out.println("\n"); + } |