Module rpps.scram.scrambler
Modulation parent classes
Classes
class Additive-
Expand source code
class Additive(Scram): @staticmethod def load(name, obj): impl = type(name, (Additive,), dict(name=name, poly=obj["poly"]))() return implScram Pipe
Ancestors
Inherited members
class Feedthrough (scram_lfsr: LFSR,
descram_lfsr: LFSR)-
Expand source code
class Feedthrough(Scram): """Feedthrough scrambler""" def __init__(self, scram_lfsr: lfsr.LFSR, descram_lfsr: lfsr.LFSR): super().__init__() self.s_lfsr = scram_lfsr self.d_lfsr = descram_lfsr def __str__(self): return f"{type(self).__name__}:{self.s_lfsr}" def reset(self): """Reset LFSR""" self.s_lfsr.reset() self.d_lfsr.reset() def scram(self, dobj: dobject.BitObject): scrambled_data = np.empty_like(dobj.data, dtype=bool) for i, bit in enumerate(dobj.data): scrambled_data[i] = self.s_lfsr.get_bit() ^ bit return dobject.ScramData(scrambled_data) def descram(self, dobj: dobject.BitObject): descrambled_data = np.empty_like(dobj.data, dtype=bool) for i, bit in enumerate(dobj.data): descrambled_data[i] = self.d_lfsr.get_bit() ^ bit return dobject.BitObject(descrambled_data) @staticmethod def load(name, obj): i_lfsr = getattr(lfsr, obj["type"]) i_seed = np.array(obj["seed"], dtype=bool) i_poly = np.array(obj["poly"], dtype=int) i_s_lfsr = i_lfsr(np.copy(i_seed), np.copy(i_poly)) i_d_lfsr = i_lfsr(np.copy(i_seed), np.copy(i_poly)) impl = type(name, (Feedthrough,), dict())(i_s_lfsr, i_d_lfsr) return implFeedthrough scrambler
Ancestors
Methods
def reset(self)-
Expand source code
def reset(self): """Reset LFSR""" self.s_lfsr.reset() self.d_lfsr.reset()Reset LFSR
Inherited members
class Scram-
Expand source code
class Scram(base.rpps.Pipe): """Scram Pipe""" def __init__(self): self.log = ( Logger().Child("Coding", Level.WARN).Child(type(self).__name__, Level.WARN) ) def __str__(self): return f"{type(self).__name__}" @abstractmethod def scram(self, dobj: dobject.BitObject) -> dobject.ScramData: """Encode dobject using specified scram""" @abstractmethod def descram(self, dobj: dobject.BitObject) -> dobject.BitObject: """Decode dobject using specified scram""" @staticmethod @abstractmethod def load(name: str, obj: dict): """Load modulation from json""" def __rmul__(self, other): return self.scram(dobject.ensure_bit(other)) def __rtruediv__(self, other): return self.descram(dobject.ensure_bit(other))Scram Pipe
Ancestors
- Pipe
- abc.ABC
Subclasses
Static methods
def load(name: str, obj: dict)-
Expand source code
@staticmethod @abstractmethod def load(name: str, obj: dict): """Load modulation from json"""Load modulation from json
Methods
def descram(self,
dobj: BitObject) ‑> BitObject-
Expand source code
@abstractmethod def descram(self, dobj: dobject.BitObject) -> dobject.BitObject: """Decode dobject using specified scram"""Decode dobject using specified scram
def scram(self,
dobj: BitObject) ‑> ScramData-
Expand source code
@abstractmethod def scram(self, dobj: dobject.BitObject) -> dobject.ScramData: """Encode dobject using specified scram"""Encode dobject using specified scram