67 lines
1.7 KiB
C
67 lines
1.7 KiB
C
/*
|
|
* Copyright (c) CompanyNameMagicTag 2019-2020. All rights reserved.
|
|
* Description: MRS STA queue handle.
|
|
*/
|
|
|
|
#ifndef __MRS_STA_QUEUE_H__
|
|
#define __MRS_STA_QUEUE_H__
|
|
|
|
#include "mrs_common_queue.h"
|
|
|
|
#if defined(PRODUCT_CFG_PRODUCT_TYPE_STA)
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#define mrs_sta_queue_notify() mrs_msg_queue_send(MRS_MSG_ID_TIMER, 0, MRS_TIMER_ID_STA_QUEUE, 0)
|
|
|
|
#define MRS_MR_QUEUE_MAX_RETRY 2
|
|
|
|
#define MRS_STA_ITEM_ID_DETECT 0xFFFF
|
|
#define MRS_STA_ITME_ID_EVENT_QRY 0xFFFE
|
|
|
|
typedef struct mrs_mr_queue_item {
|
|
mrs_queue_node link;
|
|
td_u16 id;
|
|
td_u16 seq;
|
|
td_u8 protocol;
|
|
td_u8 timeout;
|
|
td_u8 no_rsp_flg : 1;
|
|
td_u8 nak_flag : 1;
|
|
td_u8 rsv0 : 2;
|
|
td_u8 try_max : 4;
|
|
td_u8 status;
|
|
td_void (*rx_handle)(EXT_CONST struct mrs_mr_queue_item *item, td_pbyte data, td_u16 data_len);
|
|
td_void (*timeout_handle)(td_void);
|
|
td_u8 mac_addr[EXT_METER_ADDR_LEN];
|
|
td_u16 data_len;
|
|
td_u8 data[0];
|
|
} mrs_mr_queue_item;
|
|
|
|
typedef struct {
|
|
mrs_srv_queue mr_queue;
|
|
td_u8 retry;
|
|
td_u8 lock;
|
|
td_u16 rsv;
|
|
} mrs_sta_mr_queue;
|
|
|
|
/* initialization for message recieving queue */
|
|
td_u32 mrs_sta_queue_init(mrs_sta_mr_queue *queue);
|
|
/* join the queue */
|
|
td_bool mrs_sta_try_enqueue(EXT_CONST mrs_sta_mr_queue *queue, EXT_CONST mrs_mr_queue_item *item);
|
|
/* remove the element from the queue */
|
|
td_bool mrs_sta_try_dequeue(mrs_sta_mr_queue *queue);
|
|
/* send element of queue */
|
|
td_void mrs_sta_queue_handle(mrs_sta_mr_queue *queue);
|
|
/* unlock the queue */
|
|
td_void mrs_sta_queue_unlock(mrs_sta_mr_queue *queue);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* defined(PRODUCT_CFG_PRODUCT_TYPE_STA) */
|
|
#endif /* __MRS_STA_QUEUE_H__ */
|
|
|