Skip to content

C Gateway API

Gateway-specific types and operations extend the local Device endpoint.

CORELIB_GATEWAY_CONTEXT_STORAGE_SIZE

c
#define CORELIB_GATEWAY_CONTEXT_STORAGE_SIZE 3072u

Conservative portable storage bytes for a gateway context.

CORELIB_GATEWAY_ENTRY_STORAGE_SIZE

c
#define CORELIB_GATEWAY_ENTRY_STORAGE_SIZE 96u

Conservative storage bytes for one gateway entry.

c
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

c
typedef enum { ... } corelib_route_state_t;

Lifecycle state of a gateway route.

Values: CORELIB_ROUTE_PROVISIONAL, CORELIB_ROUTE_READY.

corelib_control_status_t

c
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

c
typedef struct corelib_gateway_context corelib_gateway_context_t;

Opaque state for one independently serialized gateway.

c
typedef uint32_t corelib_link_profile_id_t;

Application-defined identifier for a downstream link profile.

corelib_discover_callback_t

c
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

c
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

c
typedef void(* corelib_topology_callback_t) (void *user, const corelib_topology_event_t *event);

Reports a committed gateway topology change.

c
typedef struct { ... } corelib_link_config_t;

Configuration for one dedicated gateway link.

Fields: link_id, profile_id, role, transport_context, available.

corelib_candidate_t

c
typedef struct { ... } corelib_candidate_t;

Profile-discovered candidate reported to the gateway.

Fields: node_uuid, capabilities, discovery_token, link_id.

corelib_topology_event_t

c
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

c
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

c
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

c
typedef struct { ... } corelib_gateway_callbacks_t;

Gateway-specific synchronous callback table.

Fields: discover, bootstrap_assign, topology_changed.

corelib_gateway_storage_t

c
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

c
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

c
size_t corelib_gateway_context_size(void);

Returns required gateway context bytes.

Required context bytes.

corelib_gateway_context_alignment

c
size_t corelib_gateway_context_alignment(void);

Returns required gateway context alignment.

Required byte alignment.

corelib_gateway_entry_size

c
size_t corelib_gateway_entry_size(void);

Returns required bytes for one gateway entry.

Required entry bytes.

corelib_gateway_init

c
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

c
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

c
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.

c
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.

c
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.

c
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

c
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

c
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

c
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

c
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

c
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

c
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

c
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

c
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

c
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

c
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.

Released under the MIT Licence.