본문으로 건너뛰기

Interface 에디터

이 장에서 다루는 것

SWC 포트가 참조하는 포트 인터페이스를 정의하고, AP 서비스 인터페이스의 배포(SOME/IP · DDS)와 서비스 인스턴스를 설정하는 Interface 에디터의 사용법을 안내합니다. 일곱 개 카테고리 탭, 각 탭의 편집 항목, 인터페이스 파생(Derive) 동작, 그리고 오른쪽 패널이 상황에 따라 무엇으로 바뀌는지를 다룹니다.

대상 독자는 AUTOSAR 인터페이스와 서비스 배포를 정의하는 사용자입니다. 선행 조건으로 프로젝트가 열려 있어야 하며, 파생 기능을 쓰려면 라이선스가 활성 상태여야 합니다. 데이터 타입은 이 화면 안에서 바로 정의할 수 있으므로 10. DataType 에디터를 미리 열어 둘 필요는 없습니다.

프로젝트 탐색기의 designSystemInterface 노드를 열면 탭으로 표시됩니다.

9.1 화면 구성

Interface 에디터의 세 패널 — 왼쪽 INTERFACES 목록, 가운데 CONFIGURATION, 오른쪽 패널

Interface 에디터 전체 화면. 위쪽이 카테고리 탭 7종, 아래가 세 패널이다.

세 패널 사이의 경계는 드래그해서 너비를 조절할 수 있습니다.

왼쪽 INTERFACES 패널

왼쪽 패널의 각 요소와 동작을 정리하면 다음과 같습니다.

요소동작
+ (Add Interface)현재 탭에 맞는 항목을 추가합니다. Adaptive 탭에서는 클러스터 메뉴가 열리고, Mapping 탭에서는 입력 창이 두 번 뜹니다(9.3.7)
(Remove Interface)선택한 항목을 삭제합니다. 아무것도 선택하지 않으면 비활성 상태입니다
검색 상자이름으로 걸러 냅니다
목록목록에 포커스가 있으면 위/아래 방향키로 선택을 옮길 수 있습니다

Mapping 탭에서는 + 버튼의 툴팁이 각각 Add Mapping / Remove Mapping 으로 바뀝니다.

팝오버의 Sort byDefault (Added Order) / Name (A-Z) 이고, Service 탭에서만 Version 이 추가됩니다. Service 탭에는 Filter by deployment(Has SOME/IP Deployment / Has DDS Deployment / No Deployment)와 Filter by instance(Has Provider / Has Consumer) 필터도 함께 나옵니다.

Sort & Filter 팝오버 — Filter by deployment, Filter by instance, Sort by 세 묶음

를 누르면 열리는 정렬·필터 팝오버 (Service 탭 기준).

검색은 이름으로 거르는 것이 기본이지만, Service 탭에서는 배포 이름과 서비스 인스턴스 이름까지 함께 찾습니다. 항목이 하나도 없으면 Add an interface, 검색·필터 조건에 맞는 항목이 없으면 No matching interfaces 가 표시됩니다. Mapping 탭에서는 매핑이 하나도 없으면 Add a mapping, 검색 결과가 없으면 No matching mappings 가 표시됩니다.

가운데 CONFIGURATION 패널

인터페이스를 아직 고르지 않았다면 Select an interface(Mapping 탭에서는 Select a mapping) 가 표시됩니다. 머리글의 버튼은 파생(Derive) 동작이며, 조건이 맞을 때만 나타납니다(9.5).

Interface 에디터의 편집 결과는 인터페이스 정의가 Interface 모델, SOA 배포와 서비스 인스턴스가 Service 모델에 저장되며, 이 둘은 오른쪽 DATA TYPE 패널의 DataType 모델과 함께 Ctrl+S 한 번으로 기록됩니다(9.7). InterfaceMapping만은 VFB 모델에 저장되고, Ctrl+S 를 기다리지 않고 편집하는 즉시 반영됩니다(9.3.7).

9.2 카테고리 탭 (7종)

Service, Sender-Receiver, Client-Server, Mode-Switch, Adaptive, Error Domain, Mapping 탭

카테고리 탭 7종.

일곱 개 탭이 각각 무엇을 다루는지 정리하면 다음과 같습니다.

탭 레이블다루는 것
ServiceAP ServiceInterface + SOA 배포 + 서비스 인스턴스
Sender-ReceiverCP SenderReceiverInterface
Client-ServerCP ClientServerInterface
Mode-SwitchCP ModeSwitchInterface
AdaptiveAP 기능 클러스터별 전용 포트 인터페이스
Error DomainAP 오류 도메인
MappingAP 서비스 인터페이스와 CP 인터페이스를 잇는 InterfaceMapping

각 탭에서 편집하는 내용은 9.3에서 차례로 다룹니다.

9.3 카테고리별 편집 내용

모든 탭의 편집 화면에는 자유 입력 Description 항목이 공통으로 있습니다. 아래 표에서는 탭마다 다른 항목만 다룹니다. 이름 규칙은 9.8을 따릅니다.

9.3.1 Service

Service 탭 — METHODS 하위 탭에서 메서드를 펼쳐 ARGUMENTS 를 편집하는 화면

Service 탭의 CONFIGURATION 패널. METHODS 하위 탭에서 메서드를 펼치면 ARGUMENTS 와 POSSIBLE AP ERRORS 가 나타난다.

Service 탭에서 편집하는 항목은 다음과 같습니다.

항목설명
Name인터페이스 SHORT-NAME
C++ Namespace생성 코드의 네임스페이스
Major Version / Minor Version서비스 버전. 0 이상의 정수
하위 탭 Events / Methods / Fields요소 정의. 머리글의 + 는 지금 열려 있는 하위 탭에 항목을 추가합니다
  • Events 표의 열은 Name / Type / Description 입니다. 행을 펼치면 Name, Type(데이터 타입 참조), Description 을 편집합니다. 비어 있으면 Add an event 가 표시됩니다.
  • Methods 표의 열은 Name / Args / Access / Description 입니다. 행을 펼치면 Name, Method Type(REQUEST AND RESPONSE / FIRE AND FORGET), ARGUMENTS 목록, POSSIBLE AP ERRORS 목록을 편집합니다. 비어 있으면 Add a method 가 표시됩니다.
  • POSSIBLE AP ERRORS 는 Error Domain 탭에서 정의한 오류를 참조합니다. 도메인이 하나도 없으면 + 버튼이 비활성 상태가 되고 Define an Error Domain first 가 표시되므로, 먼저 Error Domain 탭에서 도메인과 오류를 만들어 둡니다. 도메인이 있으면 비어 있을 때 Add a possible AP error 가 표시됩니다.
  • Fields 표의 열은 Name / Type / Access / Description 입니다. Getter · Setter · Notifier 사용 여부를 여기서 정합니다. 비어 있으면 Add a field 가 표시됩니다.
  • 인자(Argument)의 방향은 IN / OUT / INOUT 세 가지입니다. 인자가 없으면 Add an argument 가 표시됩니다.
  • ARGUMENTS 목록은 순서를 바꿀 수 있습니다. 각 인자 행의 맨 앞 번호 칸이 드래그 손잡이입니다. 이 칸에 마우스를 올리면 커서가 손 모양으로 바뀌며, 잡고 위아래로 끌면 그 자리에 삽입선이 표시되고 놓는 위치로 순서가 바뀝니다. 손잡이 칸을 잡았을 때만 드래그가 시작되므로 인자 이름이나 타입 칸을 끌어도 순서는 바뀌지 않습니다. 인자 순서는 시그니처의 일부이므로 익스포트 결과에 그대로 반영됩니다.

9.3.2 Sender-Receiver

Sender-Receiver 탭의 CONFIGURATION 패널

Sender-Receiver 탭. DATA ELEMENTS 표에서 데이터 요소의 이름과 타입을 정한다.

Name, Description, 그리고 DATA ELEMENTS 목록을 편집합니다. 표의 열은 Name / Type / Description 이고, 각 데이터 요소는 NameType(데이터 타입 참조), Description 을 갖습니다. 비어 있으면 Add a data element 가 표시됩니다.

9.3.3 Client-Server

Client-Server 탭의 CONFIGURATION 패널

Client-Server 탭. OPERATIONS 아래에 인터페이스 전체에 걸리는 APPLICATION ERRORS 섹션이 따로 있다.

Name, Description, 그리고 OPERATIONS 목록을 편집합니다. 표의 열은 Name / Args / Description 입니다. 오퍼레이션을 펼치면 ARGUMENTS(방향 IN / OUT / INOUT)를 편집합니다. 비어 있으면 Add an operation 이 표시됩니다.

APPLICATION ERRORS 는 오퍼레이션이 아니라 인터페이스 전체에 걸리는 섹션이며, OPERATIONS 아래에 따로 나타납니다. 오류가 하나도 없으면 Add an application error 가 표시됩니다.

ARGUMENTS 목록의 순서 변경 방식은 Service 탭과 같습니다(9.3.1 참고).

9.3.4 Mode-Switch

Mode-Switch 탭 — 가운데 CONFIGURATION 패널과 오른쪽 STATE MACHINE 다이어그램

Mode-Switch 탭. 모드 선언을 추가하면 오른쪽 STATE MACHINE 에 그만큼 노드가 생긴다.

Mode-Switch 탭에서 편집하는 항목은 다음과 같습니다.

항목설명
Name인터페이스 SHORT-NAME
Group NameModeDeclarationGroup 이름
Initial Mode초기 모드
MODE DECLARATION모드 선언 추가/삭제. 비어 있으면 Add a mode declaration 이 표시됩니다

Mode-Switch 탭에서는 오른쪽 패널이 STATE MACHINE 다이어그램으로 바뀝니다. 모드 선언은 노드로 표시되며, 전이(transition)는 자동으로 만들어지지 않고 다이어그램에서 직접 그려야 합니다.

조작동작
노드를 Shift + 드래그해 다른 노드 위에서 놓기두 노드 사이에 전이를 만듭니다. 끄는 동안 점선이 따라오고, 놓을 수 있는 노드 위에서는 초록색으로 바뀝니다
노드 우클릭 ▸ Transition to ▸ 대상 노드같은 전이를 메뉴로 만듭니다
전이선 우클릭 ▸ Delete Transition전이를 삭제합니다
빈 공간 우클릭 ▸ Add State모드 선언을 추가합니다
노드 우클릭 ▸ Set Initial / Delete초기 모드를 지정하거나 모드 선언을 삭제합니다
노드 더블클릭이름을 그 자리에서 고칩니다
노드 드래그 · Ctrl+휠 · 휠 클릭(또는 배경 드래그)위치 이동 · 확대/축소 · 화면 이동
노드·전이선 선택 후 Delete / Backspace선택한 모드 선언 또는 전이를 삭제합니다

9.3.5 Adaptive

Adaptive 탭 — 배지가 붙은 인터페이스 목록과 오른쪽 FUNCTION GROUP STATE MACHINE

Adaptive 탭. 왼쪽 목록은 한 줄에 하나씩 나열되고, 종류는 이름 뒤의 배지로 구분한다.

AP 기능 클러스터별로 묶인 전용 인터페이스를 만듭니다. + 버튼을 누르면 클러스터 목록이 열리고, 클러스터에 마우스를 올리면 하위 인터페이스 종류가 옆으로 펼쳐집니다. 클러스터는 9개입니다.

클러스터인터페이스 종류
ara::logLogAndTrace
ara::smStateClient, DiagTrigger, EmError, PhmError
ara::phmPhmSupervisedEntity, PhmRecoveryNotification
ara::nmNetworkManagement
ara::tsyncSynchronizedTimeBaseConsumer, SynchronizedTimeBaseProvider
ara::cryptoCryptoKeySlot, CryptoKeySlotClient, CryptoCertificate, CryptoCertificateGroup, CryptoProvider
ara::rdsRawDataStreamClient, RawDataStreamServer, Ieee1722RawDataStreamConsumer, Ieee1722RawDataStreamProducer
ara::perPersistencyKeyValueStorage, PersistencyFileStorage
ara::idsmSecurityEventReport, IdsmTimestampProvider, IdsmContextProvider, IdsmReportingModeProvider, IdsmQualifiedEventReceiver

목록에서는 각 인터페이스 이름 뒤에 종류 배지가 붙어 한눈에 구분됩니다. LnT 를 뺀 나머지 배지에 마우스를 올리면 전체 타입 이름이 툴팁으로 표시됩니다. 배지와 인터페이스의 전체 대응표는 19.6 Adaptive Platform에 있습니다.

가운데 편집 화면은 종류에 따라 네 가지로 나뉩니다.

인터페이스편집 화면
SM 4종 (StateClient / DiagTrigger / EmError / PhmError)Name, C++ Namespace, Description. StateClient 에만 Function Group 참조와 읽기 전용 Initial Mode 가 더 붙습니다
PhmSupervisedEntityName, C++ Namespace, Description, CHECKPOINTS 표 (Name / Checkpoint ID / Description)
Persistency 2종Name, C++ Namespace, Description, Contract Version, Minimum Sustained Size, Update Strategy, Redundancy, REDUNDANCY HANDLINGS. KeyValueStorage는 DATA ELEMENTSDATA TYPE MAPPINGS(비어 있으면 Add a data type mapping)를, FileStorage는 FILE ELEMENTSMax Number Of Files 를 더 갖습니다
그 밖의 전부 (LogAndTrace, PhmRecoveryNotification, NetworkManagement, TSync 2종, Crypto 5종, RDS 4종, IDSM 5종)공통 Name / C++ Namespace / Description 폼. Crypto 중 CryptoKeySlot · CryptoKeySlotClient · CryptoCertificate · CryptoCertificateGroup 네 종류에만 종류별 속성 행이 더 붙고, CryptoProvider는 공통 폼이 전부입니다

StateClientFunction Group 은 Machine Configuration 다이얼로그(8.10)에서 정의한 함수 그룹을 {머신}/{그룹} 형식으로 고르는 참조 필드입니다. 여기서 함수 그룹을 새로 만들 수는 없습니다. 참조가 해석되고 그 함수 그룹에 모드 선언이 하나 이상 있으면, 그 아래에 읽기 전용 MODE DECLARATION 표(Name / Value / Description)가 나타납니다.

Crypto 계열은 종류별 속성이 많습니다. 예를 들어 CryptoKeySlot은 Slot Type(APPLICATION / MACHINE), Crypto Object Type(UNDEFINED / SYMMETRIC / PRIVATE / PUBLIC), Crypto Algorithm Id, Max Number Of Allowed Updates, Key Slot Content Allowed Usages 등을 갖습니다.

9.3.6 Error Domain

Error Domain 탭의 CONFIGURATION 패널

Error Domain 탭. ID 는 0x 접두사가 고정이며 16진수만 받는다.

Error Domain 탭에서 편집하는 항목은 다음과 같습니다.

항목설명
Name오류 도메인 SHORT-NAME
C++ Namespace생성 코드의 네임스페이스
ID오류 도메인 자체의 식별자. 16진수만 입력하며 0x 접두사는 고정이라 지울 수 없습니다
APPLICATION ERROR오류 목록. 표의 열은 Name / Error Code 이고 행 끝에 삭제 버튼이 있습니다

도메인 ID 를 비우면 ID is required 가 표시되고 빈 값은 커밋되지 않습니다. 오류가 하나도 없으면 Add an application error 가 표시됩니다.

9.3.7 Mapping

Mapping 탭 — IM_StateMachine 매핑을 선택해 METHODS 섹션이 채워진 화면

Mapping 탭. 매핑을 고르면 Service Interface 참조와 요소 종류별 매핑 섹션이 나타난다.

AP 서비스 인터페이스와 CP 인터페이스를 잇는 InterfaceMapping을 정의합니다.

  1. + 를 누르면 입력 창이 두 번 뜹니다. 첫 창(제목 Add Interface Mapping, 안내문 Mapping name)에 AUTOSAR SHORT-NAME 규칙에 맞는 이름을 입력합니다. 이어지는 둘째 창 (안내문 Service Interface (pick an existing one, or leave empty to link later))에서는 기존 서비스 인터페이스를 고르거나 비워 둡니다. 비워 두면 나중에 연결할 수 있는 빈 매핑이 만들어집니다.
  2. 목록에서 매핑을 고르면 가운데에 NameService Interface(참조) 필드가 나타납니다. 그 아래에는 이 매핑에 묶인 CP 인터페이스가 Sender-Receiver Interface / Client-Server Interface 로 나뉘어 읽기 전용으로 표시됩니다. 어느 쪽에도 없는 이름은 CP Interfaces (Unresolved) 로 표시됩니다.
  3. 서비스 인터페이스가 정해지면 그 인터페이스가 가진 요소 종류마다 섹션이 만들어집니다. 요소가 없는 종류의 섹션은 아예 나타나지 않습니다.

각 섹션의 열 구성은 다음과 같습니다.

섹션왼쪽 열오른쪽 열
EVENTSService Interface ElementSender/Receiver Interface Data Element
METHODSService Interface Element (Fire&Forget에는 F&F 배지)Client/Server Interface Operation
FIELDSService Interface ElementSender/Receiver Data Element / Client/Server Operation

FIELDS 행은 NotifierGetterSetter 순서의 하위 행으로 나뉘며, 해당 접근자를 가진 필드에만 그 하위 행이 나타납니다. 서비스 인터페이스에 요소가 하나도 없으면 Service interface has no members 가 표시됩니다. 후보가 없는 참조 칸에는 No candidates 가 표시됩니다.

MAPPING 탭의 저장 위치는 다릅니다. InterfaceMapping은 Interface 모델이 아니라 VFB 모델의 InterfaceMapping 목록에 저장됩니다. 따라서 이 탭의 편집은 VFB 에디터와 같은 대상을 건드리며, VFB 에디터가 열려 있으면 즉시 반영되고 닫혀 있으면 디스크에 기록됩니다. 편집 하나가 하나의 실행 취소 단위가 됩니다.

9.4 오른쪽 패널

오른쪽 패널의 내용은 활성 탭과 선택한 인터페이스에 따라 바뀝니다.

상황오른쪽 패널
Service / Sender-Receiver / Client-Server하위 탭 바 — SOA DEPLOYMENT / SERVICE INSTANCE / DATA TYPE
Mode-SwitchSTATE MACHINE 다이어그램 (편집 가능)
Adaptive 탭 + StateClient 선택FUNCTION GROUP STATE MACHINE 뷰어 (읽기 전용)
그 밖의 모든 경우 (Adaptive 나머지, Error Domain, Mapping)내장 DataType 편집 패널

FUNCTION GROUP STATE MACHINE 뷰어는 StateClient를 고르기만 하면 나타납니다. 다만 그 인터페이스의 Function Group 참조가 비어 있거나 지금 프로젝트의 함수 그룹과 맞지 않으면 내용 없이 빈 뷰어가 표시됩니다.

SOA 배포와 서비스 인스턴스는 Service 탭 전용이 아닙니다. Sender-Receiver와 Client-Server 탭에서도 같은 하위 탭 바가 나타나며, 이때 패널은 그 CP 인터페이스에 대응하는 ServiceInterface를 찾아 보여 줍니다.

9.4.1 SOA DEPLOYMENT

SOA DEPLOYMENT 패널 — SOME/IP 배포와 SERVICE PROVIDERS 목록

SOA DEPLOYMENT 패널. 배포 종류(SOME/IP), 서비스 ID, 버전과 제공자 목록이 보인다.

머리글 제목은 SOA DEPLOYMENT 이고 버튼이 두 개 있습니다.

버튼동작
+ (Add Deployment)SOME/IP 또는 DDS 를 고르는 팝오버를 엽니다
(Derive Signal)CP-SOA 파생을 수동으로 다시 실행합니다

CP-SOA 파생은 평소에는 자동으로 실행됩니다. 는 이를 수동으로 한 번 더 실행하는 복구용 버튼입니다. 파생에 쓰이는 입력이 바뀌면 버튼에 점이 붙고, 자동 파생이 끝나면 사라집니다. 라이선스가 잠겨 자동 파생이 막혔거나 파생이 실패했을 때만 점이 남습니다.

인터페이스를 아직 고르지 않았으면 Select a service interface, 배포가 하나도 없으면 No deployments configured 가 표시됩니다. 왼쪽 인터페이스 목록에서는 배포가 있는 서비스 인터페이스에 색 배지가 붙고, 마우스를 올리면 SOME/IP Deployment 또는 DDS Deployment 툴팁이 표시됩니다. 파생으로 만들어진 SR/CS 인터페이스에는 SOC 배지가 붙습니다 (툴팁 SOC (Service-oriented Communication) — seeded from a service deployment). SOC 배지가 붙어 있어도 손으로 자유롭게 고칠 수 있습니다.

SOME/IP Deployment 의 편집 항목은 다음과 같습니다.

항목값 범위
Name배포 SHORT-NAME
Service ID1 ~ 65534. 10진/16진 전환 토글이 있습니다
Major Version1 ~ 255
Minor Version0 이상
SerializerSOME/IP 또는 SIGNAL-BASED. 배포 전체에 한 번 적용됩니다
EVENT DEPLOYMENTSName / Event ID / Transport 세 열. 서비스 이벤트뿐 아니라 Notifier가 있는 필드도 여기에 행으로 나옵니다. 비어 있으면 No events defined 가 표시됩니다
METHOD DEPLOYMENTSName / Method ID / Transport 세 열. 메서드뿐 아니라 Getter · Setter가 있는 필드도 여기에 행으로 나옵니다. 비어 있으면 No methods defined 가 표시됩니다
EVENT GROUPSName / Eventgroup ID / Events 세 열과 행 끝의 삭제 칸. 머리글의 + 로 그룹을 추가하고 Events 다중 선택으로 구성원을 고릅니다

Transport 칸은 UDP / TCP 두 값 중 하나를 고르는 행 단위 토글입니다. 메서드와 필드 Getter · Setter는 Serializer 설정과 무관하게 항상 SOME/IP로 직렬화됩니다. Serializer 는 배포 전체에 한 번 적용되므로, 가져온 파일에서 구성원마다 값이 다르면 아무것도 선택되지 않은 상태로 보이고 한쪽을 고르면 전체가 그 값으로 통일됩니다.

DDS Deployment 의 편집 항목은 다음과 같습니다.

항목
Name배포 SHORT-NAME
Transport ProtocolSHM / UDP / TCP 를 각각 켜고 끄는 다중 토글
Service ID문자열. 비우면 Service ID is required 가 표시됩니다
Major Version1 ~ 255
Minor Version0 이상
METHOD DEPLOYMENTSMethod Request Topic, Method Reply Topic, Field Request Topic, Field Reply Topic 네 개의 토픽 이름
EVENT DEPLOYMENTS이벤트별 DDS 설정. 이벤트가 없으면 No events defined 가 표시됩니다

가져온 파일에 PAIO가 모르는 전송 프로토콜 값이 들어 있어도 지워지지 않고 그대로 보존됩니다.

9.4.2 SERVICE INSTANCE

SERVICE INSTANCE 패널

SERVICE INSTANCE 패널. 제공자에는 [P], 소비자에는 [C] 배지가 붙는다.

하위 탭 레이블은 SERVICE INSTANCE, 그 안의 패널 머리글은 SERVICE INSTANCES 입니다. + 버튼으로 인스턴스를 추가합니다. 제공자에는 [P], 소비자에는 [C] 배지가 붙습니다. 인스턴스가 없으면 No service instances configured 가 표시됩니다.

주요 편집 항목은 Name, 제공자의 Instance ID(0 ~ 65535 정수), 소비자의 Required Instance ID, TTL, 그리고 Service Discovery 타이밍(Initial Delay Min/Max, Repetition Base Delay, Repetition Max, Offer Cyclic Delay, Request Response Delay Min/Max)입니다.

Required Instance ID 는 자유 입력 칸입니다. ANY 라고 입력하면 0xFFFF 로 저장되고, 반대로 0xFFFF 인 값은 화면에 ANY 로 표시됩니다. 그 밖에는 0 ~ 65535 범위의 정수만 반영됩니다.

DDS 인스턴스는 Domain ID 와 QoS 항목을 함께 갖습니다. QoS는 14개의 접이식 섹션으로 나뉩니다 — Deadline, Destination Order, Durability, Durability Service, History, Latency Budget, Lifespan, Liveliness, Ownership, Ownership Strength, Reliability, Resource Limits, Topic Data, Transport Priority. 이 중 선택지가 있는 섹션은 다음과 같습니다.

QoS 섹션선택지
Destination OrderBY-RECEPTION-TIMESTAMP / BY-SOURCE-TIMESTAMP
DurabilityVOLATILE / TRANSIENT-LOCAL / TRANSIENT / PERSISTENT
Durability Service이력 깊이와 KEEP-ALL / KEEP-LAST
HistoryKEEP-ALL / KEEP-LAST
LivelinessAUTOMATIC / MANUAL-BY-PARTICIPANT / MANUAL-BY-TOPIC
OwnershipEXCLUSIVE / SHARED
ReliabilityBEST-EFFORT / RELIABLEMax Blocking Time

IVC 에디터의 이더넷 커넥터 속성 패널에도 Service Instances 섹션이 있어, 네트워크 엔드포인트와 서비스 인스턴스의 관계를 확인할 수 있습니다 (06. IVC 에디터 6.8.2 참조). Coupling Port를 선택했을 때는 이 섹션이 나타나지 않습니다.

9.4.3 DATA TYPE

DATA TYPE 패널

DATA TYPE 패널. 이 화면 안에서 데이터 타입을 바로 정의할 수 있다.

인터페이스 편집 화면 안에 DataType 에디터가 축소된 형태로 들어 있어, 인터페이스를 만들다가 필요한 데이터 타입을 이 화면에서 바로 정의할 수 있습니다. 편집 내용은 DataType 에디터와 같은 DataType 모델에 반영됩니다. 인터페이스 요소의 Type 을 고르면 이 패널이 그 타입을 자동으로 선택해 보여 줍니다. 축소 모드에서 어떤 요소가 숨겨지는지는 10. DataType 에디터 10.1에서 다룹니다.

9.5 인터페이스 파생 (Derive)

Sender-Receiver 탭에서 ⚡ 를 눌렀을 때 열리는 Derive Service Interface / Derive Signal 메뉴

Sender-Receiver 탭에서 를 누르면 열리는 파생 메뉴.

CONFIGURATION 패널 머리글의 버튼이 파생 동작입니다. 조건이 맞지 않으면 버튼 자체가 숨겨집니다. 탭과 선택 상태에 따른 동작은 다음과 같습니다.

탭 / 선택툴팁동작
Service 탭 + ServiceInterface 선택Derive SR/CS Interface서비스 인터페이스 시그니처에서 SR/CS 인터페이스를 만듭니다
Sender-Receiver 탭 + SR 선택Derive Service Interface메뉴가 열립니다 — Derive Service Interface / Derive Signal
Client-Server 탭 + CS 선택Derive Service Interface메뉴 없이 곧바로 Derive Service Interface 입력 창을 엽니다
Mapping 탭 + 서비스 인터페이스가 해석되는 매핑 선택Derive SR/CS Interface매핑이 가리키는 서비스 인터페이스에서 SR/CS를 만듭니다

ServiceInterface → SR/CS 방향(Service 탭과 Mapping 탭)에서는 입력 창이 열리지 않고 곧바로 실행됩니다.

  • 만들어지는 이름은 {서비스 인터페이스 이름}_SR{…}_CS 입니다. 같은 이름이 이미 쓰이고 있으면 _1, _2 처럼 번호가 붙습니다.
  • 이벤트와 Notifier가 있는 필드가 하나도 없으면 SR 인터페이스는 만들어지지 않고, 메서드와 Getter · Setter가 있는 필드가 없으면 CS 인터페이스는 만들어지지 않습니다.
  • 이전에 이 서비스 인터페이스에서 파생해 둔 인터페이스가 있으면 덮어쓰거나 중복해서 만들지 않고 그대로 둡니다. 손으로 고쳐 둔 내용도 유지됩니다. 다만 판정 기준은 이름이 아니라 파생 표시이므로, 손으로 만들어 둔 {이름}_SR 은 파생을 막지 못하고 번호가 붙은 인터페이스가 따로 만들어집니다.

메뉴의 Derive Signal 은 선택한 Sender-Receiver 인터페이스 하나를 대상으로 시그널·시그널 그룹·PDU를 Signal 에디터에, 그에 대응하는 데이터 매핑을 System 페이지에 만듭니다 (07. Signal 에디터 참조). 서비스 인터페이스를 만드는 Derive Service Interface 와는 결과물이 다릅니다.

SR/CS → ServiceInterface 방향에서는 Derive Service Interface 입력 창이 열립니다.

  • 제목은 Derive Service Interface, 안내문은 Service Interface name (an existing name adds the members to it) 입니다.
  • 기본값은 원본 이름에서 _SR / _CS 접미사를 뗀 것입니다.
  • 기존 서비스 인터페이스 이름을 고르면 그 인터페이스에 요소가 추가되고, 새 이름을 입력하면 새로 만들어집니다.
  • 이름이 AUTOSAR SHORT-NAME 규칙에 맞지 않으면 그 자리에서 오류 문구가 표시되고 진행되지 않습니다.

두 방향 모두 VFB 모델의 InterfaceMapping 항목을 함께 만들거나 채웁니다. 같은 서비스 인터페이스를 가리키는 매핑이 이미 있으면 새로 만들지 않고 빈 자리만 채우며, 사용자가 이미 값을 넣어 둔 행은 그대로 둡니다. 파생 전체가 Interface 모델과 VFB 모델에 걸친 하나의 실행 취소 단위로 기록되므로 Ctrl+Z 한 번으로 되돌아갑니다. VFB 모델을 찾지 못하면 경고가 표시되고 인터페이스만 만들어집니다.

SOA DEPLOYMENT 패널의 는 이름이 같지만 다른 동작으로, 프로젝트 전체를 대상으로 하는 CP-SOA 파생을 다시 실행합니다(9.4.1).

9.6 단축키

저장 · 실행 취소 · 삭제 단축키는 표 기반 모델 편집기 공통입니다(18.4 참조). Ctrl+S 한 번이 INTERFACE · SERVICE · 내장 DataType을 함께 기록한다는 점만 다릅니다.

Delete 는 왼쪽 목록에서 선택한 인터페이스를 삭제합니다. Mapping 탭에서는 매핑이 인터페이스 선택과 별개로 관리되므로 키를 눌러도 아무 일도 일어나지 않으며, 매핑을 삭제하려면 왼쪽 패널의 버튼을 사용합니다. Mode-Switch 탭에서 STATE MACHINE 다이어그램의 노드나 전이선을 선택해 둔 상태라면 같은 키가 그 다이어그램 요소에도 적용되므로(9.3.4), 인터페이스를 지울 때는 다이어그램 선택을 먼저 해제합니다.

9.7 저장 · 실행 취소 · 외부 변경

  • 인터페이스 편집은 Interface 모델과 Service 모델로 나뉘어 기록되지만, 오른쪽 DATA TYPE 패널의 DataType 모델까지 Ctrl+S 한 번으로 함께 저장됩니다.
  • 실행 취소의 단위는 저장이 아니라 편집 하나입니다. 편집이 두 파일에 걸쳐 있으면(예: 파생, 이름 변경에 따른 참조 갱신) 그 한 번의 Ctrl+Z 로 양쪽이 함께 되돌아가고, 한 파일만 건드린 편집은 그 파일만 되돌아갑니다.
  • 텍스트 입력은 포커스를 얻어 잃을 때까지가 하나의 편집 단위입니다. 즉 이름을 여러 글자 고쳐도 Ctrl+Z 한 번으로 통째로 되돌아갑니다.
  • 편집 중인 내용이 있는 상태에서 디스크의 파일이 외부에서 바뀌면 다시 읽지 않고 편집 중인 내용을 지킵니다. 이때 다음과 같은 경고 토스트가 표시됩니다 — Interface file changed on disk. Keeping your unsaved edits - save to overwrite the external change. 또는 Service file changed on disk. Keeping your unsaved edits - save to overwrite the external change.

9.8 이름 규칙

인터페이스와 그 하위 요소의 이름은 AUTOSAR SHORT-NAME 규칙(영문자로 시작, 영문자·숫자·밑줄)을 따릅니다. 규칙에 어긋나는 이름을 입력하면 입력란이 주황색 경고로 바뀌고 Must start with a letter, then letters/digits/underscores only 가 표시됩니다. 이름을 비우면 붉은색으로 Name is required 가 표시되고 빈 값은 커밋되지 않습니다.

경고 상태의 이름을 실제로 거부하는지는 자리마다 다릅니다. Adaptive 탭, Persistency 인터페이스, Mapping 탭, 그리고 항목을 새로 만들거나 파생할 때 뜨는 입력 창은 규칙에 맞지 않는 이름을 반영하지 않으며, 이 자리에서는 128자를 넘는 이름도 함께 거부합니다. 반면 Service · Sender-Receiver · Client-Server · Mode-Switch · Error Domain 탭의 Name 칸은 경고만 표시할 뿐 값 자체는 그대로 모델에 들어가고, 길이도 검사하지 않습니다.

같은 Mode-Switch 탭이라도 MODE DECLARATION 행의 이름과 SOME/IP · DDS 배포 이름은 규칙에 맞지 않으면 이전 값으로 되돌아갑니다. 익스포트 전에 경고가 남아 있는 이름이 없는지 확인합니다. 별도의 오류 대화상자는 뜨지 않습니다.

9.9 다른 에디터와의 연동

  • VFB 에디터에서 포트에 인터페이스를 지정할 때 여기서 정의한 목록이 후보로 나타납니다 (08. VFB 에디터 참조).
  • VFB의 Service 포트에서 DERIVE SR/CS INTERFACE 를 실행하면 이 에디터에 SR/CS 인터페이스와 InterfaceMapping이 생성됩니다.
  • Machine Configuration 다이얼로그(8.10)의 Persistency 저장소에서 Derive PersistencyInterface ()를 실행하면 여기에 Persistency 인터페이스가 추가됩니다.
  • 인터페이스 이름을 바꾸면 이를 참조하는 SWC 포트가 함께 갱신됩니다. VFB 에디터가 열려 있으면 메모리에서, 닫혀 있으면 SWC 정의 파일을 직접 고쳐서 갱신하며, 이름 변경과 참조 갱신이 하나의 실행 취소 단위로 묶입니다. ECUC 설정의 참조도 같은 방식으로 갱신됩니다 (12. ECUC 참조).
  • ARXML 임포트/익스포트는 13. 임포트 · 익스포트에서 다룹니다.
  • 단축키 전체 목록은 19. 단축키에서 확인할 수 있습니다.