129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /****************************************************************************
 | |
| 
 | |
| 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 IOT_FTM_INTERNAL_H
 | |
| #define IOT_FTM_INTERNAL_H
 | |
| 
 | |
| /* os shim includes */
 | |
| #include "os_types.h"
 | |
| 
 | |
| /* common includes */
 | |
| #include "iot_config.h"
 | |
| #include "iot_task.h"
 | |
| 
 | |
| /* ftm internal includes */
 | |
| #include "iot_ftm_msg.h"
 | |
| #include "mac_dsr.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /* define ftm message pool size */
 | |
| #define IOT_FTM_MSG_POOL_SIZE       128
 | |
| 
 | |
| /* define the ftm message queue count and priorities, the higer the priority
 | |
|  * the lower the queue number.
 | |
|  */
 | |
| #define IOT_FTM_MSG_QUEUE_HP        0
 | |
| #define IOT_FTM_MSG_QUEUE_MAX_PRIO  1
 | |
| 
 | |
| /* define ftm message id */
 | |
| #define IOT_FTM_MSG_FTM_CMD         1
 | |
| #define IOT_FTM_MSG_FTM_SEND        2
 | |
| 
 | |
| /* define ftm task size */
 | |
| #define IOT_FTM_TASK_STACK_SIZE     1024
 | |
| 
 | |
| //copy from mac dsr
 | |
| /*
 | |
|  * function callback to handle specific dsr
 | |
|  * @arg:    arg parameter registered alone with the callback
 | |
|  */
 | |
| typedef void (*ftm_dsr_func_t)();
 | |
| 
 | |
| /* mac dsr entry defintion */
 | |
| typedef struct _ftm_dsr_entry {
 | |
|     /* ftm dsr function callback */
 | |
|     ftm_dsr_func_t dsr;
 | |
| } ftm_dsr_entry_t;
 | |
| 
 | |
| typedef struct _ftm_dsr_table {
 | |
|     ftm_dsr_entry_t entry[MAC_DSR_MAX_ID];
 | |
| } ftm_dsr_table_t;
 | |
| 
 | |
| typedef struct _iot_ftm_global {
 | |
|     /* ftm task configuration */
 | |
|     iot_task_config_t   task_cfg;
 | |
|     /* ftm task handle */
 | |
|     iot_task_h          task_h;
 | |
|     /* pending command id */
 | |
|     uint16_t            cmd_id;
 | |
|     /* pending command total len */
 | |
|     uint16_t            cmd_total_len;
 | |
|     /* pending command received len */
 | |
|     uint16_t            cmd_recv_len;
 | |
|     /* pending command buffer cache */
 | |
|     uint8_t             cmd[IOT_FTM_CMD_MAX_LEN];
 | |
|     /* pending event id */
 | |
|     uint16_t            event_id;
 | |
|     /* pending event total len */
 | |
|     uint16_t            event_total_len;
 | |
|     /* pending event buffer cache */
 | |
|     uint8_t             event[IOT_FTM_EVENT_MAX_LEN];
 | |
|     /* used cmd cnt */
 | |
|     uint8_t             cmd_used_cnt;
 | |
|     /* mac dsr handler table */
 | |
|     ftm_dsr_table_t     dsr_table;
 | |
|     /* timer for watch dog reboot */
 | |
|     timer_id_t          wdg_timer;
 | |
| } iot_ftm_global_t;
 | |
| 
 | |
| /* ftm message */
 | |
| typedef struct _iot_ftm_msg {
 | |
|     /* iot task message */
 | |
|     iot_task_msg_t  task_msg;
 | |
|     /* pointer to message data */
 | |
|     void            *data;
 | |
| } iot_ftm_msg_t;
 | |
| 
 | |
| void iot_ftm_dsr_clear(uint32_t dsr);
 | |
| 
 | |
| /* ftm command handler function type
 | |
|  * @data:   command data buffer
 | |
|  * @len:    length of the data
 | |
|  */
 | |
| typedef void (*iot_ftm_cmd_func_t)(uint8_t *data, uint16_t len);
 | |
| 
 | |
| #ifndef INCLUDE_IOT_DTEST_FTM_MODE
 | |
| extern iot_ftm_global_t *p_ftm_glb;
 | |
| #endif
 | |
| 
 | |
| extern const iot_ftm_cmd_func_t p_ftm_cmd_table[IOT_FTM_CMD_ID_MAX];
 | |
| 
 | |
| void ftm_dsr_set_entry(ftm_dsr_table_t *table, uint8_t dsr_id,
 | |
|     ftm_dsr_func_t entry);
 | |
| 
 | |
| void ftm_dsr_set(uint32_t dsr);
 | |
| 
 | |
| void ftm_dsr_clear(uint32_t dsr);
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* IOT_FTM_INTERNAL_H */
 |