/**
 * \page ChangeLog
 *
 * \section v37_3_TO_v37_4 Version v37.3 to version v37.4 changes
 *
 * \subsection v37_3_TO_v37_4Added Added functions
 *
 * The following functions were added between versions v37.3 and v37.4
 *
 * \li \ref qcsapi_interface_get_counter64 (37.3.0.1)
 * \li \ref qcsapi_wifi_get_scan_buf_max_size (37.3.0.2)
 * \li \ref qcsapi_calcmd_get_info (37.3.0.2)
 * \li \ref qcsapi_wifi_set_scan_buf_max_size (37.3.0.2)
 * \li \ref qcsapi_wifi_get_scan_table_max_len (37.3.0.2)
 * \li \ref qcsapi_wifi_set_scan_table_max_len (37.3.0.2)
 * \li \ref qcsapi_wifi_get_tdls_params (37.3.0.3)
 * \li \ref qcsapi_wifi_get_tdls_status (37.3.0.3)
 * \li \ref qcsapi_wifi_tdls_operate (37.3.0.3)
 * \li \ref qcsapi_wifi_get_connection_mode (37.3.0.3)
 * \li \ref qcsapi_wifi_set_tdls_params (37.3.0.3)
 * \li \ref qcsapi_wifi_reassociate (37.3.0.4)
 * \li \ref qcsapi_wifi_get_max_mimo (37.3.0.6)
 * \li \ref qcsapi_get_swfeat_list (37.3.0.6)
 * \li \ref qcsapi_security_get_nai_realms (37.3.0.8)
 * \li \ref qcsapi_wifi_get_proxy_arp (37.3.0.8)
 * \li \ref qcsapi_wifi_get_80211u_params (37.3.0.8)
 * \li \ref qcsapi_remove_hs20_param (37.3.0.8)
 * \li \ref qcsapi_wifi_set_interworking (37.3.0.8)
 * \li \ref qcsapi_wifi_get_power_selection (37.3.0.8)
 * \li \ref qcsapi_security_get_roaming_consortium (37.3.0.8)
 * \li \ref qcsapi_wifi_get_interworking (37.3.0.8)
 * \li \ref qcsapi_security_del_roaming_consortium (37.3.0.8)
 * \li \ref qcsapi_security_del_nai_realm (37.3.0.8)
 * \li \ref qcsapi_wifi_get_hs20_status (37.3.0.8)
 * \li \ref qcsapi_wifi_set_hs20_status (37.3.0.8)
 * \li \ref qcsapi_wifi_get_hs20_params (37.3.0.8)
 * \li \ref qcsapi_wifi_get_venue_info (37.3.0.8)
 * \li \ref qcsapi_security_add_roaming_consortium (37.3.0.8)
 * \li \ref qcsapi_wifi_set_proxy_arp (37.3.0.8)
 * \li \ref qcsapi_remove_11u_param (37.3.0.8)
 * \li \ref qcsapi_wifi_set_power_selection (37.3.0.8)
 * \li \ref qcsapi_wifi_set_hs20_params (37.3.0.8)
 * \li \ref qcsapi_wifi_set_80211u_params (37.3.0.8)
 * \li \ref qcsapi_wifi_set_venue_info (37.3.0.8)
 * \li \ref qcsapi_security_add_nai_realm (37.3.0.8)
 * \li \ref qcsapi_qtm_del_rule_index (37.3.0.9)
 * \li \ref qcsapi_qtm_get_strm (37.3.0.9)
 * \li \ref qcsapi_qtm_get_state (37.3.0.9)
 * \li \ref qcsapi_qtm_get_state_all (37.3.0.9)
 * \li \ref qcsapi_qtm_del_rule (37.3.0.9)
 * \li \ref qcsapi_qtm_set_state (37.3.0.9)
 * \li \ref qcsapi_qtm_get_config (37.3.0.9)
 * \li \ref qcsapi_qtm_add_rule (37.3.0.9)
 * \li \ref qcsapi_qtm_get_stats (37.3.0.9)
 * \li \ref qcsapi_qtm_get_config_all (37.3.0.9)
 * \li \ref qcsapi_qtm_get_rule (37.3.0.9)
 * \li \ref qcsapi_qtm_get_inactive_flags (37.3.0.9)
 * \li \ref qcsapi_qtm_set_config (37.3.0.9)
 * \li \ref qcsapi_regulatory_get_configured_tx_power_ext (37.3.0.10)
 * \li \ref qcsapi_wifi_get_scan_chk_inv (37.3.0.10)
 * \li \ref qcsapi_get_service_action_enum (37.3.0.10)
 * \li \ref qcsapi_wifi_set_scan_chk_inv (37.3.0.10)
 * \li \ref qcsapi_service_control (37.3.0.10)
 * \li \ref qcsapi_get_service_name_enum (37.3.0.10)
 * \li \ref qcsapi_wifi_set_tx_power_ext (37.3.0.10)
 * \li \ref qcsapi_wifi_get_tx_power_ext (37.3.0.10)
 * \li \ref qcsapi_wifi_enable_tdls_over_qhop (37.3.0.11)
 * \li \ref qcsapi_interface_get_ip4 (37.3.0.12)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_dwell_time (37.3.0.12)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_thrshld (37.3.0.12)
 * \li \ref qcsapi_wifi_get_dfs_s_radio_status (37.3.0.12)
 * \li \ref qcsapi_wifi_get_bss_assoc_limit (37.3.0.12)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_report_only (37.3.0.12)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_cac_time (37.3.0.12)
 * \li \ref qcsapi_wifi_get_dfs_s_radio_availability (37.3.0.12)
 * \li \ref qcsapi_wifi_set_bss_assoc_limit (37.3.0.12)
 * \li \ref qcsapi_interface_set_ip4 (37.3.0.12)
 * \li \ref qcsapi_wifi_start_dfs_s_radio (37.3.0.12)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_duration (37.3.0.12)
 * \li \ref qcsapi_wifi_stop_dfs_s_radio (37.3.0.12)
 * \li \ref qcsapi_security_add_oper_friendly_name (37.3.0.13)
 * \li \ref qcsapi_security_del_venue_name (37.3.0.13)
 * \li \ref qcsapi_security_get_hs20_conn_capab (37.3.0.13)
 * \li \ref qcsapi_security_get_venue_name (37.3.0.13)
 * \li \ref qcsapi_security_add_venue_name (37.3.0.13)
 * \li \ref qcsapi_security_get_oper_friendly_name (37.3.0.13)
 * \li \ref qcsapi_security_del_oper_friendly_name (37.3.0.13)
 * \li \ref qcsapi_security_del_hs20_conn_capab (37.3.0.13)
 * \li \ref qcsapi_verify_numeric (37.3.0.13)
 * \li \ref qcsapi_security_add_hs20_conn_capab (37.3.0.13)
 * \li \ref qcsapi_wifi_del_radius_auth_server_cfg (37.3.0.15)
 * \li \ref qcsapi_wifi_get_radius_auth_server_cfg (37.3.0.15)
 * \li \ref qcsapi_wifi_add_radius_auth_server_cfg (37.3.0.15)
 * \li \ref qcsapi_get_random_seed (37.3.0.16)
 * \li \ref qcsapi_set_random_seed (37.3.0.16)
 * \li \ref qcsapi_wifi_get_link_quality_max (37.3.0.16)
 * \li \ref qcsapi_wifi_set_enable_mu (37.3.0.17)
 * \li \ref qcsapi_wifi_get_mu_use_eq (37.3.0.17)
 * \li \ref qcsapi_wifi_get_mu_use_precode (37.3.0.17)
 * \li \ref qcsapi_wifi_get_enable_mu (37.3.0.17)
 * \li \ref qcsapi_wifi_set_mu_use_eq (37.3.0.17)
 * \li \ref qcsapi_wfa_cert_mode_enable (37.3.0.17)
 * \li \ref qcsapi_wifi_get_mu_groups (37.3.0.17)
 * \li \ref qcsapi_wifi_set_mu_use_precode (37.3.0.17)
 * \li \ref qcsapi_wifi_set_l2_ext_filter (37.3.0.19)
 * \li \ref qcsapi_wifi_get_l2_ext_filter (37.3.0.19)
 * \li \ref qcsapi_set_emac_switch (37.3.0.20)
 * \li \ref qcsapi_send_file (37.3.0.20)
 * \li \ref qcsapi_get_emac_switch (37.3.0.20)
 * \li \ref qcsapi_eth_dscp_map (37.3.0.20)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_cac_time (37.4.0.0)
 * \li \ref qcsapi_str_to_uint32 (37.4.0.0)
 * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_duration (37.4.0.0)
 *
 * \subsection v37_3_TO_v37_4Removed Removed functions
 *
 * The following functions were removed between versions v37.3 and v37.4
 *
 * \li qcsapi_vsp_add_rule (37.3.0.9)
 * \li qcsapi_vsp_get_rule (37.3.0.9)
 * \li qcsapi_vsp_get_strm (37.3.0.9)
 * \li qcsapi_vsp_set_config (37.3.0.9)
 * \li qcsapi_vsp_get_inactive_flags (37.3.0.9)
 * \li qcsapi_vsp_del_rule (37.3.0.9)
 * \li qcsapi_vsp_get_config (37.3.0.9)
 * \li qcsapi_vsp_get_stats (37.3.0.9)
 * \li qcsapi_vsp_get_state_all (37.3.0.9)
 * \li qcsapi_vsp_get_state (37.3.0.9)
 * \li qcsapi_vsp_del_rule_index (37.3.0.9)
 * \li qcsapi_vsp_set_state (37.3.0.9)
 * \li qcsapi_vsp_get_config_all (37.3.0.9)
 * \li \ref qcsapi_wifi_set_venue_info (37.3.0.13)
 * \li \ref qcsapi_wifi_get_venue_info (37.3.0.13)
 * \li qcsapi_wifi_set_eap_shared_key (37.3.0.15)
 * \li qcsapi_wifi_get_eap_shared_key (37.3.0.15)
 * \li qcsapi_wifi_set_eap_radius_port (37.3.0.15)
 * \li qcsapi_wifi_set_eap_radius_ipaddr (37.3.0.15)
 * \li qcsapi_wifi_get_eap_radius_port (37.3.0.15)
 * \li qcsapi_wifi_get_eap_radius_ipaddr (37.3.0.15)
 *
 * \subsection v37_3_0_1_TO_v37_3_0_2Proto Function prototype changes
 * The following function prototypes were modified between versions v37.3 and v37.4
 *  - \ref qcsapi_wifi_get_auth_state (37.3.0.2)
 *    - Old prototype: int qcsapi_wifi_get_auth_state(const char *ifname, char *mac_addr, int *auth_state);
 *    - New prototype: int qcsapi_wifi_get_auth_state(const char *ifname, const char *mac_addr, int *auth_state);
 *  - \ref qcsapi_wifi_get_wpa_status (37.3.0.2)
 *    - Old prototype: int qcsapi_wifi_get_wpa_status(const char *ifname, char *wpa_status, char *mac_addr, const qcsapi_unsigned_int max_len);
 *    - New prototype: int qcsapi_wifi_get_wpa_status(const char *ifname, char *wpa_status, const char *mac_addr, const qcsapi_unsigned_int max_len);
 *  - \ref qcsapi_wifi_tdls_operate (37.3.0.11)
 *    - Old prototype: int qcsapi_wifi_tdls_operate(const char *ifname, qcsapi_tdls_oper operate, const char *mac_addr_str);
 *    - New prototype: int qcsapi_wifi_tdls_operate(const char *ifname, qcsapi_tdls_oper operate, const char *mac_addr_str, int cs_interval);
 *  - \ref qcsapi_security_add_roaming_consortium (37.3.0.13)
 *    - Old prototype: int qcsapi_security_add_roaming_consortium(const char *ifname, const string_32 p_value);
 *    - New prototype: int qcsapi_security_add_roaming_consortium(const char *ifname, const char *p_value);
 *  - \ref qcsapi_security_get_nai_realms (37.3.0.13)
 *    - Old prototype: int qcsapi_security_get_nai_realms(const char *ifname, string_1024 p_value);
 *    - New prototype: int qcsapi_security_get_nai_realms(const char *ifname, string_4096 p_value);
 *  - \ref qcsapi_wifi_set_80211u_params (37.3.0.13)
 *    - Old prototype: int qcsapi_wifi_set_80211u_params(const char *ifname, const string_32 param, const string_32 p_value);
 *    - New prototype: int qcsapi_wifi_set_80211u_params(const char *ifname, const string_32 param, const string_256 value1, const string_32 value2);
 *  - \ref qcsapi_security_del_nai_realm (37.3.0.13)
 *    - Old prototype: int qcsapi_security_del_nai_realm(const char *ifname, const string_32 p_value);
 *    - New prototype: int qcsapi_security_del_nai_realm(const char *ifname, const char *nai_realm);
 *  - \ref qcsapi_get_temperature_info (37.3.0.13)
 *    - Old prototype: int qcsapi_get_temperature_info(int *temp_external, int *temp_internal);
 *    - New prototype: int qcsapi_get_temperature_info(int *temp_external, int *temp_internal, int *temp_bb_internal);
 *  - \ref qcsapi_security_del_roaming_consortium (37.3.0.13)
 *    - Old prototype: int qcsapi_security_del_roaming_consortium(const char *ifname, const string_32 p_value);
 *    - New prototype: int qcsapi_security_del_roaming_consortium(const char *ifname, const char *p_value);
 *  - \ref qcsapi_wifi_get_80211u_params (37.3.0.13)
 *    - Old prototype: int qcsapi_wifi_get_80211u_params(const char *ifname, const string_32 param, string_32 p_value);
 *    - New prototype: int qcsapi_wifi_get_80211u_params(const char *ifname, const string_32 param, string_256 p_value);
 *  - \ref qcsapi_wifi_set_phy_mode (37.3.0.17)
 *    - Old prototype: int qcsapi_wifi_set_phy_mode(const char *ifname, char *new_phy_mode);
 *    - New prototype: int qcsapi_wifi_set_phy_mode(const char *ifname, const char *new_phy_mode);
 *  - \ref qcsapi_wifi_rfstatus (37.3.0.18)
 *    - Old prototype: int qcsapi_wifi_rfstatus(const char *ifname, qcsapi_unsigned_int *rfstatus);
 *    - New prototype: int qcsapi_wifi_rfstatus(qcsapi_unsigned_int *rfstatus);
 *  - \ref qcsapi_wifi_rfenable (37.3.0.18)
 *    - Old prototype: int qcsapi_wifi_rfenable(const char *ifname, const qcsapi_unsigned_int onoff);
 *    - New prototype: int qcsapi_wifi_rfenable(const qcsapi_unsigned_int onoff);
 *  - \ref qcsapi_get_service_action_enum (37.3.0.19)
 *    - Old prototype: int qcsapi_get_service_action_enum(string_32 lookup_action, qcsapi_service_action *serv_action);
 *    - New prototype: int qcsapi_get_service_action_enum(const char *lookup_action, qcsapi_service_action *serv_action);
 *  - \ref qcsapi_get_service_name_enum (37.3.0.19)
 *    - Old prototype: int qcsapi_get_service_name_enum(string_32 lookup_service, qcsapi_service_name *serv_name);
 *    - New prototype: int qcsapi_get_service_name_enum(const char *lookup_service, qcsapi_service_name *serv_name);
 *  - \ref qcsapi_wifi_set_hs20_params (37.3.0.21)
 *    - Old prototype: int qcsapi_wifi_set_hs20_params(const char *ifname, const string_32 param, const string_64 p_value);
 *    - New prototype: int qcsapi_wifi_set_hs20_params(const char *ifname, const string_32 param, const string_64 value1, const string_64 value2, const string_64 value3, const string_64 value4, const string_64 value5, const string_64 value6);
 */
