def datagram_received(self, data: bytes, addr: Tuple[str, int]) -> None:
     try:
         self.log_debug(f"Hytera incoming {data.hex()}")
         self.queue_incoming.put_nowait(parse_hytera_data(data))
     except EOFError as e:
         self.log_error(f"Cannot parse IPSC DMR packet {hexlify(data)} from {addr}")
         self.log_exception(e)
     except ValidationNotEqualError as e:
         self.log_error(f"Cannot parse IPSC DMR packet {hexlify(data)} from {addr}")
         self.log_error("Parser for Hytera data failed to match the packet data")
         self.log_exception(e)
async def test_mmdv_to_hytera():
    hytera_incoming: Queue = Queue()
    hytera_outgoing: Queue = Queue()
    mmdvm_incoming: Queue = Queue()
    mmdvm_outgoing: Queue = Queue()
    settings: BridgeSettings = BridgeSettings(filedata=BridgeSettings.MINIMAL_SETTINGS)

    translator: HyteraMmdvmTranslator = HyteraMmdvmTranslator(
        settings=settings,
        hytera_outgoing=hytera_outgoing,
        hytera_incoming=hytera_incoming,
        mmdvm_outgoing=mmdvm_outgoing,
        mmdvm_incoming=mmdvm_incoming,
    )

    asyncio.create_task(translator.translate_from_mmdvm())
    asyncio.create_task(translator.translate_from_hytera())

    # testcase 1
    hytera_input: bytes = unhexlify(
        "5a5a5a5a072c000041000501010000001111cccc111100004013fc9655e07d83c44095585"
        "adee19ae61e8abd2d8e93ce71a5daf4340322cfaf5600f955e001006f00000009382300"
    )
    hytera_parsed: KaitaiStruct = parse_hytera_data(hytera_input)
    mmdvm_output: bytes = unhexlify(
        "444d52440123380900006f00000000050000000096fce055837d40c45895de5a9ae11ee6bd"
        "8a8e2dce93a571f4da0334cf2256aff9"
    )

    await hytera_incoming.put(hytera_parsed)
    mmdvm_translated: bytes = await mmdvm_outgoing.get()

    assert mmdvm_output == mmdvm_translated

    # testcase 2
    mmdvm_input: bytes = unhexlify("")
예제 #3
0
 def datagram_received(self, data: bytes, addr: Tuple[str, int]) -> None:
     try:
         self.queue_incoming.put_nowait(parse_hytera_data(data))
     except EOFError:
         self.log(
             f"Cannot parse IPSC DMR packet {hexlify(data)} from {addr}")
#!/usr/bin/env python3
import os
import sys

try:
    import hytera_homebrew_bridge
except ImportError:
    sys.path.append(
        os.path.dirname(
            os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))

from hytera_homebrew_bridge.tests.prettyprint import prettyprint
from hytera_homebrew_bridge.lib.utils import parse_hytera_data

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("use as %s <hexstring>" % sys.argv[0])
        exit(0)

    packet = parse_hytera_data(bytes.fromhex(sys.argv[1]))
    if packet:
        prettyprint(packet)
    else:
        print("Unknown Hytera packet")