CapXilinx 9 лет назад
Родитель
Сommit
3bf017abab
3 измененных файлов с 17 добавлено и 1 удалено
  1. 1 1
      source/src/cip/cipepath.c
  2. 3 0
      source/src/cip/cipepath.h
  3. 13 0
      source/tests/cip/cipepathtest.cpp

+ 1 - 1
source/src/cip/cipepath.c

@@ -191,7 +191,7 @@ void SetPathPortSegmentExtendedPortIdentifier(
     const unsigned int extended_port_identifier, char *const cip_path) {
   SetPathPortSegmentPortIdentifier(kPortSegmentExtendedPort, cip_path);
   const unsigned int kExtendedPortSegmentPosition =
-      GetPathPortSegmentExtendedLinkAddressSizeBit(cip_path) == true ? 3 : 2;
+      GetPathPortSegmentExtendedLinkAddressSizeBit(cip_path) == true ? 2 : 1;
   cip_path[kExtendedPortSegmentPosition] = (char) (extended_port_identifier
       & 0x00FF);
   cip_path[kExtendedPortSegmentPosition + 1] =

+ 3 - 0
source/src/cip/cipepath.h

@@ -75,5 +75,8 @@ unsigned int GetPathPortSegmentLinkAddressSize(const char *const cip_path);
 
 unsigned int GetPathPortSegmentExtendedPortNumber(const char *const cip_path);
 
+void SetPathPortSegmentExtendedPortIdentifier(
+    const unsigned int extended_port_identifier, char *const cip_path);
+
 
 #endif /* SRC_CIP_CIPEPATH_H_ */

+ 13 - 0
source/tests/cip/cipepathtest.cpp

@@ -104,3 +104,16 @@ TEST(CipEpath, GetPortSegmentExtendedPortNumberNoExtendedAddress) {
   unsigned int extended_port = GetPathPortSegmentExtendedPortNumber(message);
   CHECK_EQUAL(25634, extended_port);
 }
+
+TEST(CipEpath, GetPortSegmentExtendedPortNumberWithExtendedAddress) {
+  const char message[] = {0x1F, 0x00, 0x22, 0x64};
+  unsigned int extended_port = GetPathPortSegmentExtendedPortNumber(message);
+  CHECK_EQUAL(25634, extended_port);
+}
+
+TEST(CipEpath, SetPortSegmentExtendedPortNoExtendedAddress) {
+  char message[] = {0x00, 0x00, 0x00};
+  const char expected_message[] = {0x0F, 0x22, 0x64};
+  SetPathPortSegmentExtendedPortIdentifier((unsigned int)25634, message);
+  MEMCMP_EQUAL(expected_message, message, 3);
+}