VSIDL에서 확장 가능한 서비스 지향 미들웨어 over IP (SOME/IP) 매핑을 정의할 때 SOME/IP 페이로드의 구조를 설명합니다. 기본 요소, 문자열, 배열, 복합 구조체를 모델링할 수 있는 SomeIpType 메시지를 사용하여 구조를 설명합니다.
이 페이지에서는 이벤트 및 메서드 매핑을 위한 type_definition 블록에서 사용되는 SomeIpStruct 유형 정의를 작성하는 방법을 중점적으로 설명합니다.
SomeIpStruct 메시지
SomeIpStruct 메시지는 여러 필드로 구성된 구조화된 SOME/IP 페이로드를 나타냅니다. 여기에 정의된 구조는 SOME/IP 브로커에서 원시 SOME/IP 바이트와 SDV protobuf 메시지의 필드 간에 변환하는 데 사용됩니다.
구조체를 정의할 때는 두 가지 기본 속성을 구성합니다.
length_field_size(선택사항): 직렬화된 페이로드에서 구조체 앞에 오는 길이 필드의 크기 (바이트)를 지정합니다.LengthFieldSizeenum의 사용된 값에는ZERO(길이 필드 없음),ONE,TWO,FOUR가 포함됩니다.field(반복됨): 구조체를 구성하는 필드 목록입니다.
구조체 필드 정의
SomeIpStruct 내부의 각 필드에는 다음이 필요합니다.
field_name: 필드의 이름입니다. 적절한 메시지 변환을 보장하려면 SDV protobuf 메시지에 정의된 상응하는 필드 이름과 정확히 일치해야 합니다.field_type: 필드의 SOME/IP 데이터 유형 (SomeIpType). 기본 요소, 문자열, 배열 또는 다른 중첩된 구조체일 수 있습니다.
SomeIpType 필드 유형 작성
field_type 블록은 다음 변형 중 하나를 사용하여 특정 데이터 유형을 구성합니다.
- 기본 유형:
UINT8,UINT32,INT32,FLOAT32,BOOL과 같은 값과 함께someip_primitive을 사용합니다. - 문자열:
someip_string을 사용하고 인코딩 (예:UTF_8,UTF_16_LE) 및 길이 정보 (fixed_length또는length_field_size)를 지정합니다. - 배열:
someip_array를 사용하고 길이 정보 (fixed_length또는length_field_size)와 함께array_type(다른 재귀SomeIpType)을 정의합니다. - 중첩된 구조체:
someip_struct를 사용하여 다른 구조체 정의를 재귀적으로 삽입합니다.
예: 구조체 유형 정의 작성
type_definition 블록 내에서 SomeIpStruct를 작성하는 방법을 보여주는 실제 예는 다음과 같습니다. 이 페이로드에는 interval이라는 8비트 부호 없는 정수와 counter라는 32비트 부호 없는 정수가 포함되어 있습니다.
type_definition {
# No length field precedes this struct
length_field_size: ZERO
# First field: interval
field {
field_name: "interval"
field_type {
someip_primitive: UINT8
}
}
# Second field: counter
field {
field_name: "counter"
field_type {
someip_primitive: UINT32
}
}
}
복합 유형 추가
구조체 내에 동적 길이 문자열 필드와 배열을 포함하려면 다음과 같은 필드를 추가합니다.
field {
field_name: "status_message"
field_type {
someip_string {
string_encoding: UTF_8
length_field_size: FOUR
}
}
}
field {
field_name: "measurements"
field_type {
someip_array {
length_field_size: FOUR
array_type { someip_primitive: FLOAT32 }
}
}
}