From 1ab10491bcd51d0701446f926b9298ef7274a88e Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 25 Apr 2018 09:00:36 -0700 Subject: [PATCH] fw-api: CL 4503586 - update fw common interface files Change-Id: I78be8874ac31e86d3e72f25e074b063ce2e8eca2 WMI: add GRP_MOTION_DET message defs CRs-Fixed: 1107600 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 41 ++++++++++++++- fw/wmi_unified.h | 128 ++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 170 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index d8df2bfd3307..70b6e9daf679 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -253,6 +253,7 @@ typedef enum { WMI_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT=157, /* Support vdev software retries configuration per AC (non aggr retry/aggr retry) */ WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT=158, /* Support dual beacon on same channel on single MAC */ WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_MCC_SUPPORT=159, /* Support dual beacon on different channel on single MAC */ + WMI_SERVICE_MOTION_DET=160, /* support for motion detection config */ /******* ADD NEW SERVICES HERE *******/ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 1a1ddf1c6e5c..fb8fa29a713f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -916,6 +916,12 @@ typedef enum { WMITLV_TAG_STRUC_wmi_get_tpc_power_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_get_tpc_power_evt_fixed_param, WMITLV_TAG_STRUC_wmi_dma_buf_release_spectral_meta_data, + WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_motion_det_event, + WMITLV_TAG_STRUC_wmi_motion_det_base_line_event, } WMITLV_TAG_ID; /* @@ -1289,6 +1295,10 @@ typedef enum { OP(WMI_PEER_TID_CONFIGURATIONS_CMDID) \ OP(WMI_VDEV_SET_CUSTOM_SW_RETRY_TH_CMDID) \ OP(WMI_GET_TPC_POWER_CMDID) \ + OP(WMI_MOTION_DET_CONFIG_PARAM_CMDID) \ + OP(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID) \ + OP(WMI_MOTION_DET_START_STOP_CMDID) \ + OP(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1496,6 +1506,8 @@ typedef enum { OP(WMI_TWT_RESUME_DIALOG_COMPLETE_EVENTID) \ OP(WMI_ROAM_SCAN_STATS_EVENTID) \ OP(WMI_GET_TPC_POWER_EVENTID) \ + OP(WMI_MOTION_DET_HOST_EVENTID) \ + OP(WMI_MOTION_DET_BASE_LINE_HOST_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3649,6 +3661,23 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BTM_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wlm_config_cmd_fixed_param, wmi_wlm_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID); +/* Motion detection cmd */ +#define WMITLV_TABLE_WMI_MOTION_DET_CONFIG_PARAM_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param, wmi_motion_det_config_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_CONFIG_PARAM_CMDID); + +#define WMITLV_TABLE_WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param, wmi_motion_det_base_line_config_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID); + +#define WMITLV_TABLE_WMI_MOTION_DET_START_STOP_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param, wmi_motion_det_start_stop_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_START_STOP_CMDID); + +#define WMITLV_TABLE_WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param, wmi_motion_det_base_line_start_stop_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID); + /* Pdev Set AC TX Queue Optimized Cmd */ #define WMITLV_TABLE_WMI_PDEV_SET_AC_TX_QUEUE_OPTIMIZED_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_ac_tx_queue_optimized_cmd_fixed_param, wmi_pdev_set_ac_tx_queue_optimized_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3982,7 +4011,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SYNCH_FRAME_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hb_ind_event_fixed_param, hb_indevt, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_GTK_OFFLOAD_STATUS_EVENT_fixed_param, wow_gtkigtk, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_oic_ping_handoff_event, wow_oic_ping_handoff, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dhcp_lease_renew_event, wow_dhcp_lease_renew, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dhcp_lease_renew_event, wow_dhcp_lease_renew, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_motion_det_event, md_indevt, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_motion_det_base_line_event, bl_indevt, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_WOW_WAKEUP_HOST_EVENTID); #define WMITLV_TABLE_WMI_WOW_INITIAL_WAKEUP_EVENTID(id,op,buf,len) \ @@ -4996,6 +5027,14 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_RESUME_DIALOG_COMPLETE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rssi, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_STATS_EVENTID); +/* Motion detection events */ +#define WMITLV_TABLE_WMI_MOTION_DET_HOST_EVENTID(id,op,buf,len) \ +WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_event, wmi_motion_det_event, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_HOST_EVENTID); + +#define WMITLV_TABLE_WMI_MOTION_DET_BASE_LINE_HOST_EVENTID(id,op,buf,len) \ +WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_base_line_event, wmi_motion_det_base_line_event, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_HOST_EVENTID); #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4c615a39bd58..f10b78a5e20d 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -243,6 +243,7 @@ typedef enum { WMI_GRP_WLM, /* 0x3c WLAN Latency Manager */ WMI_GRP_11K_OFFLOAD, /* 0x3d */ WMI_GRP_TWT, /* 0x3e TWT (Target Wake Time) for STA and AP */ + WMI_GRP_MOTION_DET, /* 0x3f */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) @@ -1132,6 +1133,12 @@ typedef enum { WMI_TWT_DEL_DIALOG_CMDID, WMI_TWT_PAUSE_DIALOG_CMDID, WMI_TWT_RESUME_DIALOG_CMDID, + + /** WMI commands related to motion detection **/ + WMI_MOTION_DET_CONFIG_PARAM_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MOTION_DET), + WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID, + WMI_MOTION_DET_START_STOP_CMDID, + WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID, } WMI_CMD_ID; typedef enum { @@ -1689,6 +1696,10 @@ typedef enum { WMI_NDP_END_INDICATION_EVENTID, WMI_WLAN_COEX_BT_ACTIVITY_EVENTID, WMI_NDL_SCHEDULE_UPDATE_EVENTID, + + /** WMI events related to motion detection */ + WMI_MOTION_DET_HOST_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MOTION_DET), + WMI_MOTION_DET_BASE_LINE_HOST_EVENTID, } WMI_EVT_ID; /* defines for OEM message sub-types */ @@ -11837,6 +11848,8 @@ typedef enum wake_reason_e { WOW_REASON_SAP_OBSS_DETECTION, WOW_REASON_BSS_COLOR_COLLISION_DETECT, WOW_REASON_TKIP_MIC_ERR_FRAME_RECVD_DETECT, + WOW_REASON_WLAN_MD, /* motion detected */ + WOW_REASON_WLAN_BL, /* baselining done */ WOW_REASON_DEBUG_TEST = 0xFF, } WOW_WAKE_REASON_TYPE; @@ -21687,6 +21700,10 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PEER_TID_CONFIGURATIONS_CMDID); WMI_RETURN_STRING(WMI_VDEV_SET_CUSTOM_SW_RETRY_TH_CMDID); WMI_RETURN_STRING(WMI_GET_TPC_POWER_CMDID); + WMI_RETURN_STRING(WMI_MOTION_DET_CONFIG_PARAM_CMDID); + WMI_RETURN_STRING(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID); + WMI_RETURN_STRING(WMI_MOTION_DET_START_STOP_CMDID); + WMI_RETURN_STRING(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID); } return "Invalid WMI cmd"; @@ -22755,6 +22772,117 @@ typedef struct { A_INT32 tx_power; /* TX power for the specified HALPHY parameters in half dBm unit */ } wmi_get_tpc_power_evt_fixed_param; +/* below structures are related to Motion Detection. */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 time_t1; /** Time gap of successive bursts of + * measurement frames during coarse + * motion detection (in ms) */ + A_UINT32 time_t2; /** Time gap of successive bursts of + * measurement frames during fine + * motion detection (in ms) */ + A_UINT32 n1; /** number of measurement frames in one + * burst, for coarse detection */ + A_UINT32 n2; /** number of measurement frames in one + * burst, for fine detection */ + A_UINT32 time_t1_gap; /** gap between measurement frames in + * course detection (in ms) */ + A_UINT32 time_t2_gap; /** gap between measurement frames in + * fine detection (in ms) */ + A_UINT32 coarse_K; /** number of times motion detection has to + * be performed for coarse detection */ + A_UINT32 fine_K; /** number of times motion detection has to + * be performed for fine detection */ + A_UINT32 coarse_Q; /** number of times motion is expected + * to be detected for success case in + * coarse detection */ + A_UINT32 fine_Q; /** number of times motion is expected + * to be detected for success case in + * fine detection */ + A_UINT32 md_coarse_thr_high; /** higher threshold value (in percent) + * from host to FW, which will be used in + * coarse detection phase of motion detection. + * This is the threshold for the correlation + * of the old RF local-scattering environment + * with the current RF local-scattering + * environment. A value of 100(%) indicates + * that neither the transceiver nor any + * nearby objects have changed position. */ + A_UINT32 md_fine_thr_high; /** higher threshold value (in percent) + * from host to FW, which will be used in + * fine detection phase of motion detection. + * This is the threshold for correlation + * between the old and current RF environments, + * as explained above. */ + A_UINT32 md_coarse_thr_low; /** lower threshold value (in percent) + * for immediate detection of motion in + * coarse detection phase. + * This is the threshold for correlation + * between the old and current RF environments, + * as explained above. */ + A_UINT32 md_fine_thr_low; /** lower threshold value (in percent) + * for immediate detection of motion in + * fine detection phase. + * This is the threshold for correlation + * between the old and current RF environments, + * as explained above. */ +} wmi_motion_det_config_params_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 bl_time_t; /** time T for baseline (in ms) + * Every bl_time_t, bl_n packets are sent */ + A_UINT32 bl_packet_gap; /** gap between measurement frames for baseline + * (in ms) */ + A_UINT32 bl_n; /** number of measurement frames to be sent + * during one baseline */ + A_UINT32 bl_num_meas; /** number of times the baseline measurement + * to be done */ +} wmi_motion_det_base_line_config_params_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 enable; /** start = 1, stop =0 */ +} wmi_motion_det_start_stop_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 enable; /** start = 1, stop =0 */ +} wmi_motion_det_base_line_start_stop_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_event */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 status; /** status = 1 -> motion detected */ +} wmi_motion_det_event; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_base_line_event */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 bl_baseline_value; /** baseline correlation value calculated + * during baselining phase (in %) */ + A_UINT32 bl_max_corr_reserved; /** max corr value obtained during baselining + * phase (in %); reserved for future */ + A_UINT32 bl_min_corr_reserved; /** min corr value obtained during baselining + * phase (in %); reserved for future */ +} wmi_motion_det_base_line_event; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c2ca8c8465a8..6b0975fb8395 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 533 +#define __WMI_REVISION_ 534 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work