개요 · 프로토콜 정의

Aurora Protocol의 목적, 연결 구성, 메시지 형식과 통신 규칙을 설명합니다.

개요

이 문서는 Aurora Professional(Aurora Protocol Player)과 연동하여 EUT(Equipment Under Test, 시험 대상 장비) 를 제어하기 위한 Aurora Protocol을 정의합니다.

통신은 TCP/IP 또는 UDP를 이용하여 문자열로 주고받으며, 같은 네트워크의 기기에서 접속하여 EUT의 WLAN 모드 변경 또는 제어를 수행할 수 있습니다.

이 가이드는 Aurora Professional 2.x / 문서 버전 2.1 기준입니다. 명령은 필요에 따라 계속 추가될 수 있으며, 현재는 시험 자동화에 반드시 필요한 항목만 정리되어 있습니다.

Aurora Protocol Player는 Professional(기업·조직) 플랜에서만 사용할 수 있습니다. 개인 사용자 플랜(Starter·Standard)에는 포함되지 않으므로 이 프로토콜로 연동할 수 없습니다. 플랜별 차이는 요금제에서 확인하세요.

구성

Aurora Protocol Player를 실행하면 TCP/IP 서버 또는 UDP 수신 엔드포인트로 동작합니다. 어느 쪽으로 동작할지는 Player의 설정(Settings)에서 고릅니다.

  • TCP/IP에서 클라이언트는 하나의 연결만 유지됩니다. 다른 연결이 시도되면 기존 연결을 종료하고 새 연결을 유지합니다.
  • UDP에서는 연결 개념이 없습니다. 응답은 마지막으로 데이터를 보낸 클라이언트의 IP와 설정의 원격 포트(Remote Port)로 전송합니다. 받아들일 발신지는 허용 IP(Allowed IP)로 지정할 수 있고, 비워 두면 시작·재시작 후 처음 데이터를 보낸 발신지가 그 실행 동안 고정됩니다.
  • 연결이 성공한 후에는 User Application이 주도적으로 Command를 보내고 응답을 받아 처리합니다.
  • User Application이 Command를 보내지 않으면 서버는 아무 처리도, 데이터 송신도 하지 않습니다.
Aurora Protocol 데이터 흐름도
데이터 흐름도 — User Application ↔ Aurora Protocol Player

연결 정보

항목값
통신 방식TCP/IP(기본값) 또는 UDP — Player의 설정에서 선택
IPTCP/IP는 127.0.0.1(같은 PC), UDP는 0.0.0.0(모든 어댑터)이 기본값. Player가 동작하는 PC의 주소 중에서 고릅니다
Port7010 (기본값 — 설정에서 변경 가능)
Remote Port7011 (UDP 전용 기본값 — 클라이언트가 응답을 받을 포트)
전송문자열, NULL(\0) 종료
문자 인코딩CP949 또는 UTF-8 — Player가 메시지마다 자동으로 판별 (한글 등 ASCII 밖의 문자 참고)
타임아웃Command 전송 후 최대 30초

프로토콜 정의

프로토콜은 Command와 Data로 구성되며, 문자열은 반드시 NULL로 끝나야 합니다.

명령 전송 (클라이언트 → 서버)

형식
!CC:DATA\0
구분CommandDelimiterData
크기3 Byte1 Byte128 Byte 이내
설명! + 2문자 (예: !00): (Colon)소문자 문자열, 항목 구분자는 , (Comma). 값 안의 쉼표는 \, (쉼표 이스케이프)

응답 (서버 → 클라이언트)

형식
!99:N\0
구분CommandDelimiterData
크기3 Byte1 Byte64 Byte 이내
설명!99: (Colon)숫자 (0 실패 · 1 성공 · <0 에러)

쉼표 이스케이프

클라이언트가 보내는 Data에서 ,는 항목 구분자입니다. 값 안에 쉼표가 필요하면 \, 로 씁니다. 이스케이프는 이것 하나뿐이며, 쉼표 앞이 아닌 역슬래시는 그대로 전달됩니다. 그래서 c:\image\a.png 같은 경로는 이스케이프할 필요가 없고, 값 끝의 역슬래시도 그대로 남습니다.

명령\,가 쓰이는 곳예
!01그룹 값 안의 쉼표. 그 그룹이 실행될 때 인수 구분(mArg1, mArg2, …)이 됩니다. 인수 하나 안에 쉼표 문자를 넣으려면 \\,!01:0,2.4G\,5G,11b
!30이미지 경로와 비교 문자열 안의 쉼표!30:c:\img\a.png,0,10,10,100,23,Hello\, world
!32제목과 본문 안의 쉼표!32:0,장비 점검\, 완료,보고서 확인 요망

서버가 보내는 응답은 이스케이프하지 않습니다. !31의 인식 문자열에는 쉼표가 들어 있을 수 있으므로, 첫 쉼표 앞을 결과 값, 마지막 쉼표 뒤를 비교 결과로 읽고 그 사이 전체를 인식 문자열로 읽으세요.

한글 등 ASCII 밖의 문자

제목·본문(!32), 스크립트 그룹 값(!01), 비교 문자열(!30)처럼 한글이 들어가는 Data는 CP949 또는 UTF-8로 보냅니다. Player는 메시지를 받을 때마다 인코딩을 자동으로 판별합니다.

받은 메시지Player의 해석
올바른 UTF-8이고 한글처럼 3바이트 이상인 문자가 들어 있음UTF-8
UTF-8로 읽을 수 없는 바이트가 있음CP949
ASCII만 있음 (예: !00:)판별하지 않고 직전 메시지의 인코딩을 이어 씀 (처음에는 CP949)
  • Player가 보내는 응답의 문자열(예: !31의 인식 결과)은 클라이언트가 마지막으로 쓴 인코딩으로 보냅니다. 클라이언트는 보낸 인코딩 그대로 응답을 읽으면 됩니다.
  • 크기 제한은 글자 수가 아니라 바이트 수입니다. 한글 한 글자는 CP949에서 2바이트, UTF-8에서 3바이트입니다.
  • 전송 길이는 인코딩한 바이트 배열의 길이로 정해야 합니다. 문자열 길이(글자 수)를 쓰면 메시지 뒷부분이 잘립니다.
  • 한 세션 안에서는 한 가지 인코딩만 쓰세요. 한글 없이 °처럼 2바이트 문자만 담긴 메시지는 두 인코딩 어느 쪽으로도 읽히므로 직전 인코딩을 따릅니다.
언어별 인코딩 (예: C#, C++)
C#   byte[] data = Encoding.UTF8.GetBytes(msg + "\0");                    // UTF-8
     byte[] data = Encoding.GetEncoding(949).GetBytes(msg + "\0");        // CP949
     socket.Send(data, data.Length, SocketFlags.None);                    // 바이트 배열 길이

C++  CStringA a(CW2A(msg, CP_UTF8));      // 또는 CP_ACP (한국어 Windows = CP949)
     send(s, a, a.GetLength() + 1, 0);    // NULL까지 포함한 바이트 수

글자를 하나씩 char로 바꿔 보내면(예: C++ (char)str[i]) 각 글자의 아래 1바이트만 전송되어 한글을 되살릴 수 없게 됩니다. 문자열 전체를 위 방법처럼 인코딩해서 보내세요. Aurora Professional 2.1.0.2부터는 해석할 수 없는 바이트가 와도 Player가 종료되지 않고, 처리하지 못한 메시지를 통신 로그에 [Error]로 기록합니다.

명령 분류

범위방향용도
!00 ~ !10클라이언트 → 서버시험 제어 (시작·스크립트·리부팅·재시도·정지·종료)
!30 ~ !39클라이언트 → 서버EUT와 무관한 부가 기능 (이미지 문자 인식 !30, 알림 전송 !32)
!90 ~ !99서버 → 클라이언트서버가 클라이언트로 보내는 알림·응답
@Exit세션 제어시험 대기 종료

전체 명령 목록과 시험 시작 → 종료 시퀀스는 시험 제어 명령에서 시작해 순서대로 따라가면 됩니다. Player 자체의 실행·화면·문서 작성 방법은 Protocol Player 사용법을, AI로 곧바로 앱을 만들고 싶다면 AI로 앱 만들기를 참고하세요.