Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
Data Structures
Here are the data structures with brief descriptions:
 Cdual_poll_result_tResult of one dual_channel_poll_link_once() attempt
 Csapi_appmanager_checkpoint_config_tOptional built-in checkpoint rendezvous configuration (ADR-019/ADR-034)
 Csapi_appmanager_config_tApplication manager configuration
 Csapi_appmanager_operations_tApplication lifecycle operations
 Csapi_appmanager_state_tApplication manager runtime state
 Csapi_buffer_tMutable, bounds-tracked view over caller-owned storage
 Csapi_channel_config_tConfiguration for sapi_channel_init()
 Csapi_channel_health_tHealth statistics for one vital channel
 Csapi_channel_service_backend_tBackend implementation for named channel operations
 Csapi_channel_service_storage_tCaller-owned storage for one named channel service instance
 Csapi_channel_storage_tStorage for one vital channel instance (opaque to caller)
 Csapi_checkpoint_config_tCheckpoint configuration
 Csapi_checksum_manager_t
 Csapi_checksum_result_tChecksum result for validation
 Csapi_checksum_stats_tChecksum statistics for monitoring
 Csapi_clocksync_backend_tBackend vtable: an integrator's implementation of clock synchronization for a specific mechanism (PTP/GPS/NTP/custom). Any slot may be NULL if unsupported by the backend (-> SAPI_STATUS_NOT_SUPPORTED)
 Csapi_const_buffer_tRead-only view of a buffer's currently valid bytes. Grants no write access to the underlying storage
 Csapi_cross_comparator_config_tConfiguration for sapi_cross_comparator_init()
 Csapi_cross_comparator_storage_tStorage for one cross-comparator instance (opaque to caller). No dynamic memory
 Csapi_dual_ack_frame_tSAPI_DUAL_FRAME_KIND_ACK payload
 Csapi_dual_channel_config_tConfiguration for sapi_dual_channel_init()
 Csapi_dual_channel_tOne sapi_dual_channel_t instance's state. Caller-owned storage; every field is private - reach it only through the functions below
 Csapi_dual_frame_header_tCommon 4-byte header prefixing every Layer-2 frame; kept a fixed 4 bytes (not just 1) so the fields that follow in sapi_dual_ack_frame_t/sapi_dual_state_frame_t stay naturally aligned
 Csapi_dual_heartbeat_frame_tSAPI_DUAL_FRAME_KIND_HEARTBEAT payload - connection maintenance heartbeat
 Csapi_dual_msgchannel_config_tConfiguration for sapi_dual_msgchannel_init()
 Csapi_dual_msgchannel_tOne sapi_dual_msgchannel_t instance's state. Caller-owned storage (REQ-DUAL-MSGCHANNEL-001); opaque in practice, exposed here (not via SAFEAPI_DECLARE_STORAGE) only because its size is already small and fixed - callers must still treat every field as private and only reach it through the functions below
 Csapi_dual_negotiator_config_tConfiguration for sapi_dual_negotiator_init()
 Csapi_dual_negotiator_tOne sapi_dual_negotiator_t instance's state. Caller-owned storage; every field is private - reach it only through the functions below
 Csapi_dual_state_frame_tSAPI_DUAL_FRAME_KIND_STATE payload - sapi_dual_negotiator_t's own periodic beacon
 Csapi_ipc_backend_tBackend vtable: an integrator's implementation of the IPC service for a specific OS/RTOS (ADR-005). Any slot may be NULL if unsupported by the backend (-> SAPI_STATUS_NOT_SUPPORTED)
 Csapi_ipc_config_tConfiguration for sapi_ipc_create()
 Csapi_ipc_pubsub_subscriber_config_tConfiguration for a subscriber
 Csapi_ipc_pubsub_topic_config_tConfiguration for a pub-sub topic
 Csapi_ipc_rr_client_config_tConfiguration for request-reply client
 Csapi_ipc_rr_request_tIncoming request with context for sending reply
 Csapi_ipc_rr_server_config_tConfiguration for request-reply server
 Csapi_log_backend_tBackend vtable: an integrator's implementation of the logging sink (ADR-005). Unlike every other OAL service, an unregistered backend is not an error here: sapi_log_write() with no backend registered silently does nothing, consistent with REQ-OAL-LOG-001 (logging must never affect caller control flow)
 Csapi_log_fields_tBounded builder for sapi_log_write_event()'s extra_fields (or info) argument: accumulates space-separated key=value pairs, each typed at the call site, so a caller adding a couple of variable values does not hand-roll a sapi_string_concat()/sapi_string_append_u32() chain every time (MISRA C:2012 Rule 17.1 rules out a printf-style variadic here)
 Csapi_log_level_name_tOne canonical level spelling <-> value pair for sapi_log_level_from_string()
 Csapi_mem_pool_backend_tBackend vtable: an integrator's implementation of the memory pool service (ADR-005). Any slot may be NULL if unsupported by the backend (-> SAPI_STATUS_NOT_SUPPORTED)
 Csapi_mem_pool_config_tConfiguration for sapi_mem_pool_create()
 Csapi_mutex_backend_tBackend vtable: an integrator's implementation of the mutex service for a specific OS/RTOS/BSP target (ADR-033). Any slot may be NULL if that operation is unsupported by the backend, in which case the corresponding sapi_mutex_* call returns SAPI_STATUS_NOT_SUPPORTED
 Csapi_netlink_backend_tBackend vtable: an integrator's implementation of the network link service for a specific transport/target (ADR-005). Any slot may be NULL if unsupported by the backend (-> SAPI_STATUS_NOT_SUPPORTED)
 Csapi_netlink_config_tConfiguration for sapi_netlink_open()
 Csapi_nvm_backend_tBackend vtable: an integrator's implementation of the NVM service for a specific storage medium (ADR-005). Any slot may be NULL if unsupported by the backend (-> SAPI_STATUS_NOT_SUPPORTED)
 Csapi_nvm_config_tConfiguration for sapi_nvm_open()
 Csapi_platform_backend_tBackend vtable: an integrator's implementation of the real-time platform bring-up for a specific target (ADR-005)
 Csapi_reboot_backend_tBackend vtable: an integrator's implementation of the reboot mechanism for a specific target (ADR-005)
 Csapi_safe_ptr_tA bounds-checked, canary-protected wrapper around one raw memory region. Opaque to callers in spirit (every field is manipulated only through the functions below) but a plain struct, not a handle, so it can be embedded directly in a caller's own statically-allocated storage - no dynamic allocation, matching CLAUDE.md
 Csapi_safechannel_config_tConfiguration for sapi_safechannel_open()
  C[union].as
 Csapi_safechannel_dual_config_tConfiguration specific to SAPI_SAFECHANNEL_TYPE_DUAL_REDUNDANT
 Csapi_safechannel_endpoint_tOne remote endpoint to open internally - replaces a caller- supplied sapi_netlink_handle_t (ADR-022 section 2.2)
 Csapi_safechannel_tCaller-owned storage for one sapi_safechannel_t instance. Every field is private - reach it only through the functions below. No dynamic allocation (REQ-SAFECHANNEL-002): sized to hold up to SAPI_SAFECHANNEL_MAX_LINKS opened netlink links plus whichever of sapi_dual_channel_t/sapi_channel_t is in use
  C[union].impl
   C[struct].impl.vital
 Csapi_safechannel_vital_config_tConfiguration specific to SAPI_SAFECHANNEL_TYPE_VITAL_VOTED
 Csapi_string_tBounded string: buf.length is the string length, not counting a NUL
 Csapi_task_backend_tBackend vtable: an integrator's implementation of the task scheduling service for a specific OS/RTOS (ADR-005). Any slot may be NULL if unsupported by the backend (-> SAPI_STATUS_NOT_SUPPORTED)
 Csapi_task_config_tConfiguration for sapi_task_create()
 Csapi_timer_backend_tBackend vtable: an integrator's implementation of the timer service for a specific OS/RTOS/BSP target (ADR-005). Any slot may be NULL if that operation is unsupported by the backend, in which case the corresponding sapi_timer_* call returns SAPI_STATUS_NOT_SUPPORTED
 Csapi_timer_config_tConfiguration for sapi_timer_create()
 Csapi_vital_message_tVital channel message with integrated CRC-64
 Csapi_voter_config_tConfiguration for sapi_voter_init()
 Csapi_voter_storage_tStorage for one voter instance (opaque to caller). No dynamic memory
 Csapi_watchdog_config_tWatchdog configuration
 Csapi_watchdog_status_tWatchdog health/status information
 Csapi_watchdog_tWatchdog handle (opaque)