Skip to content

2.4 Extension 타입

헤더 파일:

  • include/extension_types.h

개요

ExtensionClient 모듈은 플러그인 데이터를 기본 정보, 실행 상태, 전체 상세 정보의 3계층 구조로 표현합니다.

GetList()std::vector<ExtensionInfo> 를 반환하고, Get(const std::string& name) 은 단일 ExtensionInfo 를 반환하며, C99 Arm_Extension_GetList / Arm_Extension_Get 는 같은 구조를 compact JSON 텍스트로 직렬화합니다.

2.4.1 JSON 형태

단일 플러그인 상세 정보:

json
{
  "extension": {
    "name": "demo",
    "author": "agilebot",
    "type": "easyservice",
    "scriptLang": "python",
    "description": "demo extension",
    "version": "1.0.0",
    "contact": "",
    "copyright": "",
    "license": "",
    "entry": "main.py",
    "url": "http://127.0.0.1:9000"
  },
  "state": {
    "enabled": true,
    "isRunning": true,
    "port": 9000
  }
}

플러그인 목록:

json
[
  {
    "extension": {},
    "state": {}
  }
]

2.4.2 ExtensionBaseInfo

ExtensionBaseInfo 는 플러그인의 기본 메타데이터를 나타내며, 반환 JSON의 extensionClient 노드에서 옵니다. 주로 플러그인 식별 정보를 표시하고, 플러그인 타입을 판단하며, 후속 조회, 시작/중지, 서비스 호출 시 플러그인 식별자 소스로 사용됩니다.

모든 필드는 문자열입니다. 서버에서 필드가 누락되었거나 필드 타입이 맞지 않으면 SDK가 빈 문자열로 채웁니다.

필드타입설명일반적인 용도
namestd::string플러그인 이름이며 플러그인의 주요 식별자ExtensionClient::Get() , Toggle() , CallService() 에 전달
authorstd::string플러그인 작성자플러그인 출처 표시
typestd::string플러그인 타입. 예: EasyService 계열 플러그인플러그인 기능 판단 또는 UI 분류
scriptLangstd::string스크립트 언어. 필드명은 서버 측 camelCase 유지Python 같은 실행 언어 표시
descriptionstd::string플러그인 설명플러그인 용도 표시
versionstd::string플러그인 버전버전 확인 및 버전 번호 표시
contactstd::string연락처유지보수자 연락처 표시
copyrightstd::string저작권 정보저작권 고지 표시
licensestd::string라이선스사용 허가 정보 표시
entrystd::string플러그인 진입 파일플러그인 시작 진입점 확인
urlstd::stringWeb 플러그인 접근 주소Web 페이지 열기 또는 서비스 진입점 위치 확인

2.4.3 ExtensionState

ExtensionState 는 플러그인의 실행 상태를 나타내며, 반환 JSON의 state 노드에서 옵니다.

필드타입설명업무 측 일반적인 용도
enabledbool플러그인 활성화 여부사용자가 시작/중지 또는 호출을 시작할 수 있는지 결정
isRunningbool플러그인 프로세스 실행 여부. 필드명은 서버 측 camelCase 유지플러그인 서비스를 호출할 수 있는지 판단
portint32_t플러그인 서비스 포트. 누락 시 기본값 0플러그인 서비스 포트 위치 확인. 0 은 유효한 포트가 제공되지 않았음을 의미

2.4.4 ExtensionInfo

ExtensionInfoExtensionClient 모듈의 통합 반환 구조입니다.

  • GetList()std::vector<ExtensionInfo> 를 반환합니다.
  • Get() 은 단일 ExtensionInfo 를 반환합니다.
  • C99 Arm_Extension_GetList / Arm_Extension_Get 는 같은 필드명의 JSON을 반환합니다.
필드타입설명업무 측 일반적인 용도
extensionClientExtensionBaseInfo플러그인 기본 정보플러그인 이름, 타입, 진입점, 버전 등 메타데이터 읽기
stateExtensionState플러그인 실행 상태플러그인 활성화 여부, 실행 여부, 서비스 포트 판단

플러그인 목록을 읽을 때 각 배열 요소는 ExtensionInfo 입니다. 단일 플러그인 상세 정보를 읽을 때도 같은 구조가 반환되며, 대상 플러그인만 포함합니다.

2.4.5 읽는 예

판단할 내용읽을 필드설명
이후 어떤 플러그인을 조작할지info.extension.name계속 Get() , Toggle() , CallService() 에 전달 가능
플러그인을 호출할 수 있는지info.state.enabledinfo.state.isRunning보통 활성화되고 실행 중이어야 서비스 호출에 적합
플러그인 서비스가 어느 포트에 있는지info.state.port0 은 로봇 본체 측 서비스가 유효한 포트를 반환하지 않았음을 의미
플러그인 진입 스크립트info.extension.entry플러그인 시작 진입점 확인에 사용
플러그인 타입과 스크립트 언어info.extension.typeinfo.extension.scriptLang표시 및 분류에 사용

2.4.6 기본값 규칙

  • 서버 응답에 필드가 누락되면 문자열 필드는 빈 문자열로 채웁니다.
  • enabled / isRunning 이 누락되면 false 로 채웁니다.
  • port 가 누락되었거나 타입이 유효하지 않으면 0 으로 채웁니다.

최상위 extensionClient / state 노드가 누락되면 SDK는 빈 객체로 처리한 뒤 필드별로 기본값을 채웁니다.

2.4.7 C99 매핑 기준

C99 인터페이스출력 내용
Arm_Extension_GetListExtensionInfo[] 의 compact JSON 텍스트
Arm_Extension_Get단일 ExtensionInfo 의 compact JSON 텍스트

추가 규칙:

  • C99 출력은 추가 들여쓰기 없는 UTF-8 compact JSON을 사용합니다.
  • Arm_Extension_CallService 가 반환하는 것은 서비스 결과 result 의 JSON 텍스트이며, ExtensionInfo 구조체 계열에 속하지 않습니다.