22#define NX_I2C_MAX_MESSAGES 8U
23#define NX_I2C_MAX_MESSAGE_BYTES 256U
58 uint8_t syscall_ceiling);
122 size_t* transferred);
216 uint8_t syscall_ceiling);
nx_result_t nx_i2c_port_attach_wake(const nx_i2c_port_t *port, const nx_irq_wake_t *wake, uint8_t syscall_ceiling)
Attach one optional hint sink after actual IRQ policy checks.
void nx_i2c_port_service(const nx_i2c_port_t *port)
Advance deadline and STOP/DMA drain in bounded task context.
bool nx_i2c_endpoint_on_port(const nx_i2c_endpoint_t *endpoint, const nx_i2c_port_t *port)
Prove controller identity without hardware effects.
nx_result_t nx_i2c_endpoint_submit(const nx_i2c_endpoint_t *endpoint, nx_i2c_request_t *request)
Admit one finite asynchronous repeated-START transaction.
struct nx_i2c_endpoint nx_i2c_endpoint_t
struct nx_i2c_port nx_i2c_port_t
nx_result_t nx_i2c_endpoint_transaction(const nx_i2c_endpoint_t *endpoint, nx_i2c_message_t *messages, size_t count, nx_time_us_t deadline, size_t *transferred)
Execute a polling 7-bit-address message transaction.
nx_result_t nx_i2c_port_stop(const nx_i2c_port_t *port)
Close admission and stop only after every borrower drains.
nx_result_t nx_i2c_request_validate(const nx_i2c_request_t *request)
Validate finite descriptors and payload/control separation.
nx_result_t nx_i2c_endpoint_start_admitted(const nx_i2c_endpoint_t *endpoint, nx_i2c_request_t *request)
Start an already borrowed QUEUED request without readmission.
nx_result_t nx_i2c_port_cancel(const nx_i2c_port_t *port, nx_i2c_request_t *request)
Request cancellation without reclaiming any storage.
nx_result_t nx_i2c_request_prepare(nx_i2c_request_t *request, nx_i2c_message_t *messages, size_t count, nx_time_us_t deadline)
Prepare an unborrowed request without copying payload.
nx_result_t nx_i2c_port_recover(const nx_i2c_port_t *port)
Recover an idle controller after a bus fault.
Caller-owned admission, borrow, settlement and stable cancellation.
nx_result_t
Operation result; success at submission means admission only.
Shared read-only methods using one provider state.
bool(* on_port)(const void *context, const nx_i2c_port_t *port)
nx_result_t(* submit)(void *context, nx_i2c_request_t *request)
nx_result_t(* transaction)(void *context, nx_i2c_message_t *messages, size_t count, nx_time_us_t deadline, size_t *transferred)
nx_result_t(* start_admitted)(void *context, nx_i2c_request_t *request)
Immutable interface pointing to caller-owned state.
const nx_i2c_endpoint_ops_t * ops
One message; a new message starts with repeated START, final with STOP.
Shared read-only methods using one provider state.
nx_result_t(* attach_wake)(void *context, const nx_irq_wake_t *wake, uint8_t syscall_ceiling)
nx_result_t(* cancel)(void *context, nx_i2c_request_t *request)
void(* service)(void *context)
nx_result_t(* recover)(void *context)
nx_result_t(* stop)(void *context)
Immutable interface pointing to caller-owned state.
Caller-owned finite message sequence.
nx_i2c_message_t * messages
Optional immutable wake target borrowed by an IRQ provider.
Caller-owned request metadata, without payload or callbacks.
uint64_t nx_time_us_t
Microseconds in one boot/clock domain; no wall-clock semantics.
Explicit borrowed IRQ wake target and syscall-ceiling check.