mirror of
https://github.com/espressif/esp-idf.git
synced 2025-11-15 15:00:02 +01:00
esp_netif/lwip: Fix core-locking config (v5.0)
* Fix thread safety issues in non-core locking * Add option to verify thread safety issues in lwip (core-lock assertion) * Make esp_sntp.h thread safe API * Fix sntp examples Closes https://github.com/espressif/esp-idf/issues/9908 Closes https://github.com/espressif/esp-idf/issues/10502 Closes https://github.com/espressif/esp-idf/issues/10466
This commit is contained in:
@@ -10,7 +10,6 @@
|
||||
#include "lwip/err.h"
|
||||
#include "lwip/apps/sntp.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -38,6 +37,17 @@ extern "C" {
|
||||
* to wait for the next sync cycle.
|
||||
*/
|
||||
|
||||
/// Aliases for esp_sntp prefixed API (inherently thread safe)
|
||||
#define esp_sntp_sync_time sntp_sync_time
|
||||
#define esp_sntp_set_sync_mode sntp_set_sync_mode
|
||||
#define esp_sntp_get_sync_mode sntp_get_sync_mode
|
||||
#define esp_sntp_get_sync_status sntp_get_sync_status
|
||||
#define esp_sntp_set_sync_status sntp_set_sync_status
|
||||
#define esp_sntp_set_time_sync_notification_cb sntp_set_time_sync_notification_cb
|
||||
#define esp_sntp_set_sync_interval sntp_set_sync_interval
|
||||
#define esp_sntp_get_sync_interval sntp_get_sync_interval
|
||||
#define esp_sntp_restart sntp_restart
|
||||
|
||||
/// SNTP time update mode
|
||||
typedef enum {
|
||||
SNTP_SYNC_MODE_IMMED, /*!< Update system time immediately when receiving a response from the SNTP server. */
|
||||
@@ -51,6 +61,12 @@ typedef enum {
|
||||
SNTP_SYNC_STATUS_IN_PROGRESS, // Smooth time sync in progress.
|
||||
} sntp_sync_status_t;
|
||||
|
||||
/// SNTP operating modes per lwip SNTP module
|
||||
typedef enum {
|
||||
ESP_SNTP_OPMODE_POLL,
|
||||
ESP_SNTP_OPMODE_LISTENONLY,
|
||||
} esp_sntp_operatingmode_t;
|
||||
|
||||
/**
|
||||
* @brief SNTP callback function for notifying about time sync event
|
||||
*
|
||||
@@ -143,6 +159,60 @@ uint32_t sntp_get_sync_interval(void);
|
||||
*/
|
||||
bool sntp_restart(void);
|
||||
|
||||
/**
|
||||
* @brief Sets SNTP operating mode. The mode has to be set before init.
|
||||
*
|
||||
* @param operating_mode Desired operating mode
|
||||
*/
|
||||
void esp_sntp_setoperatingmode(esp_sntp_operatingmode_t operating_mode);
|
||||
|
||||
/**
|
||||
* @brief Init and start SNTP service
|
||||
*/
|
||||
void esp_sntp_init(void);
|
||||
|
||||
/**
|
||||
* @brief Stops SNTP service
|
||||
*/
|
||||
void esp_sntp_stop(void);
|
||||
|
||||
/**
|
||||
* @brief Sets SNTP server address
|
||||
*
|
||||
* @param idx Index of the server
|
||||
* @param addr IP address of the server
|
||||
*/
|
||||
void esp_sntp_setserver(u8_t idx, const ip_addr_t *addr);
|
||||
|
||||
/**
|
||||
* @brief Sets SNTP hostname
|
||||
* @param idx Index of the server
|
||||
* @param server Name of the server
|
||||
*/
|
||||
void esp_sntp_setservername(u8_t idx, const char *server);
|
||||
|
||||
/**
|
||||
* @brief Gets SNTP server name
|
||||
* @param idx Index of the server
|
||||
* @return Name of the server
|
||||
*/
|
||||
const char *esp_sntp_getservername(u8_t idx);
|
||||
|
||||
/**
|
||||
* @brief Get SNTP server IP
|
||||
* @param idx Index of the server
|
||||
* @return IP address of the server
|
||||
*/
|
||||
const ip_addr_t* esp_sntp_getserver(u8_t idx);
|
||||
|
||||
#if LWIP_DHCP_GET_NTP_SRV
|
||||
/**
|
||||
* @brief Enable acquiring SNTP server from DHCP
|
||||
* @param enable True for enabling SNTP from DHCP
|
||||
*/
|
||||
void esp_sntp_servermode_dhcp(bool enable);
|
||||
#endif /* LWIP_DHCP_GET_NTP_SRV */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,27 +1,16 @@
|
||||
// Copyright 2020 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __SNTP_H__
|
||||
#define __SNTP_H__
|
||||
#pragma once
|
||||
|
||||
#warning "sntp.h in IDF's lwip port folder is deprecated. Please include esp_sntp.h"
|
||||
/*
|
||||
* This header is provided only for compatibility reasons for existing
|
||||
* applications which directly include "sntp.h" from the IDF default paths.
|
||||
* and will be removed in IDF v5.0.
|
||||
* and will be removed in IDF v6.0.
|
||||
* It is recommended to use "esp_sntp.h" from IDF's lwip port folder
|
||||
*/
|
||||
|
||||
#include "esp_sntp.h"
|
||||
|
||||
#endif // __SNTP_H__
|
||||
|
||||
Reference in New Issue
Block a user