본문 바로가기
mobilgene

Sender Receiver interface 와 Client Server interface 차이 정리

by Autosar 2026. 4. 13.
반응형

AUTOSAR 기반 프로젝트를 진행하다 보면 가장 자주 등장하는 용어가 있다.

- Port
- Interface
- Sender Receiver interface
- Client Server interface
- Rte_Read
- Rte_Write
- Rte_Call

처음 접하면 모두 비슷하게 느껴질 수 있다.

하지만 이 개념을 정확히 이해하지 못하면 SWC 연결이 꼬이거나, Generate 오류가 발생하거나, 구조 설계 자체가 잘못될 수 있다.

특히 Mobilgene에서는 Interface 설정이 전체 아키텍처의 시작점이기 때문에 반드시 이해하고 넘어가야 한다.

이번 글에서는 Interface의 개념, SR / CS 차이점, 그리고 실무에서 자주 볼 수 있는 예제 코드까지 정리해보겠다.

 

1. Interface란 무엇인가?

 

Interface는 SWC(Software Component) 간 통신 규칙이다.

쉽게 말하면 서로 다른 소프트웨어 컴포넌트가 데이터를 주고받기 위해 미리 정의한 약속이다.

예를 들어 아래와 같은 내용을 정의한다.

- 어떤 데이터를 전달할 것인가?
- 데이터 타입은 무엇인가?
- 값을 읽는 구조인가?
- 기능을 호출하는 구조인가?
- API 이름은 어떻게 생성될 것인가?

즉, Interface가 없으면 두 SWC는 연결될 수 없다.

Client Server Interface 와 Sender Receiver Interface

 

2. Port와 Interface의 차이

 

이 부분은 AUTOSAR 입문자가 가장 많이 헷갈린다.

Port

SWC 외부와 연결되는 통신 창구이다.
데이터가 들어오거나 나가는 실제 연결 지점이다.

 

Interface

그 Port가 어떤 방식으로 통신할지를 정의하는 규칙이다.

 

쉽게 비유하면
Port = USB 포트
Interface = USB 통신 규격

포트만 있다고 동작하지 않는다.
규격이 맞아야 통신이 가능하다.

 

3. Sender Receiver Interface (SR)

 

Sender Receiver는 데이터를 전달하는 방식이다.

한쪽 컴포넌트가 값을 보내고(Sender), 다른 컴포넌트가 그 값을 읽는다(Receiver).
즉, 지속적으로 변하는 데이터를 공유할 때 사용한다.

대표 사용 예시
- 실내 온도 값
- 배터리 전압
- 와이퍼 상태
- 헤드램프 상태
- 기어 위치
- 브레이크 스위치 상태

 

SR 실무 예제

 

차량 내 센서가 측정한 실내 온도를 공조 모듈(HVAC)이 읽어서 팬 속도를 제어한다고 가정해보자.

송신 측 SWC

void Sensor_100msRunnable(void)
{
    sint16 CabinTemp;

    CabinTemp = Adc_CabinTempValue;

    Rte_Write_PpCabinTemp_Temperature(CabinTemp);
}


코드 설명:


온도 센서 값을 읽는다.
RTE API를 통해 다른 컴포넌트에 전달한다.
Provide Port를 통해 데이터 제공 역할을 수행한다.


수신 측 SWC

void HVAC_100msRunnable(void)
{
    sint16 Temp;

    Rte_Read_RpCabinTemp_Temperature(&Temp);

    if (Temp > 28)
    {
        Fan_SetHigh();
    }
    else
    {
        Fan_SetLow();
    }
}


코드 설명:


센서 SWC가 보낸 온도 값을 읽는다.
온도가 높으면 팬 속도를 높인다.
Require Port를 통해 데이터를 받는다.

 

4. Client Server Interface (CS)

 

Client Server는 기능 요청 방식이다.

한 컴포넌트가 다른 컴포넌트에게 특정 기능 실행을 요청하고 결과를 반환받는다.
일반적인 함수 호출 구조와 가장 유사하다.

대표 사용 예시
- DTC 저장 요청
- EEPROM Write 요청
- 진단 서비스 실행
- CRC 계산 요청
- 시스템 초기화 요청

 

CS 실무 예제

 

오류가 발생했을 때 Application SWC가 Diagnostic SWC에게 고장 코드를 저장해달라고 요청하는 구조이다.

Client 측 코드

void MotorMonitor_Runnable(void)
{
    Std_ReturnType ret;

    if (Motor_Current > 50U)
    {
        ret = Rte_Call_RpDiag_SetDTC(MOTOR_OVERCURRENT_DTC);

        if (ret == E_OK)
        {
            WarningLamp_On();
        }
    }
}

 

모터 과전류 발생 여부를 확인하고, 진단 모듈에 DTC 저장 요청. 성공 시 경고등 점등

 

Server 측 코드

Std_ReturnType Diag_SetDTC(uint16 dtcCode)
{
    Dem_SetEventStatus(dtcCode, DEM_EVENT_STATUS_FAILED);
    return E_OK;
}


전달받은 DTC 코드를 DEM에 저장하고, 처리 결과를 반환

 

SR vs CS 차이점 정리
항목 Sender Receiver Client Server
목적 데이터 전달 기능 요청
구조 값 공유 함수 호출
API Rte_Read / Write Rte_Call
응답값 없음 있음
대표 예시 온도, 상태값, 전압 진단, 저장, 계산

 

초보자가 자주 하는 실수


Port만 만들고 Interface 미연결
→ Generate 오류 발생

SR인데 Rte_Call 사용 시도
→ API 구조가 다르다.

CS인데 Return 값 무시
→ 오류 처리 누락 가능성 있음

데이터 타입 불일치
→ uint8 / uint16 mismatch 자주 발생

 

정리

 

AUTOSAR에서 Interface는 단순 설정 항목이 아니다.
전체 시스템 구조를 연결하는 핵심 설계 요소이다.

- 데이터를 공유하면 SR
- 기능을 요청하면 CS
- Port는 연결 지점
- Interface는 통신 규칙

이 개념을 이해하면 Mobilgene 작업 속도와 코드 이해도가 크게 올라간다.

반응형