示例#1
0
def move_node(service, coordinates):
    for i in range(0, len(coordinates)):
        if i == 0:
            continue
        # if i==1 or i==2 or i== 20 or i==21:
        #     n = 4
        #     if i==1 or 1==21:
        #         height = 0.0
        else:
            n = 10
            height = 1800.0
            a2gNEM7.height = 1800
        for counter in range(0, n):
            counter = float(counter)/n
            lon = coordinates[i-1][0] + counter * (coordinates[i][0] - coordinates[i-1][0])
            lat = coordinates[i-1][1] + counter * (coordinates[i][1] - coordinates[i-1][1])
            message_sdt("node node-02 position" + " " + str(lon)[0:7] + "," + str(lat)[0:7] + "")
            message_sdt(b"wait 50.0")
            a2gNEM7.latitude = lat
            a2gNEM7.longitude = lon
            # create an event setting plane position only for NEM 12 (comm is precomputed)
            event = LocationEvent()
            event.append(12, latitude=lat, longitude=lon, altitude=height)
            service.publish(0, event)

            update_a2g_pathlosses(service)
            time.sleep(0.01)
        time.sleep(5)
示例#2
0
def publish_loc(n, x, y, z, session, verbose=False):
    loc = LocationEvent()
    lat, lon, alt = session.location.getgeo(x, y, z)

    if verbose:
        print 'Publishing location event: lat=%s,lon=%s,alt=%s' % (
            str(lat), str(lon), str(alt))
    loc.append(n, latitude=lat, longitude=lon, altitude=alt)

    session.emane.service.publish(0, loc)
示例#3
0
def publish_loc(nem, x, y, z, session, verbose=False):
    loc = LocationEvent() 
    lat,lon,alt = session.location.getgeo(x, y, z)
    rtx, rty, rtz = session.location.getxyz(lat, lon, alt)
    if verbose: 
        session.info('Publishing location event for nem %d: (%.1f %.1f %.1f) -> (%.6f %.6f %.6f) (diff rt %d %d %d)' \
            %(nem,x,y,z,lat,lon,alt, x-rtx,y-rty,z-rtz))

    if int(x-rtx) > 0 or int(y-rty) > 0 or int(z - rtz) > 0: raise Exception("Error converting between coordinate systems!")
    loc.append(nem, latitude=lat,longitude=lon, altitude=alt)

    session.emane.service.publish(0, loc)
示例#4
0
 def setnemposition(self, netif, x, y, z):
     ''' Publish a NEM location change event using the EMANE event service.
     '''
     if self.session.emane.service is None:
         if self.verbose:
             self.info("position service not available")
         return
     nemid = self.getnemid(netif)
     ifname = netif.localname
     if nemid is None:
         self.info("nemid for %s is unknown" % ifname)
         return
     (lat, long, alt) = self.session.location.getgeo(x, y, z)
     if self.verbose:
         self.info("setnemposition %s (%s) x,y,z=(%d,%d,%s)"
                   "(%.6f,%.6f,%.6f)" % \
                   (ifname, nemid, x, y, z, lat, long, alt))
     if self.session.emane.version >= self.session.emane.EMANE091:
         event = LocationEvent()
     else:
         event = emaneeventlocation.EventLocation(1)
     # altitude must be an integer or warning is printed
     # unused: yaw, pitch, roll, azimuth, elevation, velocity
     alt = int(round(alt))
     if self.session.emane.version >= self.session.emane.EMANE091:
         event.append(nemid, latitude=lat, longitude=long, altitude=alt)
         self.session.emane.service.publish(0, event)
     else:
         event.set(0, nemid, lat, long, alt)
         self.session.emane.service.publish(
             emaneeventlocation.EVENT_ID, emaneeventservice.PLATFORMID_ANY,
             emaneeventservice.NEMID_ANY, emaneeventservice.COMPONENTID_ANY,
             event.export())
示例#5
0
文件: nodes.py 项目: tohojo/core
 def setnemposition(self, netif, x, y, z):
     ''' Publish a NEM location change event using the EMANE event service.
     '''
     if self.session.emane.service is None:
         if self.verbose:
             self.info("position service not available")
         return
     nemid =  self.getnemid(netif)
     ifname = netif.localname
     if nemid is None:
         self.info("nemid for %s is unknown" % ifname)
         return
     (lat, long, alt) = self.session.location.getgeo(x, y, z)
     if self.verbose:
         self.info("setnemposition %s (%s) x,y,z=(%d,%d,%s)"
                   "(%.6f,%.6f,%.6f)" % \
                   (ifname, nemid, x, y, z, lat, long, alt))
     if self.session.emane.version >= self.session.emane.EMANE091:
         event = LocationEvent()
     else:
         event = emaneeventlocation.EventLocation(1)
     # altitude must be an integer or warning is printed
     # unused: yaw, pitch, roll, azimuth, elevation, velocity
     alt = int(round(alt))
     if self.session.emane.version >= self.session.emane.EMANE091:
         event.append(nemid, latitude=lat, longitude=long, altitude=alt)
         self.session.emane.service.publish(0, event)
     else:
         event.set(0, nemid, lat, long, alt)
         self.session.emane.service.publish(emaneeventlocation.EVENT_ID,
                                        emaneeventservice.PLATFORMID_ANY,
                                        emaneeventservice.NEMID_ANY,
                                        emaneeventservice.COMPONENTID_ANY,
                                        event.export())
示例#6
0
def init_nodes(service):
    #message_sdt(b"reset")
    message_sdt(b"bgbounds 35.54,32.75,35.01,33.02")
    message_sdt(("sprite base_station image %s size 52,25" %
                 (os.path.join(project_dir, 'base_station.png'))))
    message_sdt(b"node node-01 type base_station label blue")
    message_sdt(b"node node-01 position 35.0195,32.7625")
    message_sdt(("sprite plane image %s size 52,25" %
                 (os.path.join(project_dir, 'plane.png'))))
    message_sdt(b"node node-02 type plane label blue")
    message_sdt(b"node node-02 position 35.0433,32.8119")
    message_sdt(b"link node-01,node-02,wifi")
    message_sdt(("sprite soldier image %s size 52,25" %
                 (os.path.join(project_dir, 'soldier.gif'))))
    message_sdt(b"node node-03 type soldier label blue")
    message_sdt(b"node node-03 position 35.088425,33.010963")
    message_sdt(b"node node-06 type soldier label blue")
    message_sdt(b"node node-06 position 35.147439,33.015844")

    # create an event setting base station position

    event = LocationEvent()
    event.append(11, latitude=32.7625, longitude=35.0195, altitude=457.000000)
    service.publish(0, event)
    # create an event setting plane position
    event = LocationEvent()
    event.append(12, latitude=32.8119, longitude=35.0433, altitude=500.000000)
    service.publish(0, event)

    #
    # # set 1 men position
    # event = LocationEvent()
    radioNEMs.append(NEM(1, 33.010763, 35.088425))
    radioNEMs.append(NEM(2, 33.011863, 35.088425))
    radioNEMs.append(NEM(3, 33.012963, 35.088425))

    # # set 2 men position
    # event = LocationEvent()
    radioNEMs.append(NEM(4, 33.015644, 35.147439))
    radioNEMs.append(NEM(5, 33.018744, 35.147439))
    radioNEMs.append(NEM(6, 33.015844, 35.140439))

    update_radio_pathlosses(service)
    update_89_pathloss(service)
    update_a2g_pathlosses(service)
示例#7
0
    def setnempositions(self, moved_netifs):
        ''' Several NEMs have moved, from e.g. a WaypointMobilityModel
            calculation. Generate an EMANE Location Event having several
            entries for each netif that has moved.
        '''
        if len(moved_netifs) == 0:
            return
        if self.session.emane.service is None:
            if self.verbose:
                self.info("position service not available")
            return

        if self.session.emane.version >= self.session.emane.EMANE091:
            event = LocationEvent()
        else:
            event = emaneeventlocation.EventLocation(len(moved_netifs))
        i = 0
        for netif in moved_netifs:
            nemid = self.getnemid(netif)
            ifname = netif.localname
            if nemid is None:
                self.info("nemid for %s is unknown" % ifname)
                continue
            (x, y, z) = netif.node.getposition()
            (lat, long, alt) = self.session.location.getgeo(x, y, z)
            if self.verbose:
                self.info("setnempositions %d %s (%s) x,y,z=(%d,%d,%s)"
                          "(%.6f,%.6f,%.6f)" % \
                          (i, ifname, nemid, x, y, z, lat, long, alt))
            # altitude must be an integer or warning is printed
            alt = int(round(alt))
            if self.session.emane.version >= self.session.emane.EMANE091:
                event.append(nemid, latitude=lat, longitude=long, altitude=alt)
            else:
                event.set(i, nemid, lat, long, alt)
            i += 1

        if self.session.emane.version >= self.session.emane.EMANE091:
            self.session.emane.service.publish(0, event)
        else:
            self.session.emane.service.publish(
                emaneeventlocation.EVENT_ID, emaneeventservice.PLATFORMID_ANY,
                emaneeventservice.NEMID_ANY, emaneeventservice.COMPONENTID_ANY,
                event.export())
示例#8
0
def move_node(service, coordinates):
    for i in range(0, len(coordinates)):
        if i == 0:
            continue
        for counter in range(0, 2000):
            counter = float(counter) / 2000
            lon = coordinates[i - 1][0] + counter * (coordinates[i][0] -
                                                     coordinates[i - 1][0])
            lat = coordinates[i - 1][1] + counter * (coordinates[i][1] -
                                                     coordinates[i - 1][1])
            os.system(sdtcmd_path + " " + "node node-02 position" + " " +
                      str(lon)[0:7] + "," + str(lat)[0:7])
            os.system(sdtcmd_path + " " + "wait 50.0")
            # create an event setting plane position
            event = LocationEvent()
            event.append(12, latitude=lat, longitude=lon, altitude=500.000000)
            service.publish(0, event)
            event = LocationEvent()
            event.append(7, latitude=lat, longitude=lon, altitude=500.000000)
            service.publish(0, event)
            time.sleep(0.01)
        time.sleep(20)
    def setnempositions(self, moved_netifs):
        """ Several NEMs have moved, from e.g. a WaypointMobilityModel
            calculation. Generate an EMANE Location Event having several
            entries for each netif that has moved.
        """
        if len(moved_netifs) == 0:
            return
        if self.session.emane.service is None:
            if self.verbose:
                self.info("position service not available")
            return

        if self.session.emane.version >= self.session.emane.EMANE091:
            event = LocationEvent()
        else:
            event = emaneeventlocation.EventLocation(len(moved_netifs))
        i = 0
        for netif in moved_netifs:
            nemid = self.getnemid(netif)
            ifname = netif.localname
            if nemid is None:
                self.info("nemid for %s is unknown" % ifname)
                continue
            (x, y, z) = netif.node.getposition()
            (lat, long, alt) = self.session.location.getgeo(x, y, z)
            if self.verbose:
                self.info(
                    "setnempositions %d %s (%s) x,y,z=(%d,%d,%s)"
                    "(%.6f,%.6f,%.6f)" % (i, ifname, nemid, x, y, z, lat, long, alt)
                )
            # altitude must be an integer or warning is printed
            alt = int(round(alt))
            if self.session.emane.version >= self.session.emane.EMANE091:
                event.append(nemid, latitude=lat, longitude=long, altitude=alt)
            else:
                event.set(i, nemid, lat, long, alt)
            i += 1

        if self.session.emane.version >= self.session.emane.EMANE091:
            self.session.emane.service.publish(0, event)
        else:
            self.session.emane.service.publish(
                emaneeventlocation.EVENT_ID,
                emaneeventservice.PLATFORMID_ANY,
                emaneeventservice.NEMID_ANY,
                emaneeventservice.COMPONENTID_ANY,
                event.export(),
            )
示例#10
0
    def _process_msg(self, data):

        FT_TO_M = 0.3048
        KT_TO_MPS = 0.51444444444

        message = data.split("#")

        # ex: 101#114#1#7003#-1#4656.1#-16.48614#-47.947058#210.8#9.7#353.9#TAM6543#B737#21653.3006492
        msg_ver = int(message[0])
        msg_typ = int(message[1])

        if msg_typ != 114:
            return

        msg_num = int(message[2])  # node id
        msg_ssr = message[3]
        msg_spi = int(message[4])  # if spi > 0, SPI=ON, otherwise SPI=OFF
        msg_alt = float(message[5])  # altitude (feet)
        msg_lat = float(message[6])  # latitude (degrees)
        msg_lon = float(message[7])  # longitude (degrees)
        msg_vel = float(message[8])  # velocity (knots)
        msg_cbr = float(message[9])  # climb rate (m/s)
        msg_azm = float(message[10])  # azimuth (degrees)
        msg_csg = message[11]  # callsign
        msg_per = message[12]  # aircraft performance type
        msg_tim = float(message[13])  # timestamp (see "hora de inicio")

        if msg_num in self.track2nem:
            nemid = self.track2nem[msg_num]
        else:
            nemid = msg_num

        if nemid not in self.nems:
            # Current track does not exists in the simulation
            return

        #
        # Update node's physical parameters using Emane API
        #
        event = LocationEvent()
        event.append(nemid,
                     latitude=msg_lat,
                     longitude=msg_lon,
                     altitude=msg_alt * FT_TO_M,
                     azimuth=msg_azm,
                     magnitude=msg_vel * KT_TO_MPS,
                     elevation=0.0)

        self.service.publish(0, event)

        #
        # Update local variables
        #
        obj = {
            'latitude': msg_lat,
            'longitude': msg_lon,
            'altitude': msg_alt * FT_TO_M,
            'pitch': 0.0,
            'roll': 0.0,
            'yaw': 0.0,
            'azimuth': msg_azm,
            'elevation': 0.0,
            'magnitude': msg_vel * KT_TO_MPS,
        }

        self.tracks[nemid] = obj

        #
        # Update transponder's parameters using database shared memory
        #

        try:
            cursor = self.db_process.cursor()
            cursor.execute(
                "SELECT callsign, performance_type, ssr_squawk FROM transponder WHERE nem_id=%d"
                % nemid)
            result = cursor.fetchone()

            if result is None:
                return

            db_callsign = result[0]
            db_perftype = result[1]
            db_squawk = result[2]

            if db_callsign[
                    0] != msg_csg or db_perftype != msg_per or db_squawk != msg_ssr:
                sql = "UPDATE transponder SET callsign='%s', performance_type='%s', ssr_squawk='%s' " \
                      "WHERE nem_id=%d" % (msg_csg, msg_per, msg_ssr, nemid)

                cursor.execute(sql)
                self.db_process.commit()

            cursor.close()

        except MySQLdb.Error, e:
            logging.warn("listen(): MySQL Error [%d]: %s" %
                         (e.args[0], e.args[1]))
示例#11
0
 def handleLocation(nemId, eventId, data, uuid, sequence):
     e = LocationEvent()
     e.restore(data)
     header(nemId, eventId, data, 'Location', uuid, sequence)
     for i in e:
         print "  ", i
示例#12
0
def main():

    global conf_file
    global node_conf_file
    global ENABLE_TIMEKEEPER
    global max_tdf
    global topo_size

    os.system("sudo chmod -R 777 /tmp")
    os.system("sudo rm -rf /tmp/emane")

    if is_root() == 0:
        print "Must be run as root"
        sys.exit(-1)

    arg_list = sys.argv

    if len(arg_list) == 1:
        conf_file = cwd + "/conf/emane.conf"
        node_conf_file = cwd + "/conf/node.conf"
    else:
        i = 1
        while i < len(arg_list):
            if arg_list[i] == "-D":
                ENABLE_TIMEKEEPER = 0
            else:
                ENABLE_TIMEKEEPER = 1
                conf_files_dir = arg_list[1]
                if os.path.isdir(conf_files_dir) == True:
                    conf_file = conf_files_dir + "/emane.conf"
                    node_conf_file = conf_files_dir + "/node.conf"
                    if os.path.exists(conf_file) == False or os.path.exists(
                            node_conf_file) == False:
                        print "Config files do not exist"
                        sys.exit(-1)
                else:
                    print "Config directory specified is incorrect"
                    sys.exit(-1)
            i = i + 1

    Node, run_time, n_nodes, eventmanagergroup, timeslice = configure()
    topo_size = n_nodes

    # create experiment-data directory
    with open(cwd + "/experiment-data/exp-info.txt", "w") as f:
        f.write("Conf file path : " + conf_file + "\n")
        f.write("Node Conf file : " + node_conf_file + "\n")
        f.write("Run time       : " + str(run_time) + "\n")
        f.write("N_nodes        : " + str(n_nodes) + "\n")

    # copy node_config file and emane_conf file

    os.system("mkdir -p " + cwd + "/experiment-data")
    start_LXCs()
    print "Timeslice = ", timeslice
    print "Setting initial location values to all lxcs ..."
    nemid = 1
    temp_list = eventmanagergroup.split(":")
    eventmanagergroupaddress = temp_list[0]
    eventmanagergroupport = int(temp_list[1])
    service = EventService(
        (eventmanagergroupaddress, eventmanagergroupport, 'br0'))
    event = LocationEvent()

    i = 1

    while i <= n_nodes:
        pathlossevt = PathlossEvent()
        j = 1
        while j <= n_nodes:
            if i != j:
                pathlossevt.append(j, forward=90, reverse=90)
            j = j + 1
        i = i + 1

    while nemid <= n_nodes:
        event.append(nemid,
                     latitude=Node[nemid]["lattitude"],
                     longitude=Node[nemid]["longitude"],
                     altitude=Node[nemid]["altitude"])
        nemid = nemid + 1
    service.publish(0, event)

    time.sleep(2)
    print "Location events published. All nodes set to initial positions. Waiting for 30 sec for routing updates to stabilize"
    time.sleep(50)

    # Timekeeper portion
    freeze_quantum = 1000000  # in nano seconds

    nemid = 1

    while nemid <= n_nodes:
        pid = int(getpidfromname("node-" + str(nemid)))
        print "PID of node ", nemid, " = ", pid, " TDF = ", Node[nemid]["tdf"]
        if pid != -1 and ENABLE_TIMEKEEPER == 1:
            dilate_all(pid, Node[nemid]["tdf"])
            addToExp(pid)
        if max_tdf < Node[nemid]["tdf"]:
            max_tdf = Node[nemid]["tdf"]

        nemid += 1

    lxc_pid = int(getpidfromname("node-1"))
    if os.path.exists(cwd + "/exp_finished.txt"):
        os.unlink(cwd + "/exp_finished.txt")

    # send commands to execute to each LXC
    nemid = 1
    while nemid <= n_nodes:
        if nemid % 2 == 0:
            process = subprocess.Popen([
                "python", "lxc_command_dispatcher.py",
                str(0),
                str(nemid), Node[nemid]["cmd"]
            ])
        else:
            process = subprocess.Popen([
                "python", "lxc_command_dispatcher.py",
                str(1),
                str(nemid), Node[nemid]["cmd"]
            ])
        nemid += 1

    print "Set freeze_quantum = ", freeze_quantum * max_tdf
    if ENABLE_TIMEKEEPER == 1 and max_tdf >= 1:

        set_cpu_affinity(int(os.getpid()))
        set_cbe_experiment_timeslice(freeze_quantum * max_tdf)
        print "Timekeeper synchronizing ..."
        synchronizeAndFreeze()
        startExp()
        print "Synchronized CBE experiment started ..."
        start_time = int(get_current_virtual_time_pid(int(lxc_pid)))
        prev_time = start_time
        print "Experiment start time", start_time, " local Time = " + str(
            datetime.now())
        sys.stdout.flush()

    else:
        print "Experiment Started with TimeKeeper disabled - Ignoring TDF settings"

    try:

        k = 0
        while True:

            if ENABLE_TIMEKEEPER == 1:
                curr_time = int(get_current_virtual_time_pid(int(lxc_pid)))

                if curr_time - start_time >= run_time:
                    break
                else:
                    if curr_time - prev_time >= 1:
                        k = k + (curr_time - prev_time)
                        print k, " secs of virtual time elapsed"
                        prev_time = curr_time

            else:
                if k >= run_time:
                    break
                k = k + 1
                print k, " secs of real time elapsed"
            # sleep until runtime expires
            time.sleep(1)

    except KeyboardInterrupt:
        pass

    # stop Exp
    print "Stopping Synchronized experiment, local time = " + str(
        datetime.now())
    if ENABLE_TIMEKEEPER == 1:
        stopExp()
        time.sleep(10)

    stop_LXCs(max_tdf)
示例#13
0
 def handleLocation(nemId,eventId,data,uuid,sequence):
     e = LocationEvent()
     e.restore(data)
     header(nemId,eventId,data,'Location',uuid,sequence)
     for i in e:
         print "  ",i
示例#14
0
def init_nodes(service):
    # os.system(sdtcmd_path + " " + "reset")
    os.system(sdtcmd_path + " " +
              "sprite base_station image base_station.png size 52,25")
    os.system(sdtcmd_path + " " + "node node-01 type base_station label blue")
    os.system(sdtcmd_path + " " + "node node-01 position 35.0195,32.7625")
    os.system(sdtcmd_path + " " + "sprite plane image plane.png size 52,25")
    os.system(sdtcmd_path + " " + "node node-02 type plane label blue")
    os.system(sdtcmd_path + " " + "node node-02 position 35.0433,32.8119")
    os.system(sdtcmd_path + " " + "link node-01,node-02,wifi")
    os.system(sdtcmd_path + " " +
              "sprite soldier image soldier.gif size 52,25")
    os.system(sdtcmd_path + " " + "node node-03 type soldier label blue")
    os.system(sdtcmd_path + " " + "node node-03 position 35.088425,33.010963")
    os.system(sdtcmd_path + " " + "node node-06 type soldier label blue")
    os.system(sdtcmd_path + " " + "node node-06 position 35.147439,33.015844")
    # create an event setting base station position
    event = LocationEvent()
    event.append(11, latitude=32.7625, longitude=35.0195, altitude=457.000000)
    service.publish(0, event)
    # create an event setting plane position
    event = LocationEvent()
    event.append(12, latitude=32.8119, longitude=35.0433, altitude=500.000000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(7, latitude=32.8119, longitude=35.0433, altitude=500.000000)
    service.publish(0, event)

    # set 1 men position
    event = LocationEvent()
    event.append(1, latitude=33.010763, longitude=35.088425, altitude=8.00000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(2, latitude=33.010863, longitude=35.088425, altitude=8.00000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(3, latitude=33.010963, longitude=35.088425, altitude=8.00000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(8, latitude=33.010963, longitude=35.088425, altitude=8.00000)
    service.publish(0, event)
    # set 2 men position
    event = LocationEvent()
    event.append(4, latitude=33.015644, longitude=35.147439, altitude=8.00000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(5, latitude=33.015744, longitude=35.147439, altitude=8.00000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(6, latitude=33.015844, longitude=35.147439, altitude=8.00000)
    service.publish(0, event)
    event = LocationEvent()
    event.append(9, latitude=33.015844, longitude=35.147439, altitude=8.00000)
    service.publish(0, event)
    time.sleep(20)
示例#15
0
#!/usr/bin/env python
from emanesh.events import EventService
from emanesh.events import LocationEvent

# create the event service
service = EventService(('224.1.2.8',45703,'emanenode0'))

# create an event setting 10's position
event = LocationEvent()
event.append(10,latitude=40.031290,longitude=-74.523095,altitude=3.000000)

# publish the event
service.publish(0,event)

示例#16
0
def init_nodes(service):
    #send schedule
    os.system("emaneevent-tdmaschedule /home/ubuntu/Desktop/emane-tutorial/23aliakim/schedule.xml -i emanenode0")
    #message_sdt(b"reset")
    message_sdt(b"")
    message_sdt(b"bgbounds 34.54,31.15,34.8,31.26")

    message_sdt(("sprite base_station image %s size 52,25" % (os.path.join(project_dir,'base_station.png'))))
    message_sdt(b"node node-01 type base_station label blue")
    message_sdt(b"node node-01 position 34.7572,31.2414")

    message_sdt(("sprite plane image %s size 52,25" % (os.path.join(project_dir,'plane.png'))))
    message_sdt(b"node node-02 type plane label blue")
    #cmdString = "b\"node node-02 position " + str(LOCATION_AIRPORT_LON) + "," + str(LOCATION_AIRPORT_LAT) + "\""
    message_sdt(b"node node-02 position 34.6784,31.2256")
    message_sdt(b"link node-01,node-02,wifi")

    message_sdt(("sprite soldier image %s size 52,25" % (os.path.join(project_dir,'soldier.gif'))))
    message_sdt(b"node node-07 type soldier label blue")
    #cmdString = "b\"node node-07 position " + str(LOCATION_SOLDIER_1_LON) + "," + str(LOCATION_SOLDIER_1_LAT) + "\""
    message_sdt(b"node node-07 position 34.5285,31.1643")
    message_sdt(b"node node-08 type soldier label blue")
    #cmdString = "b\"node node-08 position " + str(LOCATION_SOLDIER_2_LON) + "," + str(LOCATION_SOLDIER_2_LAT) + "\""
    message_sdt(b"node node-08 position 34.5324,31.1643")
    message_sdt(b"node node-03 type soldier label blue")
    #cmdString = "b\"node node-03 position " + str(LOCATION_SOLDIER_3_LON) + "," + str(LOCATION_SOLDIER_3_LAT) + "\""
    message_sdt(b"node node-03 position 34.5320,31.1639")
    message_sdt(b"node node-04 type soldier label blue")
    #cmdString = "b\"node node-04 position " + str(LOCATION_SOLDIER_4_LON) + "," + str(LOCATION_SOLDIER_4_LAT) + "\""
    message_sdt(b"node node-04 position 34.5313,31.1630")
    message_sdt(b"node node-05 type soldier label blue")
    #cmdString = "b\"node node-05 position " + str(LOCATION_SOLDIER_5_LON) + "," + str(LOCATION_SOLDIER_5_LAT) + "\""
    message_sdt(b"node node-05 position 34.5334,31.1633")
    message_sdt(b"node node-06 type soldier label blue")
    #cmdString = "b\"node node-06 position " + str(LOCATION_SOLDIER_6_LON) + "," + str(LOCATION_SOLDIER_6_LAT) + "\""
    message_sdt(b"node node-06 position 34.5338,31.1630")

    # create an event setting base station position
    event = LocationEvent()
    event.append(11, latitude=31.2414, longitude=34.7572, altitude=15.000000)
    service.publish(0, event)
    # create an event setting plane position
    event = LocationEvent()
    event.append(12, latitude=LOCATION_PLANE_GROUND_LAT, longitude=LOCATION_PLANE_GROUND_LON, altitude=0.000000)
    service.publish(0, event)

    #
    # # set 1 men position
    # event = LocationEvent()
    radioNEMs.append(NEM(1, LOCATION_SOLDIER_1_LAT, LOCATION_SOLDIER_1_LON, 1.5))
    radioNEMs.append(NEM(2, LOCATION_SOLDIER_2_LAT, LOCATION_SOLDIER_2_LON, 1.5))
    radioNEMs.append(NEM(3, LOCATION_SOLDIER_3_LAT, LOCATION_SOLDIER_3_LON, 1.5))

    # # set 2 men position
    # event = LocationEvent()
    radioNEMs.append(NEM(4, LOCATION_SOLDIER_4_LAT, LOCATION_SOLDIER_4_LON, 1.5))
    radioNEMs.append(NEM(5, LOCATION_SOLDIER_5_LAT, LOCATION_SOLDIER_5_LON, 1.5))
    radioNEMs.append(NEM(6, LOCATION_SOLDIER_6_LAT, LOCATION_SOLDIER_6_LON, 1.5))

    update_radio_pathlosses(service)
    update_8_9_13_14_15_16_pathloss(service)
    update_a2g_pathlosses(service)
示例#17
0
    parameters['frequencyHz'] = 2347000000
    parameters['bandwidthHz'] = 20e6
    parameters['systemnoisefloordB'] = 4
    parameters['txpowerdB'] = 0
    parameters['txgaindB'] = 0
    parameters['rxgaindB'] = 0

    # create an event setting 10's position
    n = 3
    distances = np.zeros(n)
    rates = np.zeros(n)
    dlat_array = 10**-5 * np.linspace(300, 800, n)

    for i in range(n):
        dlat = dlat_array[i]
        event = LocationEvent()
        event.append(1, latitude=lator, longitude=lonor, altitude=3.000000)
        event.append(2,
                     latitude=lator + dlat,
                     longitude=lonor,
                     altitude=3.000000)
        distances[i] = distance(lator, lonor, lator + dlat, lonor)
        parameters['distanceM'] = distances[i]
        time.sleep(2)
        print "-------------------------------------"
        print "Distance: ", distances[i]
        service.publish(0, event)
        cpc = ControlPortClient('node-1', 47000)
        cpc.clearStatistic(3, '')
        cpc.clearStatistic(2, '')