Go to the documentation of this file.
98 #ifdef MIP_ENABLE_DIAGNOSTICS
99 uint16_t _diag_cmds_queued;
100 uint16_t _diag_cmds_acked;
101 uint8_t _diag_cmds_nacked;
102 uint8_t _diag_cmds_timedout;
103 uint8_t _diag_cmds_failed;
104 #endif // MIP_ENABLE_DIAGNOSTICS
122 #ifdef MIP_ENABLE_DIAGNOSTICS
123 uint16_t mip_cmd_queue_diagnostic_cmds_queued(
const mip_cmd_queue* queue);
124 uint16_t mip_cmd_queue_diagnostic_cmds_failed(
const mip_cmd_queue* queue);
125 uint16_t mip_cmd_queue_diagnostic_cmds_successful(
const mip_cmd_queue* queue);
127 uint16_t mip_cmd_queue_diagnostic_cmd_acks(
const mip_cmd_queue* queue);
128 uint16_t mip_cmd_queue_diagnostic_cmd_nacks(
const mip_cmd_queue* queue);
129 uint16_t mip_cmd_queue_diagnostic_cmd_timeouts(
const mip_cmd_queue* queue);
130 uint16_t mip_cmd_queue_diagnostic_cmd_errors(
const mip_cmd_queue* queue);
131 #endif // MIP_ENABLE_DIAGNOSTICS
uint8_t mip_pending_cmd_response_descriptor(const mip_pending_cmd *cmd)
Returns the response descriptor.
struct mip_pending_cmd * _next
Next command in the queue.
uint8_t _field_descriptor
Command field descriptor.
uint8_t _descriptor_set
Command descriptor set.
mip_timestamp _reply_time
If MIP_STATUS_COMPLETED: timestamp_type from the packet containing the ack/nack.
void mip_pending_cmd_init_full(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor, uint8_t response_descriptor, uint8_t *response_buffer, uint8_t response_size, mip_timeout additional_time)
Initialize a pending mip commmand with all parameters.
void mip_cmd_queue_init(mip_cmd_queue *queue, mip_timeout base_reply_timeout)
Initializes a command queue.
void mip_cmd_queue_set_base_reply_timeout(mip_cmd_queue *queue, mip_timeout timeout)
Sets the base reply timeout for all commands.
uint8_t _response_descriptor
Response field descriptor, or 0x00 if no response field expected.
uint8_t _response_length
If status == MIP_STATUS_COMPLETED, the length of the reply data.
int mip_pending_cmd_remaining_time(const mip_pending_cmd *cmd, mip_timestamp now)
Determines how much time is remaining before the command times out.
mip_timeout _base_timeout
mip_cmd_result
Represents the status of a MIP command.
void mip_cmd_queue_clear(mip_cmd_queue *queue)
Clears the command queue.
uint8_t * _response_buffer
Buffer for response data if response_descriptor != 0x00.
struct mip_cmd_queue mip_cmd_queue
Holds a list of pending commands.
void mip_pending_cmd_init(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor)
Initialize a pending command with no reponse data or additional time.
uint64_t mip_timestamp
Type used for packet timestamps and timeouts.
Represents a command awaiting a reply from the device.
mip_timeout mip_cmd_queue_base_reply_timeout(const mip_cmd_queue *queue)
Gets the base reply timeout for all commands.
uint8_t mip_pending_cmd_response_length(const mip_pending_cmd *cmd)
Returns the length of the response data.
Holds a list of pending commands.
const uint8_t * mip_pending_cmd_response(const mip_pending_cmd *cmd)
Returns the response payload pointer.
mip_timestamp _timeout_time
If MIP_STATUS_WAITING: timestamp_type after which the command will be timed out.
void mip_cmd_queue_update(mip_cmd_queue *queue, mip_timestamp timestamp)
Call periodically to make sure commands time out if no packets are received.
struct mip_pending_cmd mip_pending_cmd
Represents a command awaiting a reply from the device.
mip_timeout _extra_timeout
<
mip_pending_cmd * _first_pending_cmd
void mip_cmd_queue_dequeue(mip_cmd_queue *queue, mip_pending_cmd *cmd)
Removes a pending command from the queue.
enum mip_cmd_result mip_pending_cmd_status(const mip_pending_cmd *cmd)
Returns the status of the pending command.
mip_timestamp mip_timeout
void mip_pending_cmd_init_with_timeout(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor, mip_timeout additional_time)
Initialize a pending mip commmand with extra timeout time.
Structure representing a MIP Packet.
bool mip_pending_cmd_check_timeout(const mip_pending_cmd *cmd, mip_timestamp now)
Checks if the command should time out.
void mip_cmd_queue_process_packet(mip_cmd_queue *queue, const mip_packet *packet, mip_timestamp timestamp)
Process an incoming packet and check for replies to pending commands.
uint8_t _response_buffer_size
If status < MIP_STATUS_COMPLETED, the size of the reply data buffer.
void mip_cmd_queue_enqueue(mip_cmd_queue *queue, mip_pending_cmd *cmd)
Queue a command to wait for replies.
void mip_pending_cmd_init_with_response(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor, uint8_t response_descriptor, uint8_t *response_buffer, uint8_t response_buffer_size)
Initialize a pending mip commmand with expected response data.