Files
kunlun/plc/cvg/common/inc/cvg_msg.h
2024-09-28 14:24:04 +08:00

184 lines
6.2 KiB
C

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef CVG_MSG_H
#define CVG_MSG_H
/* os shim includes */
#include "os_types.h"
/* common includes */
#include "iot_task.h"
#include "iot_config.h"
/* cvg internal includes */
#include "cvg.h"
#ifdef __cplusplus
extern "C" {
#endif
/* define the cvg message queue count and priorities, the higer the priority
* the lower the queue number.
*/
#define CVG_MSG_QUEUE_HP 0
#define CVG_MSG_QUEUE_LP 1
#define CVG_MSG_QUEUE_MAX_PRIO 2
#if (PLC_SUPPORT_CCO_ROLE)
/* define CVG layer message pool size */
#define CVG_MSG_POOL_SIZE 255
#else
/* define CVG layer message pool size */
#define CVG_MSG_POOL_SIZE (128 + 64)
#endif
/* message type definition */
#define CVG_MSG_TYPE_OTHERS 1 /* messages from vairous sources */
#define CVG_MSG_TYPE_APP 2 /* messages from application layer */
#define CVG_MSG_TYPE_MAC 3 /* messages from mac layer */
#define CVG_MSG_TYPE_TIMER 4 /* messages from cvg internal timer */
/* message id definitions for app */
#define CVG_MSG_ID_APP_CMD 0 /* app message */
/* messages id definitions for others type */
/* start vdev reqeust */
#define CVG_MSG_ID_OTHERS_START_VDEV 1
/* new beacon period notification */
#define CVG_NSG_ID_OTHERS_NEW_BP 2
/* pm power manager notification */
#define CVG_MSG_ID_OTHERS_PM_MSG 3
/* white list or black list changed notification */
#define CVG_MSG_ID_OTHERS_WBL_CHG_MSG 4
/* async crypto done notification */
#define CVG_MSG_ID_OTHERS_CRYPTO_DONE 5
/* message id definitions for timer type */
/* cco start listen timeout */
#define CVG_MSG_TYPE_TIMER_SL 1
/* discover node mme send timeout */
#define CVG_MSG_TYPE_TIMER_DIS_NODE 2
/* route period timeout */
#define CVG_MSG_TYPE_TIMER_ROUTE 3
/* sta joining network timeout */
#define CVG_MSG_TYPE_TIMER_JOIN 4
/* sta leaving network timeout */
#define CVG_MSG_TYPE_TIMER_LEAVE 5
/* sta clear blacklist timeout */
#define CVG_MSG_TYPE_TIMER_CLEAR_BLIST 6
/* sta test mode timeout */
#define CVG_MSG_TYPE_TIMER_TEST 7
/* cco start assoc request gather timeout */
#define CVG_MSG_TYPE_TIMER_ASSOC_GATHER 8
/* sta frequency change timer timeout */
#define CVG_MSG_TYPE_TIMER_FB_CHG 9
/* partial route period timeout */
#define CVG_MSG_TYPE_TIMER_RP_PARTIAL 10
/* sta watch dog timeout */
#define CVG_MSG_TYPE_TIMER_WDG 11
/* sta monitor network timeout */
#define CVG_MSG_TYPE_TIMER_MONITOR 12
/* sta monitor network log timeout */
#define CVG_MSG_TYPE_TIMER_MONITOR_LOG 13
/* cco zero-cross NTB area notification timer timeout */
#define CVG_MSG_TYPE_TIMER_ZC_NOTIFY 14
/* timeout for controller protocol */
#define CVG_MSG_TYPE_TIMER_CTRL_PROTO 15
/* timeout for conn less */
#define CVG_MSG_TYPE_TIMER_CONN_LESS 16
/* sta rf channel change timer timeout */
#define CVG_MSG_TYPE_TIMER_RF_CHG 17
/* timeout for rf channel conflict */
#define CVG_MSG_TYPE_TIMER_RF_SL 18
/* cco start rf assoc request gather timeout */
#define CVG_MSG_TYPE_TIMER_RF_ASSOC_GATHER 19
/* rf discover node mme send timeout */
#define CVG_MSG_TYPE_TIMER_RF_DIS_NODE 20
/* timeout for security authorization */
#define CVG_MSG_TYPE_TIMER_AUTH 21
/* timeout for rf scan timeout */
#define CVG_MSG_TYPE_TIMER_RF_SCAN 22
/* messages id definitions for MAC type */
#define CVG_MSG_ID_MAC_BEACON_RX 1 /* beacon rx */
#define CVG_MSG_ID_MAC_SOF_RX 2 /* sof frame rx */
#define CVG_MSG_ID_MAC_CCO_SNR_RX 3 /* cco snr rx */
#define CVG_MSG_ID_MAC_BP_END_ALERT 4 /* beacon period end alert */
#define CVG_MSG_ID_MAC_NID_RPT 5 /* watch nid list report */
#define CVG_MSG_ID_MAC_ZC_NTB_RPT 6 /* zero cross ntb report */
#define CVG_MSG_ID_MAC_ZC_STATUS_RPT 7 /* zero cross status report */
/* cvg message */
typedef struct _cvg_msg {
/* cvg task message */
iot_task_msg_t task_msg;
/* message data */
uint32_t data1;
void *data2;
} cvg_msg_t;
/*
* cvg_alloc_msg() - allocate one message from global msg pool
*
* return:
* NULL -- for failure case
* othersie -- pointer of allocated message
*/
#define cvg_alloc_msg() ((cvg_msg_t *)iot_task_alloc_msg(p_cvg_glb->task_h))
/*
* cvg_alloc_msg_with_reserved() - allocate one message from global msg pool
* with reserved free messages in the pool.
*
* return:
* NULL -- for failure case
* othersie -- pointer of allocated message
*/
#define cvg_alloc_msg_with_reserved(reserved) \
((cvg_msg_t *)iot_task_alloc_msg_with_reserved((p_cvg_glb->task_h), \
reserved))
/*
* cvg_free_msg() - free one message back to global msg pool
* @msg: pointer of msg to be freed
*/
#define cvg_free_msg(msg) \
(iot_task_free_msg(p_cvg_glb->task_h, (iot_task_msg_t *)msg))
/*
* cvg_queue_msg() - queue one message into msg queues based on the priority
* @msg: pointer of msg to be queued
* @prio: the priority of the message
*/
#define cvg_queue_msg(msg, prio) \
(iot_task_queue_msg(p_cvg_glb->task_h, (iot_task_msg_t *)msg, prio))
/*
* cvg_clean_msg() - clean up specified messages
* @type: type of the messages to be canceled
* @id: id of messages to be canceled
*/
#define cvg_clean_msg(type, id) \
(iot_task_clean_msg(p_cvg_glb->task_h, type, id))
#ifdef __cplusplus
}
#endif
#endif /* CVG_MSG_H */