[Firebug-cvs] fireboard/beta/tools/src/xlisten/boards mda300.c,1.1,1.2 mts101.c,1.1,1.2 mts400.c,1.1
Brought to you by:
doolin
From: David M. D. <do...@us...> - 2005-05-19 20:04:19
|
Update of /cvsroot/firebug/fireboard/beta/tools/src/xlisten/boards In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5174/boards Modified Files: mda300.c mts101.c mts400.c Log Message: Using xbow stable for this code. Index: mts400.c =================================================================== RCS file: /cvsroot/firebug/fireboard/beta/tools/src/xlisten/boards/mts400.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** mts400.c 19 May 2005 19:58:18 -0000 1.1 --- mts400.c 19 May 2005 20:04:09 -0000 1.2 *************** *** 7,10 **** --- 7,11 ---- * @version 2004/3/10 mturon Initial version * @n 2004/3/28 husiquan Added temp,pressure,accel,light,gps + * @n 2004/11/15 husiquan Added database logging * * Copyright (c) 2004 Crossbow Technology, Inc. All rights reserved. *************** *** 13,21 **** */ #include <math.h> [...970 lines suppressed...] mts400_print_cooked, mts400_print_raw, ! mts400_print_cooked, ! mts400_log_raw }; *************** *** 635,639 **** mts420_print_cooked, mts420_print_raw, ! mts420_print_cooked }; --- 1056,1061 ---- mts420_print_cooked, mts420_print_raw, ! mts420_print_cooked, ! mts420_log_raw }; Index: mda300.c =================================================================== RCS file: /cvsroot/firebug/fireboard/beta/tools/src/xlisten/boards/mda300.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** mda300.c 19 May 2005 19:58:18 -0000 1.1 --- mda300.c 19 May 2005 20:04:08 -0000 1.2 *************** *** 68,71 **** --- 68,84 ---- } __attribute__ ((packed)) XSensorMDA300Data5; + //pp:multihop need only the packet6 + typedef struct XSensorMDA300Data6 { + uint16_t vref; + uint16_t humid; + uint16_t humtemp; + uint16_t adc0; + uint16_t adc1; + uint16_t adc2; + uint16_t dig0; + uint16_t dig1; + uint16_t dig2; + } __attribute__ ((packed)) XSensorMDA300Data6; + extern XPacketHandler mda300_packet_handler; /** *************** *** 101,105 **** case 3: { XSensorMDA300Data3 *data = (XSensorMDA300Data3 *)packet->data; ! printf("mda300 id=%02x d1=%04x d2=%04x d3=%04x d4=%04x d5=%04x\n", packet->node_id, data->digi0, data->digi1, data->digi2, data->digi3, data->digi4, data->digi5); --- 114,118 ---- case 3: { XSensorMDA300Data3 *data = (XSensorMDA300Data3 *)packet->data; ! printf("mda300 id=%02x d1=%04x d2=%04x d3=%04x d4=%04x d5=%04x", packet->node_id, data->digi0, data->digi1, data->digi2, data->digi3, data->digi4, data->digi5); *************** *** 124,127 **** --- 137,151 ---- break; } + case 6: { + XSensorMDA300Data6 *data = (XSensorMDA300Data6 *)packet->data; + printf("mda300 id=%02x bat=%04x hum=%04x temp=%04x " + " adc0=%04x adc1=%04x adc2=%04x\n" + " dig0=%04x dig1=%04x dig2=%04x\n", + packet->node_id, data->vref, + data->humid, data->humtemp, + data->adc0, data->adc1, data->adc2, + data->dig0, data->dig1, data->dig2); + break; + } default: *************** *** 219,222 **** --- 243,271 ---- } + /** MDA300 specific display of converted readings for packet 5 */ + void mda300_print_cooked_6(XbowSensorboardPacket *packet) + { + XSensorMDA300Data6 *data = (XSensorMDA300Data6 *)packet->data; + XSensorSensirion xsensor; + xsensor.humidity=data->humid; + xsensor.thermistor=data->humtemp; + printf("MDA300 [sensor data converted to engineering units]:\n" + " health: node id=%i parent=%i battery=%i mV\n" + " echo10: Soil Moisture=%0.2f %%\n" + " echo20: Soil Moisture=%0.2f %%\n" + " soil temperature =%0.2f F\n" + " temperature: =%0.2f C \n" + " humidity: =%0.1f %% \n\n", + packet->node_id, packet->parent, + xconvert_battery_mica2(data->vref), + xconvert_echo10(data->adc0), + xconvert_echo20(data->adc1), + xconvert_spectrum_soiltemp(data->adc2), + xconvert_sensirion_temp(&(xsensor)), + xconvert_sensirion_humidity(&(xsensor)) + ); + } + + /** MDA300 specific display of converted readings from an XSensor packet. */ void mda300_print_cooked(XbowSensorboardPacket *packet) *************** *** 243,246 **** --- 292,298 ---- break; + case 6: + mda300_print_cooked_6(packet); + break; default: printf("MDA300 Error: unknown packet id (%i)\n\n", packet->packet_id); *************** *** 248,251 **** --- 300,337 ---- } + const char *mda300_db_create_table[6] = + { + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "nodeid integer, parent integer, " + "adc0 integer, adc1 integer, adc2 integer,adc3 integer,adc4 integer,adc5 integer,adc6 integer )", + + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "nodeid integer, parent integer, " + "adc7 integer, adc8 integer,adc9 integer,adc10 integer,adc11 integer,adc12 integer,adc13 integer)", + + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "nodeid integer, parent integer, " + "digi0 integer,digi1 integer,digi2 integer,digi3 integer,digi4 integer,digi5 integer)", + + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "nodeid integer, parent integer, " + "voltage integer,sensirionhumidity integer, sensirionthermistor integer, counter integer)", + + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "epoch integer, nodeid integer, parent integer, " + "echo10 integer, echo20 integer, soiltemp integer, " + "voltage integer,humid integer, humtemp integer)", + + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "nodeid integer, parent integer, " + "adc0 integer, adc1 integer, adc2 integer, " + "digi0 integer,digi1 integer,digi2 integer," + "voltage integer,humid integer, humtemp integer)" + }; + const char *mda300_db_create_rule = + "CREATE RULE cache_%s AS ON INSERT TO %s DO ( " + "DELETE FROM %s_L WHERE nodeid = NEW.nodeid; " + "INSERT INTO %s_L VALUES (NEW.*); )"; + /** *************** *** 259,267 **** void mda300_log_raw(XbowSensorboardPacket *packet) { ! XSensorMDA300Data5 *data = (XSensorMDA300Data5 *)packet->data; ! if (packet->packet_id != 5) return; ! char command[512]; ! char *table = "mda300_results"; sprintf(command, --- 345,461 ---- void mda300_log_raw(XbowSensorboardPacket *packet) { ! uint8_t i; ! char command[512]; ! char *tablename[6]; ! char tmpName[20]; ! char* table; ! table = xdb_get_table(); ! if (!*table) ! { ! sprintf(tmpName,"mda300s%i_results",packet->packet_id); ! table=tmpName; ! } ! tablename[0]="mda300p1_results"; ! tablename[1]="mda300p2_results"; ! tablename[2]="mda300p3_results"; ! tablename[3]="mda300p4_results"; ! tablename[4]="mda300p5_results"; ! tablename[5]="mda300p6_results"; ! ! if (!mda300_packet_handler.flags.table_init) { ! int exists = xdb_table_exists(table); ! if (!exists) { ! for(i=0;i<6;i++) ! { ! // Create results table. ! sprintf(command, mda300_db_create_table[i], tablename[i], ""); ! xdb_execute(command); ! // Create last result cache ! sprintf(command, mda300_db_create_table[i], tablename[i], "_L"); ! xdb_execute(command); ! ! // Add rule to populate last result table ! sprintf(command, mda300_db_create_rule, tablename[i], tablename[i], tablename[i], tablename[i]); ! xdb_execute(command); ! ! // Add results table to query log. ! int q_id = XTYPE_MDA300, sample_time = 99000; ! sprintf(command, "INSERT INTO task_query_log " ! "(query_id, tinydb_qid, query_text, query_type, " ! "table_name) VALUES (%i, %i, 'SELECT nodeid,parent," ! "adc0, adc1, adc2,adc3,adc4,adc5,adc6, " ! "adc7, adc8, adc9, adc10, adc11, adc12, adc13," ! "digi0, digi1, digi2, digi3, digi4, digi5," ! "voltage,sensirionhumidity,sensirionthermistor,counter " ! "SAMPLE PERIOD %i', 'sensor', '%s')", q_id, q_id, ! sample_time, tablename[i]); ! xdb_execute(command); ! ! // Log start time of query in time log. ! sprintf(command, "INSERT INTO task_query_time_log " ! "(query_id, start_time) VALUES (%i, now())", q_id); ! xdb_execute(command); ! } ! } ! mda300_packet_handler.flags.table_init = 1; ! } ! ! switch(packet->packet_id){ ! case 1:{ ! XSensorMDA300Data1 *data = (XSensorMDA300Data1 *)packet->data; ! ! sprintf(command, ! "INSERT into %s " ! "(result_time,nodeid,parent,adc0, adc1, adc2,adc3,adc4,adc5,adc6)" ! " values (now(),%u,%u,%u,%u,%u,%u,%u,%u,%u)", ! tablename[0], ! //timestring, ! packet->node_id, packet->parent, ! data->adc0, data->adc1,data->adc2, data->adc3, data->adc4, data->adc5, data->adc6 ! ); ! break; ! } ! case 2:{ ! XSensorMDA300Data2 *data = (XSensorMDA300Data2 *)packet->data; ! sprintf(command, ! "INSERT into %s " ! "(result_time,nodeid,parent,adc7, adc8, adc9, adc10, adc11, adc12, adc13)" ! " values (now(),%u,%u,%u,%u,%u,%u,%u,%u,%u)", ! tablename[1], ! //timestring, ! packet->node_id, packet->parent, ! data->adc9, data->adc10, data->adc11, data->adc12, data->adc13 ! ); ! break; ! } ! case 3:{ ! XSensorMDA300Data3 *data = (XSensorMDA300Data3 *)packet->data; ! sprintf(command, ! "INSERT into %s " ! "(result_time,nodeid,parent,digi0, digi1, digi2, digi3, digi4, digi5)" ! " values (now(),%u,%u,%u,%u,%u,%u,%u,%u)", ! tablename[2], ! //timestring, ! packet->node_id, packet->parent, ! data->digi0, data->digi1, data->digi2, data->digi3, data->digi4, data->digi5 ! ); ! break; ! } ! case 4:{ ! XSensorMDA300Data4 *data = (XSensorMDA300Data4 *)packet->data; ! sprintf(command, ! "INSERT into %s " ! "(result_time,nodeid,parent,voltage,sensirionhumidity, sensirionthermistor, counter)" ! " values (now(),%u,%u,%u,%u,%u,%u)", ! tablename[3], ! //timestring, ! packet->node_id, packet->parent, ! data->battery, data->sensirion.humidity,data->sensirion.thermistor, data->counter ! ); ! break; ! } ! case 5:{ ! XSensorMDA300Data5 *data = (XSensorMDA300Data5 *)packet->data; sprintf(command, *************** *** 270,274 **** "humid,humtemp,echo10,echo20,soiltemp)" " values (now(),%u,%u,%u,%u,%u,%u,%u,%u,%u)", ! table, //timestring, packet->node_id, packet->parent, --- 464,468 ---- "humid,humtemp,echo10,echo20,soiltemp)" " values (now(),%u,%u,%u,%u,%u,%u,%u,%u,%u)", ! tablename[4], //timestring, packet->node_id, packet->parent, *************** *** 276,282 **** data->sensirion.humidity, data->sensirion.thermistor, data->adc0, data->adc1, data->adc2 ! ); xdb_execute(command); } --- 470,503 ---- data->sensirion.humidity, data->sensirion.thermistor, data->adc0, data->adc1, data->adc2 ! ); ! break; ! } ! case 6:{ ! XSensorMDA300Data6 *data = (XSensorMDA300Data6 *)packet->data; ! ! sprintf(command, ! "INSERT into %s " ! "(result_time,nodeid,parent,voltage," ! "humid,humtemp,echo10,echo20,soiltemp,digi0, digi1, digi2)" ! " values (now(),%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u)", ! tablename[5], ! //timestring, ! packet->node_id, packet->parent, ! data->vref, ! data->humid, data->humtemp, ! data->adc0, data->adc1, data->adc2, ! data->dig0, data->dig1, data->dig2 ! ); ! break; ! } ! ! default: ! //printf("mda300 error: unknown packet_id (%i)\n", packet->packet_id); ! break; ! } xdb_execute(command); + + } Index: mts101.c =================================================================== RCS file: /cvsroot/firebug/fireboard/beta/tools/src/xlisten/boards/mts101.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** mts101.c 19 May 2005 19:58:18 -0000 1.1 --- mts101.c 19 May 2005 20:04:09 -0000 1.2 *************** *** 24,27 **** --- 24,29 ---- } XSensorMTS101Data; + extern XPacketHandler mts101_packet_handler; + /** * Converts mica2 battery reading from raw ADC data to engineering units. *************** *** 155,158 **** --- 157,231 ---- } + const char *mts101_db_create_table = + "CREATE TABLE %s%s ( result_time timestamp without time zone, " + "epoch integer, nodeid integer, parent integer, " + "voltage integer, temp integer, light integer)"; + + const char *mts101_db_create_rule = + "CREATE RULE cache_%s AS ON INSERT TO %s DO ( " + "DELETE FROM %s_L WHERE nodeid = NEW.nodeid; " + "INSERT INTO %s_L VALUES (NEW.*); )"; + + /** + * Logs raw readings to a Postgres database. + * + * @author Martin Turon + * + * @version 2004/7/28 mturon Initial revision + * + */ + void mts101_log_raw(XbowSensorboardPacket *packet) + { + XSensorMTS101Data *data = (XSensorMTS101Data *)packet->data; + + char command[512]; + char *table = xdb_get_table(); + if (!*table) table = "mts101_results"; + + if (!mts101_packet_handler.flags.table_init) { + int exists = xdb_table_exists(table); + if (!exists) { + // Create results table. + sprintf(command, mts101_db_create_table, table, ""); + xdb_execute(command); + // Create last result cache + sprintf(command, mts101_db_create_table, table, "_L"); + xdb_execute(command); + + // Add rule to populate last result table + sprintf(command, mts101_db_create_rule, table, table, table, table); + xdb_execute(command); + + // Add results table to query log. + int q_id = XTYPE_MTS101, sample_time = 99000; + sprintf(command, "INSERT INTO task_query_log " + "(query_id, tinydb_qid, query_text, query_type, " + "table_name) VALUES (%i, %i, 'SELECT nodeid,parent,voltage,temp,light " + "SAMPLE PERIOD %i', 'sensor', '%s')", q_id, q_id, + sample_time, table); + xdb_execute(command); + + // Log start time of query in time log. + sprintf(command, "INSERT INTO task_query_time_log " + "(query_id, start_time) VALUES (%i, now())", q_id); + xdb_execute(command); + } + mts101_packet_handler.flags.table_init = 1; + } + + sprintf(command, + "INSERT into %s " + "(result_time,nodeid,parent,voltage,temp,light)" + " values (now(),%u,%u,%u,%u,%u)", + table, + //timestring, + packet->node_id, packet->parent, + data->battery, data->thermistor, data->light + ); + + xdb_execute(command); + } + + XPacketHandler mts101_packet_handler = { *************** *** 162,166 **** mts101_print_cooked, mts101_print_raw, ! mts101_print_cooked }; --- 235,240 ---- mts101_print_cooked, mts101_print_raw, ! mts101_print_cooked, ! mts101_log_raw }; |