122 lines
3.7 KiB
C
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 */
|
|
|