| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- // Copyright 2015-2016 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
- // 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 ESP_MDNS_H_
- #define ESP_MDNS_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifndef MDNS_TEST_MODE
- #include <tcpip_adapter.h>
- #else
- #include "esp32_compat.h"
- #endif
- struct mdns_server_s;
- typedef struct mdns_server_s mdns_server_t;
- /**
- * @brief mDNS query result structure
- *
- */
- typedef struct mdns_result_s {
- const char * host; /*!< hostname */
- const char * instance; /*!< instance */
- const char * txt; /*!< txt data */
- uint16_t priority; /*!< service priority */
- uint16_t weight; /*!< service weight */
- uint16_t port; /*!< service port */
- struct ip4_addr addr; /*!< ip4 address */
- struct ip6_addr addrv6; /*!< ip6 address */
- const struct mdns_result_s * next; /*!< next result, or NULL for the last result in the list */
- } mdns_result_t;
- /**
- * @brief Initialize mDNS on given interface
- *
- * @param tcpip_if Interface that the server will listen on
- * @param server Server pointer to populate on success
- *
- * @return
- * - ESP_OK on success
- * - ESP_ERR_INVALID_ARG when bad tcpip_if is given
- * - ESP_ERR_INVALID_STATE when the network returned error
- * - ESP_ERR_NO_MEM on memory error
- * - ESP_ERR_WIFI_NOT_INIT when WiFi is not initialized by eps_wifi_init
- */
- esp_err_t mdns_init(tcpip_adapter_if_t tcpip_if, mdns_server_t ** server);
- /**
- * @brief Stop and free mDNS server
- *
- * @param server mDNS Server to free
- *
- */
- void mdns_free(mdns_server_t * server);
- /**
- * @brief Set the hostname for mDNS server
- *
- * @param server mDNS Server
- * @param hostname Hostname to set
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NO_MEM memory error
- */
- esp_err_t mdns_set_hostname(mdns_server_t * server, const char * hostname);
- /**
- * @brief Set the default instance name for mDNS server
- *
- * @param server mDNS Server
- * @param instance Instance name to set
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NO_MEM memory error
- */
- esp_err_t mdns_set_instance(mdns_server_t * server, const char * instance);
- /**
- * @brief Add service to mDNS server
- *
- * @param server mDNS Server
- * @param service service type (_http, _ftp, etc)
- * @param proto service protocol (_tcp, _udp)
- * @param port service port
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NO_MEM memory error
- */
- esp_err_t mdns_service_add(mdns_server_t * server, const char * service, const char * proto, uint16_t port);
- /**
- * @brief Remove service from mDNS server
- *
- * @param server mDNS Server
- * @param service service type (_http, _ftp, etc)
- * @param proto service protocol (_tcp, _udp)
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NOT_FOUND Service not found
- * - ESP_FAIL unknown error
- */
- esp_err_t mdns_service_remove(mdns_server_t * server, const char * service, const char * proto);
- /**
- * @brief Set instance name for service
- *
- * @param server mDNS Server
- * @param service service type (_http, _ftp, etc)
- * @param proto service protocol (_tcp, _udp)
- * @param instance instance name to set
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NOT_FOUND Service not found
- * - ESP_ERR_NO_MEM memory error
- */
- esp_err_t mdns_service_instance_set(mdns_server_t * server, const char * service, const char * proto, const char * instance);
- /**
- * @brief Set TXT data for service
- *
- * @param server mDNS Server
- * @param service service type (_http, _ftp, etc)
- * @param proto service protocol (_tcp, _udp)
- * @param num_items number of items in TXT data
- * @param txt string array of TXT data (eg. {"var=val","other=2"})
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NOT_FOUND Service not found
- * - ESP_ERR_NO_MEM memory error
- */
- esp_err_t mdns_service_txt_set(mdns_server_t * server, const char * service, const char * proto, uint8_t num_items, const char ** txt);
- /**
- * @brief Set service port
- *
- * @param server mDNS Server
- * @param service service type (_http, _ftp, etc)
- * @param proto service protocol (_tcp, _udp)
- * @param port service port
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- * - ESP_ERR_NOT_FOUND Service not found
- */
- esp_err_t mdns_service_port_set(mdns_server_t * server, const char * service, const char * proto, uint16_t port);
- /**
- * @brief Remove and free all services from mDNS server
- *
- * @param server mDNS Server
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- */
- esp_err_t mdns_service_remove_all(mdns_server_t * server);
- /**
- * @brief Query mDNS for host or service
- *
- * @param server mDNS Server
- * @param service service type or host name
- * @param proto service protocol or NULL if searching for host
- * @param timeout time to wait for answers. If 0, mdns_query_end MUST be called to end the search
- *
- * @return the number of results found
- */
- size_t mdns_query(mdns_server_t * server, const char * service, const char * proto, uint32_t timeout);
- /**
- * @brief Stop mDNS Query started with timeout = 0
- *
- * @param server mDNS Server
- *
- * @return the number of results found
- */
- size_t mdns_query_end(mdns_server_t * server);
- /**
- * @brief get the number of results currently in memoty
- *
- * @param server mDNS Server
- *
- * @return the number of results
- */
- size_t mdns_result_get_count(mdns_server_t * server);
- /**
- * @brief Get mDNS Search result with given index
- *
- * @param server mDNS Server
- * @param num the index of the result
- *
- * @return the result or NULL if error
- */
- const mdns_result_t * mdns_result_get(mdns_server_t * server, size_t num);
- /**
- * @brief Remove and free all search results from mDNS server
- *
- * @param server mDNS Server
- *
- * @return
- * - ESP_OK success
- * - ESP_ERR_INVALID_ARG Parameter error
- */
- esp_err_t mdns_result_free(mdns_server_t * server);
- #ifdef __cplusplus
- }
- #endif
- #endif /* ESP_MDNS_H_ */
|