OPC UA C API
OPC UA의 C 공개 API 목록입니다.
API 87개
PDCOMM_OPCUA_AES128SHA256RSAOAEPhttp://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep입니다.PDCOMM_OPCUA_AES256SHA256RSAPSShttp://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss입니다(기본값).PDCOMM_OPCUA_ALLOW_NONESecurityPolicy None을 허용합니다. 이 플래그가 없으면 클라이언트는 #PDCOMM_OPCUA_POLICY_NONE을 거부하고, 서버는 보안 엔드포인트만 광고합니다.PDCOMM_OPCUA_BASIC256SHA256http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256입니다.PDCOMM_OPCUA_BUFFER_TOO_SMALL출력이 너무 작습니다. 필요한 크기를 보고하며 출력은 변경하지 않습니다.PDCOMM_OPCUA_BUSY다른 스레드가 핸들을 사용 중이거나, 처리 중인 요청이 있거나, pdcomm_opcua_client_take_response()를 위해 응답이 보류되어 있습니다.PDCOMM_OPCUA_CLOSED클라이언트 또는 서버가 닫혔거나 실패했습니다. 해제합니다.PDCOMM_OPCUA_EMPTY요청한 응답이 아직 도착하지 않았습니다. 폴링한 뒤 다시 시도합니다.PDCOMM_OPCUA_INTERNAL_ERROR격리된 패닉(panic) 같은 내부 실패입니다. pdcomm_opcua_last_error_copy()를 참고합니다.PDCOMM_OPCUA_INVALID_HANDLE핸들이 0이거나, 해제되었거나, 알 수 없거나, 종류가 잘못되었습니다.PDCOMM_OPCUA_INVALID_INPUT인수, 크기, 구조체 버전 또는 인코딩이 유효하지 않거나, 요청 ID를 알 수 없습니다.PDCOMM_OPCUA_LICENSE_REQUIRED이 호출에 필요한 모듈(opcua-client 또는 opcua-server)을 허가하는 유효한 PDComm 라이선스가 없어 아무것도 시작하지 않았습니다. 상세 텍스트에 모듈과 missing, expired, updates-expired 같은 라이선스 상태가 나옵니다. ABI 0.2에서 추가되었습니다.PDCOMM_OPCUA_LIMIT자원 한도에 도달했습니다. 요청을 보내지 않았거나 핸들을 만들지 않았습니다.PDCOMM_OPCUA_MODE_NONENone입니다. #PDCOMM_OPCUA_POLICY_NONE과 함께일 때만 유효합니다.PDCOMM_OPCUA_OK호출이 성공했습니다.PDCOMM_OPCUA_POISONED이전 호출에서 패닉(panic)이 발생했습니다. 핸들은 무효이며 해제만 할 수 있습니다.PDCOMM_OPCUA_POLICY_NONEhttp://opcfoundation.org/UA/SecurityPolicy#None입니다. 서명도 암호화도 하지 않습니다. #PDCOMM_OPCUA_MODE_NONE과 #PDCOMM_OPCUA_ALLOW_NONE이 필요합니다.PDCOMM_OPCUA_RUNTIME_ERROR네트워크, 보안, 프로토콜 또는 주소 공간(address space) 실패이며, 시간 초과(timeout)와 잘못된 응답도 포함합니다. 상세 텍스트에 원인이 나옵니다.PDCOMM_OPCUA_SIGNSign입니다. 메시지에 서명하지만 암호화하지는 않습니다.PDCOMM_OPCUA_SIGN_AND_ENCRYPTSignAndEncrypt입니다. 메시지에 서명하고 암호화합니다(기본값).PDCOMM_OPCUA_USER_SECRET_HEADER_POLICY_ONLY클라이언트 전용입니다. 64바이트보다 긴 사용자 비밀 값은 RSA EncryptedSecret으로 보내는데, 이때 토큰의 encryptionAlgorithm을 비워 두어 비밀 값 헤더의 SecurityPolicy만으로 알고리즘을 정하게 합니다. 서버가 이 형식을 기대할 때만 설정합니다. 더 짧은 비밀 값은 기존(legacy) 암호화 토큰을 사용하며 항상 알고리즘 URI를 포함합니다.PDCOMM_OPCUA_VARIABLE_PUBLIC익명 세션이 변수에 접근할 수 있습니다. 이 플래그가 없으면 인증된 사용자만 읽거나 쓸 수 있으며, 익명 세션은 BadUserAccessDenied를 받습니다.PDCOMM_OPCUA_VARIABLE_WRITABLE클라이언트가 Value 속성을 쓸 수 있습니다(AccessLevel CurrentWrite).pdcomm_opcua_abi_version로드된 라이브러리의 ABI 버전을 반환합니다.pdcomm_opcua_buffer_copy버퍼 핸들의 바이트를 복사합니다.pdcomm_opcua_bytes빌려 온(borrowed) 바이트 범위입니다. 종료 문자가 없는 UTF-8 텍스트 또는 이진 데이터입니다.data범위의 첫 바이트입니다. 빈 범위이면 null입니다.size범위에 있는 바이트 수입니다.pdcomm_opcua_client_activate_anonymousAnonymousIdentityToken으로 세션을 활성화합니다(ActivateSession).pdcomm_opcua_client_activate_user_nameUserNameIdentityToken으로 세션을 활성화합니다(ActivateSession).pdcomm_opcua_client_beginUA Binary 서비스 요청 하나를 응답을 기다리지 않고 큐에 넣습니다.pdcomm_opcua_client_close세션과 보안 채널을 정상 절차에 따라 닫습니다.pdcomm_opcua_client_connect클라이언트를 연결하고 세션(session)을 만듭니다.pdcomm_opcua_client_options클라이언트 연결 옵션입니다(구조체 버전 1).application_uriApplicationUri이며 최대 4096바이트입니다. 비어 있으면 urn:pdcomm:opcua:client를 뜻합니다.certificate_der클라이언트 애플리케이션 인스턴스 인증서입니다(DER, 최대 64 KiB). 보안 정책(security policy)이 None이 아니면 필요합니다.flags::pdcomm_opcua_option_flags 값을 비트 OR한 값입니다.mode요청할 ::pdcomm_opcua_security_mode 값입니다.policy요청할 ::pdcomm_opcua_policy 값입니다.private_key_pem그 인증서의 개인 키입니다(PEM, 최대 64 KiB).struct_size호출자가 알고 있는 이 구조체의 크기(바이트)입니다.timeout_ms각 네트워크 교환과 응답을 기다리는 각 요청의 시간 초과(timeout)이며, 1~300000 ms입니다.trusted_server_der신뢰할 서버 인증서입니다(DER, 최대 64 KiB). 이 클라이언트의 유일한 신뢰 앵커(trust anchor)입니다.version구조체 버전입니다. 1이어야 합니다.pdcomm_opcua_client_options_init클라이언트 옵션을 기본값으로 채웁니다.pdcomm_opcua_client_poll논블로킹 I/O를 한 번 수행합니다. 큐에 있는 바이트를 보내고 도착한 응답을 받습니다.pdcomm_opcua_client_take_response요청 하나의 검증된 응답을 가져옵니다.pdcomm_opcua_discover서버의 엔드포인트를 읽습니다(GetEndpoints).pdcomm_opcua_handle클라이언트, 서버 또는 버퍼를 가리키는 불투명(opaque)하고 라이브러리 내부에서만 쓰이는 핸들입니다.pdcomm_opcua_last_error_copy이 스레드에서 마지막으로 실패한 호출의 상세 텍스트를 복사합니다.pdcomm_opcua_license_host_id이 머신의 호스트 ID PDH1-XXXX-XXXX-XXXX-XXXX를 복사합니다.pdcomm_opcua_license_install이 라이브러리에 PDComm 라이선스 텍스트를 설치합니다.pdcomm_opcua_license_status이 라이브러리의 라이선스 상태를 UTF-8 JSON으로 복사합니다.pdcomm_opcua_option_flags클라이언트 옵션과 서버 옵션의 flags 멤버에 쓰는 비트입니다.pdcomm_opcua_policy클라이언트가 요청하는 보안 채널(secure channel)의 SecurityPolicy입니다.pdcomm_opcua_release클라이언트, 서버 또는 버퍼 핸들을 해제합니다.pdcomm_opcua_response_get_info응답 버퍼의 메타데이터를 읽습니다.pdcomm_opcua_response_info검증된 서비스 응답의 메타데이터입니다(구조체 버전 1).binary_id본문의 네임스페이스(namespace) 0 숫자 인코딩 ID입니다. 예를 들어 ReadResponse는 634, ServiceFault는 397입니다.request_idpdcomm_opcua_client_begin()이 반환한 ID입니다. ResponseHeader requestHandle과 같습니다.reserved0으로 기록됩니다.service_statusResponseHeader serviceResult입니다. ServiceFault일 때만 Bad입니다.struct_size입력: 호출자가 알고 있는 크기입니다.version입력과 출력 모두 구조체 버전 1입니다.pdcomm_opcua_security_mode보안 채널의 MessageSecurityMode입니다. 값은 Part 4 MessageSecurityMode 열거형의 숫자 값과 같습니다.pdcomm_opcua_server_add_variableObjects 폴더 아래에 Variable 노드를 추가합니다.pdcomm_opcua_server_close서버를 정지합니다. 리스너를 닫고 모든 채널을 중단합니다.pdcomm_opcua_server_create메모리 내 OPC UA 서버를 만들고 바인딩합니다.pdcomm_opcua_server_local_address서버가 수신 대기하는 소켓 주소를 반환합니다.pdcomm_opcua_server_options메모리 내 서버 파사드(facade)의 서버 옵션입니다(구조체 버전 1).application_uriApplicationUri이며 최대 4096바이트입니다. 비어 있으면 urn:pdcomm:opcua:server를 뜻합니다.certificate_der서버 애플리케이션 인스턴스 인증서입니다(DER, 최대 64 KiB). #PDCOMM_OPCUA_ALLOW_NONE을 설정하지 않으면 필요합니다.endpoint클라이언트에 광고하는 엔드포인트 URL입니다(opc.tcp://host:port/path, 최대 4096바이트). 포트 0은 실제 수신 대기 포트로 바뀝니다.flags0 또는 #PDCOMM_OPCUA_ALLOW_NONE입니다.max_connections동시 보안 채널(secure channel) 수입니다. max_sessions보다 크고 최대 1024입니다(기본값 33).max_sessions동시 세션 수이며 1~1023입니다(기본값 32).private_key_pem그 인증서의 개인 키입니다(PEM, 최대 64 KiB).reserved0이어야 합니다.struct_size호출자가 알고 있는 이 구조체의 크기(바이트)입니다.trusted_client_der이 서버가 신뢰하는 유일한 클라이언트 인증서입니다(DER, 최대 64 KiB).version구조체 버전입니다. 1이어야 합니다.pdcomm_opcua_server_options_init서버 옵션을 기본값으로 채웁니다.pdcomm_opcua_server_poll논블로킹 서버 처리를 한 번 수행합니다. 연결을 받아들이고 수신한 요청과 구독(subscription)을 처리합니다.pdcomm_opcua_server_read_value인증된 로컬 사용자로서 노드의 Value 속성을 읽습니다.pdcomm_opcua_server_set_value인증된 로컬 사용자로서 변수의 Value 속성을 씁니다.pdcomm_opcua_statusint32_t를 반환하는 모든 OPC UA C ABI 함수가 반환하는 상태 코드입니다.pdcomm_opcua_variable_flagspdcomm_opcua_server_add_variable()의 플래그입니다.
조건에 맞는 API가 없습니다.