DiffractionExperiment: Refactor IPv4 handling (now it is just base addr for detector IP)

This commit is contained in:
2023-04-15 12:29:14 +02:00
parent 32baaef1e4
commit feb5fcacf3
8 changed files with 104 additions and 193 deletions
+7 -51
View File
@@ -178,28 +178,10 @@ TEST_CASE("DiffractionExperiment_IPv4Address","[DiffractionExperiment]") {
uint32_t ndatastreams = 3;
x.DataStreams(ndatastreams);
REQUIRE(x.GetDestIPv4Address(0) == 0x0132010a);
REQUIRE(x.GetDestIPv4Address(1) == 0x0232010a);
REQUIRE(x.GetDestIPv4Address(2) == 0x0332010a);
REQUIRE(x.GetSrcIPv4Address(0, 4) == (0x0032010a | ((1 * 32 + 4) << 24)));
REQUIRE(x.GetSrcIPv4Address(2, 23) == (0x0032010a | ((3 * 32 + 23) << 24)));
REQUIRE_THROWS(x.GetDestIPv4Address(3));
REQUIRE_THROWS(x.GetSrcIPv4Address(0, 24));
REQUIRE_THROWS(x.GetSrcIPv4Address(3, 5));
REQUIRE_THROWS(x.IPv4Subnet("456"));
REQUIRE_THROWS(x.IPv4Subnet("257.1.1.1"));
REQUIRE_THROWS(x.IPv4Subnet("257.1.1.1111"));
REQUIRE_THROWS(x.IPv4Subnet("64.1.124.34"));
REQUIRE_THROWS(x.IPv4Subnet("64.1.124.129"));
REQUIRE_NOTHROW(x.IPv4Subnet("64.1.124.0"));
REQUIRE(x.GetDestIPv4Address(0) == 0x017c0140u);
REQUIRE(x.GetDestIPv4Address(1) == 0x027c0140u);
REQUIRE(x.GetDestIPv4Address(2) == 0x037c0140u);
REQUIRE(x.GetSrcIPv4Address(2, 12) == 0x007c0140u + ((3 * 32 + 12) << 24));
REQUIRE(IPv4AddressToStr(x.GetDestIPv4Address(2)) == "64.1.124.3");
REQUIRE_NOTHROW(x.IPv4BaseAddr("64.1.124.1"));
REQUIRE(x.GetSrcIPv4Address(0, 0) == IPv4AddressFromStr("64.1.124.1"));
REQUIRE(x.GetSrcIPv4Address(0, 6) == IPv4AddressFromStr("64.1.124.7"));
REQUIRE(x.GetSrcIPv4Address(2, 6) == IPv4AddressFromStr("64.1.124.23"));
}
TEST_CASE("IPv4AddressToStr","") {
@@ -226,32 +208,6 @@ TEST_CASE("MacAddressFromStr","") {
REQUIRE_THROWS(MacAddressFromStr("xy:22:33:44:55"));
}
TEST_CASE("DiffractionExperiment_UDPAddress","[DiffractionExperiment]") {
DiffractionExperiment x(DetectorGeometry(12));
x.Mode(DetectorMode::Conversion).DataStreams(3);
REQUIRE(x.GetDestUDPPort(0, 0) % 64 == 0);
REQUIRE(x.GetDestUDPPort(0, 2) % 64 == 0);
REQUIRE(x.GetDestUDPPort(0, 4) % 64 == 0);
REQUIRE_THROWS(x.GetDestUDPPort(0, 8));
REQUIRE(x.GetDestUDPPort(2, 0) % 64 == 2);
REQUIRE(x.GetDestUDPPort(2, 2) % 64 == 2);
REQUIRE(x.GetDestUDPPort(2, 4) % 64 == 2);
REQUIRE_THROWS(x.GetDestUDPPort(3, 0));
REQUIRE_THROWS(x.BaseUDPPort(-1));
REQUIRE_THROWS(x.BaseUDPPort(65536));
REQUIRE_THROWS(x.BaseUDPPort(64*93+1));
REQUIRE_NOTHROW(x.BaseUDPPort(64*93));
REQUIRE(x.GetDestUDPPort(0, 0) == 64*93);
REQUIRE(x.GetDestUDPPort(2, 1) == 64*93 + 2);
}
TEST_CASE("DiffractionExperiment_DataStreams","[DiffractionExperiment]") {
DiffractionExperiment x(DetectorGeometry(18)); // 9M
@@ -552,7 +508,7 @@ TEST_CASE("DiffractionExperiment_ExportProtobuf","[DiffractionExperiment]") {
.PhotonEnergy_keV(16.0).BeamX_pxl(566).BeamY_pxl(1234).DetectorDistance_mm(145)
.FrameTime(std::chrono::microseconds(765), std::chrono::microseconds(10))
.PedestalG1G2FrameTime(std::chrono::milliseconds(10))
.IPv4Subnet("2.2.2.0").BaseUDPPort(64 * 76).MaskModuleEdges(true);
.IPv4BaseAddr("2.2.2.2").MaskModuleEdges(true);
JFJochProtoBuf::JungfraujochSettings settings_in_protobuf = x;
REQUIRE_NOTHROW(y.Import(settings_in_protobuf));
@@ -573,8 +529,8 @@ TEST_CASE("DiffractionExperiment_ExportProtobuf","[DiffractionExperiment]") {
REQUIRE(x.GetFrameNum() == y.GetFrameNum());
REQUIRE(x.GetImageTime() == y.GetImageTime());
REQUIRE(y.GetFrameCountTime().count() == x.GetFrameCountTime().count());
REQUIRE(y.GetDestUDPPort(0,0) == 64*76);
REQUIRE(y.GetDestIPv4Address(0) == 0x01020202);
REQUIRE(y.GetSrcIPv4Address(0, 0) == 0x02020202);
REQUIRE(y.GetPedestalG0Frames() == x.GetPedestalG0Frames());
REQUIRE(y.GetMaskModuleEdges() == x.GetMaskModuleEdges());
REQUIRE(y.GetMaskChipEdges() == x.GetMaskChipEdges());