|
|
|
|
@ -2026,6 +2026,58 @@ DEFAULT_DIAL_TS2: 92
|
|
|
|
|
self.assertEqual(config["SYSTEMS"]["OBP-1"]["VER"], 5)
|
|
|
|
|
self.assertEqual(scenario.capture.for_system("OBP-1"), [])
|
|
|
|
|
|
|
|
|
|
def test_openbridge_send_system_uses_configured_v4_packet_version(self):
|
|
|
|
|
config = minimal_config(())
|
|
|
|
|
add_openbridge_system(config, "OBP-1", network_id=3001)
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["VER"] = 4
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["TARGET_PORT"] = 62031
|
|
|
|
|
|
|
|
|
|
with DeterministicScenario(config=config) as scenario:
|
|
|
|
|
system = scenario.bm.systems["OBP-1"]
|
|
|
|
|
|
|
|
|
|
scenario.bm.OPENBRIDGE.send_system(system, PacketSpec(peer_id=3001).data()[:53])
|
|
|
|
|
|
|
|
|
|
packet, sockaddr = scenario.transports["OBP-1"].writes[-1]
|
|
|
|
|
|
|
|
|
|
self.assertEqual(sockaddr, ("127.0.0.1", 62031))
|
|
|
|
|
self.assertEqual(packet[:4], b"DMRE")
|
|
|
|
|
self.assertEqual(len(packet), 85)
|
|
|
|
|
self.assertEqual(packet[55], 4)
|
|
|
|
|
|
|
|
|
|
def test_openbridge_send_system_uses_configured_v5_packet_version(self):
|
|
|
|
|
config = minimal_config(())
|
|
|
|
|
add_openbridge_system(config, "OBP-1", network_id=3001)
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["VER"] = 5
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["TARGET_PORT"] = 62031
|
|
|
|
|
|
|
|
|
|
with DeterministicScenario(config=config) as scenario:
|
|
|
|
|
system = scenario.bm.systems["OBP-1"]
|
|
|
|
|
|
|
|
|
|
scenario.bm.OPENBRIDGE.send_system(system, PacketSpec(peer_id=3001).data()[:53])
|
|
|
|
|
|
|
|
|
|
packet, sockaddr = scenario.transports["OBP-1"].writes[-1]
|
|
|
|
|
|
|
|
|
|
self.assertEqual(sockaddr, ("127.0.0.1", 62031))
|
|
|
|
|
self.assertEqual(packet[:4], b"DMRE")
|
|
|
|
|
self.assertEqual(len(packet), 89)
|
|
|
|
|
self.assertEqual(packet[55], 5)
|
|
|
|
|
|
|
|
|
|
def test_openbridge_send_bcve_advertises_max_supported_version(self):
|
|
|
|
|
config = minimal_config(())
|
|
|
|
|
add_openbridge_system(config, "OBP-1", network_id=3001)
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["VER"] = 4
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["ENHANCED_OBP"] = True
|
|
|
|
|
config["SYSTEMS"]["OBP-1"]["TARGET_PORT"] = 62031
|
|
|
|
|
|
|
|
|
|
with DeterministicScenario(config=config) as scenario:
|
|
|
|
|
scenario.bm.systems["OBP-1"].send_bcve()
|
|
|
|
|
|
|
|
|
|
packet, sockaddr = scenario.transports["OBP-1"].writes[-1]
|
|
|
|
|
|
|
|
|
|
self.assertEqual(sockaddr, ("127.0.0.1", 62031))
|
|
|
|
|
self.assertEqual(packet[:4], b"BCVE")
|
|
|
|
|
self.assertEqual(packet[4], 5)
|
|
|
|
|
|
|
|
|
|
def test_hbp_master_parser_discards_truncated_dmrd_from_connected_peer(self):
|
|
|
|
|
config = minimal_config(("MASTER-A",))
|
|
|
|
|
|
|
|
|
|
|