A lot of things have changed in LibOSDP in preparation for a major release. The following things have to be documented. This issue will track all those topics as a todo list before making the major release.
v4.0 breaking / behavior-changing items
New features that need explicit documentation or callouts
A lot of things have changed in LibOSDP in preparation for a major release. The following things have to be documented. This issue will track all those topics as a todo list before making the major release.
v4.0 breaking / behavior-changing items
OPT_OSDP_APP_OWNED_QUEUE_DATAis gone — always-on. Apps that submit queued payloads must now registerosdp_cp_set_command_completion_callback/osdp_pd_set_event_completion_callback.osdp_cp_setup()/osdp_pd_setup()take astruct osdp_channel *argument.channelremoved fromosdp_pd_info_t;idremoved fromstruct osdp_channel. Multi-bus deployments must create oneosdp_tper channel.pd_command_callback_tforOSDP_CMD_MFGis no longer honored as an inline MFGREP.pd_command_callback_tcontract is now0 = ACK,-ve = NAK,+ve reserved. MFGREP must be emitted asynchronously viaosdp_pd_submit_event().OSDP_EVENT_NOTIFICATION_FILE_TX_DONE(payloadenum osdp_file_tx_outcome) to learn the outcome.osdp_event_notificationrenamed toosdp_notification(dfbf978) — the struct is shared by CP events and PD commands, so theevent_prefix was misleading. Source-level rename; enum names unchanged.OSDP_FLAG_ENABLE_NOTIFICATIONwas previously a PD no-op. It now delivers link / SC transitions viapd_command_callback_twrapped inosdp_cmdwith idOSDP_CMD_NOTIFICATION. PD apps that set the flag must handle or ignore the new command id.OSDP_NOTIFICATION_COMMAND.arg1semantics (c01cc92) Changed from1 = success, 0 = failure(bool-as-int) to the documented0 = success, -1 = failure. Consumers comparing against the old values read every success as a failure (caught the pytest suite).New features that need explicit documentation or callouts
OPT_OSDP_RX_ZERO_COPYis a compile-time switch, no fallback. The old bufferedosdp_read_fn_tpath is removed in zero-copy builds. Python bindings do not support zero-copy builds.--static-pd/OPT_OSDP_STATIC_PDrenamed to--static/OPT_OSDP_STATIC(old names kept as deprecated aliases). Static builds now include CP, not just PD. Downstream build systems referencing the old preprocessor symbol must update.osdp_millis_now()/osdp_millis_since()switched fromint64_ttotick_t. New build flags--bare-metaland--use-32bit-tick-t(requires--bare-metal) let embedded targets opt into a 32-bit tick. Bare-metal apps that override the__weak osdp_millis_now()must change their return type totick_t.