pdcomm_license_status
함수
이 라이브러리의 라이선스 상태를 JSON 객체로 복사합니다.
PdcommStatus pdcomm_license_status(uint8_t *output, size_t capacity, size_t *required)이 객체의 schema_version은 1이며 다음을 보고합니다. build_date(이 SDK 빌드의 UTC 날짜), host_id(알 수 없으면 null과 host_id_error), program(실행 파일 이름), keys(허용하는 서명 키), sources(찾은 라이선스 소스마다 location, blocks, error), licenses(모든 라이선스 블록의 verification 결과와 필드), modules입니다. modules는 모듈 ID(secs-gem, gem300, modbus, modbus-security, mqtt, opcua-client, opcua-server)마다 state(licensed, evaluation, missing, expired, not-yet-valid, updates-expired, program-mismatch, host-mismatch 중 하나), granted, days_left, rejected, license_id, kind, expires_at, host_bound를 담은 객체입니다. 바이트는 종료 NUL이 없는 UTF-8 JSON입니다.
매개변수
| 이름 | 설명 |
|---|---|
output | JSON 바이트를 받을 대상 버퍼입니다. capacity가 0일 때만 NULL일 수 있습니다. |
capacity | output의 크기(바이트)입니다. |
required | JSON 텍스트의 길이를 받습니다. NULL이 아니어야 합니다. |
반환값
텍스트를 복사하면 #PDCOMM_OK를 반환합니다. capacity가 *required보다 작으면 #PDCOMM_BUFFER_TOO_SMALL을 반환하며 출력은 변경하지 않습니다. required가 NULL이거나, capacity가 0이 아닌데 output이 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다(*required는 기록하지 않습니다). 직렬화에 실패했거나 패닉(panic)을 격리했으면 #PDCOMM_INTERNAL_ERROR를 반환합니다.
참고
- 상태는 호출할 때마다 그 시점의 현재 시각과 그때 있는 라이선스 파일로 평가하므로, 크기 조회와 복사 사이에 길이가 바뀔 수 있습니다. 여유 공간을 두고 할당하고, 호출이 #PDCOMM_BUFFER_TOO_SMALL을 반환하면 다시 호출합니다.
- 스레드 안전성: 어느 스레드에서나 호출할 수 있습니다.