/**
 * \page ChangeLog
 *
 * \section v37_4_0_56_TO_v37_4_0_57 Version v37.4.0.56 to version v37.4.0.57 changes
 *
 * \subsection v37_4_0_56_TO_v37_4_0_57Added Added functions
 *
 * The following functions were added between versions v37.4.0.56 and v37.4.0.57
 * \li \ref qcsapi_do_system_action
 * \li \ref qcsapi_set_remote_logging
 * \li \ref qcsapi_wifi_node_get_txrx_airtime
 * \li \ref qcsapi_wifi_get_txrx_airtime
 *
 * \subsection v37_4_0_56_TO_v37_4_0_57Removed Removed functions
 *
 * The following functions were removed between versions v37.4.0.56 and v37.4.0.57
 * \li \ref qcsapi_wifi_get_tx_airtime
 * \li \ref qcsapi_wifi_node_get_tx_airtime
 *
 * \subsection v37_4_0_56_TO_v37_4_0_57Proto Function prototype changes
 *
 * The following function prototypes were modified between versions v37.4.0.56 and v37.4.0.57
 *  - \ref qcsapi_set_log_level
 *    - Old prototype: int qcsapi_set_log_level(const char *interface, string_32 level, qcsapi_log_module_name index);
 *    - New prototype: int qcsapi_set_log_level(const char *ifname, qcsapi_log_module_name index, const string_128 params);
 *  - \ref qcsapi_get_log_level
 *    - Old prototype: int qcsapi_get_log_level(const char *interface, string_32 level, qcsapi_log_module_name index);
 *    - New prototype: int qcsapi_get_log_level(const char *ifname, qcsapi_log_module_name index, string_128 params);
 *  - \ref qcsapi_wifi_scs_switch_channel
 *    - Old prototype: int qcsapi_wifi_scs_switch_channel(const char *ifname);
 *    - New prototype: int qcsapi_wifi_scs_switch_channel(const char *ifname, uint16_t pick_flags);
 */

