|
@@ -76,7 +76,8 @@ TEST(CipConnectionObject, StateInvalid) {
|
|
|
|
|
|
|
|
TEST(CipConnectionObject, InstanceTypeIExplicitMessaging) {
|
|
TEST(CipConnectionObject, InstanceTypeIExplicitMessaging) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
- connection_object.instance_type = kConnectionObjectInstanceTypeExplicitMessaging;
|
|
|
|
|
|
|
+ connection_object.instance_type =
|
|
|
|
|
+ kConnectionObjectInstanceTypeExplicitMessaging;
|
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
|
&connection_object);
|
|
&connection_object);
|
|
|
CHECK_EQUAL(0, value);
|
|
CHECK_EQUAL(0, value);
|
|
@@ -86,15 +87,16 @@ TEST(CipConnectionObject, InstanceTypeIO) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeIO;
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeIO;
|
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
|
- &connection_object);
|
|
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(1, value);
|
|
CHECK_EQUAL(1, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST(CipConnectionObject, InstanceTypeIOExclusiveOwner) {
|
|
TEST(CipConnectionObject, InstanceTypeIOExclusiveOwner) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
- connection_object.instance_type = kConnectionObjectInstanceTypeIOExclusiveOwner;
|
|
|
|
|
|
|
+ connection_object.instance_type =
|
|
|
|
|
+ kConnectionObjectInstanceTypeIOExclusiveOwner;
|
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
|
- &connection_object);
|
|
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(1, value);
|
|
CHECK_EQUAL(1, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -102,7 +104,7 @@ TEST(CipConnectionObject, InstanceTypeIOInputOnly) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeIOInputOnly;
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeIOInputOnly;
|
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
|
- &connection_object);
|
|
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(1, value);
|
|
CHECK_EQUAL(1, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -110,7 +112,7 @@ TEST(CipConnectionObject, InstanceTypeIOListenOnly) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeIOListenOnly;
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeIOListenOnly;
|
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
|
- &connection_object);
|
|
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(1, value);
|
|
CHECK_EQUAL(1, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -118,7 +120,7 @@ TEST(CipConnectionObject, InstanceTypeCipBridged) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeCipBridged;
|
|
connection_object.instance_type = kConnectionObjectInstanceTypeCipBridged;
|
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
CipUsint value = ConnectionObjectGetInstanceTypeForAttribute(
|
|
|
- &connection_object);
|
|
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(2, value);
|
|
CHECK_EQUAL(2, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -256,76 +258,102 @@ TEST(CipConnectionObject, ExpectedPacketRateZero) {
|
|
|
|
|
|
|
|
TEST(CipConnectionObject, ParseConnectionData) {
|
|
TEST(CipConnectionObject, ParseConnectionData) {
|
|
|
CipConnectionObject connection_object = { 0 };
|
|
CipConnectionObject connection_object = { 0 };
|
|
|
- const CipOctet message[] = "\x06\x28\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\x18\x00\x78\x56" \
|
|
|
|
|
-"\x34\x12\x00\x00\x00\x00\xe0\x93\x04\x00\x02\x40\xa0\x86\x01\x00" \
|
|
|
|
|
-"\x22\x20\x01\x04\x20\x04\x24\x97\x2c\x98\x2c\x64";
|
|
|
|
|
|
|
+ const CipOctet message[] =
|
|
|
|
|
+ "\x06\x28\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\x18\x00\x78\x56" \
|
|
|
|
|
+ "\x34\x12\x00\x00\x00\x00\xe0\x93\x04\x00\x02\x40\xa0\x86\x01\x00" \
|
|
|
|
|
+ "\x22\x20\x01\x04\x20\x04\x24\x97\x2c\x98\x2c\x64";
|
|
|
|
|
|
|
|
- const CipOctet *message_runner = (const CipOctet*)message;
|
|
|
|
|
|
|
+ const CipOctet *message_runner = (const CipOctet *)message;
|
|
|
|
|
|
|
|
ConnectionObjectInitializeFromMessage(&message_runner, &connection_object);
|
|
ConnectionObjectInitializeFromMessage(&message_runner, &connection_object);
|
|
|
- CipUdint o_to_t_network_connection_id = ConnectionObjectGetCipConsumedConnectionID(&connection_object);
|
|
|
|
|
|
|
+ CipUdint o_to_t_network_connection_id =
|
|
|
|
|
+ ConnectionObjectGetCipConsumedConnectionID(&connection_object);
|
|
|
CHECK_EQUAL(0, o_to_t_network_connection_id);
|
|
CHECK_EQUAL(0, o_to_t_network_connection_id);
|
|
|
|
|
|
|
|
- CipUdint t_to_o_network_connection_id = ConnectionObjectGetCipProducedConnectionID(&connection_object);
|
|
|
|
|
|
|
+ CipUdint t_to_o_network_connection_id =
|
|
|
|
|
+ ConnectionObjectGetCipProducedConnectionID(&connection_object);
|
|
|
CHECK_EQUAL(0, t_to_o_network_connection_id);
|
|
CHECK_EQUAL(0, t_to_o_network_connection_id);
|
|
|
|
|
|
|
|
- CipUint connection_serial_number = ConnectionObjectGetConnectionSerialNumber(&connection_object);
|
|
|
|
|
|
|
+ CipUint connection_serial_number = ConnectionObjectGetConnectionSerialNumber(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(0xff98, connection_serial_number);
|
|
CHECK_EQUAL(0xff98, connection_serial_number);
|
|
|
|
|
|
|
|
CipUint vendor_id = ConnectionObjectGetOriginatorVendorId(&connection_object);
|
|
CipUint vendor_id = ConnectionObjectGetOriginatorVendorId(&connection_object);
|
|
|
CHECK_EQUAL(0x0018, vendor_id);
|
|
CHECK_EQUAL(0x0018, vendor_id);
|
|
|
|
|
|
|
|
- CipUdint originator_serial_number = ConnectionObjectGetOriginatorSerialNumber(&connection_object);
|
|
|
|
|
|
|
+ CipUdint originator_serial_number = ConnectionObjectGetOriginatorSerialNumber(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(0x12345678, originator_serial_number);
|
|
CHECK_EQUAL(0x12345678, originator_serial_number);
|
|
|
|
|
|
|
|
- CipUsint connection_timeout_multiplier = ConnectionObjectGetConnectionTimeoutMultiplier(&connection_object);
|
|
|
|
|
|
|
+ CipUsint connection_timeout_multiplier =
|
|
|
|
|
+ ConnectionObjectGetConnectionTimeoutMultiplier(&connection_object);
|
|
|
CHECK_EQUAL(0, connection_timeout_multiplier);
|
|
CHECK_EQUAL(0, connection_timeout_multiplier);
|
|
|
|
|
|
|
|
- CipUdint o_to_t_rpi_in_microseconds = ConnectionObjectGetOToTRequestedPacketInterval(&connection_object);
|
|
|
|
|
|
|
+ CipUdint o_to_t_rpi_in_microseconds =
|
|
|
|
|
+ ConnectionObjectGetOToTRequestedPacketInterval(&connection_object);
|
|
|
CHECK_EQUAL(300000, o_to_t_rpi_in_microseconds);
|
|
CHECK_EQUAL(300000, o_to_t_rpi_in_microseconds);
|
|
|
|
|
|
|
|
- bool o_to_t_redundant_owner = ConnectionObjectIsOToTRedundantOwner(&connection_object);
|
|
|
|
|
|
|
+ bool o_to_t_redundant_owner = ConnectionObjectIsOToTRedundantOwner(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(false, o_to_t_redundant_owner);
|
|
CHECK_EQUAL(false, o_to_t_redundant_owner);
|
|
|
|
|
|
|
|
- ConnectionObjectConnectionType o_to_t_connection_type = ConnectionObjectGetOToTConnectionType(&connection_object);
|
|
|
|
|
- CHECK_EQUAL(kConnectionObjectConnectionTypePointToPoint, o_to_t_connection_type);
|
|
|
|
|
|
|
+ ConnectionObjectConnectionType o_to_t_connection_type =
|
|
|
|
|
+ ConnectionObjectGetOToTConnectionType(&connection_object);
|
|
|
|
|
+ CHECK_EQUAL(kConnectionObjectConnectionTypePointToPoint,
|
|
|
|
|
+ o_to_t_connection_type);
|
|
|
|
|
|
|
|
- ConnectionObjectPriority o_to_t_priority = ConnectionObjectGetOToTPriority(&connection_object);
|
|
|
|
|
|
|
+ ConnectionObjectPriority o_to_t_priority = ConnectionObjectGetOToTPriority(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(kConnectionObjectPriorityLow, o_to_t_priority);
|
|
CHECK_EQUAL(kConnectionObjectPriorityLow, o_to_t_priority);
|
|
|
|
|
|
|
|
- ConnectionObjectConnectionSizeType o_to_t_connection_size_type = ConnectionObjectGetOToTConnectionSizeType(&connection_object);
|
|
|
|
|
- CHECK_EQUAL(kConnectionObjectConnectionSizeTypeFixed, o_to_t_connection_size_type);
|
|
|
|
|
|
|
+ ConnectionObjectConnectionSizeType o_to_t_connection_size_type =
|
|
|
|
|
+ ConnectionObjectGetOToTConnectionSizeType(&connection_object);
|
|
|
|
|
+ CHECK_EQUAL(kConnectionObjectConnectionSizeTypeFixed,
|
|
|
|
|
+ o_to_t_connection_size_type);
|
|
|
|
|
|
|
|
- size_t o_to_t_connection_size = ConnectionObjectGetOToTConnectionSize(&connection_object);
|
|
|
|
|
|
|
+ size_t o_to_t_connection_size = ConnectionObjectGetOToTConnectionSize(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(2ULL, o_to_t_connection_size);
|
|
CHECK_EQUAL(2ULL, o_to_t_connection_size);
|
|
|
|
|
|
|
|
//T to O Tests
|
|
//T to O Tests
|
|
|
|
|
|
|
|
- CipUdint t_to_o_rpi_in_microseconds = ConnectionObjectGetTToORequestedPacketInterval(&connection_object);
|
|
|
|
|
|
|
+ CipUdint t_to_o_rpi_in_microseconds =
|
|
|
|
|
+ ConnectionObjectGetTToORequestedPacketInterval(&connection_object);
|
|
|
CHECK_EQUAL(100000, t_to_o_rpi_in_microseconds);
|
|
CHECK_EQUAL(100000, t_to_o_rpi_in_microseconds);
|
|
|
|
|
|
|
|
- bool t_to_o_redundant_owner = ConnectionObjectIsTToORedundantOwner(&connection_object);
|
|
|
|
|
|
|
+ bool t_to_o_redundant_owner = ConnectionObjectIsTToORedundantOwner(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(false, t_to_o_redundant_owner);
|
|
CHECK_EQUAL(false, t_to_o_redundant_owner);
|
|
|
|
|
|
|
|
- ConnectionObjectConnectionType t_to_o_connection_type = ConnectionObjectGetTToOConnectionType(&connection_object);
|
|
|
|
|
|
|
+ ConnectionObjectConnectionType t_to_o_connection_type =
|
|
|
|
|
+ ConnectionObjectGetTToOConnectionType(&connection_object);
|
|
|
CHECK_EQUAL(kConnectionObjectConnectionTypeMulticast, t_to_o_connection_type);
|
|
CHECK_EQUAL(kConnectionObjectConnectionTypeMulticast, t_to_o_connection_type);
|
|
|
|
|
|
|
|
- ConnectionObjectPriority t_to_o_priority = ConnectionObjectGetTToOPriority(&connection_object);
|
|
|
|
|
|
|
+ ConnectionObjectPriority t_to_o_priority = ConnectionObjectGetTToOPriority(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(kConnectionObjectPriorityLow, t_to_o_priority);
|
|
CHECK_EQUAL(kConnectionObjectPriorityLow, t_to_o_priority);
|
|
|
|
|
|
|
|
- ConnectionObjectConnectionSizeType t_to_o_connection_size_type = ConnectionObjectGetTToOConnectionSizeType(&connection_object);
|
|
|
|
|
- CHECK_EQUAL(kConnectionObjectConnectionSizeTypeFixed, t_to_o_connection_size_type);
|
|
|
|
|
|
|
+ ConnectionObjectConnectionSizeType t_to_o_connection_size_type =
|
|
|
|
|
+ ConnectionObjectGetTToOConnectionSizeType(&connection_object);
|
|
|
|
|
+ CHECK_EQUAL(kConnectionObjectConnectionSizeTypeFixed,
|
|
|
|
|
+ t_to_o_connection_size_type);
|
|
|
|
|
|
|
|
- size_t t_to_o_connection_size = ConnectionObjectGetTToOConnectionSize(&connection_object);
|
|
|
|
|
|
|
+ size_t t_to_o_connection_size = ConnectionObjectGetTToOConnectionSize(
|
|
|
|
|
+ &connection_object);
|
|
|
CHECK_EQUAL(34ULL, t_to_o_connection_size);
|
|
CHECK_EQUAL(34ULL, t_to_o_connection_size);
|
|
|
|
|
|
|
|
- ConnectionObjectTransportClassTriggerDirection direction = ConnectionObjectGetTransportClassTriggerDirection(&connection_object);
|
|
|
|
|
|
|
+ ConnectionObjectTransportClassTriggerDirection direction =
|
|
|
|
|
+ ConnectionObjectGetTransportClassTriggerDirection(&connection_object);
|
|
|
CHECK_EQUAL(kConnectionObjectTransportClassTriggerDirectionClient, direction);
|
|
CHECK_EQUAL(kConnectionObjectTransportClassTriggerDirectionClient, direction);
|
|
|
|
|
|
|
|
- ConnectionObjectTransportClassTriggerProductionTrigger trigger = ConnectionObjectGetTransportClassTriggerProductionTrigger(&connection_object);
|
|
|
|
|
- CHECK_EQUAL(kConnectionObjectTransportClassTriggerProductionTriggerCyclic, trigger);
|
|
|
|
|
|
|
+ ConnectionObjectTransportClassTriggerProductionTrigger trigger =
|
|
|
|
|
+ ConnectionObjectGetTransportClassTriggerProductionTrigger(&connection_object);
|
|
|
|
|
+ CHECK_EQUAL(kConnectionObjectTransportClassTriggerProductionTriggerCyclic,
|
|
|
|
|
+ trigger);
|
|
|
|
|
|
|
|
- ConnectionObjectTransportClassTriggerTransportClass transport_class = ConnectionObjectGetTransportClassTriggerTransportClass(&connection_object);
|
|
|
|
|
- CHECK_EQUAL(kConnectionObjectTransportClassTriggerTransportClass1, transport_class);
|
|
|
|
|
|
|
+ ConnectionObjectTransportClassTriggerTransportClass transport_class =
|
|
|
|
|
+ ConnectionObjectGetTransportClassTriggerTransportClass(&connection_object);
|
|
|
|
|
+ CHECK_EQUAL(kConnectionObjectTransportClassTriggerTransportClass1,
|
|
|
|
|
+ transport_class);
|
|
|
|
|
|
|
|
}
|
|
}
|