def __init__(self, ring, which='specific', name="", time_tag=None, other_obj=None, guarantee=True): SequenceBase.__init__(self, ring) self._ring = ring if which == 'specific': self.obj = _get(_bf.RingSequenceOpen(ring=ring.obj, name=name, guarantee=guarantee), retarg=0) elif which == 'latest': self.obj = _get(_bf.RingSequenceOpenLatest(ring=ring.obj, guarantee=guarantee), retarg=0) elif which == 'earliest': self.obj = _get(_bf.RingSequenceOpenEarliest(ring=ring.obj, guarantee=guarantee), retarg=0) elif which == 'at': self.obj = _get(_bf.RingSequenceOpenAt(ring=ring.obj, time_tag=time_tag, guarantee=guarantee), retarg=0) #elif which == 'next': # self._check( self.lib.bfRingSequenceOpenNext(pointer(self.obj), other_obj) ) else: raise ValueError( "Invalid 'which' parameter; must be one of: 'specific', 'latest', 'earliest'" )
def __init__(self, ring, which='specific', name="", other_obj=None, guarantee=True, header_transform=None): SequenceBase.__init__(self, ring) self._ring = ring # A function for transforming the header before it's read self.header_transform = header_transform if which == 'specific': self.obj = _get(_bf.RingSequenceOpen(ring=ring.obj, name=name, guarantee=guarantee), retarg=0) elif which == 'latest': self.obj = _get(_bf.RingSequenceOpenLatest(ring=ring.obj, guarantee=guarantee), retarg=0) elif which == 'earliest': self.obj = _get(_bf.RingSequenceOpenEarliest(ring=ring.obj, guarantee=guarantee), retarg=0) else: raise ValueError("Invalid 'which' parameter; must be one of: 'specific', 'latest', 'earliest'")
def __init__(self, space='system', name=None, owner=None): self.space = space if name is None: name = 'ring_%i' % Ring.instance_count Ring.instance_count += 1 self.obj = _get(_bf.RingCreate(name=name, space=_string2space(self.space)), retarg=0) self.owner = owner self.header_transform = None # If this is non-None, then the object is wrapping a base Ring instance self.base = None
def init(self, iarray, oarray, axes=None, apply_fftshift=False): if isinstance(axes, int): axes = [axes] ndim = len(axes) if axes is not None: axes_type = ctypes.c_int * ndim axes = axes_type(*axes) self.workspace_size = _get(_bf.bfFftInit, self.obj, asarray(iarray).as_BFarray(), asarray(oarray).as_BFarray(), ndim, axes, apply_fftshift)
def init(self, iarray, oarray, axes=None): if isinstance(axes, int): axes = [axes] ndim = len(axes) if axes is not None: axes_type = ctypes.c_int*ndim axes = axes_type(*axes) self.workspace_size = _get(_bf.FftInit( self.obj, iarray=asarray(iarray).as_BFarray(), oarray=asarray(oarray).as_BFarray(), ndim=ndim, axes=axes))
def __init__(self, fmt, sock, ring, nsrc, src0, max_payload_size, buffer_ntime, slot_ntime, sequence_callback, core=None): self.obj = None if core is None: core = -1 self.obj = _get(_bf.UdpCaptureCreate(format=fmt, fd=sock.fileno(), ring=ring.obj, nsrc=nsrc, src0=src0, max_payload_size=max_payload_size, buffer_ntime=buffer_ntime, slot_ntime=slot_ntime, sequence_callback=sequence_callback, core=core), retarg=0)
def __init__(self, ring, name="", time_tag=-1, header="", nringlet=1): SequenceBase.__init__(self, ring) # TODO: Allow header to be a string, buffer, or numpy array header_size = len(header) if isinstance(header, np.ndarray): header = header.ctypes.data #print "hdr:", header_size, type(header) offset_from_head = 0 self.obj = _get(_bf.RingSequenceBegin( ring=ring.obj, name=name, time_tag=time_tag, header_size=header_size, header=header, nringlet=nringlet, offset_from_head=offset_from_head), retarg=0)
def __init__(self, ring, header, buf_nframe): SequenceBase.__init__(self, ring) self._header = header # This allows passing DataType instances instead of string types header['_tensor']['dtype'] = str(header['_tensor']['dtype']) header_str = json.dumps(header) header_size = len(header_str) gulp_nframe = header['gulp_nframe'] tensor = self.tensor # **TODO: Consider moving this into bfRingSequenceBegin self.ring.resize(gulp_nframe*tensor['frame_nbyte'], buf_nframe*tensor['frame_nbyte'], tensor['nringlet']) offset_from_head = 0 # TODO: How to allow time_tag to be optional? Probably need to plumb support through to backend. self.obj = _get(_bf.RingSequenceBegin(ring=ring.obj, name=header['name'], time_tag=header['time_tag'], header_size=header_size, header=header_str, nringlet=tensor['nringlet'], offset_from_head=offset_from_head), retarg=0)
def get_workspace_size(self, idata, odata): return _get( _bf.FdmtExecute(self.obj, asarray(idata).as_BFarray(), asarray(odata).as_BFarray(), False, 0) )
def mtu(self): return _get(_bf.bfAddressGetMTU, self.obj)
def family(self): return _get(_bf.bfAddressGetFamily, self.obj)
def writing_ended(self): return _get( _bf.bfRingWritingEnded, self.obj )
def space(self): return _space2string(_get(_bf.bfRingGetSpace, self.obj))
def _data_ptr(self): return _get(_bf.bfRingSpanGetData, self._base_obj)
def address(self): buflen = 128 buf = ctypes.create_string_buffer(buflen) return _get(_bf.AddressGetString(self.obj, buflen, buf))
def offset(self): return _get(_bf.bfRingSpanGetOffset, self._base_obj)
def nringlet(self): return _get(_bf.bfRingSpanGetNRinglet, self._base_obj)
def name(self): return _get(_bf.bfRingSequenceGetName, self._base_obj)
def name(self): return _get(_bf.bfRingGetName, self.obj)
def time_tag(self): return _get(_bf.bfRingSequenceGetTimeTag, self._base_obj)
def core(self): return _get(_bf.bfRingGetAffinity, self.obj)
def nringlet(self): return _get(_bf.bfRingSequenceGetNRinglet, self._base_obj)
def __init__(self, name): self.obj = _get(_bf.ProcLogCreate(name=name), retarg=0)
def header_size(self): return _get(_bf.bfRingSequenceGetHeaderSize, self._base_obj)
def port(self): return _get(_bf.bfAddressGetPort, self.obj)
def _header_ptr(self): return _get(_bf.bfRingSequenceGetHeader, self._base_obj)
def get_core(): return _get(_bf.bfAffinityGetCore)
def size(self): return _get(_bf.bfRingSpanGetSize, self._base_obj)
def __init__(self): self.obj = _get(_bf.FftCreate(), retarg=0)
def stride(self): return _get(_bf.bfRingSpanGetStride, self._base_obj)