| 123456789101112131415161718192021222324252627 |
- #pragma once
- #include "os/os_types.h"
- typedef struct {
- u16 key;
- u16 data_len;
- u8 *resp_data;
- }response_t;
- typedef struct {
- response_t *keys;
- u16 max_key_count;
- }wait_queue_t;
- #define KEY_FLAGS_IDLE 0
- #define KEY_FLAGS_WAITING 1
- #define KEY_FLAGS_PENDING 2
- #define ACKED_KEY ((u16)0xFFFF)
- void wait_queue_init(wait_queue_t *queue, int max_size);
- s32 wait_queue_add(wait_queue_t *queue, u16 key);
- s32 wait_queue_add_buffer(wait_queue_t *queue, u16 key, u8*buffer, u16 len);;
- bool wait_queue_key_acked(wait_queue_t *queue, u16 key);
- bool wait_queue_key_acked_response(wait_queue_t *queue, u16 key, u8 *data, u16 len);
- s32 wait_queue_wait_key(wait_queue_t *queue, s32 index, s32 timeout);
- void wait_queue_delete_key(wait_queue_t *queue, s32 index);
|