반응형

[Classic AUTOSAR] Socket Adaptor(SoAd) 2. 기능 사양 (1) Socket Connections

참조 : https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf

TCP/IP 통신은 인터넷 소켓을 기반으로 합니다. 인터넷 소켓은 tuple IP 주소와 포트로 식별되는 통신 링크의 endpoint입니다.

 

전송 프로토콜에 따라 소켓은 연결이 없는 UDP 소켓과 연결 지향 TCP 소켓으로 구분됩니다. TCP는 point-to-point 통신 관계를 기반으로 하며, 브로드캐스트 또는 멀티캐스트가 불가능합니다. 또한 한 쪽이 연결을 설정하고 다른 쪽이 들어오는 요청을 수락해야 합니다. 두 스테이션은 서로 여러 연결을 설정할 수 있으며, 각각은 다른 소켓에 의해 처리되며 사용되는 포트 번호 중 적어도 하나는 달라야 합니다. TCP에서 Source에서 Sink로 전송된 모든 메시지는 순서가 보존된 연속 바이트의 연속 스트림으로 간주됩니다. 모든 메시지에 걸친 바이트 순서를 유지하기 위해 승인 체계가 마련되어 있습니다. Sink가 특정 시간 내에 수신을 확인하지 않으면 Source에서 메시지를 재전송합니다. TCP는 데이터 무결성(체크섬 사용), 바이트 순서 및 완전성을 보장합니다.

 

TCP/IP 통신의 추상화를 위해 SoAd는 소켓 연결을 정의합니다. SoAd 소켓 연결은 로컬 소켓(예: 로컬 주소 식별자 및 로컬 포트)과 원격 소켓(예: 원격 IP 주소 및 포트) 간의 연결은 물론 전송 프로토콜, SoAd PDU 헤더 사용, 버퍼와 같은 연결 매개변수를 지정합니다. 각 소켓 연결은 고유 식별자(SoConId)로 식별할 수 있습니다. 로컬 소켓당 여러 통신 파트너를 동시에 지원하기 위해 동일한 연결 매개변수를 가진 소켓 연결을 소켓 연결 그룹으로 그룹화할 수 있습니다.

 

[SWS_SoAd_00588] SoAd는 각각 SoAd_OpenSoCon() 및 SoAd_CloseSoCon()로 호출될 때 소켓 연결을 열거나 닫는 요청을 저장하지만 연결 설정 및 종료 정책에 따라 SoAd_MainFunction()에서만 요청을 처리합니다.

 

[SWS_SoAd_00743] SoAd는 다음과 같은 상황에서 원격 주소를 lock합니다.
(a) SOAD_SOCON_OFFLINE 상태가 아닌 TCP 소켓 연결,
(b) active 리셉션,
(c) TP-PDU의 보류 중인 수신,
(d) active 전송,
(e) nPdu 기능의 전송 보류,
(f) SoAd_IfRoutingGroupTransmit() 또는 SoAd_IfSpecificRoutingGroupTransmit() 을 통해 시작된 보류 중인 전송. 

 

lock된 원격 주소는 상위 계층에서 수정할 수 없습니다.

 

1. 소켓 연결 Open

[SWS_SoAd_00589] 소켓 연결을 위한 Open 시도 조건

 SoAd_MainFunction()에서 SoAd는 다음 기준을 모두 충족하는 각 소켓 연결을 Open하려고 시도합니다.
(1) 소켓 연결에 할당된 TcpIp 소켓이 없습니다.
(2) Open은 (a) 다음 SoAd_CloseSoCon() 호출에 의해 취소되지 않은 이전 SoAd_OpenSoCon() 호출에 의해 명시적으로 요청되거나 (b) SoAdSocketAutomaticSoConSetup이 TRUE일 때 암시적으로 요청됩니다.
(3) 원격 주소가 설정됨(구성에 의해 지정되거나 SoAd_SetRemoteAddr() 기능을 통해 설정됨)
(4) 로컬 IP 주소가 할당됩니다. 즉, SoAd_LocalIpAddrAssignmentChg()가 관련 LocalAddrId 및 TCPIP_IPADDR_STATE_-ASSIGNED를 State로 사용하여 호출됩니다. 

 

[SWS_SoAd_00590] TCP 소켓 연결 open 과정

SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 단일 소켓 연결을 포함하는 소켓 연결 그룹의 일부인 UDP 소켓 연결을 open합니다.(즉, 소켓 연결 그룹 구성 컨테이너에 하나의 소켓 연결만 있음). 또는 SoAdSocketTcpInitiate가 TRUE로 설정된 TCP 소켓 연결:
(1) TcpIp_DomainType이 암시적으로 지정된 TcpIp_SoAdGetSocket()을 호출하여 TcpIp에서 적절한 소켓을 가져옵니다.
SoAdSocketLocalAddressRef 및 SoAdSocketProtocol에 의해 지정된 프로토콜 유형.
(2) [SWS_SoAd_00689]에 따라 소켓 특정 매개변수를 변경합니다.
(3) SoAdSocketLocalAddressRef로 지정된 로컬 주소 식별자와 SoAdSocketLocalPort로 지정된 로컬 포트로 TcpIp_Bind()를 호출하여 소켓을 로컬 주소 및 포트에 바인딩합니다.

(4) TCP 소켓의 경우 TcpIp_TcpConnect()를 호출하여 TCP 연결을 시작합니다.

 

[SWS_SoAd_00638] SoAdSocketTcpInitiate가 FALSE로 설정된 TCP 소켓 연결 Open 과정

SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 SoAdSocketTcpInitiate가 FALSE로 설정된 TCP 소켓 연결을 엽니다.
(1) 소켓 연결에 Listen-Socket이 할당되지 않은 경우:
 (a) SoAdSocketLocalAddressRef에 의해 암시적으로 지정된 TcpIp_DomainType 및 SoAdSocketProtocol에 의해 지정된 프로토콜 유형으로 TcpIp_SoAdGetSocket()을 호출하여 TcpIp에서 적절한 소켓을 가져옵니다.
 (b) [SWS_SoAd_00689]에 따라 소켓 특정 매개변수를 변경합니다.
 (c) SoAdSocketLocalAddressRef에 의해 지정된 로컬 주소 식별자와 SoAdSocketLocalPort에 의해 지정된 로컬 포트로 TcpIp_Bind()를 호출하여 소켓을 로컬 주소 및 포트에 바인딩합니다.
 (d) 소켓 연결 그룹에 Listen-Socket 할당
 (e) 소켓 연결을 활성화하여 원격 노드의 연결을 수락합니다.
 (f) TCP 소켓 연결 그룹의 일부인 소켓 연결 수로 MaxChannels를 설정하고 TcpIp_TcpListen()을 호출하여 Listen-Socket에서 원격 연결 요청을 수신합니다.
(2) Listen-Socket이 소켓 연결에 이미 할당된 경우:
 (a) 소켓 연결을 활성화하여 원격 노드의 연결을 수락합니다.

참고: TCP 소켓 연결 그룹(및 SoAdSocketTcpInitiate가 FALSE로 설정됨)의 모든 소켓 연결은 들어오는 연결 요청("Listen-Socket")에 대해 하나의 TcpIp 소켓을 공유하지만 TcpIp 모듈에서 생성하고 SoAd_TcpAccepted( ) 연결이 설정된 후 Open

 

[SWS_SoAd_00639] UDP소켓 연결 open 과정

SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 여러 소켓 연결을 포함하는 소켓 연결 그룹의 일부인 UDP 소켓 연결을 엽니다.
(1) 소켓 연결 그룹에 UDP 소켓이 할당되지 않은 경우:
(a) SoAdSocketLocalAddressRef에 의해 암시적으로 지정된 도메인 유형과 SoAdSocketProtocol에 의해 지정된 프로토콜 유형으로 TcpIp_SoAdGetSocket()을 호출하여 TcpIp에서 적절한 소켓을 가져옵니다.
(b) [SWS_SoAd_00689]에 따라 소켓 특정 매개변수를 변경합니다.
(c) SoAdSocketLocalAddressRef에 의해 지정된 로컬 주소 식별자와 SoAdSocketLocalPort에 의해 지정된 로컬 포트로 TcpIp_Bind()를 호출하여 소켓을 로컬 주소 및 포트에 바인딩합니다.
(d) UDP 소켓을 소켓 연결 그룹에 할당합니다.
(e) 소켓 연결 그룹의 공유 UDP 소켓을 통한 통신을 위해 소켓 연결을 활성화합니다.
(2) UDP 소켓이 소켓 연결 그룹에 이미 할당된 경우:
(a) 소켓 연결 그룹의 공유 UDP 소켓을 통한 통신을 위해 소켓 연결을 활성화합니다.

참고: UDP 소켓 연결 그룹의 모든 소켓 연결은 동일한 TcpIp 소켓을 공유합니다.

 

[SWS_SoAd_00689]

소켓 관련 매개변수가 새 소켓 할당의 일부로 변경되어야 하는 경우 SoAd는 아래 지정된 각 관련 절에 대해 ParameterId 및 ParameterValue를 사용하여 TcpIp_ChangeParameter()를 호출하여 연결된 소켓 연결의 구성에 따라 매개변수를 변경합니다. 
(1) TCP 소켓의 경우: TCPIP_PARAMID_TCP_RXWND_MAX 및 선택적 매개변수가 활성화된 경우 SoAdSocketTpRxBufferMin에 의해 지정된 값
(2) TCPIP_PARAMID_FRAMEPRIO 및 선택적 매개변수가 활성화된 경우 SoAdSocketFramePriority에 의해 지정된 값
(3) TCP 소켓의 경우: TCPIP_PARAMID_TCP_NAGLE 및 관련 선택적 매개변수 SoAdSocketTcpNoDelay가 FALSE로 설정된 경우 값 0x01 또는 매개변수가 TRUE로 설정된 경우 0x00입니다.
(4) TCP 소켓의 경우: TCPIP_PARAMID_TCP_KEEPALIVE 및 SoAdSocketTcpKeepAlive에서 지정한 값
(5) TCP 소켓의 경우: TCPIP_PARAMID_TCP_KEEPALIVE_TIME 및 선택적 매개변수가 활성화된 경우 SoAdSocketTcpKeepAliveTime에서 지정한 값
(6) TCP 소켓의 경우: TCPIP_PARAMID_TCP_KEEPALIVE_PROBES_MAX 및 선택적 매개변수가 활성화된 경우 SoAdSocketTcpKeepAliveProbesMax에 의해 지정된 값
(7) TCP 소켓의 경우: TCPIP_PARAMID_TCP_KEEPALIVE_INTERVAL 및 선택적 매개변수가 활성화된 경우 SoAdSocketTcpKeepAliveInterval에 의해 지정된 값.
(8) TCP 소켓의 경우: TCPIP_PARAMID_TCP_OPTIONFILTER 및 선택적 매개변수가 활성화된 경우  SoAdSocketTCPOptionFilterRef에서 참조하는 TcpIpTcpConfigOptionFilter에 지정된 TcpIpTcpConfigOptionFilterId의 값.
(9) TCPIP_PARAMID_PATHMTU_ENABLE 및 선택적 매개변수가 활성화된 경우 oAdSocketPathMTUEnable에 의해 지정된 값.
(10) TCPIP_PARAMID_FLOWLABEL 및 선택적 매개변수가 활성화된 경우 SoAdSocketFlowLabel에 의해 지정된 값.
(11) TCPIP_PARAMID_DSCP 및 선택적 매개변수가 활성화된 경우 SoAdSocketDifferentiatedServicesField에 의해 지정된 값.
(12) UDP 소켓의 경우: TCPIP_PARAMID_UDP_CHECKSUM 및 SoAdSocketUDPChecksumEnabled 값. ()
(13) TCP 소켓의 경우: SoAdSocketTcpTlsConnectionRef가 정의된 경우 이 소켓에 TLS 연결을 할당하기 위해 매개변수 ID TCPIP_PARAMID_TLS_CONNECTION_ASSIGNMENT 및 이 참조의 값을 매개변수 값으로 사용하여 함수를 호출해야 합니다.

 

[SWS_SoAd_00591] SoAd_MainFunction() 내에서 열기 작업을 성공적으로 수행한 후 SoAd는 UDP 소켓의 경우 소켓 연결 상태를 SOAD_SOCON_ONLINE으로 변경하고 SoAdSocketUdpListenOnly가 TRUE로 설정되거나 원격 주소가 다음을 수행하는 값으로 설정됩니다. 와일드카드를 포함하지 않습니다.

 

[SWS_SoAd_00686]⌈ SoAd_MainFunction() 내에서 열기 작업을 성공적으로 수행한 후 SoAd는 다음과 같은 경우 소켓 연결 상태를 SOAD_SOCON_RECONNECT로 변경합니다.
(1) TCP 소켓 연결 또는
(2) 와일드카드가 포함된 원격 주소로 구성된 UDP 소켓 연결.

 

[SWS_SoAd_00592] SoAd_RxIndication() 내에서 메시지 데이터를 분석하거나 전달하기 전에 SoAd는 (a) 와일드카드로 지정된 원격 주소 부분(예: TCPIP_IPADDR_ANY로 설정된 원격 IP 주소)을 수신된 메시지의 관련 소스 주소 부분으로 덮어씁니다. (b) 다음 조건이 모두 참인 경우 소켓 연결 상태를 SOAD_SOCON_ONLINE으로 변경합니다.
(1) 현재 연결 상태가 SOAD_SOCON_ONLINE이 아닙니다.
(2) UDP 소켓
(3) SoAdSocketUdpListenOnly가 FALSE로 설정됩니다.
(4) SoAdSocketMsgAcceptanceFilterEnabled가 TRUE로 설정됨
(5) 원격 주소가 설정되었지만 와일드카드가 포함되어 있습니다.
(6) 수신된 메시지는 메시지 수락 정책에 따라 수락됩니다.

 

[SWS_SoAd_00593]⌈ SoAd_TcpConnected() 내에서 SoAd는 다음 조건이 모두 참인 경우 소켓 연결 상태를 SOAD_SOCON_ONLINE으로 변경합니다.
(1) 현재 연결 상태가 SOAD_SOCON_ONLINE이 아닙니다.
(2) TCP 소켓
(3) SoAdSocketTcpInitiate가 TRUE로 설정됨

 

[SWS_SoAd_00594] SoAd_TcpAccepted()에서 SocketId와 관련된 TCP SoAdSocketConnectionGroup의 SoAdSocketTcpInitiate가 FALSE로 설정된 경우 SoAd는 다음 작업을 수행합니다.
(1) 최상의 일치 알고리즘([SWS_SoAd_00680] 참조)을 사용하여 소켓 연결 중 하나를 선택하고 선택한 소켓 연결을 계속하거나 추가 처리를 건너뛰고 일치 항목을 찾을 수 없으면 E_NOT_OK로 반환합니다.
(2) 소켓 연결을 위해 설정된 원격 주소에 와일드카드가 포함된 경우 와일드카드로 지정된 원격 주소 부분(예: TCPIP_IPADDR_ANY로 설정된 원격 IP 주소)을 수신된 메시지의 관련 소스 주소 부분으로 덮어씁니다.
(3) 설정된 연결에 사용되며 SocketIdConnected 매개변수로 제공된 TcpIp 소켓을 선택한 소켓 연결에 할당합니다.
(4) 이 소켓 연결의 상태를 SOAD_SOCON_ONLINE으로 변경하고 E_OK를 반환합니다.

 

[SWS_SoAd_00636] SoAd_TcpAccepted()에서 SocketId와 관련된 TCP SoAdSocketConnectionGroup이 SoAdSocketTcpInitiate와 SoAdSocketMsgAcceptanceFilterEnabled가 모두 FALSE로 설정되어 있고 온라인이 아닌 경우(즉, 현재 연결 상태가 SOAD_SOCON_ON이 아닌 경우) SoAd는 다음 작업을 수행합니다.
(1) 설정된 연결에 사용되며 SocketIdConnected 매개변수로 제공된 TcpIp 소켓을 소켓 연결에 할당하고
(2) 소켓 연결 상태를 SOAD_SOCON_ONLINE으로 변경하고 E_OK를 반환합니다.

 

[SWS_SoAd_00595]⌈ PDU 헤더 모드가 비활성화된 소켓 연결(SoAdPduHeaderEnable = FALSE) 및 TP-API가 있는 상위 계층의 경우 SoAd는 종료 시 TpSduLength = 0인 <Up>_[SoAd][Tp]StartOfReception()을 호출해야 합니다. 연결 설정.

 

 

2. 소켓 연결 Close

[SWS_SoAd_00604]⌈ SoAd_MainFunction()에서 SoAd는 다음 기준을 모두 충족하는 각 소켓 연결을 닫습니다.
(1) 현재 연결 상태가 SOAD_SOCON_OFFLINE이 아닙니다.
(2) 이전 SoAd_CloseSoCon() 호출에 의해 닫기가 명시적으로 요청됨
(3) SoAd_CloseSoCon() 호출 시 소켓 연결을 열린 상태로 유지하기 위해 요청된 상위 계층이 없습니다(즉, SoAd_OpenSoCon()만큼 자주 SoAd_CloseSoCon()가 호출됨) 또는 중단이 TRUE로 설정된 SoAd_CloseSoCon()이 호출되었습니다.

 

[SWS_SoAd_00637]⌈ SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 소켓 연결을 닫습니다.
(1) 활성 TP 세션을 종료하고(있는 경우) 상위 계층에 종료에 대해 알립니다.
(2) 이 소켓 연결에 대한 추가 전송 또는 수신을 비활성화합니다. 즉, 새로운 전송 요청은 E_NOT_OK로 거부되고 수신된 메시지는 단순히 폐기됩니다.
(3) 관련 TcpIp 소켓 닫기
(4) SoAd_CloseSoCon() 요청으로 인해 소켓 연결이 닫히면 소켓 연결 상태를 SOAD_SOCON_OFFLINE으로 변경하고 그렇지 않으면 SOAD_SOCON_RECONNECT로 변경합니다.

 

[SWS_SoAd_00640]⌈ SoAd_MainFunction() 내에서 소켓 연결 종료 시 활성 TP 전송 종료를 상위 계층에 알리기 위해 SoAd는 <Up>_[SoAd][Tp]TxConfirmation() 매개변수 결과를 설정하여 호출해야 합니다.
(1) SoAd_CloseSoCon()에 의해 연결 끊김이 발생하고 모든 데이터가 올바르게 전송된 경우 E_OK
(2) 다른 이유로 E_NOT_OK.

[SWS_SoAd_00641]⌈ SoAd_MainFunction() 내에서 소켓 연결 종료 시 활성 TP 수신 종료를 상위 계층에 알리기 위해 SoAd는 <Up>_[SoAd][Tp]RxIndication()을 호출하고 매개변수 결과를 다음으로 설정합니다.
(1) SoAd_CloseSoCon()에 의해 연결이 끊어지고 수신된 모든 데이터가 상위 계층으로 올바르게 전달된 경우 E_OK,
(2) 다른 이유로 E_NOT_OK.

 

[SWS_SoAd_00642] SoAd_MainFunction() 내에서 소켓 연결을 닫을 때 관련 TcpIp 소켓을 닫기 위해 SoAd는 다음 작업을 수행합니다.
(1) TCP 소켓 연결의 경우:
(a) 매개변수 abort를 SoAd_CloseSoCon()에서 제공한 것과 동일한 값으로 설정하거나 SoAd_CloseSoCon()에서 닫기가 시작되지 않은 경우 FALSE로 설정하여 TcpIp_CloseSocket()을 호출하여 관련 소켓을 닫습니다.
(b) TCP 소켓 연결 그룹의 모든 소켓 연결이 SoAd_CloseSoCon()에 의해 닫힌 경우: 매개변수 abort를 SoAd_CloseSoCon()에서 제공한 것과 동일한 값으로 설정하거나 FALSE로 설정하여 TcpIp_CloseSocket()을 호출하여 관련 Listen-Socket을 닫습니다. 닫기가 SoAd_CloseSoCon()에 의해 시작되지 않은 경우.
(2) UDP 소켓 연결의 경우:
(a) 소켓 연결이 소켓 연결 그룹의 일부가 아닌 경우(즉, 소켓 연결 그룹 구성 컨테이너에 소켓 연결이 하나만 있는 경우): abort 매개변수를 다음과 동일한 값으로 설정하고 TcpIp_CloseSocket()을 호출하여 관련 소켓을 닫습니다. SoAd_CloseSoCon()에 의해 제공되거나 SoAd_CloseSoCon()에 의해 닫기가 시작되지 않은 경우 FALSE로 설정됩니다.
(b) UDP 소켓 연결 그룹의 모든 소켓 연결이 SoAd_CloseSoCon()에 의해 닫힌 경우: 매개변수 abort를 SoAd_CloseSoCon()에서 제공한 것과 동일한 값으로 설정하거나 FALSE로 설정하여 TcpIp_CloseSocket()을 호출하여 관련 UDP 소켓을 닫습니다. 케이스 닫기가 SoAd_CloseSoCon()에 의해 시작되지 않았습니다.

 

[SWS_SoAd_00643] 이벤트가 TCPIP_UDP_CLOSED로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는
(1) 관련 UDP 소켓 연결 그룹에서 SocketId로 식별되는 TcpIp 소켓 할당을 제거하고
(2) SOAD_SOCON_ONLINE에 있는 관련 소켓 연결 그룹의 모든 소켓 연결을 닫습니다(즉, 관련 TcpIp 소켓 닫기를 제외하고 지정된 닫기 작업 수행)⌋()

[SWS_SoAd_00645] 이벤트가 Listen-Socket에 대해 TCPIP_TCP_CLOSED로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는 관련 TCP 소켓 연결 그룹에서 SocketId로 식별되는 TcpIp 소켓 할당을 제거해야 합니다.

[SWS_SoAd_00646] 이벤트가 TCPIP_TCP_CLOSED 또는 TCPIP_TCP_RESET으로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는
(1) 관련 소켓 연결에서 SocketId로 식별되는 TcpIp 소켓 할당을 제거하고
(2) SOAD_SOCON_ONLINE에 있는 경우 소켓 연결을 닫습니다(즉, 관련 TcpIp 소켓 닫기를 제외하고 지정된 닫기 작업 수행).

[SWS_SoAd_00688] 이벤트가 TCPIP_TCP_FIN_RECEIVED로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는 중단 매개변수가 FALSE로 설정된 TcpIp_Close()를 호출하여 관련 소켓을 닫습니다.

 

3. 소켓 연결 Open/Close 시퀀스

Scenario 1:
1: Open
2: Main - ONLINE
3: Close
4: Open
5: Main - OFFLINE
6: Main - ONLINE
설명: 닫기 요청(3)이 실행된 후 열기 요청(4)이 실행됩니다.
합리성: 두 개의 통신 세션을 명확하게 분리하려면 닫기가 열기와 이겨야 합니다. 즉, 열기 요청(4)은 닫기 요청(3)을 취소하지 않습니다.

Scenario 2:
1: Open
2: Main - ONLINE
3: Close
4: Open
5: Close
6: Open
7: Close
8: Main - OFFLINE
9: Main, no change
주석: 닫기 요청(5)은 열기 요청(4) 및 (7) 취소(6)를 취소합니다.
합리적: 상위 계층이 활성화되기 전에 취소했으므로 통신 세션이 필요하지 않습니다.

4. 알림

[SWS_SoAd_00597]SoAd는 소켓 연결 상태가 변경될 때마다 구성된 상위 계층 알림 함수 <Up>_SoConModeChg()와 소켓에 대해 SoAdSocketSoConModeChgNotification이 TRUE로 설정된 경우 새로운 상태를 통해 소켓 연결 상태 변경을 상위 계층에 알려야 합니다. 


[SWS_SoAd_00741]소켓 연결 상태가 변경될 때마다 SoAd는 SoAdSocketSoConModeChgNotifUpperLayerRef에 의해 지정된 상위 레이어에 구성된 상위 레이어 알림 기능 <Up>_SoConModeChg()과 소켓 연결에 대한 선택적 참조가 설정된 경우 새로운 상태를 알려야 합니다.(SRS_Eth_00058)


[SWS_SoAd_00598]SoAd는 소켓 연결과 관련된 IP 주소 할당이 변경될 때마다 구성된 상위 계층 알림 기능 <Up>_LocalIpAddrAssignmentChg() 및 SoAdSocketIpAddrAssignmentChgNotification이 다음과 같을 경우 새 주소 상태를 통해 상위 계층에 IP 주소 할당 변경을 알려야 합니다. 소켓 연결에 대해 TRUE로 설정합니다.

반응형
반응형

[Classic AUTOSAR] Socket Adaptor(SoAd) 1. 소개 및 기능 개요

참조 : https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf

 

AUTOSAR 기본 소프트웨어 모듈 소켓 어댑터(SoAd)의 기능, API 및 구성을 알아보겠습니다. 

 

이더넷을 물리 계층으로 사용하는 데이터 전송의 TCP/IP 개념은 컴퓨팅 및 통신 환경에서 사실상의 표준으로 확립되었습니다. 응용 프로그램의 주소 지정, end points의 논리적 주소 지정 및 물리적 주소 지정은 모두 계층화된 프로토콜 및 번호 할당 제품군에서 다룹니다. 동적 구성 및 라우팅은 여기에서 구현된 개념의 핵심입니다.

 

AUTOSAR는 컴파일 타임에 미리 결정되고, 런타임 동안 고정된 정적 통신 관계의 개념을 따릅니다. 전송된 데이터는 데이터가 이동해야 하는 소스 및 싱크만큼 미리 결정된 것으로 간주됩니다. 소켓 어댑터 모듈(SoAd)은 이 두 개념 간의 격차를 해소하는 것을 목표로 합니다. AUTOSAR에 필요한 정보를 포함하는 사전 결정된 구성을 설정하고 런타임 동안 업데이트되도록 일부 항목을 열어 두어 상충되는 개념을 활용합니다. 또한 SoAd는 TCP/IP에서 소켓 기반 통신 처리에서 콜백 기반 소프트웨어 아키텍처를 분리합니다.

 

SoAd 모듈의 주요 목적은 PDU(예: PDU 라우터)를 사용하는 AUTOSAR 통신 서비스 모듈과 소켓 기반 TCP/IP 스택 간의 인터페이스를 생성하는 것입니다. I-PDU ID를 소켓 연결에 매핑하거나 그 반대로 매핑합니다. TCP/IP 프로토콜 스택은 그림 1과 같이 TcpIp SWS에 지정됩니다. TCP/IP 스택의 내부 기능 구조는 정보 제공을 위해 개략적으로 표시됩니다. SoAd 모듈 및 이에 따른 이더넷 통신 스택은 AUTOSAR R4.0.1에서 처음 도입되었으며 AUTOSAR R4.0과 AUTOSAR R4.1.1 사이에 몇 가지 주요 개념적 변경 사항이 적용되었습니다.

반응형

+ Recent posts