Files
kunlun/ftm/inc/iot_ftm_internal.h
2024-09-28 14:24:04 +08:00

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