pdcomm::GemEquipment
클래스
HSMS 끝점(SEMI E37) 하나에서 동작하는 GEM 장비 역할(SEMI E30)입니다.
class GemEquipment final : public GemEndpoint생성자는 중지된 TcpEndpoint에 장비 식별 정보(MDLN, SOFTREV), 초기 제어 상태(control state), 상태 변수(status variable) 레지스트리를 구성합니다. 선택적 저장소는 start() 전, 끝점이 중지된 동안 구성합니다.
- 보고서와 수집 이벤트(configureReports(), configureFixedCatalog()): S2F33부터 S2F38까지와 S6F11에서 사용합니다.
- 알람(configureAlarms(), S5F1부터 S5F8까지)
- 원격 명령(configureCommands(), S2F41/F42)과 확장 원격 명령(configureEnhancedCommands(), S2F49/F50)
- 장비 상수(configureConstants(), S2F13부터 S2F16까지, S2F29/F30)
- 데이터 변수, 보고서 바인딩, 이벤트 디렉터리(configureDataVariables(), configureReportBindings(), configureEventDirectory(); S1F21부터 S1F24까지, S6F15부터 S6F22까지)
- 공정 프로그램(GemEndpoint::configurePrograms())과 스풀링(configureSpooling())
보고서 카탈로그는 알람, 명령, 상수보다 먼저 구성해야 합니다. 이들의 완료 CEID와 알람 CEID가 카탈로그에 이미 있어야 하기 때문입니다.
실행 중에는 라이브러리가 스트림 1 요청, 보고서·이벤트 정의, 알람 조회, 상수 조회, 이름 목록에 직접 응답합니다. 원격 명령, 상수 변경, 보고서 조회, 프로그램 요청, 스풀 요청은 응답 호출을 기다리는 Primary 결과를 만듭니다. 라이브러리는 물리 장비에서 아무것도 실행하지 않습니다.
const auto limits = pdcomm::secsLimits(4096, 4096, 128, 8);
pdcomm::TcpEndpoint transport(address, tcpOptions(PDCOMM_TCP_PASSIVE));
pdcomm::GemEquipment equipment(std::move(transport), limits,
pdcomm::GemControl::HostOffline, pdcomm::GemOnlineMode::Remote,
"PDComm", "0.1.0", 8, 1024, 4096);
const std::vector<uint8_t> temperature = {0x41, 0xac, 0, 0};
auto value = pdcomm::SecsItem::primitive(PDCOMM_SECS_F4, temperature, limits);
equipment.registerStatus(1, "Temperature", "C", value);
equipment.start();참고
- 이동 전용(move-only)입니다. 한 끝점에 대한 모든 호출은 직렬화해야 합니다(GemEndpoint 참고).
멤버
GemEquipment
생성자
endpoint의 소유권을 가져와 옵션 구조체로 GEM 장비(equipment)로 구성합니다.
GemEquipment(TcpEndpoint &&endpoint, const PdcommGemEquipmentOptions &options)매개변수
| 이름 | 설명 |
|---|---|
endpoint | GEM 역할이 없는 정지된 HSMS 끝점입니다. 이 객체로 이동되며, 생성자가 예외를 던지면 소멸됩니다. |
options | struct_size, 버전 1, reserved 0을 설정한 장비 옵션입니다. 모델과 소프트웨어 리비전은 길이로 구분된 ASCII로 복사됩니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았거나 이미 GEM 역할이 있으면PDCOMM_INVALID_STATE, 옵션이 잘못되었거나 식별 정보가 ASCII가 아니거나 초기 상태가 GemControl::AttemptOnline이면PDCOMM_INVALID_ARGUMENT, 식별 정보가 아이템 한도에 맞지 않으면PDCOMM_LIMIT_EXCEEDED입니다.
GemEquipment
생성자
endpoint의 소유권을 가져와 GEM 장비(equipment)로 구성합니다.
GemEquipment(TcpEndpoint &&endpoint, const PdcommSecsLimits &limits, GemControl initialControl, GemOnlineMode onlineMode, const std::string &model, const std::string &softwareRevision, size_t maxVariables, size_t maxMetadataBytes, size_t maxValueBytes)파라미터로 옵션 구조체를 만듭니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | GEM 역할이 없는 정지된 HSMS 끝점입니다. 이 객체로 이동되며, 생성자가 예외를 던지면 소멸됩니다. |
limits | 이 끝점의 모든 메시지에 적용할 SECS-II 한도입니다. |
initialControl | 초기 제어 상태입니다. GemControl::AttemptOnline은 거부됩니다. |
onlineMode | 온라인이 될 때 들어가는 온라인 하위 상태입니다. |
model | 장비 모델(MDLN)입니다. ASCII입니다. |
softwareRevision | 소프트웨어 리비전(SOFTREV)입니다. ASCII입니다. |
maxVariables | 등록할 수 있는 상태 변수의 최대 개수입니다. |
maxMetadataBytes | 상태 변수 이름과 단위의 최대 바이트 수입니다. |
maxValueBytes | 상태 변수 값의 최대 바이트 수입니다. |
참고
- 예외
pdcomm::Error: 옵션 생성자와 같은 상태에서 발생합니다.
alarmAt
메서드
등록 순서에서 알람 하나를 반환합니다.
GemAlarmInfo alarmAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemAlarmState::alarmCount보다 작아야 합니다. |
반환값
정의, 발생 상태, 보고 상태입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
alarmState
메서드
알람 저장소의 카운터를 반환합니다.
GemAlarmState alarmState()반환값
알람 수, 활성 알람 수, 활성화된 알람 수, 텍스트 바이트 수입니다.
참고
- 예외
pdcomm::Error: 알람 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
bindingAt
메서드
저장 순서에서 바인딩 하나를 반환합니다.
GemBindingInfo bindingAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemBindingState::bindingCount보다 작아야 합니다. |
반환값
VID, 출처, 그리고 상수이면 소유된 ECID 아이템입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
bindingState
메서드
바인딩 저장소의 상태를 반환합니다.
GemBindingState bindingState()구성된 바인딩이 없으면 명시적 모드가 꺼져 있고 개수가 0이라고 보고합니다.
반환값
바인딩 개수, 식별자 바이트 수, 모드입니다.
참고
- 예외
pdcomm::Error: 실패하면 네이티브 상태와 함께 발생합니다.
captureSpool
메서드
일반 1차 메시지를 스풀에 제공합니다.
GemSpoolWriteResult captureSpool(uint8_t stream, uint8_t function, bool replyExpected, const SecsItem *body, uint64_t now)메시지는 스풀링이 활성 상태이고 (stream, function)이 선택된 동안에만 저장됩니다. 그렇지 않으면 호출은 성공하고 GemSpoolWriteInfo::selected가 false입니다. 스풀이 가득 차면 오버플로 정책을 적용하며, 이는 오류가 아니라 통계 변경입니다. 캡처는 메시지를 보내지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
stream | 등록된 스풀링 가능 1차 메시지의 스트림입니다. |
function | 등록된 스풀링 가능 1차 메시지의 펑션입니다. |
replyExpected | 나중에 메시지를 전달할 때 사용할 W 비트입니다. |
body | 메시지 본문입니다. 헤더만 있는 메시지이면 nullptr입니다. 호출 동안 빌려 씁니다. |
now | 캡처 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
반환값
변경 세부 정보와 함께 PDCOMM_OK 또는 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 발생합니다. 예를 들어 스풀이 동기화되지 않았으면PDCOMM_INVALID_STATE, 등록되지 않은 키이면PDCOMM_INVALID_ARGUMENT입니다.
captureSpoolAlarm
메서드
알람(alarm)의 현재 상태에 대한 S5F1 보고서를 만들어 스풀에 제공합니다.
GemSpoolWriteResult captureSpoolAlarm(uint32_t alarmId, bool replyExpected, uint64_t now)매개변수
| 이름 | 설명 |
|---|---|
alarmId | 구성된 알람의 ALID입니다. |
replyExpected | 나중에 보고서를 전달할 때 사용할 W 비트입니다. |
now | 캡처 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
반환값
변경 세부 정보와 함께 PDCOMM_OK 또는 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 captureSpool()과 같이 발생합니다.
captureSpoolEvent
메서드
수집 이벤트(collection event)의 S6F11 보고서를 만들어 스풀에 제공합니다.
GemSpoolWriteResult captureSpoolEvent(uint32_t dataId, uint32_t eventId, const std::vector<GemDataSample> &samples, uint64_t now)보고서는 캡처 시점에 publishEventWithData()와 같은 출처에서 만들어집니다.
매개변수
| 이름 | 설명 |
|---|---|
dataId | 보고서의 DATAID입니다. |
eventId | 연결된 이벤트의 CEID입니다. |
samples | 데이터 변수 샘플입니다. 호출 동안 빌려 씁니다. |
now | 캡처 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
반환값
변경 세부 정보와 함께 PDCOMM_OK 또는 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 captureSpool() 및 publishEventWithData()와 같이 발생합니다.
clearDataVariable
메서드
데이터 변수의 캐시된 값을 제거합니다.
void clearDataVariable(uint32_t id)이후 이 값이 필요한 보고서는 샘플을 제공하지 않으면 PDCOMM_INVALID_STATE로 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | DVID입니다. |
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE입니다.
clearReportBindings
메서드
모든 바인딩을 제거하고 VID를 SVID로 해석하는 기본 방식을 복원합니다.
void clearReportBindings()끝점이 정지되어 있고 기존 보고서가 계속 유효할 때만 허용됩니다.
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았거나 기존 보고서가 유효하지 않게 되면PDCOMM_INVALID_STATE입니다.
commandAt
메서드
저장 순서에서 명령 정의 하나를 반환합니다.
GemCommandInfo commandAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemCommandState::commandCount보다 작아야 합니다. |
반환값
소유된 이름과 명령 메타데이터입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
commandParameterAt
메서드
명령 하나의 파라미터 정의 하나를 반환합니다.
GemCommandParameterInfo commandParameterAt(size_t commandIndex, size_t parameterIndex)매개변수
| 이름 | 설명 |
|---|---|
commandIndex | 0부터 시작하는 명령 위치입니다. |
parameterIndex | 0부터 시작하는 파라미터 위치입니다. |
반환값
소유된 이름과 파라미터 규칙입니다.
참고
- 예외
pdcomm::Error: 인덱스가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
commandState
메서드
원격 명령 저장소의 카운터를 반환합니다.
GemCommandState commandState()반환값
명령 수, 파라미터 수, 식별자 바이트 수입니다.
참고
- 예외
pdcomm::Error: 명령 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
configureAlarms
메서드
알람 저장소를 만듭니다.
void configureAlarms(const PdcommGemAlarmOptions &options, const std::vector<GemAlarmDefinition> &definitions)끝점이 정지된 동안 한 번 호출합니다. 알람이 발생 또는 해제 CEID를 사용하면 configureReports() 다음에 호출합니다. 설치하기 전에 저장소 전체를 검증합니다. 모든 알람은 비활성 상태이며 보고가 비활성화된 상태로 시작합니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemAlarmOptions()로 만든 한도입니다. |
definitions | 알람 정의입니다. 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았거나 알람 저장소가 이미 있으면PDCOMM_INVALID_STATE, ID가 중복되거나 분류가 1~63 범위를 벗어나거나 텍스트가 ASCII가 아니거나 CEID를 알 수 없으면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureCommands
메서드
원격 명령(remote command, S2F41) 저장소를 만듭니다.
void configureCommands(const PdcommGemCommandOptions &options, const std::vector<GemCommandDefinition> &definitions)끝점이 정지된 동안 한 번 호출합니다. 설치하기 전에 저장소 전체를 검증하며, 실패하면 아무것도 바뀌지 않습니다. 양수인 부호 있는 이름과 부호 없는 이름은 같은 것으로 비교됩니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemCommandOptions()로 만든 한도입니다. |
definitions | 명령 정의입니다. 아이템은 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았거나 명령 저장소가 이미 있으면PDCOMM_INVALID_STATE, 이름이 잘못되거나 중복되거나, 정수 형식이 아닌데 범위가 있거나, 완료 CEID를 알 수 없으면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureConstants
메서드
장비 상수(equipment constant, ECID) 저장소를 만듭니다.
void configureConstants(const PdcommGemConstantOptions &options, const std::vector<GemConstantDefinition> &definitions)끝점이 정지된 동안 한 번 호출합니다. 설치하기 전에 저장소 전체를 검증합니다. ID는 대소문자를 구분하는 ASCII 또는 스칼라 정수입니다. 양수인 부호 있는 ID와 부호 없는 ID는 같은 것으로 비교됩니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemConstantOptions()로 만든 한도입니다. |
definitions | 상수 정의입니다. 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았거나 상수 저장소가 이미 있으면PDCOMM_INVALID_STATE, 정의가 잘못되거나 중복되면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureDataVariables
메서드
데이터 변수(DVID) 저장소 전체를 설치하거나 교체합니다.
void configureDataVariables(const PdcommGemDataOptions &options, const std::vector<GemDataDefinition> &definitions)끝점이 정지된 동안에만 허용됩니다. 모든 정의와 기존 바인딩 및 디렉터리 대상을 먼저 검증하며, 실패하면 이전 저장소가 유지됩니다. 라이브러리는 데이터 변수를 스스로 샘플링하거나, 캐시를 갱신하거나, 영구 저장하지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemDataOptions()로 만든 한도입니다. |
definitions | 데이터 변수 정의입니다. 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았으면PDCOMM_INVALID_STATE, ID가 중복되거나 메타데이터가 ASCII가 아니거나 캐시된 값이 형식 또는 개수와 맞지 않으면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureEnhancedCommands
메서드
확장 원격 명령(enhanced remote command, S2F49) 저장소를 만듭니다.
void configureEnhancedCommands(const PdcommGemEnhancedCommandOptions &options, const std::vector<GemEnhancedObjectDefinition> &objects)끝점이 정지된 동안 한 번 호출합니다. 먼저 저장소 전체를 검증하며, 실패하면 이전 저장소가 유지됩니다. 대상 객체 지정자는 대소문자를 구분하는 정확한 ASCII입니다. 기본 명령과 확장 명령 사이에는 대체(fallback)가 없습니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemEnhancedCommandOptions()로 만든 한도입니다. |
objects | 명령을 포함한 객체입니다. 아이템은 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았으면PDCOMM_INVALID_STATE, 정의가 잘못되면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureEventDirectory
메서드
S1F23에 응답할 수집 이벤트 이름 목록(namelist)을 설치하거나 교체합니다.
void configureEventDirectory(const PdcommGemDirectoryOptions &options, const std::vector<GemDirectoryDefinition> &definitions)끝점이 정지된 동안에만 허용됩니다. 이벤트 ID는 보고서 저장소와 정확히 일치해야 하며, 모든 VID는 기존 데이터 변수에 바인딩되어 있어야 합니다. 실패하면 이전 디렉터리가 유지됩니다. 이후 캐시나 보고서가 바뀌어도 디렉터리는 바뀌지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemDirectoryOptions()로 만든 한도입니다. |
definitions | 디렉터리 행입니다. 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았으면PDCOMM_INVALID_STATE, ID가 중복되거나 이벤트 또는 변수를 알 수 없으면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureFixedCatalog
메서드
고정된 보고서 그래프와 그 STATUS 또는 DATA 바인딩을 원자적으로 설치합니다.
void configureFixedCatalog(const PdcommGemReportOptions &reportOptions, const std::vector<GemReportSpec> &reports, const std::vector<GemFixedEventSpec> &events, const PdcommGemBindingOptions &bindingOptions, const std::vector<GemReportBinding> &bindings)끝점이 정지된 동안에만 허용됩니다. 호스트가 아니라 장비가 보고서와 연결을 정의할 때 사용합니다. 실패하면 이전 보고서 그래프와 바인딩 저장소가 모두 유지됩니다.
매개변수
| 이름 | 설명 |
|---|---|
reportOptions | gemReportOptions()로 만든 보고서 저장소 한도입니다. |
reports | 보고서 정의입니다. |
events | 연결된 보고서와 활성화 상태를 포함한 수집 이벤트입니다. |
bindingOptions | gemBindingOptions()로 만든 바인딩 한도입니다. |
bindings | 보고서 변수의 VID 바인딩입니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았으면PDCOMM_INVALID_STATE, 정의가 서로 맞지 않으면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureLocalSpooling
메서드
로컬 스풀링 정책과 스트림 선택을 설정합니다.
GemSpoolWriteResult configureLocalSpooling(const GemSpoolPolicy &policy, const std::vector<GemSpoolSelection> &selections)끝점이 정지되어 있고 대기 중인 전송이나 디큐(dequeue)가 없어야 합니다. 변경 내용은 이후의 캡처에만 적용되며 저장된 항목은 유지됩니다. 변경하면 현재 동기화가 무효화되므로 캡처하기 전에 syncSpool()을 다시 호출합니다.
매개변수
| 이름 | 설명 |
|---|---|
policy | 오버플로 동작, 전송 한도, 전역 스위치입니다. |
selections | 선택한 스트림입니다. 펑션 목록이 비어 있으면 해당 스트림에 등록된 모든 1차 메시지를 선택하고, 벡터가 비어 있으면 모든 스트림을 비활성화합니다. |
반환값
변경 세부 정보와 함께 PDCOMM_OK 또는 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 발생합니다. 예를 들어PDCOMM_INVALID_STATE, 또는 카탈로그에 없는 선택이면PDCOMM_INVALID_ARGUMENT입니다.
configureReportBindings
메서드
보고서를 만들 때 사용하는 VID와 출처 사이의 바인딩을 설치하거나 교체합니다.
void configureReportBindings(const PdcommGemBindingOptions &options, const std::vector<GemReportBinding> &bindings)끝점이 정지된 동안에만 허용됩니다. 저장소를 바꾸기 전에 모든 출처와 기존 보고서를 검증합니다. 서로 다른 VID가 같은 출처를 공유할 수 있지만, VID가 중복되면 실패합니다. 빈 벡터를 넘기면 바인딩과 대체(fallback)가 없는 명시적 모드가 설치됩니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemBindingOptions()로 만든 한도입니다. |
bindings | 바인딩입니다. 상수 ID 아이템은 호출 동안 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았으면PDCOMM_INVALID_STATE, VID가 중복되거나 출처가 잘못되면PDCOMM_INVALID_ARGUMENT, 알 수 없는 출처이면PDCOMM_OUT_OF_RANGE, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
configureReports
메서드
보고서 저장소를 만들고 수집 이벤트(CEID)를 선언합니다.
void configureReports(const PdcommGemReportOptions &options, const std::vector<uint32_t> &eventIds)끝점이 정지된 동안 한 번 호출합니다. 미리 정의된 보고서나 연결은 없습니다. 호스트가 실행 중에 S2F33과 S2F35로 정의합니다. 이벤트 ID는 복사됩니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemReportOptions()로 만든 한도입니다. |
eventIds | 장비가 보고할 수 있는 CEID입니다. 중복은 거부됩니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았거나 보고서 저장소가 이미 있으면PDCOMM_INVALID_STATE, ID가 중복되거나 한도가 잘못되면PDCOMM_INVALID_ARGUMENT입니다.
configureSpooling
메서드
장비 스풀을 연결합니다.
GemSpoolWriteResult configureSpooling(const GemSpoolOptions &options, const std::vector<GemSpoolMessageKey> &catalog, const std::string &path = {})끝점이 정지된 동안 한 번 호출합니다. path가 비어 있으면 스풀은 메모리에만 존재합니다. 그렇지 않으면 크기가 제한된 스냅숏 파일을 배타적 잠금으로 엽니다. 기존 파일은 카탈로그, 옵션, 선택, 큐, 통계와 함께 로드되며 교체하거나 마이그레이션하지 않습니다. 새 파일은 비활성화된 초기 스냅숏으로 설치됩니다. 파일 I/O는 호출 스레드에서 동기적으로 실행됩니다.
매개변수
| 이름 | 설명 |
|---|---|
options | gemSpoolOptions()로 만든 한도입니다. |
catalog | 스풀링할 수 있는 (stream, function) 1차 메시지입니다. 새 저장소에는 필수입니다. 로드한 저장소에서는 비어 있거나 저장된 카탈로그와 정확히 일치해야 합니다. |
path | NUL 바이트가 없는 UTF-8 파일 경로입니다. 메모리에만 두려면 비워 둡니다. 상위 디렉터리가 있어야 합니다. |
반환값
PDCOMM_OK를 반환합니다. 새 파일을 설치했지만 상위 디렉터리 동기화가 확인되지 않으면 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다. 두 경우 모두 스풀은 연결되었으므로 다시 구성하지 마십시오.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 발생합니다. 예를 들어 끝점이 정지되지 않았거나 스풀링이 이미 구성되었으면PDCOMM_INVALID_STATE, 카탈로그나 경로가 잘못되면PDCOMM_INVALID_ARGUMENT, 그리고PDCOMM_IO_ERROR, 파일이 손상되었으면PDCOMM_INVALID_DATA입니다.
constant
메서드
로컬 상수 정의의 필드 하나를 반환합니다.
SecsItem constant(const SecsItem &id, GemConstantField field)매개변수
| 이름 | 설명 |
|---|---|
id | ECID 아이템입니다. |
field | 읽을 필드입니다. GemConstantField::Current는 현재 값을 반환합니다. |
반환값
독립적으로 소유되는 아이템입니다. 선택 사항인 기본값, 최솟값 또는 최댓값이 없으면 빈 아이템이며, 이는 빈 ASCII 값과 다릅니다.
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE입니다.
constantAt
메서드
저장 순서에서 상수 정의 하나를 반환합니다.
GemConstantInfo constantAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemConstantState::constantCount보다 작아야 합니다. |
반환값
소유된 ECID와 값 규칙입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
constantState
메서드
상수 저장소의 카운터를 반환합니다.
GemConstantState constantState()반환값
상수 개수, 메타데이터 바이트 수, 값 바이트 수입니다.
참고
- 예외
pdcomm::Error: 상수 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
data
메서드
데이터 변수의 이름, 단위 또는 캐시된 값을 반환합니다.
SecsItem data(uint32_t id, GemDataField field)매개변수
| 이름 | 설명 |
|---|---|
id | DVID입니다. |
field | 읽을 필드입니다. |
반환값
독립적으로 소유되는 아이템입니다. GemDataField::Cached에서 캐시된 값이 없으면 빈 아이템입니다.
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE, 데이터 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
dataAt
메서드
저장 순서에서 데이터 변수 정의 하나를 반환합니다.
GemDataInfo dataAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemDataState::variableCount보다 작아야 합니다. |
반환값
DVID, 형식, 캐시 플래그, 개수 범위입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE, 데이터 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
dataState
메서드
데이터 변수 저장소의 카운터를 반환합니다.
GemDataState dataState()반환값
변수 개수, 메타데이터 바이트 수, 값 바이트 수입니다.
참고
- 예외
pdcomm::Error: 데이터 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
directory
메서드
directoryGet()의 별칭입니다.
SecsItem directory(uint32_t id, GemDirectoryField field)매개변수
| 이름 | 설명 |
|---|---|
id | 행의 CEID입니다. |
field | 읽을 필드입니다. |
반환값
독립적으로 소유되는 아이템입니다.
참고
- 예외
pdcomm::Error: directoryGet()과 같은 상태에서 발생합니다.
directoryAt
메서드
저장 순서에서 이벤트 디렉터리 행 하나를 반환합니다.
GemDirectoryEntryInfo directoryAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemDirectoryState::eventCount보다 작아야 합니다. |
반환값
CEID와 VID 개수입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE, 디렉터리가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
directoryGet
메서드
이벤트 디렉터리 행 하나의 이름 또는 VID 목록을 반환합니다.
SecsItem directoryGet(uint32_t id, GemDirectoryField field)매개변수
| 이름 | 설명 |
|---|---|
id | 행의 CEID입니다. |
field | GemDirectoryField::Name(ASCII) 또는 GemDirectoryField::VariableIds(U4 배열)입니다. |
반환값
독립적으로 소유되는 아이템입니다. 재구성한 뒤에도 유지됩니다.
참고
- 예외
pdcomm::Error: GemDirectoryField::Units이면PDCOMM_INVALID_ARGUMENT, 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE, 디렉터리가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
directoryState
메서드
이벤트 디렉터리의 상태를 반환합니다.
GemDirectoryState directoryState()반환값
행 개수, 바이트 수, 디렉터리 구성 여부입니다.
참고
- 예외
pdcomm::Error: 실패하면 네이티브 상태와 함께 발생합니다.
enhancedCommandAt
메서드
확장 객체 하나의 명령 하나를 반환합니다.
GemCommandInfo enhancedCommandAt(size_t objectIndex, size_t commandIndex)매개변수
| 이름 | 설명 |
|---|---|
objectIndex | 0부터 시작하는 객체 위치입니다. |
commandIndex | 객체 안에서 0부터 시작하는 명령 위치입니다. |
반환값
소유된 이름과 명령 메타데이터입니다.
참고
- 예외
pdcomm::Error: 인덱스가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
enhancedCommandParameterAt
메서드
확장 명령 하나의 파라미터 정의 하나를 반환합니다.
GemCommandParameterInfo enhancedCommandParameterAt(size_t objectIndex, size_t commandIndex, size_t parameterIndex)매개변수
| 이름 | 설명 |
|---|---|
objectIndex | 0부터 시작하는 객체 위치입니다. |
commandIndex | 0부터 시작하는 명령 위치입니다. |
parameterIndex | 0부터 시작하는 파라미터 위치입니다. |
반환값
소유된 이름과 파라미터 규칙입니다.
참고
- 예외
pdcomm::Error: 인덱스가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
enhancedCommandState
메서드
확장 원격 명령 저장소의 카운터를 반환합니다.
GemEnhancedCommandState enhancedCommandState()반환값
객체 수, 명령 수, 파라미터 수, 바이트 수입니다.
참고
- 예외
pdcomm::Error: 확장 명령 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
enhancedObjectAt
메서드
확장 명령 저장소의 객체 하나를 반환합니다.
GemEnhancedObjectInfo enhancedObjectAt(size_t objectIndex)매개변수
| 이름 | 설명 |
|---|---|
objectIndex | 0부터 시작하는 객체 위치입니다. |
반환값
소유된 대상 객체 지정자와 명령 수입니다.
참고
- 예외
pdcomm::Error: 인덱스가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
eventAt
메서드
저장 순서에서 수집 이벤트 하나를 반환합니다.
GemEventDefinition eventAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemReportState::eventCount보다 작아야 합니다. |
반환값
CEID, 활성화 플래그, 연결된 RPTID입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
observeAlarm
메서드
아무것도 보내지 않고 알람의 현재 발생 또는 해제 상태를 기록합니다.
GemAlarmChange observeAlarm(uint32_t id, bool active)연결 없이도 동작합니다. 상태가 전환되면 구성된 발생 또는 해제 CEID를 반환합니다. S5F1 알람 보고서(publishAlarm())와 S6F11 이벤트는 따로 보냅니다. 이후 전송이 실패해도 관찰된 상태는 되돌리지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
id | ALID입니다. |
active | 알람 조건이 존재하면 true입니다. |
반환값
상태가 바뀌었는지 여부, 보고 상태, 전환 CEID입니다.
참고
- 예외
pdcomm::Error: 알 수 없는 ALID이면PDCOMM_OUT_OF_RANGE입니다.
operatorOffline
메서드
운영자의 요청으로 장비를 오프라인으로 전환합니다(OFF-LINE 스위치).
void operatorOffline()SEMI E30 제어 상태 모델처럼 GemControl::OnlineLocal, GemControl::OnlineRemote, GemControl::HostOffline 상태에서 허용됩니다. 제어 상태는 GemControl::EquipmentOffline이 됩니다. 메시지는 보내지 않으며 연결도 필요하지 않습니다.
참고
- 예외
pdcomm::Error: GemControl::EquipmentOffline이나 GemControl::AttemptOnline 상태이면PDCOMM_INVALID_STATE입니다.
operatorOnline
메서드
S1F1을 보내 운영자가 시작한 온라인 전환을 시작합니다.
PdcommTcpToken operatorOnline()연결된 세션과 GemControl::EquipmentOffline 상태가 필요합니다. 제어 상태는 GemControl::AttemptOnline이 됩니다. 호스트의 S1F2를 받으면 GemOutcome::OnlineAccepted와 setOnlineMode()로 정한 온라인 하위 상태가 됩니다. 실패하거나 연결이 끊기면 GemControl::HostOffline으로 이동합니다. 결과는 GemRequest::OperatorOnline을 보고합니다.
반환값
제출한 S1F1의 토큰입니다.
참고
- 예외
pdcomm::Error: 연결되지 않았거나 EquipmentOffline 상태가 아니면PDCOMM_INVALID_STATE입니다.
publishAlarm
메서드
알람의 현재 상태로 S5F1 Alarm Report Send를 보냅니다.
PdcommTcpToken publishAlarm(uint32_t id, bool replyExpected)GemCommunication::Communicating 상태이고 호스트가 보고를 활성화해야 합니다. replyExpected를 설정하면 보고서는 대기 슬롯을 사용하며 S5F2 응답을 받으면 GemOutcome::AlarmAck가 됩니다. 설정하지 않으면 PDCOMM_TCP_W0_WRITTEN은 로컬 쓰기만을 의미합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | ALID입니다. |
replyExpected | W 비트를 설정합니다. |
반환값
제출한 보고서의 토큰입니다.
참고
- 예외
pdcomm::Error: 통신 중이 아니거나 보고가 비활성화되었으면PDCOMM_INVALID_STATE, 알 수 없는 ALID이면PDCOMM_OUT_OF_RANGE입니다.
publishEvent
메서드
활성화된 수집 이벤트(collection event)에 대해 S6F11 Event Report Send를 보냅니다.
PdcommTcpToken publishEvent(uint32_t dataId, uint32_t eventId)값은 구성된 출처(상태 변수, 또는 바인딩과 캐시)에서 가져옵니다. 메시지 본문은 독립된 스냅숏입니다. S6F12 응답을 받으면 ACKC6와 함께 GemOutcome::EventAck가 됩니다. 연결된 보고서가 없는 이벤트는 빈 보고서 목록으로 보냅니다. 샘플 없이 publishEventWithData()를 호출하는 것과 같습니다.
매개변수
| 이름 | 설명 |
|---|---|
dataId | 보고서의 DATAID입니다. |
eventId | 보고할 CEID입니다. |
반환값
제출한 요청의 토큰입니다.
참고
- 예외
pdcomm::Error: 통신 중이 아니면PDCOMM_INVALID_STATE, 보고서 저장소가 없거나 이벤트를 알 수 없거나 비활성화되었으면PDCOMM_INVALID_DATA, 보고서 변수에 출처가 없으면PDCOMM_OUT_OF_RANGE입니다.
publishEventWithData
메서드
활성화된 이벤트에 대해, 제공한 샘플을 먼저 사용하고 그다음 캐시를 사용해 S6F11을 보냅니다.
PdcommTcpToken publishEventWithData(uint32_t dataId, uint32_t eventId, const std::vector<GemDataSample> &samples = {})사용하지 않는 샘플을 포함해 모든 샘플을 검증합니다. 샘플은 캐시를 바꾸지 않습니다. 제출 전에 보고서 전체를 만들므로 이후 입력 아이템을 변경해도 됩니다. S6F12 응답을 받으면 GemOutcome::EventAck가 됩니다.
매개변수
| 이름 | 설명 |
|---|---|
dataId | 보고서의 DATAID입니다. |
eventId | 보고할 CEID입니다. |
samples | 데이터 변수 샘플입니다. 호출 동안 빌려 씁니다. |
반환값
제출한 요청의 토큰입니다.
참고
- 예외
pdcomm::Error: 샘플을 알 수 없거나 중복되거나 형태가 맞지 않으면PDCOMM_INVALID_ARGUMENT, 한도를 넘으면PDCOMM_LIMIT_EXCEEDED, 보고서 변수에 출처가 없으면PDCOMM_OUT_OF_RANGE, 데이터가 없거나 통신 중이 아니면PDCOMM_INVALID_STATE, 이벤트를 알 수 없거나 비활성화되었으면PDCOMM_INVALID_DATA입니다. 실패하면 캐시, 바인딩, 대기 중인 메시지는 바뀌지 않습니다.
purgeSpool
메서드
저장된 스풀 항목을 로컬에서 모두 삭제합니다.
GemSpoolWriteResult purgeSpool()끝점이 정지되어 있고 대기 중인 전송이나 디큐(dequeue)가 없어야 합니다.
반환값
제거한 항목 수와 함께 PDCOMM_OK 또는 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 발생합니다. 예를 들어PDCOMM_INVALID_STATE입니다.
registerStatus
메서드
상태 변수(SVID)를 이름, 단위, 초기값과 함께 등록합니다.
void registerStatus(uint32_t id, const std::string &name, const std::string &units, const SecsItem &value)끝점이 정지된 동안에만 허용됩니다. 값은 복사되며, 최상위 형식이 이후 갱신에 적용되는 선언 형식이 됩니다. 오류가 나면 레지스트리는 변경되지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
id | SVID입니다. 고유해야 합니다. |
name | SVNAME입니다. ASCII입니다. |
units | 단위입니다. ASCII이며 비어 있을 수 있습니다. |
value | 초기값입니다. |
참고
- 예외
pdcomm::Error: 끝점이 정지되지 않았으면PDCOMM_INVALID_STATE, ID가 중복되거나 텍스트가 ASCII가 아니면PDCOMM_INVALID_ARGUMENT, 레지스트리 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
reportAt
메서드
저장 순서에서 정의된 보고서 하나를 반환합니다.
GemReportDefinition reportAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemReportState::reportCount보다 작아야 합니다. |
반환값
RPTID와 VID입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
reportState
메서드
보고서 저장소의 카운터를 반환합니다.
GemReportState reportState()반환값
이벤트, 보고서, 변수, 연결의 개수입니다.
참고
- 예외
pdcomm::Error: 보고서 저장소가 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
reportValue
메서드
VID의 현재 보고서 값을 출처에서 해석합니다.
SecsItem reportValue(uint32_t variableId)캐시만 사용하며, 보고서 전체가 한도에 맞는지는 확인하지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
variableId | 해석할 VID입니다. |
반환값
독립적으로 소유되는 값 아이템입니다.
참고
- 예외
pdcomm::Error: VID나 출처를 알 수 없으면PDCOMM_OUT_OF_RANGE, 데이터 변수에 캐시된 값이 없으면PDCOMM_INVALID_STATE입니다.
respondCommand
메서드
받은 S2F41에 대해 S2F42를 보냅니다.
GemCommandReply respondCommand(GemResult &result, GemCommandAcknowledgement decision, const std::vector<GemCommandIssue> &issues = {})검증 결과는 수신 시점에 확정되었습니다. 거부된 요청은 decision 값과 관계없이 원래 HCACK와 문제 목록을 유지합니다. 수락된 요청에서는 GemCommandAcknowledgement::ParameterErrors만 issues를 포함할 수 있습니다. 라이브러리는 아무것도 실행하지 않습니다. 지연 작업은 HCACK 4 응답을 제출한 뒤에만 시작합니다. 전송이 실패하면 같은 결정으로 재시도하고, 완료된 작업을 다시 실행하지 마십시오.
매개변수
| 이름 | 설명 |
|---|---|
result | 이 끝점에서 받은 GemOutcome::CommandReceived 결과입니다. |
decision | 보낼 HCACK입니다. |
issues | HCACK 3에 넣을 CPACK 항목(코드 1~3)입니다. 호출 동안 빌려 씁니다. |
반환값
실제로 보낸 HCACK와, HCACK 0 또는 4일 때의 완료 CEID입니다. 이 이벤트는 따로 보냅니다.
참고
- 예외
pdcomm::Error: 통신 중이 아니면PDCOMM_INVALID_STATE, 오래되었거나 소비되었거나 이미 응답한 요청이면PDCOMM_STALE_TOKEN, 다른 결정에 문제 목록을 넘기거나 코드가 잘못되면PDCOMM_INVALID_ARGUMENT입니다. - 이 호출은
result를 변경합니다. 같은 객체의 getter와 동시에 실행하지 마십시오.
respondConstants
메서드
이름 있는 결정을 사용해 받은 S2F15에 대해 S2F16을 보냅니다.
GemConstantReply respondConstants(GemResult &result, GemConstantDecision decision)매개변수
| 이름 | 설명 |
|---|---|
result | 이 끝점에서 받은 GemOutcome::ConstantChangesReceived 결과입니다. |
decision | 보낼 EAC입니다. |
반환값
보낸 EAC와 저장소가 바뀌었는지 여부입니다.
참고
- 예외
pdcomm::Error:uint8_t오버로드와 같은 상태에서 발생합니다.
respondConstants
메서드
받은 S2F15에 대해 S2F16을 보냅니다.
GemConstantReply respondConstants(GemResult &result, uint8_t decision)EAC 0을 성공적으로 제출했을 때만 새 값을 SDK 저장소에 교체해 넣습니다. 물리적으로 적용하거나 영구 저장하는 것은 없습니다. 수신 시점에 검증이 실패했으면 원래 EAC를 유지합니다. 수신 이후 다른 변경이나 재구성이 있었으면 EAC 0은 더 이상 적용할 수 없지만 거부는 여전히 보낼 수 있습니다. 전송이 실패하면 저장소는 바뀌지 않으며 다시 시도할 수 있습니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 이 끝점에서 받은 GemOutcome::ConstantChangesReceived 결과입니다. |
decision | EAC입니다. 0, 2, 3 또는 4~63 범위의 애플리케이션 값입니다. |
반환값
보낸 EAC와 저장소가 바뀌었는지 여부입니다.
참고
- 예외
pdcomm::Error: 통신 중이 아니면PDCOMM_INVALID_STATE, 오래되었거나 소비되었거나 이미 응답한 요청이면PDCOMM_STALE_TOKEN, 결정이 잘못되면PDCOMM_INVALID_ARGUMENT입니다. - 이 호출은
result를 변경합니다. 같은 객체의 getter와 동시에 실행하지 마십시오.
respondEnhancedCommand
메서드
받은 S2F49에 대해 S2F50을 보냅니다.
GemCommandReply respondEnhancedCommand(GemResult &result, GemCommandAcknowledgement decision, const SecsItem *acknowledgements = nullptr)수락 여부와 검증 결과는 수신 시점에 확정되었습니다. 거부된 요청은 원래 응답을 유지하며 acknowledgements를 무시합니다. GemCommandAcknowledgement::ParameterErrors로 수락된 요청에는 L[name, ACK] 항목으로 이루어진 바깥 리스트를 넘깁니다. 그 밖의 모든 결정에는 nullptr가 필요합니다. 실패한 전송은 같은 인수로 재시도하고, 완료된 작업을 다시 실행하지 마십시오.
매개변수
| 이름 | 설명 |
|---|---|
result | 이 끝점에서 받은 GemOutcome::EnhancedCommandReceived 결과입니다. |
decision | 보낼 HCACK입니다. |
acknowledgements | HCACK 3에 넣을 바깥 확인 리스트이거나 nullptr입니다. 빌려 씁니다. |
반환값
실제로 보낸 HCACK와, HCACK 0 또는 4일 때의 완료 CEID입니다.
참고
- 예외
pdcomm::Error: 통신 중이 아니면PDCOMM_INVALID_STATE, 오래되었거나 소비되었거나 이미 응답한 요청이면PDCOMM_STALE_TOKEN, 확인 리스트가 결정과 맞지 않으면PDCOMM_INVALID_ARGUMENT,max_errors또는 전송 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다. - 이 호출은
result를 변경합니다. 같은 객체의 getter와 동시에 실행하지 마십시오.
respondReportQuery
메서드
받은 S6F15, S6F19 또는 S6F21에 S6F16, S6F20 또는 S6F22로 응답합니다.
void respondReportQuery(GemResult &result, const std::vector<GemDataSample> &samples = {})값은 응답 시점의 보고서 그래프와 캐시를 사용하며 samples가 우선합니다. 보내기 전에 전체 응답을 검사합니다. 실패하면 요청은 응답되지 않은 상태로 남으며 다시 시도할 수 있습니다. 이벤트 확인(acknowledgement)은 관여하지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 이 끝점에서 받은 GemOutcome::ReportQueryReceived 결과입니다. |
samples | 데이터 변수 샘플입니다. 캐시 값만 쓰려면 비워 둡니다. 빌려 씁니다. |
참고
- 예외
pdcomm::Error: 오래되었거나 소비되었거나 이미 응답한 요청이면PDCOMM_STALE_TOKEN, 샘플이 잘못되면PDCOMM_INVALID_ARGUMENT, 데이터를 사용할 수 없으면PDCOMM_INVALID_STATE입니다. - 이 호출은
result를 변경합니다. 같은 객체의 getter와 동시에 실행하지 마십시오.
setOnlineMode
메서드
운영자의 REMOTE/LOCAL 스위치를 설정합니다.
void setOnlineMode(GemOnlineMode mode)모든 제어 상태에서 허용됩니다. SEMI E30 제어 상태 모델처럼 온라인 상태의 장비는 즉시 GemControl::OnlineLocal 또는 GemControl::OnlineRemote로 바뀌고, 오프라인 상태의 장비는 다음에 온라인이 될 때 이 모드를 씁니다. 메시지는 보내지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
mode | GemOnlineMode::Local 또는 GemOnlineMode::Remote입니다. |
참고
- 예외
pdcomm::Error: GemOnlineMode::Unavailable이면PDCOMM_INVALID_ARGUMENT입니다.
status
메서드
상태 변수의 현재 값 복사본을 반환합니다.
SecsItem status(uint32_t id)매개변수
| 이름 | 설명 |
|---|---|
id | 등록된 SVID입니다. |
반환값
독립적으로 소유되는 아이템입니다. 끝점이 소멸된 뒤에도 유지됩니다.
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE입니다.
statusIdAt
메서드
등록 순서에서 지정한 위치의 SVID를 반환합니다.
uint32_t statusIdAt(size_t index)매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 위치이며 GemState::variableCount보다 작아야 합니다. |
반환값
SVID입니다.
참고
- 예외
pdcomm::Error:index가 잘못되면PDCOMM_OUT_OF_RANGE입니다.
statusMetadata
메서드
상태 변수의 등록된 이름과 단위를 반환합니다.
GemStatusName statusMetadata(uint32_t id)매개변수
| 이름 | 설명 |
|---|---|
id | 등록된 SVID입니다. |
반환값
SVID, 이름, 단위입니다.
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE입니다.
syncSpool
메서드
스풀을 현재 통신 상태와 동기화합니다.
GemSpoolWriteResult syncSpool(uint64_t now)TCP 이벤트와 GEM 이벤트를 처리한 뒤 호출합니다. 실제 연결과 선택 상태를 관찰하고, 통신이 끊기면 스풀링을 활성화하며, 실패한 활성화를 재시도합니다. 전송은 절대 시작하지 않습니다. 캡처, 응답, 전송 호출에는 현재 유효한 성공한 동기화가 필요합니다.
매개변수
| 이름 | 설명 |
|---|---|
now | 스풀링 시작 시각 또는 가득 찬 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
반환값
변경 세부 정보와 함께 PDCOMM_OK 또는 PDCOMM_SPOOL_UNCONFIRMED를 반환합니다.
참고
- 예외
pdcomm::Error: 그 밖의 상태에서 발생합니다. 예를 들어 스풀링이 구성되지 않았으면PDCOMM_INVALID_STATE입니다.
updateDataVariable
메서드
데이터 변수의 캐시된 값을 교체합니다.
void updateDataVariable(uint32_t id, const SecsItem &value)매개변수
| 이름 | 설명 |
|---|---|
id | DVID입니다. |
value | 새 값입니다. 선언된 형식과 개수 범위에 맞아야 합니다. 복사됩니다. |
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE, 형식이나 개수가 맞지 않으면PDCOMM_INVALID_ARGUMENT, 값 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.
updateStatus
메서드
등록된 상태 변수의 현재 값을 교체합니다.
void updateStatus(uint32_t id, const SecsItem &value)동작 중에도 허용됩니다. 값은 복사되며 선언된 최상위 형식을 유지해야 합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 등록된 SVID입니다. |
value | 새 값입니다. |
참고
- 예외
pdcomm::Error: 알 수 없는 ID이면PDCOMM_OUT_OF_RANGE, 형식이 바뀌면PDCOMM_INVALID_ARGUMENT, 값 한도를 넘으면PDCOMM_LIMIT_EXCEEDED입니다.