| 377 | } |
| 378 | |
| 379 | LogicalSegmentExtendedLogicalType GetPathLogicalSegmentExtendedLogicalType( |
| 380 | const unsigned char *const cip_path) { |
| 381 | /* OPENER_ASSERT(LOGICAL_SEGMENT_TYPE_EXTENDED_kLogicalSegmentLogicalTypeExtendedLogicalMessageValue == GetPathLogicalSegmentLogicalType(cip_path), |
| 382 | "Trying to extract non-existent extended logical type") */ |
| 383 | OPENER_ASSERT( kLogicalSegmentLogicalTypeExtendedLogical == GetPathLogicalSegmentLogicalType( |
| 384 | cip_path) ) |
| 385 | const unsigned int extended_logical_type = *(cip_path + 1); |
| 386 | LogicalSegmentExtendedLogicalType result = |
| 387 | kLogicalSegmentExtendedLogicalTypeReserved; |
| 388 | switch(extended_logical_type) { |
| 389 | case LOGICAL_SEGMENT_EXTENDED_TYPE_ARRAY_INDEX: result = |
| 390 | kLogicalSegmentExtendedLogicalTypeArrayIndex; break; |
| 391 | case LOGICAL_SEGMENT_EXTENDED_TYPE_INDIRECT_ARRAY_INDEX: result = |
| 392 | kLogicalSegmentExtendedLogicalTypeIndirectArrayIndex; break; |
| 393 | case LOGICAL_SEGMENT_EXTENDED_TYPE_BIT_INDEX: result = |
| 394 | kLogicalSegmentExtendedLogicalTypeBitIndex; break; |
| 395 | case LOGICAL_SEGMENT_EXTENDED_TYPE_INDIRECT_BIT_INDEX: result = |
| 396 | kLogicalSegmentExtendedLogicalTypeIndirectBitIndex; break; |
| 397 | case LOGICAL_SEGMENT_EXTENDED_TYPE_STRUCTURE_MEMBER_NUMBER: result = |
| 398 | kLogicalSegmentExtendedLogicalTypeStructureMemberNumber; break; |
| 399 | case LOGICAL_SEGMENT_EXTENDED_TYPE_STRUCTURE_MEMBER_HANDLE: result = |
| 400 | kLogicalSegmentExtendedLogicalTypeStructureMemberHandle; break; |
| 401 | default: result = kLogicalSegmentExtendedLogicalTypeReserved; |
| 402 | } |
| 403 | return result; |
| 404 | } |
| 405 | |
| 406 | LogicalSegmentSpecialTypeLogicalFormat |
| 407 | GetPathLogicalSegmentSpecialTypeLogicalType(const unsigned char *const cip_path) |