C Gateway API
Gateway-specific types and operations extend the local Device endpoint.
CORELIB_GATEWAY_CONTEXT_STORAGE_SIZE
#define CORELIB_GATEWAY_CONTEXT_STORAGE_SIZE 3072uConservative portable storage bytes for a gateway context.
CORELIB_GATEWAY_ENTRY_STORAGE_SIZE
#define CORELIB_GATEWAY_ENTRY_STORAGE_SIZE 96uConservative storage bytes for one gateway entry.
corelib_link_role_t
typedef enum { ... } corelib_link_role_t;Direction of a dedicated PFP link relative to the gateway.
Values: CORELIB_LINK_UPSTREAM, CORELIB_LINK_DOWNSTREAM.
corelib_route_state_t
typedef enum { ... } corelib_route_state_t;Lifecycle state of a gateway route.
Values: CORELIB_ROUTE_PROVISIONAL, CORELIB_ROUTE_READY.
corelib_control_status_t
typedef enum { ... } corelib_control_status_t;PFP control status returned for downstream assignment.
Values: CORELIB_CONTROL_SUCCESS, CORELIB_CONTROL_MALFORMED, CORELIB_CONTROL_UNSUPPORTED, CORELIB_CONTROL_CONFLICT, CORELIB_CONTROL_DUPLICATE_IDENTITY, CORELIB_CONTROL_NO_ROUTE, CORELIB_CONTROL_HOP_LIMIT, CORELIB_CONTROL_SESSION_REJECTED, CORELIB_CONTROL_RESOURCE_LIMIT.
corelib_gateway_context_t
typedef struct corelib_gateway_context corelib_gateway_context_t;Opaque state for one independently serialized gateway.
corelib_link_profile_id_t
typedef uint32_t corelib_link_profile_id_t;Application-defined identifier for a downstream link profile.
corelib_discover_callback_t
typedef corelib_send_result_t(* corelib_discover_callback_t) (void *user, corelib_link_id_t link_id, void *transport_context, corelib_link_profile_id_t profile_id, const uint8_t discovery_token[16]);Starts profile-specific discovery on one downstream link.
corelib_bootstrap_callback_t
typedef corelib_send_result_t(* corelib_bootstrap_callback_t) (void *user, void *transport_context, const corelib_bootstrap_assignment_t *assignment);Delivers an address assignment through a downstream link profile.
corelib_topology_callback_t
typedef void(* corelib_topology_callback_t) (void *user, const corelib_topology_event_t *event);Reports a committed gateway topology change.
corelib_link_config_t
typedef struct { ... } corelib_link_config_t;Configuration for one dedicated gateway link.
Fields: link_id, profile_id, role, transport_context, available.
corelib_candidate_t
typedef struct { ... } corelib_candidate_t;Profile-discovered candidate reported to the gateway.
Fields: node_uuid, capabilities, discovery_token, link_id.
corelib_topology_event_t
typedef struct { ... } corelib_topology_event_t;Topology reachability event emitted after committed state changes.
Fields: node_uuid, capabilities, node_address, parent_address, ingress_link, state, reachable.
corelib_gateway_usage_t
typedef struct { ... } corelib_gateway_usage_t;Snapshot of currently occupied gateway resources.
Fields: links, routes, discoveries, candidates, assignments, queued_frames, active_control_reassemblies.
corelib_gateway_limits_t
typedef struct { ... } corelib_gateway_limits_t;Fixed capacities and deadlines configured for a gateway.
Fields: links, routes, discoveries, candidates, assignments, queued_frames, control_reassembly_slots, maximum_control_message_size, discovery_timeout_ms, assignment_timeout_ms, candidate_retention_timeout_ms.
corelib_gateway_callbacks_t
typedef struct { ... } corelib_gateway_callbacks_t;Gateway-specific synchronous callback table.
Fields: discover, bootstrap_assign, topology_changed.
corelib_gateway_storage_t
typedef struct { ... } corelib_gateway_storage_t;Caller-owned fixed-capacity gateway storage.
Fields: links, routes, discoveries, candidates, assignments, forwarding, control_reassembly, control_reassembly_slots, maximum_control_message_size, device_context_memory, device_context_memory_size.
corelib_gateway_config_t
typedef struct { ... } corelib_gateway_config_t;Immutable gateway configuration copied during initialisation.
Fields: device, callbacks, storage, discovery_timeout_ms, assignment_timeout_ms, candidate_retention_timeout_ms.
corelib_gateway_context_size
size_t corelib_gateway_context_size(void);Returns required gateway context bytes.
Required context bytes.
corelib_gateway_context_alignment
size_t corelib_gateway_context_alignment(void);Returns required gateway context alignment.
Required byte alignment.
corelib_gateway_entry_size
size_t corelib_gateway_entry_size(void);Returns required bytes for one gateway entry.
Required entry bytes.
corelib_gateway_init
corelib_status_t corelib_gateway_init(void *context_memory, size_t context_memory_size, const corelib_gateway_config_t *config, corelib_gateway_context_t **context);Initialises a gateway in caller-owned memory.
context_memory Aligned writable storage. context_memory_size Storage bytes. config Configuration copied by Corelib. context Receives the context. Operation status.
corelib_gateway_reset
corelib_status_t corelib_gateway_reset(corelib_gateway_context_t *context);Clears gateway protocol and topology state.
context Initialised gateway. Operation status.
corelib_gateway_tick
corelib_status_t corelib_gateway_tick(corelib_gateway_context_t *context, uint64_t monotonic_ms);Advances gateway deadlines and queued work.
context Initialised gateway. monotonic_ms Non-decreasing time. Operation status.
corelib_gateway_add_link
corelib_status_t corelib_gateway_add_link(corelib_gateway_context_t *context, const corelib_link_config_t *link);Registers one dedicated PFP link.
context Initialised gateway. link Link configuration. Operation status.
corelib_gateway_remove_link
corelib_status_t corelib_gateway_remove_link(corelib_gateway_context_t *context, corelib_link_id_t link_id);Removes a link and all dependent topology.
context Initialised gateway. link_id Link identifier. Operation status.
corelib_gateway_set_link_available
corelib_status_t corelib_gateway_set_link_available(corelib_gateway_context_t *context, corelib_link_id_t link_id, bool available);Changes link availability and performs loss cleanup.
context Initialised gateway. link_id Link identifier. available New availability. Operation status.
corelib_gateway_receive_frame
corelib_status_t corelib_gateway_receive_frame(corelib_gateway_context_t *context, corelib_link_id_t link_id, const uint8_t frame[CORELIB_FRAME_SIZE], uint64_t monotonic_ms);Processes one frame received on a gateway link.
context Initialised gateway. link_id Receiving link. frame Borrowed frame. monotonic_ms Non-decreasing time. Processing status.
corelib_gateway_accept_bootstrap_assignment
corelib_status_t corelib_gateway_accept_bootstrap_assignment(corelib_gateway_context_t *context, const corelib_bootstrap_assignment_t *assignment, uint64_t monotonic_ms);Accepts a profile-delivered assignment for the local gateway.
context Initialised gateway. assignment Assignment. monotonic_ms Non-decreasing time. Validation status.
corelib_gateway_report_candidate
corelib_status_t corelib_gateway_report_candidate(corelib_gateway_context_t *context, const corelib_candidate_t *candidate);Reports one profile-discovered candidate.
context Initialised gateway. candidate Candidate description. Operation status.
corelib_gateway_complete_discovery
corelib_status_t corelib_gateway_complete_discovery(corelib_gateway_context_t *context, corelib_link_id_t link_id, const uint8_t discovery_token[16], corelib_status_t result);Completes profile discovery.
context Initialised gateway. link_id Discovery link. discovery_token Round token. result Profile result. Correlation status.
corelib_gateway_complete_assignment
corelib_status_t corelib_gateway_complete_assignment(corelib_gateway_context_t *context, uint32_t transaction_id, const uint8_t node_uuid[16], corelib_control_status_t result);Completes one downstream assignment.
context Initialised gateway. transaction_id Assignment transaction. node_uuid Candidate UUID. result PFP control result. Commit or rollback status.
corelib_gateway_report_node_lost
corelib_status_t corelib_gateway_report_node_lost(corelib_gateway_context_t *context, const uint8_t node_uuid[16]);Reports loss of a downstream node and its descendants.
context Initialised gateway. node_uuid Lost UUID. Operation status.
corelib_gateway_respond
corelib_status_t corelib_gateway_respond(corelib_gateway_context_t *context, const corelib_transaction_id_t *request, corelib_transaction_result_t result, const uint8_t *data, size_t data_size);Responds to a local application request.
context Initialised gateway. request Request identity. result Application result. data Optional payload. data_size Payload bytes. Operation status.
corelib_gateway_publish
corelib_status_t corelib_gateway_publish(corelib_gateway_context_t *context, bool common, uint32_t share_id, const uint8_t *data, size_t data_size);Publishes a local Common or Share payload.
context Initialised gateway. common Payload kind. share_id Schema identifier. data Encoded payload. data_size Payload bytes. Operation status.
corelib_gateway_usage
corelib_status_t corelib_gateway_usage(const corelib_gateway_context_t *context, corelib_gateway_usage_t *usage);Reads current gateway resource usage.
context Initialised gateway. usage Usage snapshot. Operation status.
corelib_gateway_limits
corelib_status_t corelib_gateway_limits(const corelib_gateway_context_t *context, corelib_gateway_limits_t *limits);Reads fixed gateway limits.
context Initialised gateway. limits Configured limits. Operation status.
