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

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

@@ -156,6 +156,7 @@ unsigned int GetPathPortSegmentPortIdentifier(const char *const cip_path) {
   const unsigned int kPortIdentifierMask = 0x0F;
   unsigned int port_identifier = *cip_path & kPortIdentifierMask;
 //  OPENER_ASSERT(0 != port_identifier, "Use of reserved port identifier 0\n");
+  OPENER_ASSERT(kSegmentTypePortSegment == GetPathSegmentType(cip_path));
   OPENER_ASSERT(0 != port_identifier);
   return port_identifier;
 }
@@ -166,7 +167,7 @@ void SetPathPortSegmentPortIdentifier(const unsigned int port_identifier,
 //      port_identifier < 16,
 //      "Port identifier too large for standard port identifier field\n");
   OPENER_ASSERT(port_identifier < 16);
-
+  (*cip_path) |= port_identifier;
 }
 
 unsigned int GetPathPortSegmentLinkAddressSize(const char *const cip_path) {

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

@@ -66,5 +66,10 @@ void SetPathSegmentType(SegmentType segment_type, char *const cip_path);
 
 bool GetPathPortSegmentExtendedLinkAddressSizeBit(const char *const cip_path);
 
+unsigned int GetPathPortSegmentPortIdentifier(const char *const cip_path);
+
+void SetPathPortSegmentPortIdentifier(const unsigned int port_identifier,
+                                      char *const cip_path);
+
 
 #endif /* SRC_CIP_CIPEPATH_H_ */

+ 15 - 2
source/tests/cip/cipepathtest.cpp

@@ -68,14 +68,27 @@ TEST(CipEpath, GetSegmentTypeReserved) {
 }
 
 /** Port segment tests **/
-TEST(CipEpath, PortSegmentExtendedAddressSizeTrueTest) {
+TEST(CipEpath, GetPortSegmentExtendedAddressSizeTrue) {
   const char message[] = {0x10};
   bool extended_address = GetPathPortSegmentExtendedLinkAddressSizeBit(message);
   CHECK_EQUAL(true, extended_address);
 }
 
-TEST(CipEpath, PortSegmentExtendedAddressSizeFalseTest) {
+TEST(CipEpath, GetPortSegmentExtendedAddressSizeFalse) {
   const char message[] = {0x00};
   bool extended_address = GetPathPortSegmentExtendedLinkAddressSizeBit(message);
   CHECK_EQUAL(false, extended_address);
 }
+
+TEST(CipEpath, GetPortSegmentPortIdentifier) {
+  const char message[] = {0x0F};
+  unsigned int port = GetPathPortSegmentPortIdentifier(message);
+  unsigned int mes = (unsigned int)(message[0]);
+  CHECK_EQUAL(15, mes);
+}
+
+TEST(CipEpath, SetPortSegmentPortIdentifier) {
+  char message[] = {0x00};
+  SetPathPortSegmentPortIdentifier(15, message);
+  CHECK_EQUAL(15, (unsigned int)(message[0]));
+}