/*
 * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "esp_transport_internal.h"

static const char *TAG = "transport";
struct timeval* esp_transport_utils_ms_to_timeval(int timeout_ms, struct timeval *tv)
{
    if (timeout_ms == -1) {
        return NULL;
    }
    tv->tv_sec = timeout_ms / 1000;
    tv->tv_usec = (timeout_ms - (tv->tv_sec * 1000)) * 1000;
    return tv;
}

esp_foundation_transport_t * esp_transport_init_foundation_transport(void)
{
    esp_foundation_transport_t *foundation = calloc(1, sizeof(esp_foundation_transport_t));
    ESP_TRANSPORT_MEM_CHECK(TAG, foundation, return NULL);
    foundation->error_handle = calloc(1, sizeof(struct esp_transport_error_storage));
    ESP_TRANSPORT_MEM_CHECK(TAG, foundation->error_handle,
                        free(foundation);
                        return NULL);
    return foundation;
}

void esp_transport_destroy_foundation_transport(esp_foundation_transport_t *foundation)
{
    if (foundation) {
        free(foundation->error_handle);
    }
    free(foundation);
}