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 */
 | |
| 
 |