mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-30 19:19:21 +00:00
lwip: refactor to socket ping
Do some refactor to socket ping: 1. Add ping_deinit to kill ping thread 2. Apply configuration set by esp_ping_set_target to socket ping 3. Limit only one ping thread
This commit is contained in:
@@ -62,6 +62,9 @@ esp_err_t esp_ping_set_target(ping_target_id_t opt_id, void *opt_val, uint32_t o
|
||||
case PING_TARGET_RES_FN:
|
||||
ping_option_info->ping_res_fn = opt_val;
|
||||
break;
|
||||
case PING_TARGET_RES_RESET:
|
||||
memset(&ping_option_info->ping_res, 0, sizeof(ping_option_info->ping_res));
|
||||
break;
|
||||
default:
|
||||
ret = ESP_ERR_PING_INVALID_PARAMS;
|
||||
break;
|
||||
@@ -111,21 +114,38 @@ esp_err_t esp_ping_result(uint8_t res_val, uint16_t ping_len, uint32_t ping_time
|
||||
{
|
||||
esp_err_t ret = ESP_OK;
|
||||
|
||||
ping_option_info->ping_res.bytes = ping_len;
|
||||
ping_option_info->ping_res.ping_err = res_val;
|
||||
ping_option_info->ping_res.resp_time = ping_time;
|
||||
ping_option_info->ping_res.total_time += ping_time;
|
||||
ping_option_info->ping_res.total_bytes += ping_len;
|
||||
|
||||
if (res_val == 0) {
|
||||
ping_option_info->ping_res.timeout_count ++;
|
||||
if (res_val != PING_RES_FINISH) {
|
||||
ping_option_info->ping_res.bytes = ping_len;
|
||||
ping_option_info->ping_res.resp_time = ping_time;
|
||||
ping_option_info->ping_res.total_bytes += ping_len;
|
||||
ping_option_info->ping_res.send_count ++;
|
||||
|
||||
if (res_val == PING_RES_TIMEOUT) {
|
||||
ping_option_info->ping_res.timeout_count ++;
|
||||
} else {
|
||||
if (!ping_option_info->ping_res.min_time || (ping_time < ping_option_info->ping_res.min_time)) {
|
||||
ping_option_info->ping_res.min_time = ping_time;
|
||||
}
|
||||
|
||||
if (ping_time > ping_option_info->ping_res.max_time) {
|
||||
ping_option_info->ping_res.max_time = ping_time;
|
||||
}
|
||||
|
||||
|
||||
ping_option_info->ping_res.total_time += ping_time;
|
||||
ping_option_info->ping_res.recv_count ++;
|
||||
}
|
||||
}
|
||||
|
||||
if (--ping_option_info->ping_count != 0 && ping_option_info->ping_res_fn) {
|
||||
if (ping_option_info->ping_res_fn) {
|
||||
ping_option_info->ping_res_fn(PING_TARGET_RES_FN, &ping_option_info->ping_res);
|
||||
} else {
|
||||
memset(&ping_option_info->ping_res, 0, sizeof(esp_ping_found));
|
||||
if (res_val == PING_RES_FINISH) {
|
||||
memset(&ping_option_info->ping_res, 0, sizeof(esp_ping_found));
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user