콘텐츠로 이동
무료 평가 시작

pdcomm_gem_formatted_program_capability_catalog_replace

함수

장비가 게시하는 기능(capability) 카탈로그를 교체합니다.

PdcommStatus pdcomm_gem_formatted_program_capability_catalog_replace(PdcommTcpEndpoint *endpoint, const char *model, size_t model_length, const char *software_revision, size_t software_revision_length, uint8_t command_maximum, uint32_t byte_maximum, const PdcommGemFormattedProgramCapabilityCommand *commands, size_t command_count, uint64_t *out_revision)

선언 위치: #include <pdcomm_gem_formatted_program_capabilities.h>

기능을 구성된 한도로 검증한 뒤 복사합니다. 내용이 바뀌면 카탈로그 리비전이 1 증가하며, 같은 내용으로 교체하면 현재 리비전을 유지합니다. 연결은 필요하지 않습니다. 아직 응답하지 않은 수신 요청은 응답하는 시점의 현재 카탈로그로 응답합니다.

매개변수

이름설명
endpoint기능 서비스가 구성된 장비 엔드포인트입니다.
modelMDLN: 최대 20바이트의 ASCII 바이트입니다. model_length가 0이면 NULL일 수 있습니다.
model_lengthmodel의 길이(바이트)입니다.
software_revisionSOFTREV: 최대 20바이트의 ASCII 바이트입니다. software_revision_length가 0이면 NULL일 수 있습니다.
software_revision_lengthsoftware_revision의 길이(바이트)입니다.
command_maximumCMDMAX: 프로그램 하나에 들어가는 명령의 최대 개수입니다.
byte_maximumBYTMAX: 공정 프로그램(process program) 크기의 최댓값(바이트)입니다.
commandscommand_count개의 명령 정의 배열입니다. command_count가 0이면 NULL일 수 있습니다.
command_count명령 개수입니다.
out_revision호출 후의 카탈로그 리비전을 받습니다. 먼저 0으로 설정되므로 실패하면 항상 0입니다.

반환값

성공하면 #PDCOMM_OK를 반환합니다. out_revision 또는 endpoint가 NULL이거나, 길이 또는 개수가 0이 아닌데 포인터가 NULL이거나, 텍스트가 ASCII가 아니거나 MDLN/SOFTREV/CNAME이 너무 길거나, required가 0 또는 1이 아니거나, block_definition이 -1..1 범위를 벗어나거나, 예약 바이트가 0이 아니거나, 매개변수 핸들이 NULL이거나 항목이 9개, 5개 또는 4개인 List가 아니면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 구성된 한도나 SECS-II 항목 한도를 넘거나 리비전 카운터가 소진되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 GEM 장비가 아니거나 기능 서비스가 구성되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. 엔드포인트에 준비된 TCP 이벤트(staged event)가 있으면 #PDCOMM_BACKPRESSURE를 반환합니다. #PDCOMM_ALLOCATION_FAILED와 #PDCOMM_POISONED를 반환할 수도 있습니다.

참고

  • 실패하면 항상 카탈로그는 바뀌지 않습니다.