def insert_new_query(self,qid, total_samples, interval, trig_list =[], sensor_list=[], qual_list= []): print qid print total_samples print interval print trig_list print sensor_list print qual_list if qid in self.curr_queries.keys(): print "qid: %d is already in use" %qid return False self.curr_queries[qid] = 1 num_trigs = len(trig_list) num_sensor = len(sensor_list) num_qual = len(qual_list) sub = [] for i in trig_list: sub.append(i[0]) sub.append(i[1]) qual = [] for i in qual_list: qual.append(i[0]) qual.append(i[1]) qual.append(i[2]) data_list = [i for i in sub] + [i for i in sensor_list] + [i for i in qual] data = pysos.pack('<BHHIBBH' + num_trigs*'BB' + num_sensor*'B' + num_qual * 'BBH', NEW_QUERY, qid, total_samples, interval, num_sensor, num_qual, num_trigs, *(i for i in data_list)) self.srv.post(daddr = 1, saddr = 0, did = 128, sid = 128, type = 33, data = data) return True
def result_handler(msg): (sid, qid, num_remaining, sensor, value) = pysos.unpack('<BHHBH', msg['data']) print "node id %d" % sid print "QueryId %d" % qid print "SensorId %d" % sensor print "Value %d" % value if __name__ == "__main__": srv = pysos.sossrv() # data = pysos.pack('<HBBIHH', 1, 1, 80, 1024, 20, 0) # srv.post(daddr = 0, saddr = 0, did=128, sid = 128, type=33, data = data) data = pysos.pack('<HIHBBBB', 123, 1024, 50, 1, 0, 0, 4) srv.post(daddr=1, saddr=1, did=128, sid=128, type=33, data=data) srv.register_trigger(result_handler, did=128, sid=128, type=MSG_QUERY_REPLY) while (1): pass
def remove_queries(self): data = pysos.pack('<BB',1, 0) self.srv.post(daddr =1, saddr=0, did=128, sid=128, type=33,data=data )
#!/usr/bin/python import pysos MSG_QUERY_REPLY=34 def result_handler(msg): (sid, qid, num_remaining, sensor, value) = pysos.unpack('<BHHBH', msg['data']) print "node id %d" %sid print "QueryId %d" %qid print "SensorId %d" %sensor print "Value %d" %value if __name__ == "__main__": srv = pysos.sossrv() # data = pysos.pack('<HBBIHH', 1, 1, 80, 1024, 20, 0) # srv.post(daddr = 0, saddr = 0, did=128, sid = 128, type=33, data = data) data = pysos.pack('<HIHBBBB', 123, 1024, 50, 1, 0, 0, 4) srv.post(daddr = 1, saddr = 1, did=128, sid=128, type=33, data=data) srv.register_trigger(result_handler, did=128, sid=128, type=MSG_QUERY_REPLY) while(1): pass
import pysos def func(msg): (addr, t1, t2) = pysos.unpack('<HLL', msg['data']) if addr == 0: print 50* "-" print "addr: ", addr, "time: ", t1, "refreshed: ", t2 srv = pysos.sossrv() data = pysos.pack('<B', 0) srv.post(daddr = 0xFFFF, saddr = 7000, did = 170, sid = 170, type = 35, data = data) srv.register_trigger(func, type=43) raw_input("Hit enter to finish")
import pysos def func(msg): (addr, t1, t2) = pysos.unpack("<HLL", msg["data"]) print "addr: ", addr, "time: ", t1, "refreshed: ", t2 if addr == 1: print 50 * "-" srv = pysos.sossrv() data = pysos.pack("<B", 0) srv.post(daddr=0xFFFF, saddr=7000, did=170, sid=170, type=35, data=data) srv.register_trigger(func, type=43) raw_input("Hit enter to finish")