Path Segment ***/
| 74 | |
| 75 | /*** Path Segment ***/ |
| 76 | SegmentType GetPathSegmentType(const CipOctet *const cip_path) { |
| 77 | const unsigned int kSegmentTypeMask = 0xE0; |
| 78 | const unsigned int segment_type = *cip_path & kSegmentTypeMask; |
| 79 | SegmentType result = kSegmentTypeReserved; |
| 80 | switch (segment_type) { |
| 81 | case SEGMENT_TYPE_PORT_SEGMENT: |
| 82 | result = kSegmentTypePortSegment; |
| 83 | break; |
| 84 | case SEGMENT_TYPE_LOGICAL_SEGMENT: |
| 85 | result = kSegmentTypeLogicalSegment; |
| 86 | break; |
| 87 | case SEGMENT_TYPE_NETWORK_SEGMENT: |
| 88 | result = kSegmentTypeNetworkSegment; |
| 89 | break; |
| 90 | case SEGMENT_TYPE_SYMBOLIC_SEGMENT: |
| 91 | result = kSegmentTypeSymbolicSegment; |
| 92 | break; |
| 93 | case SEGMENT_TYPE_DATA_SEGMENT: |
| 94 | result = kSegmentTypeDataSegment; |
| 95 | break; |
| 96 | case SEGMENT_TYPE_DATA_TYPE_CONSTRUCTED: |
| 97 | result = kSegmentTypeDataTypeConstructed; |
| 98 | break; |
| 99 | case SEGMENT_TYPE_DATA_TYPE_ELEMENTARTY: |
| 100 | result = kSegmentTypeDataTypeElementary; |
| 101 | break; |
| 102 | case SEGMENT_TYPE_SEGMENT_RESERVED: |
| 103 | result = kSegmentTypeReserved; |
| 104 | break; |
| 105 | default: |
| 106 | OPENER_ASSERT( |
| 107 | "Invalid Segment type in the message! We should never come here!\n") |
| 108 | break; |
| 109 | } |
| 110 | return result; |
| 111 | } |
| 112 | |
| 113 | void SetPathSegmentType(SegmentType segment_type, |
| 114 | unsigned char *const cip_path) { |
no outgoing calls