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:
Liu Zhi Fu
2017-06-15 11:37:23 +08:00
parent 0a52dbccca
commit 3bcaa592ee
5 changed files with 176 additions and 42 deletions

View File

@@ -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;
}