Skip to content
Start free evaluation

pdcomm_gem_equipment_configure_fixed_catalog

Function

Atomically installs a fixed report graph and its STATUS or DATA bindings.

PdcommStatus pdcomm_gem_equipment_configure_fixed_catalog(PdcommTcpEndpoint *endpoint, const PdcommGemReportOptions *report_options, const PdcommGemReportSpec *reports, size_t report_count, const PdcommGemFixedEventSpec *events, size_t event_count, const PdcommGemBindingOptions *binding_options, const PdcommGemReportBinding *bindings, size_t binding_count)

Declared in: #include <pdcomm_gem_data.h>

Builds a report store from the given reports and events, links each event to its reports, enables the events marked enabled, and installs it together with a new explicit binding store. The Equipment must not have a report store or a binding store yet. Every report needs at least one VID, every VID must be bound, and CONSTANT bindings are not accepted here. All input arrays are borrowed only for the call. On failure neither store changes. Hosts may still change the reports and links at run time with S2F33 and S2F35.

Parameters

NameDescription
endpointEquipment endpoint; the TCP endpoint must be Stopped.
report_optionsReport store limits; version must be #PDCOMM_GEM_REPORT_OPTIONS_VERSION and reserved 0.
reportsArray of report_count report definitions with unique RPTIDs and at least one VID each. May be NULL when report_count is 0.
report_countNumber of reports; at most max_reports.
eventsArray of event_count events with unique CEIDs. May be NULL when event_count is 0.
event_countNumber of events; at most max_events.
binding_optionsBinding store limits; version must be #PDCOMM_GEM_BINDING_OPTIONS_VERSION and reserved 0.
bindingsArray of binding_count STATUS or DATA bindings. May be NULL when binding_count is 0.
binding_countNumber of bindings.

Returns

#PDCOMM_OK on success; #PDCOMM_INVALID_ARGUMENT when a required pointer is NULL, an options structure is invalid, a report has no VIDs, an enabled flag is greater than 1, an ID is duplicated, a link names an unknown report, a binding is invalid or CONSTANT, or a VID or source does not exist (an enabled event without links is valid and is reported with an empty report list); #PDCOMM_LIMIT_EXCEEDED when a store limit is exceeded; #PDCOMM_BACKPRESSURE when a TCP event is staged; #PDCOMM_INVALID_STATE when the endpoint is not Stopped, is not an Equipment, already has a report or binding store, or GEM communication is active; #PDCOMM_ALLOCATION_FAILED or #PDCOMM_POISONED.