/**
 * \page ChangeLog
 *
 * \section v37_4_0_62_TO_v37_4_1_62 Version v37.4.0.62 to version v37.4.1.62 changes
 *
 * \subsection v37_4_0_62_TO_v37_4_1_62Proto Function prototype changes
 *
 * The following function prototypes were modified between versions v37.4.0.62 and v37.4.1.62
 *  - \ref qcsapi_get_app_core_dump
 *    - Old prototype: int qcsapi_get_app_core_dump(char *file, string_4096 buf, uint32_t bytes_to_copy, uint32_t offset, uint32_t *bytes_copied);
 *    - New prototype: int qcsapi_get_app_core_dump(const char *file, string_4096 buf, uint32_t bytes_to_copy, uint32_t offset, uint32_t *bytes_copied);
 *  - \ref qcsapi_get_app_core_dump_size
 *    - Old prototype: int qcsapi_get_app_core_dump_size(char *file, uint32_t *core_dump_size);
 *    - New prototype: int qcsapi_get_app_core_dump_size(const char *file, uint32_t *core_dump_size);
 */

