CXP 통신이 다른 인터페이스보다 좋은 이유 두번째 시간입니다.
이번 시간에는 Control & Stream channel에 대해 알아보도록 하겠습니다.
- CXP 통신이 다른 인터페이스보다 좋은 이유 1탄Control & Stream channel
Control & Stream channel
CoaXPress의 Data packet 전송 포맷은 총 4가지가 있습니다.
- Stream data packet
- Control command
- Control ACK
- Connection test

이번 포스팅에서는 위의 3가지 packet에 대해 자세히 알아보도록 하겠습니다.
Stream/Control packet size는 얼마 일까?
아래 그림은 Stream packet과 Control packet의 사이즈를 나타내는 표입니다.
Control packet은 보통 1024 byte 용량을 가지며, Stream packet의 경우 8192 byte 용량을 가집니다. 당연한 얘기지만, 카메라 제어를 위해 실어 보내는 데이터량보다 이미지를 보내는 데이터량이 더 많아 stream packet 사이즈가 더 큽니다.
(하지만 해당 값은 고정된 값이 아닙니다. PC 및 카메라 설정에 따라 달라질 수 있으므로 참고 정도만 하시는 것이 좋습니다.)

그럼 이제 Control packet과 Stream packet에 대해 자세히 알아보도록 하겠습니다.
Control channel 파헤치기
Control packet은 주고 받는 것이 있습니다.
“내가 너를 이 설정으로 컨트롤하고 싶어” 라고 보내면, 상대방은 해당 메시지를 받고 응답을 보내줍니다. “그래. 설정됐어~” 라고 말이죠.
이러한 흐름이 있어야 해당 기기를 ‘Control’ 했다고 볼 수 있습니다.
이 말인 즉슨, Command 와 ACK 가 존재한다는 것이지요.
이 둘의 통신 방식은 아래와 같습니다.
만약 Host에서 Control command를 날리면, Device는 해당 데이터를 해석하여 실행 후 적용했다는 ACK 메시지를 Host에게 전달합니다.

그리고 만약 Device 측에서 Transaction timeout 시간 안에 Ack를 보낼 수 없다고 판단하면 Host에 Wait Ack를 먼저 날려줍니다. (Wait 시간은 Host에서 알려줍니다.) 아래와 같이 말이죠.

Control command에는 변경할 memory location의 주소와 변경하고자 하는 데이터 내용을 실어서 보내줍니다.
(자세한 내용은 CXP 표준 문서 Table 21 – Control command payload format 참조)
그리고 ACK에는 해당 결과를 실어서 보내줍니다. Success 인지, Logical error인지 Physical error인지.
(이 또한 자세한 내용은 CXP 표준 문서 Table 22 – Acknowledgement payload format 참조)
그럼 Control packet은 이쯤에서 마무리하고 이번에는 Stream packet으로 넘어가 보겠습니다.
Stream channel 파헤치기
Stream packet 방식에서 CoaXPress만의 장점을 찾을 수 있습니다.
이 하나만 기억하셔도 좋습니다.

The protocol does not need to allow for packets arriving out of order (with tag number)
*출처: CoaXPress standard version 1.1 report
한 번 보낸 Packet data는 다시 보내지 않겠다는 의미를 내포하며,
packet loss가 나지 않게 데이터 전송에 있어 높은 신뢰성을 요구합니다.
이는 GigE의 UDP 통신과 대치되는 방식으로 GigE와 비교하여 현저히 낮은 Packet loss를 경험하실 수 있습니다.
이에 대한 자세한 내용은 다음 포스팅에서 다루도록 하겠습니다.
Comments are closed.