Пример #1
0
    def init_sim(self,n):
        """
        initialize simulation for n receivers.
        """
        if n < 3:
            print 'Number of receivers %i is less than three.' %n
            print 'Simulation controller will not run.'
            print 'Now exiting.'
            sys.exit()
        
        self.data.set_rx_number(n)



        tx_loc = test_coords.get_tx_coords()
        self.data.set_tx_location(tx_loc)
        self.data.reset_rx_location()

        for i in range(n):
            rx_loc = alex_random.get_random_coord()
            print "\n\n\n\n\n\nstore location: ", rx_loc
            print '\n\n\n\n\n\n'
            self.data.set_rx_location(rx_loc)

            tof = self.geo_utils.time_of_flight(rx_loc,tx_loc)
            self.data.set_rx_time_delay(tof)

            id = i+1
            self.data.set_rx_team_id(id)

            if self.DEBUG:
                print 'tx_loc: ', tx_loc
                print 'rx_loc: ', rx_loc
                print 'time: ', repr(tof)
                print 'id: ', id
Пример #2
0
    def init_sim(self, n):
        """
        initialize simulation for n receivers.
        """
        if n < 3:
            print 'Number of receivers %i is less than three.' % n
            print 'Simulation controller will not run.'
            print 'Now exiting.'
            sys.exit()

        self.data.set_rx_number(n)

        self.beacon = beacon()

        tx_loc = test_coords.get_tx_coords()
        self.data.set_tx_location(tx_loc)

        for i in range(n):
            rx_loc = alex_random.get_random_coord()
            self.data.set_rx_location(rx_loc)

            tof = self.geo_utils.time_of_flight(rx_loc, tx_loc)
            self.data.set_rx_time_delay(tof)

            id = i + 1
            self.data.set_rx_team_id(id)

            if self.DEBUG:
                print 'tx_loc: ', tx_loc
                print 'rx_loc: ', rx_loc
                print 'time: ', repr(tof)
                print 'id: ', id
Пример #3
0
    def receiver_chain(self, h):
        """
        simulate receiver chain for n repeaters
        """

        self.host = h

        n = self.data.get_rx_number()
        beacon_packet = self.data.get_beacon_packet()
        time_base = self.data.get_timestamp_base()

        # lists containing data for all current teams
        team_id = self.data.get_rx_team_id()
        location = self.data.get_rx_location()
        if ENABLE_LOCATION_HISTORY:
            self.record_location_history(location)
        tof = self.data.get_rx_time_delay()

        if self.DEBUG:
            print "\n\n\n\n\n\nretrieve location: ", location
            print ''
            print "type(tof): ", type(tof)

        conn = psycopg2.connect(host=self.host,
                                user="******",
                                password="******",
                                database="sdrc_db")

        cur = conn.cursor()

        for i in range(n):
            f = open('data_in.data', 'a')

            (rx_pktno, ) = struct.unpack('!H', beacon_packet[0:2])
            (beacon_ID, ) = struct.unpack('!H', beacon_packet[2:4])

            # packet number
            payload1 = struct.pack('!H', self.packet_number & 0xffff)
            f.write(str(self.packet_number) + ';')

            # team id
            ident = team_id[i]
            payload2 = struct.pack('!H', ident & 0xffff)
            f.write(str(ident) + ';')

            # location
            if (self.iterator == 1):
                loc = location[i]
            else:
                # old_loc = location[i]
                # loc = alex_random.random_move(old_loc)
                loc = alex_random.get_random_coord()
                self.data.set_rx_location(i, loc)

            f.write(str(loc) + ';')

            self.iterator += 1
            payload3 = new_sim_utils.pack_loc(loc)

            # toa
            t = tof[i]
            toa = time_base + t
            # if (ENABLE_JITTER):
            #     jitter = self.random_timing_jitter()
            #     toa = toa+jitter
            # else:
            #     pass
            if self.DEBUG:
                print "t = tof[i]: ", repr(t)
                print "type(t): ", type(t)
                print "toa = time_base + t: ", repr(toa)
                print "type(toa): ", type(toa)
            payload4 = new_sim_utils.pack_time(toa)

            f.write(repr(toa) + ';')

            # beacon payload
            payload5 = struct.pack('!H', rx_pktno & 0xffff)
            f.write(str(rx_pktno) + ';')
            payload6 = struct.pack('!H', beacon_ID & 0xffff)
            f.write(str(beacon_ID) + '\n')
            f.close()
            # check if packet dropped
            drop = self.drop_packet()
            # this if evaluates true even if drop == False
            # if (ENABLE_DROPPED_PACKETS and drop): # if drop == 'True'
            #     print 'ENABLE_DROPPED_PACKETS ', ENABLE_DROPPED_PACKETS
            #     print 'drop ', drop
            #     print (ENABLE_DROPPED_PACKETS and drop)
            #     print 'packet dropped'
            #     payload = ''
            if ENABLE_DROPPED_PACKETS:
                print 'ENABLE_DROPPED_PACKETS ', ENABLE_DROPPED_PACKETS
                print 'drop ', drop
                if drop:  # if drop == 'True'
                    print 'drop ', drop
                    print 'packet dropped'
                    payload = ''
                else:  # if drop == 'False'
                    payload = (payload1 + payload2 + payload3 + payload4 +
                               payload5 + payload6)
            else:  # if drop == 'False'
                payload = (payload1 + payload2 + payload3 + payload4 +
                           payload5 + payload6)

            print "len(payload): ", len(payload)
            cur.execute("INSERT INTO blob_table (field_1) VALUES (%s)",
                        (psycopg2.Binary(payload), ))

        conn.commit()
        cur.close()
        conn.close()

        self.packet_number += 1
Пример #4
0
    def receiver_chain(self):
        """
        simulate receiver chain for n repeaters
        """
        n = self.data.get_rx_number()
        beacon_packet = self.data.get_beacon_packet()
        time_base = self.data.get_timestamp_base()

        # lists containing data for all current teams
        team_id = self.data.get_rx_team_id()
        location = self.data.get_rx_location()
        if ENABLE_LOCATION_HISTORY:
            self.record_location_history(location)
        tof = self.data.get_rx_time_delay()

        if self.DEBUG:
            print "\n\n\n\n\n\nretrieve location: ", location
            print ''
            print "type(tof): ", type(tof)


        HOST = 'localhost'    # The remote host
        PORT = 1079           # The same port as used by the server

        # conn = psycopg2.connect(host = "192.168.42.200",
        #                         user = "******",
        #                         password = "******",
        #                         database = "sdrc_db")

        conn = psycopg2.connect(host = "128.173.90.88",
                                user = "******",
                                password = "******",
                                database = "sdrc_db")

        cur = conn.cursor()


        for i in range(n):
            f = open('data_in.data', 'a')

            (rx_pktno,) = struct.unpack('!H', beacon_packet[0:2])
            (beacon_ID,) = struct.unpack('!H', beacon_packet[2:4])

            # packet number
            payload1 = struct.pack('!H', self.packet_number & 0xffff)
            f.write(str(self.packet_number) + ';')

            # team id
            ident = team_id[i]
            payload2 = struct.pack('!H', ident & 0xffff)
            f.write(str(ident) + ';')

            # location
            if (self.iterator == 1):
                loc = location[i]
            else:
                # old_loc = location[i]
                # loc = alex_random.random_move(old_loc)
                loc = alex_random.get_random_coord()
                self.data.set_rx_location(i,loc)

            f.write(str(loc)+';')

            self.iterator += 1
            payload3 = new_sim_utils.pack_loc(loc)
            

            # toa
            t = tof[i]
            toa = time_base + t
            # if (ENABLE_JITTER):
            #     jitter = self.random_timing_jitter()
            #     toa = toa+jitter
            # else:
            #     pass
            if self.DEBUG:
                print "t = tof[i]: ", repr(t)
                print "type(t): ", type (t)
                print "toa = time_base + t: ", repr(toa)
                print "type(toa): ", type(toa)
            payload4 = new_sim_utils.pack_time(toa)

            f.write(repr(toa)+';')


            # beacon payload
            payload5 = struct.pack('!H', rx_pktno & 0xffff)
            f.write(str(rx_pktno) + ';')
            payload6 = struct.pack('!H', beacon_ID & 0xffff)
            f.write(str(beacon_ID) + '\n')
            f.close()
            # check if packet dropped
            drop = self.drop_packet()
            # this if evaluates true even if drop == False
            # if (ENABLE_DROPPED_PACKETS and drop): # if drop == 'True'
            #     print 'ENABLE_DROPPED_PACKETS ', ENABLE_DROPPED_PACKETS
            #     print 'drop ', drop
            #     print (ENABLE_DROPPED_PACKETS and drop)
            #     print 'packet dropped'
            #     payload = ''
            if ENABLE_DROPPED_PACKETS:
                print 'ENABLE_DROPPED_PACKETS ', ENABLE_DROPPED_PACKETS
                print 'drop ', drop
                if drop: # if drop == 'True'
                    print 'drop ', drop
                    print 'packet dropped'
                    payload = ''
                else:    # if drop == 'False'
                    payload = (payload1 + payload2 +
                               payload3 + payload4 +
                               payload5 + payload6)
            else:    # if drop == 'False'
                payload = (payload1 + payload2 +
                           payload3 + payload4 +
                           payload5 + payload6)


            print "len(payload): ", len(payload)
            cur.execute("INSERT INTO blob_table (field_1) VALUES (%s)", (psycopg2.Binary(payload),))


        conn.commit()
        cur.close() 
        conn.close()

        self.packet_number += 1