Example #1
0
def main():
    print("--- creating connection")
    CONN = create_connection((DOMAIN, PORT), 3)
    # listen for messages
    msg_receiver = receiver.receiver(CONN, FILENAME)
    msg_receiver.start()
    print("--- notifying peer")
    peer_notify(CONN)
    while True:
        time.sleep(1)
Example #2
0
 def handle_accept(self):
     conn, addr = self.accept()
     print '--- Connect --- '
     print self.TCP_connects
     print "key (addr) :", addr
     key = addr
     TCP_Forwarder.TCP_connects[key] = {}.fromkeys(
         ['sender', 'receiver', 'attribute'])
     TCP_Forwarder.TCP_connects[key]["attribute"] = {}
     sender(receiver(conn, key, self), self.remoteip, self.remoteport, key,
            self)
Example #3
0
def main():
    print("--- creating connection")
    CONN = create_connection((DOMAIN, PORT), 3)
    # listen for messages
    msg_receiver = receiver.receiver(CONN, FILENAME)
    msg_receiver.start()
    # test normal functions
    test_server(CONN)
    print("--- closing connection")
    CONN.close()
    sys.exit()
    def __init__(self, signal, algorythm, now):
        print("String: ")
        napis = ""
        print(type(signal))
        for x in range(len(signal)):
            napis += str(signal[x])
        print(napis)

        if (algorythm == "AES"):
            napis = ""
            for x in range(len(signal)):
                napis += str(signal[x])
                if (signal[x] == 0):
                    napis += "0"
            print(napis)
            print(type(napis))
            key = random.randint(0x00, 0xFF)
            cipher = AES2.AES(key)
            print(type(napis))
            encrypted = cipher.encrypt(napis)
            decrypted = cipher.decrypt(encrypted)
            print(decrypted)

        else:
            pure_disrupted = distrupter.distruption2(
                signal,
                algorythm)  # zaklocenie sygnalu wysylanego bez scramblera
            scrambled = scrambler.scramble(
                signal, algorythm)  # zescramblowanie sygnalu
            tab1 = list(receiver.signalhistogram(scrambled).keys())
            tab2 = list(receiver.signalhistogram(scrambled).values())
            scrambled_disrupted = distrupter.distruption(
                scrambled,
                algorythm)  # zaklocenie sygnalu wysylanego ze scramblerem
            descrambled = descrambler.descramble(
                scrambled_disrupted, algorythm
            )  # odsramblowanie sygnalu zakloconego wysylanego ze scramblerem
            receiver.receiver(
                signal, pure_disrupted, descrambled, algorythm, scrambled,
                scrambled_disrupted, tab1, tab2,
                now)  # przekazanie sygnalow do programu odbiorczego
Example #5
0
async def main(cfg):
    logging.basicConfig(filename=cfg["LOGFILE"],
                        level=cfg["LOGLEVEL"],
                        format=cfg["LOG_FORMAT"],
                        datefmt=cfg["LOG_DATEFMT"])

    try:
        tasks = asyncio.gather(asyncio.create_task(receiver(cfg)),
                               asyncio.create_task(sender(cfg)))
        await tasks
    except (KeyboardInterrupt, asyncio.CancelledError):
        tasks.cancel()
Example #6
0
  def talker(prog, sour, dest, action, args, data): 
    producer.response(prog, dest, sour, 'response', (), 'connected')

    rcdr = recorder.recoder()
    rcdrthr = Process(target=rcdr.recoder, args=(dest, sour, user,), daemon=True)
    rcdrthr.start()
  
    receiver = recv.receiver()
    receiver.play(dest, sour, 'pi', )  
    #rcdrthr.terminate()
    #rcdrthr.join()
    print('...........................')
    return 
Example #7
0
def main():
    print("1)Caesar\n2)Multiplication\n3)affine\n4)ubrytelig\n5)rsa\n")
    which_alg = input(": ")
    if which_alg == '1':
        cy_alg = caesar()
    elif which_alg == '2':
        cy_alg = multiplikasjons_cypher()
    elif which_alg == '3':
        cy_alg = affine()
    elif which_alg == '4':
        cy_alg = ubrytelige()
    else:
        cy_alg = rsa()
    send = sender(cy_alg)
    receiv = receiver(cy_alg)
    hack = hacker(cy_alg)
    while True:
        choos_key = input(
            "Choose 1 to inter your key, else choose other number: ")
        if choos_key == '1':
            key = input("your key is: ")
            if which_alg == '4':
                send.set_receiver(cy_alg, receiv, key)
            elif which_alg == '3':
                key2 = input("your second key is: ")
                send.set_receiver(cy_alg, receiv, (int(key),int(key2)))
            else:
                send.set_receiver(cy_alg, receiv, int(key))
        else:
            send.set_receiver(cy_alg, receiv)
        receiv.set_sender(cy_alg, send)
        my_text = input("Your Text: ")
        code = send.operate_cypher(my_text)
        print("Cypher: " + code)
        decoded_code = receiv.operate_cypher(code)
        print("after: " + decoded_code)
        verify = cy_alg.verify(my_text, decoded_code)
        if verify:
            break
        else:
            print("Repeat!\n")
    print("hack: {} ".format(hack.hack(code)))
Example #8
0
from sender import sender
from receiver import receiver
sender('text', 'text1', 'text2')
sender('text1', 'text', 'text2')
receiver('text2')
Example #9
0
import math
import receiver  #module of a receiver function

t = receiver.delay()  #download time of delay and return in  an integer

sp = receiver.receiver()  #download initial coordinates and return in a tuple

a = sp[0]
b = sp[1]
c = sp[2]  #assign tuple (sp) values to variables a, b and c

coordinates = receiver.location(
)  #download current coordinates and return in a tuple

x = coordinates[0]
y = coordinates[1]
z = coordinates[2]  #assign tuple (coordinates) values to variables x, y and z
print(x, y, z)

speed = math.sqrt((a - x)**2 + (b - y)**2 +
                  (c - z)**2) / t  #calculate speed (units per seconds)
print(speed)
Example #10
0
def listen_requests(tc, ts, chunks):
    rx_ip = '[email protected]'
    rx = receiver(channels, chunks, ts, tc, rx_ip, 'received-wavfile.wav')
    print('beginning to receive')
    rx.start()
Example #11
0
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   If you have a applicable agreement with GreenSocs Ltd, the terms of that
#   agreement prevail.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
#   02110-1301  USA
#
# ENDLICENSETEXT

import gs

from sender import sender
from receiver import receiver

# Describe the system
sender1 = sender()
receiver1 = receiver()

# Start!
gs.start()
Example #12
0
from receiver import receiver

if __name__ == "__main__":
    receiver = receiver()
    receiver.keep_listening(10)
Example #13
0
    group_delay = (g.size - 1) // 2
#    s_BB=s_BB[group_delay:-group_delay]
    
    #spec=sender_.anti_image(s_BB)
    
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Plot.konstellation(s_BB,'Signal from sender')
    ###Kommentar: Nullpunkt wegen Filterdelay
    #Plot.timesignal(s_BB,"Baseband signal")
    #Plot.spectrum(s_BB,"Baseband spectrum")
    
    #!!Image filterung
    
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #with Filter
    receiver_=receiver(H,sender_,SNR_dB,filter_,mpsk_map,s_BB)
    
    r=receiver_.r
    rr=receiver_.r
    #Plot.timesignal(rr,"nach Kanal")
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Plot.konstellation(r,'Signal after channel')
    #Plot.timesignal(r[:,0],'Signal after channel')
    #Plot.spectrum(r,'Signal after channel')
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
#    off=np.exp(1j*2*np.pi*f_off*np.arange(r.shape[0])*T/filter_.n_up)
#    r_off_ft=r*np.repeat(off,RA).reshape([-1,RA])*np.exp(1j*phi_off)
#    
#    
    
Example #14
0
class Controller(object):
    """A controller which implements drag-and-drop bahavior on connected view
    objects. Subclasses may override the drag_start, drag_end, pos, and
    set_pos methods"""

    _view = receiver()

    _dragging = None
    _canvas = None
    _cursor = None
    _ptr_within = False
    _last_click = None
    _mousedown = None
    _last_event = None

    def __init__(self, view=None):
        object.__init__(self)
        self._view = view

## convenience functions

    def from_event(self, event):
        """returns the coordinates of an event"""
        return Point(*self._canvas.convert_from_pixels(event.x, event.y))

    def from_item_event(self, item, event):
        return Point(*self._canvas.convert_from_item_space(
            item, *self.from_event(event)))

    def pos(self, item):
        bounds = item.get_bounds()
        return Point(bounds.x1, bounds.y1)

    def size(self, item):
        bounds = item.get_bounds()
        return Point(bounds.x2, bounds.y2) - Point(bounds.x1, bounds.y1)

    def center(self, item):
        return self.pos(item) + self.size(item) // 2

    def last_xy(self):
        return self.transform(self._mousedown +
                              self.from_event(self._last_event))

## signal handlers

    @handler(_view, "enter_notify_event")
    def enter_notify_event(self, item, target, event):
        self._last_event = event
        if self._cursor:
            event.window.set_cursor(self._cursor)
        self.enter(item, target)
        self._ptr_within = True
        return True

    @handler(_view, "leave_notify_event")
    def leave_notify_event(self, item, target, event):
        self._last_event = event
        self._ptr_within = False
        if not self._dragging:
            self.leave(item, target)
        return True

    @handler(_view, "button_press_event")
    def button_press_event(self, item, target, event):
        self._last_event = event
        if not self._canvas:
            self._canvas = item.get_canvas()
        self._mousedown = self.pos(item) - self.transform(
            self.from_item_event(item, event))
        self._dragging = target
        self._drag_start(item, target, event)
        return True

    @handler(_view, "motion_notify_event")
    def motion_notify_event(self, item, target, event):
        self._last_event = event
        if self._dragging:
            self.set_pos(
                self._dragging,
                self.transform(self._mousedown +
                               self.from_item_event(item, event)))
            return True
        return False

    @handler(_view, "button_release_event")
    def button_release_event(self, item, target, event):
        self._last_event = event
        self._drag_end(item, self._dragging, event)
        self._dragging = None
        return True

## internal callbacks

    def _drag_start(self, item, target, event):
        self.drag_start()

    def _drag_end(self, item, target, event):
        self.drag_end()
        if self._ptr_within:
            point = self.from_item_event(item, event)
            if self._last_click and (event.time - self._last_click < 400):
                self.double_click(point)
            else:
                self.click(point)
            self._last_click = event.time

## protected interface for subclasses

    def click(self, pos):
        pass

    def double_click(self, pos):
        pass

    def drag_start(self):
        pass

    def drag_end(self):
        pass

    def set_pos(self, obj, pos):
        x, y = pos
        self._view.set_simple_transform(x, y, 1.0, 0.0)

    def transform(self, pos):
        return pos

    def enter(self, item, target):
        pass

    def leave(self, item, target):
        pass
Example #15
0
def sm(SNR_dB,N,N_known,threshold):
#def sm(SNR_dB,n):
    #number of sender antennas
    SA=4
    #number of receiver antennas
    RA=4
    #data bits modulation order (BPSK)
    M=2
    mpsk_map=np.array([1,-1])
    #mpsk_map =1/np.sqrt(2) * np.array([1+1j, -1+1j, 1-1j, -1-1j], dtype=complex)
    #symbol duration
    T=1*1e-6
    #Frequency offset
    #f_off=np.random.randint(-0.001/T,0.001/T)
    f_off=np.random.randint(0.01/T,0.05/T)
#    N_known=int(1//T//f_off/n)
#    N=10*N_known
    #phase offset
    phi_off=np.random.random()*2*np.pi
    #number of Index bits per symbol
    Ni=int(np.log2(SA))
    #number of Data bits per symbol
    Nd=int(np.log2(M))
            #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Upsampling rate
    n_up=1
    # RRC Filter (L=K * sps + 1, sps, t_symbol, rho)
    filter_=rrcfilter(8*n_up+1,n_up , 1,0.5)
            #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Channel matrix
    H=1/np.sqrt(2)*((np.random.randn(RA,SA))+1j/np.sqrt(2)*(np.random.randn(RA,SA)))
    #H=np.ones([RA,SA])
            #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #sender
    sender_=sender(N,N_known,Ni,Nd,mpsk_map,filter_)
    #print("n_start=",sender_.n_start)
    #training symbols(/bits) which may be shared with receiver, when a data-aided method is used
    symbols_known=sender_.symbols_known
    ibits=sender_.ibits
    dbits=sender_.dbits
    n_start=sender_.n_start
    ibits_known=sender_.ibits_known
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #with Filter(noch zu bearbeiten,überabtastung!)
    receiver_=receiver(H,sender_,SNR_dB,filter_,mpsk_map)
    receiver_.channel()
    r_mf=receiver_.r_mf
    
    #BER for perfect sync
    yi,yd=receiver_.detector(r_mf,H)
    BERi_0,BERd_0=test.BER(yi,yd,Ni,Nd,ibits,dbits)
    
    
    #with offsets
    off=np.exp(1j*2*np.pi*f_off*np.arange(r_mf.shape[0])*T/filter_.n_up)
    r_off_ft=r_mf*np.repeat(off,RA).reshape([-1,RA])*np.exp(1j*phi_off)

 
    
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #coarse Estimation for f_off (draft)
    f_off_coarse=0
    

        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #coarse synchronisation 
    off_syc=np.exp(-1j*2*np.pi*f_off_coarse*np.arange(r_mf.shape[0])*T/filter_.n_up)
    r_syc_coarse=r_off_ft*np.repeat(off_syc,RA).reshape([-1,RA])
    
      #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Sampling Clock Synchronization
    
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Joint Estimation for f_off,n_start and CSI 
    j=joint_estimation()
    j.function(r_syc_coarse,N,N_known,T,ibits_known,symbols_known,SA,RA)
    f_est=j.f_est
    n_est=j.n_est
    H_est=j.H_est

        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Synchronisation
    off_syc=np.exp(-1j*2*np.pi*f_est*(np.arange(r_mf.shape[0]))*T)
    r_f_syc=r_syc_coarse*np.repeat(off_syc,RA).reshape([-1,RA])
    
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #Detection and BER Test 
    yi,yd=receiver_.detector(r_f_syc,H_est)
    #yi,yd=rr.detector(H_est,SNR_dB,mpsk_map,r_ft_syc)
    BERi,BERd=test.BER(yi,yd,Ni,Nd,ibits,dbits)
    
    
    #
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    #
    #if BERi<=threshold and BERd<=threshold and n_start==n_est:
    if n_start==n_est:
        count=1
    else:
        count=0
        
    
        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    return count    
Example #16
0
class Link(selectable.Selectable, goocanvas.Polyline):
    class Controller(selectable.Controller):
        def enter(self, item, target):
            self._view.hilight()

        def leave(self, item, target):
            self._view.unhilight()

        def set_pos(self, item, target):
            pass

    def __init__(self, src, sink, selection):
        goocanvas.Polyline.__init__(self)
        selectable.Selectable.__init__(self, selection)
        self.src = src
        self.sink = sink
        self.srcpad = src.pad
        self.sinkpad = sink.pad
        self.props.stroke_color = "black"
        self.props.line_width = 2.0
        self.props.end_arrow = True
        self.checkVisibility()
        self.link()

    def link(self):
        self.src.unblock()
        self.sink.unblock()
        try:
            self.srcpad.link(self.sinkpad)
        except gst.LinkError:
            self.src.block()
            self.sink.block()

    def unlink(self):
        pass

    def select(self):
        self.props.stroke_color = "red"

    def deselect(self):
        self.props.stroke_color = "black"

    def delete(self):
        if not (self.srclinked or self.sinklinked):
            self._unlink()

    def _unlink(self):
        self.src.unlink(self)
        self.sink.unlink(self)
        self.src = None
        self.sink = None
        self.remove()

    def set_pos(self, pos):
        pass

    def hilight(self):
        self.props.line_width = 3.0

    def unhilight(self):
        self.props.line_width = 2.0

    def updateEndpoints(self):
        if self.src and self.sink:
            b = self.src.socket.get_bounds()
            start = (b.x1 + b.x2) / 2, (b.y1 + b.y2) / 2
            b = self.sink.socket.get_bounds()
            end = (b.x1 + b.x2) / 2, (b.y1 + b.y2) / 2
            self.props.points = goocanvas.Points([start, end])

    def checkVisibility(self):
        if self.srclinked and self.sinklinked:
            self.props.line_dash = goocanvas.LineDash([])
            self.updateEndpoints()
        else:
            self.props.line_dash = goocanvas.LineDash([3.0, 3.0])
        return False

    srcpad = receiver()
    sinkpad = receiver()
    srclinked = False
    sinklinked = False

    @handler(srcpad, "linked")
    def srcLinked(self, pad, target):
        self.srclinked = True
        self.checkVisibility()

    @handler(srcpad, "unlinked")
    def srcUnlinked(self, pad, target):
        self.srclinked = False
        gobject.idle_add(self.checkVisibility)

    @handler(sinkpad, "linked")
    def sinkLinked(self, pad, target):
        self.sinklinked = True
        gobject.idle_add(self.checkVisibility)

    @handler(sinkpad, "unlinked")
    def sinkUnlinked(self, pad, target):
        self.sinklinked = False
        gobject.idle_add(self.checkVisibility)
Example #17
0
class BinView(goocanvas.Canvas):

    widgets = None
    selected = None

    def __init__(self, pipeline, m):
        goocanvas.Canvas.__init__(self)
        self.props.automatic_bounds = True
        self.pipeline = pipeline
        self.widgets = {}
        self.drag_dest_set(gtk.DEST_DEFAULT_ALL, target, gtk.gdk.ACTION_COPY)
        self.connect("drag_data_received", self.__dragDataReceived)
        self.selection = selectable.Selection()
        self.__setupActions(m)

    def __setupActions(self, m):
        actiongroup = gtk.ActionGroup("binview")
        actiongroup.add_actions((
            ("AddFile", gtk.STOCK_ADD, _("Add Filesrc"), None, None,
             self.addFileAction),
            ("Delete", gtk.STOCK_DELETE, None, None, None,
             self.deleteSelectionAction),
            ("Bin", None, _("_Bin")),
        ))
        m.insert_action_group(actiongroup)
        m.add_ui_from_string(ui)

    def __dragDataReceived(self, w, context, x, y, selection, targetType,
                           time):
        if targetType == TYPE_GST_ELEMENT:
            elements = selection.data.split('\n')
            for factory in elements:
                element = gst.element_factory_make(factory)
                self.addElement(element, x, y)
                x += 10
                y += 10
        elif targetType == TYPE_TEXT_PLAIN:
            incoming = [uri.strip() for uri in selection.data.split('\n')]
            for uri in incoming:
                if isfile(uri):
                    self.addFile(uri, *self.convert_from_pixels(x, y))
                    x += 10
                    y += 10

    def addFileAction(self, action):
        def respondCb(dialog, response):
            if response == gtk.RESPONSE_OK:
                x, y = 100, 100
                for file in dialog.get_uris():
                    self.addFile(file, x, y)
                    x += 10
                    y += 10
            dialog.destroy()

        chooser = gtk.FileChooserDialog(_("Add Filesrc to Pipeline"), None,
                                        gtk.FILE_CHOOSER_ACTION_OPEN,
                                        (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE,
                                         gtk.STOCK_ADD, gtk.RESPONSE_OK))

        chooser.set_default_response(gtk.RESPONSE_OK)
        chooser.set_select_multiple(True)
        chooser.set_modal(False)
        # TODO: remember last folder and set path to that
        chooser.set_current_folder(os.path.expanduser("~"))
        chooser.connect('response', respondCb)
        chooser.show()

    def addFile(self, uri, x=100, y=100):
        element = gst.element_factory_make("filesrc", os.path.basename(uri))
        element.props.location = gst.uri_get_location(uri)
        self.addElement(element, x, y)

    def addElement(self, element, x, y):
        element.set_data("pos", (x, y))
        self.pipeline.add(element)

    def deleteSelectionAction(self, action):
        self.selection.delete()

    pipeline = receiver()

    @handler(pipeline, "element-added")
    def element_added(self, pipeline, element):
        v = ElementView(element, self.selection)
        self.widgets[element] = v
        x, y = element.get_data("pos")
        v.set_simple_transform(x, y, 1.0, 0)
        self.get_root_item().add_child(v)

    @handler(pipeline, "element-removed")
    def element_removed(self, pipeline, element):
        if element in self.widgets:
            widget = self.widgets[element]
            del self.widgets[element]
            widget.remove()
            widget.removeFromSelection()
Example #18
0
def main():
	parser = argparse.ArgumentParser(
		description = 'rqsh send and receive untility tool')

	#------------Main Args------------------
	parser.add_argument('-q', nargs = '+', help = 'quickly send a command and wait for result -> Unreliable')
	parser.add_argument('-s', nargs = '+', help = 'send data, do not wait for response')
	parser.add_argument('-l', action = 'store_true', help = 'run in listen mode, dump incoming data to cmd')
	parser.add_argument('-x', action = 'store_true', help = 'run in execute mode, ')
	parser.add_argument('-i', nargs='?', help="network interface, REQUIRED")

	#-------------Debugging Args-----------------------
	parser.add_argument('-d', help="debug mode", action='store_true')
	parser.add_argument('-p', nargs = '?', type = int, help = 'define non-default port #', default = 5005)
	parser.add_argument('-m', nargs = '?', type = str, help = 'define multicast group address', default = "224.3.29.71")
	#TODO self test mode

	#--------------File Transfer Args------------------
	parser.add_argument('-g', nargs='+', help = 'get a file from a destination running -x mode',
		metavar = 'address:file [local_dest]')

	parser.add_argument('-t', nargs='+', help = 'transmit (send) a file to a destination running -x mode',
		metavar = 'local_file address[:dest]')

	#--------tuning/performance args----------
	parser.add_argument('-lr', nargs = '?', type = float,
		default = 0.0, help = 'expected lose rate, will calculate the N for encoder')

	#--------------Main-----------------------
	args = None
	args = parser.parse_args(sys.argv[1:] if args is None else args)

	interfaces = netifaces.interfaces()
	my_ip = None
	for i in interfaces:
		if i == args.i:
			my_ip = netifaces.ifaddresses(i).get(netifaces.AF_INET)[0]['addr']
	if args.d:
		print my_ip
	if my_ip == None:
		print 'invalid network interface'
		exit(1)

	sndr = sender(loss = args.lr, mc_group = args.m, port = args.p, debug = args.d, ip=my_ip)

	#----------------decision tree---------------
	data_header = 0
	host_ip = None
	host_file  = None
	local_file = None
	#Data header types
	#0 = plaintext dump/command response
	#1 = command
	#2 = request file
	#3 = file dump/file response

	if args.q: #quicksend single command
		data_header = 1
		recv = receiver(port = args.p, exe = False, mc_group = args.m, debug = args.d)
		recv.blacklist(my_ip)
		t_id = threading.Thread(target = recv.start, kwargs = {'max_messages':1})
		t_id.daemon = True
		t_id.start()

	elif args.l: #launch daemon in listen mode
		recv = receiver(port = args.p, exe = False, mc_group = args.m, debug = args.d)
		recv.start(max_messages = -1)
	
	elif args.x: #launch daemon in exe mode
		recv = receiver(port = args.p, exe = True, mc_group = args.m, debug = args.d, sndr=sndr)
		recv.blacklist(my_ip)
		recv.start(max_messages = -1)

	elif args.g: #get file
		#also TODO build a file only mode
		
		recv = receiver(port = args.p, exe = True, mc_group = args.m, debug = args.d)
		recv.blacklist(my_ip)
		t_id = threading.Thread(target = recv.start, kwargs = {'max_messages':1})
		t_id.daemon = True
		t_id.start()

		data_header = 2
		if len(args.g) < 1:
			print 'give arguments to -g please!'
			exit(1)
		try:
			host_ip = args.g[0].split(':')[0]
			host_file = args.g[0].split(':')[1]
			if len(args.g) > 1:
				local_file = args.g[1]
			else:
				local_file = os.path.join(os.getcwd(), os.path.split(host_file)[1])
		except:
			print 'invalid syntax to -g'
			exit(1)

	elif args.t: #transmit file
		data_header = 3
		if len(args.t) < 1:
			print 'give arguments to -t please!'
			exit(1)
		try:
			local_file = args.t[0]
			host_ip = args.t[1].split(':')[0]
			if len(args.t[1].split(':')) > 1:
				host_file = argt.g[1].split(':')[1]
			else:
				os.path.split(local_file)[1]
		except:
			print 'invalid syntax to -t'
			exit(1)
	
	if args.q or args.s or args.g or args.t:
		#Data header types
		#0 = plaintext dump/command response
		#1 = command
		#2 = request file
		#3 = file dump/file response

		#data header syntax
		# 0: [header (this number)]\d[text size]\d[text]
		# 1: [header]\d[command]
		# 2: [header]\d[host_ip]\d[host_file]\d[local_file]
		# 3: [header]\d[dest_file aka host_file]\d[payload_size]\d[payload]
	
		#TODO find a better delimeter
		delim = '#' #delimiter for rqsh syntax 
		
		#this front-end only needs to deal with 'sending' types, 1,2,3
		data = str(data_header) + delim

		if data_header == 2:
			data += host_ip + delim + host_file + delim + local_file
		
		elif data_header == 3:
			file = open(local_file, 'r')
			payload = file.read()
			file.close()
		
			data += host_file + delim + payload_size + delim + payload

		elif data_header == 1:
			try: 
				for i in args.q:
					data += i + ' '
			except: pass

			try:
				for j in args.s:
					data += j + ' '
				data = data[:-1]
			except: pass

	sndr.send(data)
	
	if args.q or args.g:
		input() #wait for all threads to finish
Example #19
0
def sm(SNR_dB):
    fc = 1 * 1e9  # LTE
    offset_range = 40 * 1e-6
    #print("f_max=",fc*offset_range)
    #number of sender antennas
    SA = 2
    #number of receiver antennas
    RA = 1
    #data bits modulation order (BPSK)
    M = 2
    mpsk_map = np.array([1, -1])
    #mpsk_map =1/np.sqrt(2) * np.array([1+1j, -1+1j, 1-1j, -1-1j], dtype=complex)
    #mpsk_map =1/np.sqrt(2) * np.array([1, 1j, -1j, -1], dtype=complex)
    #number of symbols per Frames
    Ns = 2
    #number of Frames
    Nf = 100
    #number of symbols
    N = Ns * Nf
    #number of training symbols
    N_known = 64 * 4
    N = N_known * 2
    k = 8
    #symbol duration
    T = 1 * 1e-6
    #print("f_vernachlaessigbar=",0.01/N/T)
    #T=1
    #Frequency offset
    f_off = np.random.randint(-fc * offset_range, fc * offset_range) * 0.1
    #f_off=np.random.randint(-0.01/T,0.01/T)
    #N_known=int(1//T//f_off/4)
    #N=10*N_known
    #    print("f_off=",f_off)
    #symbol offset
    #n_off=2
    #phase offset
    phi_off = np.random.random() * 2 * np.pi
    phi_off = 0
    #number of Index bits per symbol
    Ni = int(np.log2(SA))
    #number of Data bits per symbol
    Nd = int(np.log2(M))
    #Upsampling rate
    n_up = 2
    # RRC Filter (L=K * sps + 1, sps, t_symbol, rho)
    K = 20
    filter_ = rrcfilter(K * n_up + 1, n_up, 1, 0.5)
    g = filter_.ir()
    #Plot.spectrum(g,"g")
    #Channel matrix
    H = 1 / np.sqrt(2) * ((np.random.randn(RA, SA)) + 1j / np.sqrt(2) *
                          (np.random.randn(RA, SA)))
    #H=np.array([[0.5,0.1]])
    H = np.ones([RA, SA])
    MSE_n = []
    MSE_f = []
    #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    tries = 200
    for i in range(0, tries):
        #sender
        sender_ = sender(N, N_known, Ni, Nd, mpsk_map, filter_, k)
        #        print("n_start=",sender_.n_start,sender_.n_start*n_up,(sender_.n_start+N_known)*n_up)
        #training symbols(/bits) which may be shared with receiver, when a data-aided method is used
        symbols_known = sender_.symbols_known
        #symbols_known=ss
        symbols = sender_.symbols
        ibits = sender_.ibits
        #    dbits=sender_.dbits
        ibits_known = sender_.ibits_known
        index = bitarray2dec(ibits_known)
        # dbits_known=sender_.dbits_known

        s_BB = sender_.bbsignal()
        group_delay = (g.size - 1) // 2

        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        #with Filter
        receiver_ = receiver(H, sender_, SNR_dB, filter_, mpsk_map)

        r = receiver_.r

        #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

        #with offsets
        #Frequency offset before MF(+filter length)
        #!!!T anpassen!!!
        off = np.exp(1j * 2 * np.pi * f_off *
                     np.arange(sender_.bbsignal().size) * T / n_up)
        r = receiver_.r * np.repeat(off, RA).reshape([-1, RA])
        r_mf = receiver_.Matched_Filter(
            r.real) + 1j * receiver_.Matched_Filter(r.imag)
        r_mf = r_mf[2 * group_delay:-2 * group_delay]

        #%%%%%%%%%%%%%%%%%
        #Modified Delay Correlation
        f_est, n_est, M = DC(r_mf, T, symbols_known, n_up, N_known, k)

#        print("n_est=",n_est)
##
#        print("f_est=",f_est)

#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#Frequency synchronisation
#        y=r_mf*np.exp(-1j*2*np.pi*f_off*(np.arange(r_mf.shape[0])+2*group_delay)*T/n_up).reshape([-1,RA])

#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##MSE
#    MSE_n.append((sender_.n_start-n_est)**2)
#    MSE_f.append((f_off-f_est)**2)
    MSE_n.append((sender_.n_start - n_est))
    MSE_f.append((f_off - f_est) / f_off)

    return np.average(MSE_n), np.average(MSE_f)
Example #20
0
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
# 
#   If you have a applicable agreement with GreenSocs Ltd, the terms of that
#   agreement prevail.
# 
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
# 
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
#   02110-1301  USA 
# 
# ENDLICENSETEXT

import gs_sa as gs

from sender import sender
from receiver import receiver


# Describe the system
sender1 = sender()
receiver1 = receiver()

# Start!
gs.start()
Example #21
0
class ElementView(selectable.Selectable, goocanvas.Group):

    __NORMAL__ = 0x709fb899
    __SELECTED__ = 0xa6cee3AA

    padding = 2

    def __init__(self, element, selection):
        goocanvas.Group.__init__(self)
        selectable.Selectable.__init__(self, selection)
        self.register_instance(self)
        self.element = element
        self.bg = goocanvas.Rect(
            parent = self,
            fill_color = "grey",
            radius_x = 5,
            radius_y = 5)

        self.text = goocanvas.Text(
            parent = self,
            font = "Sans 8 Bold",
            text = element.get_name())

        self.__sourcePads = {}
        self.__sinkPads = {}
        self.__links = {}

        for pad in element.get_pad_template_list():
            if pad.presence != gst.PAD_ALWAYS:
                self.__addPad(pad)

        for pad in element.pads():
            self.__addPad(pad)

## public api

    def joinLink(self, pad, linkObj):
        self.__links[pad] = pad.direction()
    
    def breakLink(self, pad):
        del self.__links[pad]

    def set_simple_transform(self, x, y, scale, rotation):
        goocanvas.Group.set_simple_transform(self, x, y, scale, rotation)
        for pad in self.__sourcePads.values():
            pad.updateLinks()
        for pad in self.__sinkPads.values():
            pad.updateLinks()

## Selectable Methods methods

    def select(self):
        self.bg.props.stroke_color = "red"

    def deselect(self):
        self.bg.props.stroke_color = "black"

    def delete(self):
        p = self.element.get_parent()
        if p:
            p.remove(self.element)

    element = receiver()

## element signal handlers

    @handler(element, "pad-added")
    def __padAdded(self, element, pad):
        # this handler is called in pipeline context, and we need to add the
        # pad in the UI context
        print pad.get_name(), pad.get_direction(), pad
        gobject.idle_add(self.__addPad, pad)

    @handler(element, "pad-removed")
    def __padRemoved(self, element, pad):
        print pad.get_name(), pad.get_direction(), pad
        # this handler is called in pipeline context, and we need to add the
        # pad in the UI context
        gobject.idle_add(self.__removePad, pad)

## implementation functions

    def __sizepads(self, pads):
        width = 0
        height = 0
        for pad, widget in pads.iteritems():
            height += widget.height
            width = max(width, widget.width)
        return width, height

    def __pospads(self, pads, x, y):
        for widget in pads.itervalues():
            widget.set_simple_transform(x, y, 1.0, 0)
            y += widget.height

    def __update(self):
        twidth, theight = utils.get_text_dimensions(self.text)
        lwidth, lheight = self.__sizepads(self.__sinkPads)
        rwidth, rheight = self.__sizepads(self.__sourcePads)
        width = max(twidth, lwidth + rwidth)
        height = theight + max(lheight, rheight) + 5
        self.bg.props.width = width
        self.bg.props.height = height
        self.__pospads(self.__sinkPads, 0, theight)
        self.__pospads(self.__sourcePads, width - rwidth, theight)

    def __addPad(self, pad):
        child = make_pad_view(pad, self, self.selection)
        if child.direction() == gst.PAD_SRC:
            self.__sourcePads[pad] = child
        else:
            self.__sinkPads[pad] = child
        self.add_child(child)
        self.__update()

    def __removePad(self, pad):
        if pad.get_direction() == gst.PAD_SRC:
            widget = self.__sourcePads[pad]
            del self.__sourcePads[pad]
        else:
            widget = self.__sinkPads[pad]
            del self.__sinkPads[pad]
        widget.unlinkAll()
        widget.remove()
        self.__update()

## class methods

    __instances__ = []

    @classmethod
    def register_instance(cls, instance):
        cls.__instances__.append(weakref.proxy(instance,
            cls.unregister_instance))

    @classmethod
    def unregister_instance(cls, proxy):
        self.__instances__.remove(proxy)

    @classmethod
    def set_all_to_null(cls):
        for instance in cls.__instances__:
            instance.element.set_state(gst.STATE_NULL)
Example #22
0
	def __init__(self, ServerIP, ServerPort):
		self.ServerAddr = (ServerIP, ServerPort)
		self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		self.sock.connect(self.ServerAddr)
		self.Receiver = receiver.receiver(self.sock)
		self.Sender = sender.sender(self.sock)
Example #23
0
 def __init__(self, cypher_alg):
     super().__init__(cypher_alg)
     self.receiver = receiver(cypher_alg)