00001 00002 00003 #ifndef sensor_query_h_ 00004 #define sensor_query_h_ 00005 00006 #include <agent.h> 00007 #include <ip.h> 00008 #include <delay.h> 00009 #include <scheduler.h> 00010 #include <queue.h> 00011 #include <trace.h> 00012 #include <arp.h> 00013 #include <ll.h> 00014 #include <mac.h> 00015 #include <priqueue.h> 00016 #include <mobilenode.h> 00017 #include <address.h> 00018 #include "tags.h" 00019 00020 class SensorQueryHandler; 00021 00022 00023 class SensorQueryAgent : public Agent { 00024 public: 00025 SensorQueryAgent(); 00026 virtual int command(int argc, const char * const * argv); 00027 00028 // Tracing stuff 00029 Trace *tracetarget_; 00030 void trace(char* fmt,...); 00031 00032 // Address of node the agent is attached to 00033 nsaddr_t myaddr_; 00034 00035 void startUp(); 00036 void stop(); 00037 00038 double query_interval_; 00039 void generate_query(int p1, int p2, int p3); 00040 00041 // Used to schedule query generation 00042 Event *gen_query_event_; 00043 SensorQueryHandler *query_handler_; 00044 // void handle(Event *); 00045 00046 void recv(Packet *p, Handler *); 00047 00048 // Pointer to global tag database 00049 tags_database *tag_dbase_; 00050 00051 // set to 1 if node is dead, defaults to 0 00052 int node_dead_; 00053 }; 00054 00055 00056 00057 00058 class SensorQueryHandler : public Handler { 00059 public: 00060 SensorQueryHandler(SensorQueryAgent *a) { a_ = a; } 00061 virtual void handle(Event *e) { a_->generate_query(-1,-1,-1); } 00062 private: 00063 SensorQueryAgent *a_; 00064 }; 00065 00066 00067 #endif 00068
1.4.6