Files
kunlun/plc/htbus/inc/htbus_msg.h
2024-09-28 14:24:04 +08:00

122 lines
3.7 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 HTBUS_MSG_H
#define HTBUS_MSG_H
/* os shim includes */
#include "os_types.h"
/* common includes */
#include "iot_task.h"
#include "iot_config.h"
#ifdef __cplusplus
extern "C" {
#endif
/* define the htbus message queue count and priorities, the higer the priority
* the lower the queue number.
*/
#define HTBUS_MSG_QUEUE_HP 0
#define HTBUS_MSG_QUEUE_LP 1
#define HTBUS_MSG_QUEUE_MAX_PRIO 2
/* define htbus layer message pool size */
#define HTBUS_MSG_POOL_SIZE 128
/* message type definition */
#define HTBUS_MSG_TYPE_INTERNAL 0 /* messages from interanal */
#define HTBUS_MSG_TYPE_MAC 1 /* messages from mac layer */
/* messages id definitions for internal type */
/* start reqeust */
#define HTBUS_MSG_ID_INTERNAL_START 0
/* messages id definitions for MAC type */
#define HTBUS_MSG_ID_MAC_BEACON_RX 0 /* beacon rx */
#define HTBUS_MSG_ID_MAC_BP_END_ALERT 1 /* beacon period end alert */
/* define event type */
/* test trigger event */
#define HTBUS_EVENT_TEST_TRIG 1
/* htbus message */
typedef struct _htbus_msg {
/* htbus task message */
iot_task_msg_t task_msg;
/* message data1 */
uint32_t data1;
/* message data2 pointer */
void *data2;
} htbus_msg_t;
/*
* htbus_alloc_msg() - allocate one message from global msg pool
*
* return:
* NULL -- for failure case
* othersie -- pointer of allocated message
*/
#define htbus_alloc_msg() ((htbus_msg_t *)iot_task_alloc_msg(p_htbus_glb->task_h))
/*
* htbus_free_msg() - free one message back to global msg pool
* @msg: pointer of msg to be freed
*/
#define htbus_free_msg(msg) \
(iot_task_free_msg(p_htbus_glb->task_h, (iot_task_msg_t *)msg))
/*
* htbus_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 htbus_queue_msg(msg, prio) \
(iot_task_queue_msg(p_htbus_glb->task_h, (iot_task_msg_t *)msg, prio))
/*
* htbus_clean_msg() - clean up specified messages
* @type: type of the messages to be canceled
* @id: id of messages to be canceled
*/
#define htbus_clean_msg(type, id) \
(iot_task_clean_msg(p_htbus_glb->task_h, type, id))
/*
* function callback to handle event
* @events: collection of events, see HTBUS_EVENT_XXX
*/
typedef void (*htbus_event_func_t)(uint32_t events);
/*
* function callback to handle msg executing case
* @msg: pointer to message to be executed
*/
typedef void (*htbus_msg_execute_func_t)(htbus_msg_t *msg);
/*
* function callback to handle msg canceling case
* @msg: pointer to message to be canceled
*/
typedef void (*htbus_msg_cancel_func_t)(htbus_msg_t *msg);
#ifdef __cplusplus
}
#endif
#endif /* HTBUS_MSG_H */