DeepCover Embedded Security in IoT: Public-key Secured Data Paths

Dependencies:   MaximInterface

The MAXREFDES155# is an internet-of-things (IoT) embedded-security reference design, built to authenticate and control a sensing node using elliptic-curve-based public-key cryptography with control and notification from a web server.

The hardware includes an ARM® mbed™ shield and attached sensor endpoint. The shield contains a DS2476 DeepCover® ECDSA/SHA-2 coprocessor, Wifi communication, LCD push-button controls, and status LEDs. The sensor endpoint is attached to the shield using a 300mm cable and contains a DS28C36 DeepCover ECDSA/SHA-2 authenticator, IR-thermal sensor, and aiming laser for the IR sensor. The MAXREFDES155# is equipped with a standard Arduino® form-factor shield connector for immediate testing using an mbed board such as the MAX32600MBED#. The combination of these two devices represent an IoT device. Communication to the web server is accomplished with the shield Wifi circuitry. Communication from the shield to the attached sensor module is accomplished over I2C . The sensor module represents an IoT endpoint that generates small data with a requirement for message authenticity/integrity and secure on/off operational control.

The design is hierarchical with each mbed platform and shield communicating data from the sensor node to a web server that maintains a centralized log and dispatches notifications as necessary. The simplicity of this design enables rapid integration into any star-topology IoT network to provide security with the low overhead and cost provided by the ECDSA-P256 asymmetric-key and SHA-256 symmetric-key algorithms.

More information about the MAXREFDES155# is available on the Maxim Integrated website.

Committer:
IanBenzMaxim
Date:
Tue Dec 03 12:56:25 2019 -0600
Revision:
18:c2631e985780
Parent:
16:a004191a79ab
Updated MaximInterface to version 2.1.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 0:33d4e66780c0 1 /*
IanBenzMaxim 0:33d4e66780c0 2 * netapp.h - CC31xx/CC32xx Host Driver Implementation
IanBenzMaxim 0:33d4e66780c0 3 *
IanBenzMaxim 0:33d4e66780c0 4 * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
IanBenzMaxim 0:33d4e66780c0 5 *
IanBenzMaxim 0:33d4e66780c0 6 *
IanBenzMaxim 0:33d4e66780c0 7 * Redistribution and use in source and binary forms, with or without
IanBenzMaxim 0:33d4e66780c0 8 * modification, are permitted provided that the following conditions
IanBenzMaxim 0:33d4e66780c0 9 * are met:
IanBenzMaxim 0:33d4e66780c0 10 *
IanBenzMaxim 0:33d4e66780c0 11 * Redistributions of source code must retain the above copyright
IanBenzMaxim 0:33d4e66780c0 12 * notice, this list of conditions and the following disclaimer.
IanBenzMaxim 0:33d4e66780c0 13 *
IanBenzMaxim 0:33d4e66780c0 14 * Redistributions in binary form must reproduce the above copyright
IanBenzMaxim 0:33d4e66780c0 15 * notice, this list of conditions and the following disclaimer in the
IanBenzMaxim 0:33d4e66780c0 16 * documentation and/or other materials provided with the
IanBenzMaxim 0:33d4e66780c0 17 * distribution.
IanBenzMaxim 0:33d4e66780c0 18 *
IanBenzMaxim 0:33d4e66780c0 19 * Neither the name of Texas Instruments Incorporated nor the names of
IanBenzMaxim 0:33d4e66780c0 20 * its contributors may be used to endorse or promote products derived
IanBenzMaxim 0:33d4e66780c0 21 * from this software without specific prior written permission.
IanBenzMaxim 0:33d4e66780c0 22 *
IanBenzMaxim 0:33d4e66780c0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
IanBenzMaxim 0:33d4e66780c0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
IanBenzMaxim 0:33d4e66780c0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
IanBenzMaxim 0:33d4e66780c0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
IanBenzMaxim 0:33d4e66780c0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
IanBenzMaxim 0:33d4e66780c0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
IanBenzMaxim 0:33d4e66780c0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
IanBenzMaxim 0:33d4e66780c0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
IanBenzMaxim 0:33d4e66780c0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
IanBenzMaxim 0:33d4e66780c0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
IanBenzMaxim 0:33d4e66780c0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
IanBenzMaxim 0:33d4e66780c0 34 *
IanBenzMaxim 0:33d4e66780c0 35 */
IanBenzMaxim 0:33d4e66780c0 36
IanBenzMaxim 0:33d4e66780c0 37 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 38 /* Include files */
IanBenzMaxim 0:33d4e66780c0 39 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 40
IanBenzMaxim 0:33d4e66780c0 41 #include "simplelink.h"
IanBenzMaxim 0:33d4e66780c0 42
IanBenzMaxim 0:33d4e66780c0 43 #ifndef __NETAPP_H__
IanBenzMaxim 0:33d4e66780c0 44 #define __NETAPP_H__
IanBenzMaxim 0:33d4e66780c0 45
IanBenzMaxim 0:33d4e66780c0 46
IanBenzMaxim 0:33d4e66780c0 47
IanBenzMaxim 0:33d4e66780c0 48
IanBenzMaxim 0:33d4e66780c0 49 #ifdef __cplusplus
IanBenzMaxim 0:33d4e66780c0 50 extern "C" {
IanBenzMaxim 0:33d4e66780c0 51 #endif
IanBenzMaxim 0:33d4e66780c0 52
IanBenzMaxim 0:33d4e66780c0 53 /*!
IanBenzMaxim 0:33d4e66780c0 54
IanBenzMaxim 0:33d4e66780c0 55 \addtogroup netapp
IanBenzMaxim 0:33d4e66780c0 56 @{
IanBenzMaxim 0:33d4e66780c0 57
IanBenzMaxim 0:33d4e66780c0 58 */
IanBenzMaxim 0:33d4e66780c0 59
IanBenzMaxim 0:33d4e66780c0 60 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 61 /* Macro declarations */
IanBenzMaxim 0:33d4e66780c0 62 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 63
IanBenzMaxim 0:33d4e66780c0 64 /*ERROR code*/
IanBenzMaxim 0:33d4e66780c0 65 #define SL_ERROR_NETAPP_RX_BUFFER_LENGTH_ERROR (-230)
IanBenzMaxim 0:33d4e66780c0 66
IanBenzMaxim 0:33d4e66780c0 67 /* Http Server interface */
IanBenzMaxim 0:33d4e66780c0 68 #define MAX_INPUT_STRING (64) /* because of WPA */
IanBenzMaxim 0:33d4e66780c0 69
IanBenzMaxim 0:33d4e66780c0 70 #define MAX_AUTH_NAME_LEN (20)
IanBenzMaxim 0:33d4e66780c0 71 #define MAX_AUTH_PASSWORD_LEN (20)
IanBenzMaxim 0:33d4e66780c0 72 #define MAX_AUTH_REALM_LEN (20)
IanBenzMaxim 0:33d4e66780c0 73
IanBenzMaxim 0:33d4e66780c0 74 #define MAX_DEVICE_URN_LEN (15+1)
IanBenzMaxim 0:33d4e66780c0 75 #define MAX_DOMAIN_NAME_LEN (24+1)
IanBenzMaxim 0:33d4e66780c0 76
IanBenzMaxim 0:33d4e66780c0 77 #define MAX_ACTION_LEN (30)
IanBenzMaxim 0:33d4e66780c0 78 /* Important: in case the max len is changed, make sure the struct sl_NetAppHttpServerSendToken_t in protocol.h is padded correctly! */
IanBenzMaxim 0:33d4e66780c0 79 #define MAX_TOKEN_NAME_LEN (20)
IanBenzMaxim 0:33d4e66780c0 80 #define MAX_TOKEN_VALUE_LEN MAX_INPUT_STRING
IanBenzMaxim 0:33d4e66780c0 81
IanBenzMaxim 0:33d4e66780c0 82 #define NETAPP_MAX_SERVICE_TEXT_SIZE (256)
IanBenzMaxim 0:33d4e66780c0 83 #define NETAPP_MAX_SERVICE_NAME_SIZE (60)
IanBenzMaxim 0:33d4e66780c0 84 #define NETAPP_MAX_SERVICE_HOST_NAME_SIZE (64)
IanBenzMaxim 0:33d4e66780c0 85
IanBenzMaxim 0:33d4e66780c0 86
IanBenzMaxim 0:33d4e66780c0 87 /* Server Responses */
IanBenzMaxim 0:33d4e66780c0 88 #define SL_NETAPP_RESPONSE_NONE (0)
IanBenzMaxim 0:33d4e66780c0 89 #define SL_NETAPP_HTTPSETTOKENVALUE (1)
IanBenzMaxim 0:33d4e66780c0 90
IanBenzMaxim 0:33d4e66780c0 91 #define SL_NETAPP_FAMILY_MASK (0x80)
IanBenzMaxim 0:33d4e66780c0 92
IanBenzMaxim 0:33d4e66780c0 93 /* mDNS types */
IanBenzMaxim 0:33d4e66780c0 94 #define SL_NET_APP_MASK_IPP_TYPE_OF_SERVICE (0x00000001)
IanBenzMaxim 0:33d4e66780c0 95 #define SL_NET_APP_MASK_DEVICE_INFO_TYPE_OF_SERVICE (0x00000002)
IanBenzMaxim 0:33d4e66780c0 96 #define SL_NET_APP_MASK_HTTP_TYPE_OF_SERVICE (0x00000004)
IanBenzMaxim 0:33d4e66780c0 97 #define SL_NET_APP_MASK_HTTPS_TYPE_OF_SERVICE (0x00000008)
IanBenzMaxim 0:33d4e66780c0 98 #define SL_NET_APP_MASK_WORKSATION_TYPE_OF_SERVICE (0x00000010)
IanBenzMaxim 0:33d4e66780c0 99 #define SL_NET_APP_MASK_GUID_TYPE_OF_SERVICE (0x00000020)
IanBenzMaxim 0:33d4e66780c0 100 #define SL_NET_APP_MASK_H323_TYPE_OF_SERVICE (0x00000040)
IanBenzMaxim 0:33d4e66780c0 101 #define SL_NET_APP_MASK_NTP_TYPE_OF_SERVICE (0x00000080)
IanBenzMaxim 0:33d4e66780c0 102 #define SL_NET_APP_MASK_OBJECITVE_TYPE_OF_SERVICE (0x00000100)
IanBenzMaxim 0:33d4e66780c0 103 #define SL_NET_APP_MASK_RDP_TYPE_OF_SERVICE (0x00000200)
IanBenzMaxim 0:33d4e66780c0 104 #define SL_NET_APP_MASK_REMOTE_TYPE_OF_SERVICE (0x00000400)
IanBenzMaxim 0:33d4e66780c0 105 #define SL_NET_APP_MASK_RTSP_TYPE_OF_SERVICE (0x00000800)
IanBenzMaxim 0:33d4e66780c0 106 #define SL_NET_APP_MASK_SIP_TYPE_OF_SERVICE (0x00001000)
IanBenzMaxim 0:33d4e66780c0 107 #define SL_NET_APP_MASK_SMB_TYPE_OF_SERVICE (0x00002000)
IanBenzMaxim 0:33d4e66780c0 108 #define SL_NET_APP_MASK_SOAP_TYPE_OF_SERVICE (0x00004000)
IanBenzMaxim 0:33d4e66780c0 109 #define SL_NET_APP_MASK_SSH_TYPE_OF_SERVICE (0x00008000)
IanBenzMaxim 0:33d4e66780c0 110 #define SL_NET_APP_MASK_TELNET_TYPE_OF_SERVICE (0x00010000)
IanBenzMaxim 0:33d4e66780c0 111 #define SL_NET_APP_MASK_TFTP_TYPE_OF_SERVICE (0x00020000)
IanBenzMaxim 0:33d4e66780c0 112 #define SL_NET_APP_MASK_XMPP_CLIENT_TYPE_OF_SERVICE (0x00040000)
IanBenzMaxim 0:33d4e66780c0 113 #define SL_NET_APP_MASK_RAOP_TYPE_OF_SERVICE (0x00080000)
IanBenzMaxim 0:33d4e66780c0 114 #define SL_NET_APP_MASK_ALL_TYPE_OF_SERVICE (0xFFFFFFFF)
IanBenzMaxim 0:33d4e66780c0 115
IanBenzMaxim 0:33d4e66780c0 116 /********************************************************************************************************/
IanBenzMaxim 0:33d4e66780c0 117 /* sl_NetAppDnsGetHostByName error codes */
IanBenzMaxim 0:33d4e66780c0 118
IanBenzMaxim 0:33d4e66780c0 119 #define SL_NET_APP_DNS_QUERY_NO_RESPONSE (-159) /* DNS query failed, no response */
IanBenzMaxim 0:33d4e66780c0 120 #define SL_NET_APP_DNS_NO_SERVER (-161) /* No DNS server was specified */
IanBenzMaxim 0:33d4e66780c0 121 #define SL_NET_APP_DNS_PARAM_ERROR (-162) /* mDNS parameters error */
IanBenzMaxim 0:33d4e66780c0 122 #define SL_NET_APP_DNS_QUERY_FAILED (-163) /* DNS query failed; no DNS server sent an 'answer' */
IanBenzMaxim 0:33d4e66780c0 123 #define SL_NET_APP_DNS_INTERNAL_1 (-164)
IanBenzMaxim 0:33d4e66780c0 124 #define SL_NET_APP_DNS_INTERNAL_2 (-165)
IanBenzMaxim 0:33d4e66780c0 125 #define SL_NET_APP_DNS_MALFORMED_PACKET (-166) /* Improperly formed or corrupted DNS packet received */
IanBenzMaxim 0:33d4e66780c0 126 #define SL_NET_APP_DNS_INTERNAL_3 (-167)
IanBenzMaxim 0:33d4e66780c0 127 #define SL_NET_APP_DNS_INTERNAL_4 (-168)
IanBenzMaxim 0:33d4e66780c0 128 #define SL_NET_APP_DNS_INTERNAL_5 (-169)
IanBenzMaxim 0:33d4e66780c0 129 #define SL_NET_APP_DNS_INTERNAL_6 (-170)
IanBenzMaxim 0:33d4e66780c0 130 #define SL_NET_APP_DNS_INTERNAL_7 (-171)
IanBenzMaxim 0:33d4e66780c0 131 #define SL_NET_APP_DNS_INTERNAL_8 (-172)
IanBenzMaxim 0:33d4e66780c0 132 #define SL_NET_APP_DNS_INTERNAL_9 (-173)
IanBenzMaxim 0:33d4e66780c0 133 #define SL_NET_APP_DNS_MISMATCHED_RESPONSE (-174) /* Server response type does not match the query request*/
IanBenzMaxim 0:33d4e66780c0 134 #define SL_NET_APP_DNS_INTERNAL_10 (-175)
IanBenzMaxim 0:33d4e66780c0 135 #define SL_NET_APP_DNS_INTERNAL_11 (-176)
IanBenzMaxim 0:33d4e66780c0 136 #define SL_NET_APP_DNS_NO_ANSWER (-177) /* No response for one-shot query */
IanBenzMaxim 0:33d4e66780c0 137 #define SL_NET_APP_DNS_NO_KNOWN_ANSWER (-178) /* No known answer for query */
IanBenzMaxim 0:33d4e66780c0 138 #define SL_NET_APP_DNS_NAME_MISMATCH (-179) /* Illegal service name according to the RFC */
IanBenzMaxim 0:33d4e66780c0 139 #define SL_NET_APP_DNS_NOT_STARTED (-180) /* mDNS is not running */
IanBenzMaxim 0:33d4e66780c0 140 #define SL_NET_APP_DNS_HOST_NAME_ERROR (-181) /* Host name error. Host name format is not allowed according to RFC 1033,1034,1035, 6763 */
IanBenzMaxim 0:33d4e66780c0 141 #define SL_NET_APP_DNS_NO_MORE_ENTRIES (-182) /* No more entries be found. */
IanBenzMaxim 0:33d4e66780c0 142
IanBenzMaxim 0:33d4e66780c0 143 #define SL_NET_APP_DNS_MAX_SERVICES_ERROR (-200) /* Maximum advertise services are already configured */
IanBenzMaxim 0:33d4e66780c0 144 #define SL_NET_APP_DNS_IDENTICAL_SERVICES_ERROR (-201) /* Trying to register a service that is already exists */
IanBenzMaxim 0:33d4e66780c0 145 #define SL_NET_APP_DNS_NOT_EXISTED_SERVICE_ERROR (-203) /* Trying to delete service that does not existed */
IanBenzMaxim 0:33d4e66780c0 146 #define SL_NET_APP_DNS_ERROR_SERVICE_NAME_ERROR (-204) /* Illegal service name according to the RFC */
IanBenzMaxim 0:33d4e66780c0 147 #define SL_NET_APP_DNS_RX_PACKET_ALLOCATION_ERROR (-205) /* Retry request */
IanBenzMaxim 0:33d4e66780c0 148 #define SL_NET_APP_DNS_BUFFER_SIZE_ERROR (-206) /* List size buffer is bigger than internally allowed in the NWP */
IanBenzMaxim 0:33d4e66780c0 149 #define SL_NET_APP_DNS_NET_APP_SET_ERROR (-207) /* Illegal length of one of the mDNS Set functions */
IanBenzMaxim 0:33d4e66780c0 150 #define SL_NET_APP_DNS_GET_SERVICE_LIST_FLAG_ERROR (-208)
IanBenzMaxim 0:33d4e66780c0 151 #define SL_NET_APP_DNS_NO_CONFIGURATION_ERROR (-209)
IanBenzMaxim 0:33d4e66780c0 152
IanBenzMaxim 0:33d4e66780c0 153 /* Set Dev name error codes (NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN) */
IanBenzMaxim 0:33d4e66780c0 154 #define SL_ERROR_DEVICE_NAME_LEN_ERR (-117)
IanBenzMaxim 0:33d4e66780c0 155 #define SL_ERROR_DEVICE_NAME_INVALID (-118)
IanBenzMaxim 0:33d4e66780c0 156 /* Set domain name error codes (NETAPP_SET_GET_DEV_CONF_OPT_DOMAIN_NAME) */
IanBenzMaxim 0:33d4e66780c0 157 #define SL_ERROR_DOMAIN_NAME_LEN_ERR (-119)
IanBenzMaxim 0:33d4e66780c0 158 #define SL_ERROR_DOMAIN_NAME_INVALID (-120)
IanBenzMaxim 0:33d4e66780c0 159
IanBenzMaxim 0:33d4e66780c0 160 /********************************************************************************************************/
IanBenzMaxim 0:33d4e66780c0 161
IanBenzMaxim 0:33d4e66780c0 162 /* NetApp application IDs */
IanBenzMaxim 0:33d4e66780c0 163 #define SL_NET_APP_HTTP_SERVER_ID (1)
IanBenzMaxim 0:33d4e66780c0 164 #define SL_NET_APP_DHCP_SERVER_ID (2)
IanBenzMaxim 0:33d4e66780c0 165 #define SL_NET_APP_MDNS_ID (4)
IanBenzMaxim 0:33d4e66780c0 166 #define SL_NET_APP_DNS_SERVER_ID (8)
IanBenzMaxim 0:33d4e66780c0 167 #define SL_NET_APP_DEVICE_CONFIG_ID (16)
IanBenzMaxim 0:33d4e66780c0 168 /* NetApp application set/get options */
IanBenzMaxim 0:33d4e66780c0 169 #define NETAPP_SET_DHCP_SRV_BASIC_OPT (0)
IanBenzMaxim 0:33d4e66780c0 170 /* HTTP server set/get options */
IanBenzMaxim 0:33d4e66780c0 171 #define NETAPP_SET_GET_HTTP_OPT_PORT_NUMBER (0)
IanBenzMaxim 0:33d4e66780c0 172 #define NETAPP_SET_GET_HTTP_OPT_AUTH_CHECK (1)
IanBenzMaxim 0:33d4e66780c0 173 #define NETAPP_SET_GET_HTTP_OPT_AUTH_NAME (2)
IanBenzMaxim 0:33d4e66780c0 174 #define NETAPP_SET_GET_HTTP_OPT_AUTH_PASSWORD (3)
IanBenzMaxim 0:33d4e66780c0 175 #define NETAPP_SET_GET_HTTP_OPT_AUTH_REALM (4)
IanBenzMaxim 0:33d4e66780c0 176 #define NETAPP_SET_GET_HTTP_OPT_ROM_PAGES_ACCESS (5)
IanBenzMaxim 0:33d4e66780c0 177
IanBenzMaxim 0:33d4e66780c0 178 #define NETAPP_SET_GET_MDNS_CONT_QUERY_OPT (1)
IanBenzMaxim 0:33d4e66780c0 179 #define NETAPP_SET_GET_MDNS_QEVETN_MASK_OPT (2)
IanBenzMaxim 0:33d4e66780c0 180 #define NETAPP_SET_GET_MDNS_TIMING_PARAMS_OPT (3)
IanBenzMaxim 0:33d4e66780c0 181
IanBenzMaxim 0:33d4e66780c0 182 /* DNS server set/get options */
IanBenzMaxim 0:33d4e66780c0 183 #define NETAPP_SET_GET_DNS_OPT_DOMAIN_NAME (0)
IanBenzMaxim 0:33d4e66780c0 184
IanBenzMaxim 0:33d4e66780c0 185 /* Device Config set/get options */
IanBenzMaxim 0:33d4e66780c0 186 #define NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN (0)
IanBenzMaxim 0:33d4e66780c0 187 #define NETAPP_SET_GET_DEV_CONF_OPT_DOMAIN_NAME (1)
IanBenzMaxim 0:33d4e66780c0 188
IanBenzMaxim 0:33d4e66780c0 189
IanBenzMaxim 0:33d4e66780c0 190 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 191 /* Structure/Enum declarations */
IanBenzMaxim 0:33d4e66780c0 192 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 193
IanBenzMaxim 0:33d4e66780c0 194 typedef struct
IanBenzMaxim 0:33d4e66780c0 195 {
IanBenzMaxim 0:33d4e66780c0 196 _u32 PacketsSent;
IanBenzMaxim 0:33d4e66780c0 197 _u32 PacketsReceived;
IanBenzMaxim 0:33d4e66780c0 198 _u16 MinRoundTime;
IanBenzMaxim 0:33d4e66780c0 199 _u16 MaxRoundTime;
IanBenzMaxim 0:33d4e66780c0 200 _u16 AvgRoundTime;
IanBenzMaxim 0:33d4e66780c0 201 _u32 TestTime;
IanBenzMaxim 0:33d4e66780c0 202 }SlPingReport_t;
IanBenzMaxim 0:33d4e66780c0 203
IanBenzMaxim 0:33d4e66780c0 204 typedef struct
IanBenzMaxim 0:33d4e66780c0 205 {
IanBenzMaxim 0:33d4e66780c0 206 _u32 PingIntervalTime; /* delay between pings, in milliseconds */
IanBenzMaxim 0:33d4e66780c0 207 _u16 PingSize; /* ping packet size in bytes */
IanBenzMaxim 0:33d4e66780c0 208 _u16 PingRequestTimeout; /* timeout time for every ping in milliseconds */
IanBenzMaxim 0:33d4e66780c0 209 _u32 TotalNumberOfAttempts; /* max number of ping requests. 0 - forever */
IanBenzMaxim 0:33d4e66780c0 210 _u32 Flags; /* flag - 0 report only when finished, 1 - return response for every ping, 2 - stop after 1 successful ping. */
IanBenzMaxim 0:33d4e66780c0 211 _u32 Ip; /* IPv4 address or IPv6 first 4 bytes */
IanBenzMaxim 0:33d4e66780c0 212 _u32 Ip1OrPaadding;
IanBenzMaxim 0:33d4e66780c0 213 _u32 Ip2OrPaadding;
IanBenzMaxim 0:33d4e66780c0 214 _u32 Ip3OrPaadding;
IanBenzMaxim 0:33d4e66780c0 215 }SlPingStartCommand_t;
IanBenzMaxim 0:33d4e66780c0 216
IanBenzMaxim 0:33d4e66780c0 217 typedef struct _slHttpServerString_t
IanBenzMaxim 0:33d4e66780c0 218 {
IanBenzMaxim 0:33d4e66780c0 219 _u8 len;
IanBenzMaxim 0:33d4e66780c0 220 _u8 *data;
IanBenzMaxim 0:33d4e66780c0 221 } slHttpServerString_t;
IanBenzMaxim 0:33d4e66780c0 222
IanBenzMaxim 0:33d4e66780c0 223 typedef struct _slHttpServerData_t
IanBenzMaxim 0:33d4e66780c0 224 {
IanBenzMaxim 0:33d4e66780c0 225 _u8 value_len;
IanBenzMaxim 0:33d4e66780c0 226 _u8 name_len;
IanBenzMaxim 0:33d4e66780c0 227 _u8 *token_value;
IanBenzMaxim 0:33d4e66780c0 228 _u8 *token_name;
IanBenzMaxim 0:33d4e66780c0 229 } slHttpServerData_t;
IanBenzMaxim 0:33d4e66780c0 230
IanBenzMaxim 0:33d4e66780c0 231 typedef struct _slHttpServerPostData_t
IanBenzMaxim 0:33d4e66780c0 232 {
IanBenzMaxim 0:33d4e66780c0 233 slHttpServerString_t action;
IanBenzMaxim 0:33d4e66780c0 234 slHttpServerString_t token_name;
IanBenzMaxim 0:33d4e66780c0 235 slHttpServerString_t token_value;
IanBenzMaxim 0:33d4e66780c0 236 }slHttpServerPostData_t;
IanBenzMaxim 0:33d4e66780c0 237
IanBenzMaxim 0:33d4e66780c0 238 typedef union
IanBenzMaxim 0:33d4e66780c0 239 {
IanBenzMaxim 0:33d4e66780c0 240 slHttpServerString_t httpTokenName; /* SL_NETAPP_HTTPGETTOKENVALUE */
IanBenzMaxim 0:33d4e66780c0 241 slHttpServerPostData_t httpPostData; /* SL_NETAPP_HTTPPOSTTOKENVALUE */
IanBenzMaxim 0:33d4e66780c0 242 } SlHttpServerEventData_u;
IanBenzMaxim 0:33d4e66780c0 243
IanBenzMaxim 0:33d4e66780c0 244 typedef union
IanBenzMaxim 0:33d4e66780c0 245 {
IanBenzMaxim 0:33d4e66780c0 246 slHttpServerString_t token_value;
IanBenzMaxim 0:33d4e66780c0 247 } SlHttpServerResponsedata_u;
IanBenzMaxim 0:33d4e66780c0 248
IanBenzMaxim 0:33d4e66780c0 249 typedef struct
IanBenzMaxim 0:33d4e66780c0 250 {
IanBenzMaxim 0:33d4e66780c0 251 _u32 Event;
IanBenzMaxim 0:33d4e66780c0 252 SlHttpServerEventData_u EventData;
IanBenzMaxim 0:33d4e66780c0 253 }SlHttpServerEvent_t;
IanBenzMaxim 0:33d4e66780c0 254
IanBenzMaxim 0:33d4e66780c0 255 typedef struct
IanBenzMaxim 0:33d4e66780c0 256 {
IanBenzMaxim 0:33d4e66780c0 257 _u32 Response;
IanBenzMaxim 0:33d4e66780c0 258 SlHttpServerResponsedata_u ResponseData;
IanBenzMaxim 0:33d4e66780c0 259 }SlHttpServerResponse_t;
IanBenzMaxim 0:33d4e66780c0 260
IanBenzMaxim 0:33d4e66780c0 261
IanBenzMaxim 0:33d4e66780c0 262 typedef struct
IanBenzMaxim 0:33d4e66780c0 263 {
IanBenzMaxim 0:33d4e66780c0 264 _u32 lease_time;
IanBenzMaxim 0:33d4e66780c0 265 _u32 ipv4_addr_start;
IanBenzMaxim 0:33d4e66780c0 266 _u32 ipv4_addr_last;
IanBenzMaxim 0:33d4e66780c0 267 }SlNetAppDhcpServerBasicOpt_t;
IanBenzMaxim 0:33d4e66780c0 268
IanBenzMaxim 0:33d4e66780c0 269 /*mDNS parameters*/
IanBenzMaxim 0:33d4e66780c0 270 typedef enum
IanBenzMaxim 0:33d4e66780c0 271 {
IanBenzMaxim 0:33d4e66780c0 272 SL_NET_APP_FULL_SERVICE_WITH_TEXT_IPV4_TYPE = 1,
IanBenzMaxim 0:33d4e66780c0 273 SL_NET_APP_FULL_SERVICE_IPV4_TYPE,
IanBenzMaxim 0:33d4e66780c0 274 SL_NET_APP_SHORT_SERVICE_IPV4_TYPE
IanBenzMaxim 0:33d4e66780c0 275
IanBenzMaxim 0:33d4e66780c0 276 } SlNetAppGetServiceListType_e;
IanBenzMaxim 0:33d4e66780c0 277
IanBenzMaxim 0:33d4e66780c0 278 typedef struct
IanBenzMaxim 0:33d4e66780c0 279 {
IanBenzMaxim 0:33d4e66780c0 280 _u32 service_ipv4;
IanBenzMaxim 0:33d4e66780c0 281 _u16 service_port;
IanBenzMaxim 0:33d4e66780c0 282 _u16 Reserved;
IanBenzMaxim 0:33d4e66780c0 283 }SlNetAppGetShortServiceIpv4List_t;
IanBenzMaxim 0:33d4e66780c0 284
IanBenzMaxim 0:33d4e66780c0 285 typedef struct
IanBenzMaxim 0:33d4e66780c0 286 {
IanBenzMaxim 0:33d4e66780c0 287 _u32 service_ipv4;
IanBenzMaxim 0:33d4e66780c0 288 _u16 service_port;
IanBenzMaxim 0:33d4e66780c0 289 _u16 Reserved;
IanBenzMaxim 0:33d4e66780c0 290 _u8 service_name[NETAPP_MAX_SERVICE_NAME_SIZE];
IanBenzMaxim 0:33d4e66780c0 291 _u8 service_host[NETAPP_MAX_SERVICE_HOST_NAME_SIZE];
IanBenzMaxim 0:33d4e66780c0 292 }SlNetAppGetFullServiceIpv4List_t;
IanBenzMaxim 0:33d4e66780c0 293
IanBenzMaxim 0:33d4e66780c0 294 typedef struct
IanBenzMaxim 0:33d4e66780c0 295 {
IanBenzMaxim 0:33d4e66780c0 296 _u32 service_ipv4;
IanBenzMaxim 0:33d4e66780c0 297 _u16 service_port;
IanBenzMaxim 0:33d4e66780c0 298 _u16 Reserved;
IanBenzMaxim 0:33d4e66780c0 299 _u8 service_name[NETAPP_MAX_SERVICE_NAME_SIZE];
IanBenzMaxim 0:33d4e66780c0 300 _u8 service_host[NETAPP_MAX_SERVICE_HOST_NAME_SIZE];
IanBenzMaxim 0:33d4e66780c0 301 _u8 service_text[NETAPP_MAX_SERVICE_TEXT_SIZE];
IanBenzMaxim 0:33d4e66780c0 302 }SlNetAppGetFullServiceWithTextIpv4List_t;
IanBenzMaxim 0:33d4e66780c0 303
IanBenzMaxim 0:33d4e66780c0 304 typedef struct
IanBenzMaxim 0:33d4e66780c0 305 {
IanBenzMaxim 0:33d4e66780c0 306 /*The below parameters are used to configure the advertise times and interval
IanBenzMaxim 0:33d4e66780c0 307 For example:
IanBenzMaxim 0:33d4e66780c0 308 If:
IanBenzMaxim 0:33d4e66780c0 309 Period is set to T
IanBenzMaxim 0:33d4e66780c0 310 Repetitions are set to P
IanBenzMaxim 0:33d4e66780c0 311 Telescopic factor is K=2
IanBenzMaxim 0:33d4e66780c0 312 The transmission shall be:
IanBenzMaxim 0:33d4e66780c0 313 advertise P times
IanBenzMaxim 0:33d4e66780c0 314 wait T
IanBenzMaxim 0:33d4e66780c0 315 advertise P times
IanBenzMaxim 0:33d4e66780c0 316 wait 4 * T
IanBenzMaxim 0:33d4e66780c0 317 advertise P time
IanBenzMaxim 0:33d4e66780c0 318 wait 16 * T ... (till max time reached / configuration changed / query issued)
IanBenzMaxim 0:33d4e66780c0 319 */
IanBenzMaxim 0:33d4e66780c0 320 _u32 t; /* Number of ticks for the initial period. Default is 100 ticks for 1 second. */
IanBenzMaxim 0:33d4e66780c0 321 _u32 p; /* Number of repetitions. Default value is 1 */
IanBenzMaxim 0:33d4e66780c0 322 _u32 k; /* Telescopic factor. Default value is 2. */
IanBenzMaxim 0:33d4e66780c0 323 _u32 RetransInterval;/* Announcing retransmission interval */
IanBenzMaxim 0:33d4e66780c0 324 _u32 Maxinterval; /* Announcing max period interval */
IanBenzMaxim 0:33d4e66780c0 325 _u32 max_time; /* Announcing max time */
IanBenzMaxim 0:33d4e66780c0 326 }SlNetAppServiceAdvertiseTimingParameters_t;
IanBenzMaxim 0:33d4e66780c0 327
IanBenzMaxim 0:33d4e66780c0 328 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 329 /* Types declarations */
IanBenzMaxim 0:33d4e66780c0 330 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 331 typedef void (*P_SL_DEV_PING_CALLBACK)(SlPingReport_t*);
IanBenzMaxim 0:33d4e66780c0 332
IanBenzMaxim 0:33d4e66780c0 333 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 334 /* Function prototypes */
IanBenzMaxim 0:33d4e66780c0 335 /*****************************************************************************/
IanBenzMaxim 0:33d4e66780c0 336
IanBenzMaxim 0:33d4e66780c0 337
IanBenzMaxim 0:33d4e66780c0 338 /*!
IanBenzMaxim 0:33d4e66780c0 339 \brief Starts a network application
IanBenzMaxim 0:33d4e66780c0 340
IanBenzMaxim 0:33d4e66780c0 341 Gets and starts network application for the current WLAN mode
IanBenzMaxim 0:33d4e66780c0 342
IanBenzMaxim 0:33d4e66780c0 343 \param[in] AppBitMap application bitmap, could be one or combination of the following: \n
IanBenzMaxim 0:33d4e66780c0 344 - SL_NET_APP_HTTP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 345 - SL_NET_APP_DHCP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 346 - SL_NET_APP_MDNS_ID
IanBenzMaxim 0:33d4e66780c0 347
IanBenzMaxim 0:33d4e66780c0 348 \return On error, negative number is returned
IanBenzMaxim 0:33d4e66780c0 349
IanBenzMaxim 0:33d4e66780c0 350 \sa Stop one or more the above started applications using sl_NetAppStop
IanBenzMaxim 0:33d4e66780c0 351 \note This command activates the application for the current WLAN mode (AP or STA)
IanBenzMaxim 0:33d4e66780c0 352 \warning
IanBenzMaxim 0:33d4e66780c0 353 \par Example:
IanBenzMaxim 0:33d4e66780c0 354 \code
IanBenzMaxim 0:33d4e66780c0 355 For example: Starting internal HTTP server + DHCP server:
IanBenzMaxim 0:33d4e66780c0 356 sl_NetAppStart(SL_NET_APP_HTTP_SERVER_ID | SL_NET_APP_DHCP_SERVER_ID)
IanBenzMaxim 0:33d4e66780c0 357
IanBenzMaxim 0:33d4e66780c0 358 \endcode
IanBenzMaxim 0:33d4e66780c0 359 */
IanBenzMaxim 0:33d4e66780c0 360 #if _SL_INCLUDE_FUNC(sl_NetAppStart)
IanBenzMaxim 0:33d4e66780c0 361 _i16 sl_NetAppStart(const _u32 AppBitMap);
IanBenzMaxim 0:33d4e66780c0 362 #endif
IanBenzMaxim 0:33d4e66780c0 363 /*!
IanBenzMaxim 0:33d4e66780c0 364 \brief Stops a network application
IanBenzMaxim 0:33d4e66780c0 365
IanBenzMaxim 0:33d4e66780c0 366 Gets and stops network application for the current WLAN mode
IanBenzMaxim 0:33d4e66780c0 367
IanBenzMaxim 0:33d4e66780c0 368 \param[in] AppBitMap application id, could be one of the following: \n
IanBenzMaxim 0:33d4e66780c0 369 - SL_NET_APP_HTTP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 370 - SL_NET_APP_DHCP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 371 - SL_NET_APP_MDNS_ID
IanBenzMaxim 0:33d4e66780c0 372
IanBenzMaxim 0:33d4e66780c0 373 \return On error, negative number is returned
IanBenzMaxim 0:33d4e66780c0 374
IanBenzMaxim 0:33d4e66780c0 375 \sa
IanBenzMaxim 0:33d4e66780c0 376 \note This command disables the application for the current active WLAN mode (AP or STA)
IanBenzMaxim 0:33d4e66780c0 377 \warning
IanBenzMaxim 0:33d4e66780c0 378 \par Example:
IanBenzMaxim 0:33d4e66780c0 379 \code
IanBenzMaxim 0:33d4e66780c0 380
IanBenzMaxim 0:33d4e66780c0 381 For example: Stopping internal HTTP server:
IanBenzMaxim 0:33d4e66780c0 382 sl_NetAppStop(SL_NET_APP_HTTP_SERVER_ID);
IanBenzMaxim 0:33d4e66780c0 383
IanBenzMaxim 0:33d4e66780c0 384 \endcode
IanBenzMaxim 0:33d4e66780c0 385 */
IanBenzMaxim 0:33d4e66780c0 386 #if _SL_INCLUDE_FUNC(sl_NetAppStop)
IanBenzMaxim 0:33d4e66780c0 387 _i16 sl_NetAppStop(const _u32 AppBitMap);
IanBenzMaxim 0:33d4e66780c0 388 #endif
IanBenzMaxim 0:33d4e66780c0 389
IanBenzMaxim 0:33d4e66780c0 390 /*!
IanBenzMaxim 0:33d4e66780c0 391 \brief Get host IP by name
IanBenzMaxim 0:33d4e66780c0 392
IanBenzMaxim 0:33d4e66780c0 393 Obtain the IP Address of machine on network, by machine name.
IanBenzMaxim 0:33d4e66780c0 394
IanBenzMaxim 0:33d4e66780c0 395 \param[in] hostname host name
IanBenzMaxim 0:33d4e66780c0 396 \param[in] usNameLen name length
IanBenzMaxim 0:33d4e66780c0 397 \param[out] out_ip_addr This parameter is filled in with
IanBenzMaxim 0:33d4e66780c0 398 host IP address. In case that host name is not
IanBenzMaxim 0:33d4e66780c0 399 resolved, out_ip_addr is zero.
IanBenzMaxim 0:33d4e66780c0 400 \param[in] family protocol family
IanBenzMaxim 0:33d4e66780c0 401
IanBenzMaxim 0:33d4e66780c0 402 \return On success, 0 is returned.
IanBenzMaxim 0:33d4e66780c0 403 On error, negative is returned
IanBenzMaxim 0:33d4e66780c0 404 SL_POOL_IS_EMPTY may be return in case there are no resources in the system
IanBenzMaxim 0:33d4e66780c0 405 In this case try again later or increase MAX_CONCURRENT_ACTIONS
IanBenzMaxim 0:33d4e66780c0 406 Possible DNS error codes:
IanBenzMaxim 0:33d4e66780c0 407 - SL_NET_APP_DNS_QUERY_NO_RESPONSE
IanBenzMaxim 0:33d4e66780c0 408 - SL_NET_APP_DNS_NO_SERVER
IanBenzMaxim 0:33d4e66780c0 409 - SL_NET_APP_DNS_QUERY_FAILED
IanBenzMaxim 0:33d4e66780c0 410 - SL_NET_APP_DNS_MALFORMED_PACKET
IanBenzMaxim 0:33d4e66780c0 411 - SL_NET_APP_DNS_MISMATCHED_RESPONSE
IanBenzMaxim 0:33d4e66780c0 412
IanBenzMaxim 0:33d4e66780c0 413 \sa
IanBenzMaxim 0:33d4e66780c0 414 \note Only one sl_NetAppDnsGetHostByName can be handled at a time.
IanBenzMaxim 0:33d4e66780c0 415 Calling this API while the same command is called from another thread, may result
IanBenzMaxim 0:33d4e66780c0 416 in one of the two scenarios:
IanBenzMaxim 0:33d4e66780c0 417 1. The command will wait (internal) until the previous command finish, and then be executed.
IanBenzMaxim 0:33d4e66780c0 418 2. There are not enough resources and POOL_IS_EMPTY error will return.
IanBenzMaxim 0:33d4e66780c0 419 In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try
IanBenzMaxim 0:33d4e66780c0 420 again later to issue the command.
IanBenzMaxim 0:33d4e66780c0 421 \warning
IanBenzMaxim 0:33d4e66780c0 422 In case an IP address in a string format is set as input, without any prefix (e.g. "1.2.3.4") the device will not
IanBenzMaxim 0:33d4e66780c0 423 try to access the DNS and it will return the input address on the 'out_ip_addr' field
IanBenzMaxim 0:33d4e66780c0 424 \par Example:
IanBenzMaxim 0:33d4e66780c0 425 \code
IanBenzMaxim 0:33d4e66780c0 426 _u32 DestinationIP;
IanBenzMaxim 0:33d4e66780c0 427 sl_NetAppDnsGetHostByName("www.google.com", strlen("www.google.com"), &DestinationIP,SL_AF_INET);
IanBenzMaxim 0:33d4e66780c0 428
IanBenzMaxim 0:33d4e66780c0 429 Addr.sin_family = SL_AF_INET;
IanBenzMaxim 0:33d4e66780c0 430 Addr.sin_port = sl_Htons(80);
IanBenzMaxim 0:33d4e66780c0 431 Addr.sin_addr.s_addr = sl_Htonl(DestinationIP);
IanBenzMaxim 0:33d4e66780c0 432 AddrSize = sizeof(SlSockAddrIn_t);
IanBenzMaxim 0:33d4e66780c0 433 SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
IanBenzMaxim 0:33d4e66780c0 434 \endcode
IanBenzMaxim 0:33d4e66780c0 435 */
IanBenzMaxim 0:33d4e66780c0 436 #if _SL_INCLUDE_FUNC(sl_NetAppDnsGetHostByName)
IanBenzMaxim 0:33d4e66780c0 437 _i16 sl_NetAppDnsGetHostByName(_i8 * hostname,const _u16 usNameLen, _u32* out_ip_addr,const _u8 family );
IanBenzMaxim 0:33d4e66780c0 438 #endif
IanBenzMaxim 0:33d4e66780c0 439
IanBenzMaxim 0:33d4e66780c0 440 /*!
IanBenzMaxim 0:33d4e66780c0 441 \brief Return service attributes like IP address, port and text according to service name
IanBenzMaxim 0:33d4e66780c0 442 \par
IanBenzMaxim 0:33d4e66780c0 443 The user sets a service name Full/Part (see example below), and should get:
IanBenzMaxim 0:33d4e66780c0 444 - IP of service
IanBenzMaxim 0:33d4e66780c0 445 - The port of service
IanBenzMaxim 0:33d4e66780c0 446 - The text of service
IanBenzMaxim 0:33d4e66780c0 447
IanBenzMaxim 0:33d4e66780c0 448 Hence it can make a connection to the specific service and use it.
IanBenzMaxim 0:33d4e66780c0 449 It is similar to get host by name method.
IanBenzMaxim 0:33d4e66780c0 450 It is done by a single shot query with PTR type on the service name.
IanBenzMaxim 0:33d4e66780c0 451 The command that is sent is from constant parameters and variables parameters.
IanBenzMaxim 0:33d4e66780c0 452
IanBenzMaxim 0:33d4e66780c0 453 \param[in] pService Service name can be full or partial. \n
IanBenzMaxim 0:33d4e66780c0 454 Example for full service name:
IanBenzMaxim 0:33d4e66780c0 455 1. PC1._ipp._tcp.local
IanBenzMaxim 0:33d4e66780c0 456 2. PC2_server._ftp._tcp.local \n
IanBenzMaxim 0:33d4e66780c0 457 .
IanBenzMaxim 0:33d4e66780c0 458 Example for partial service name:
IanBenzMaxim 0:33d4e66780c0 459 1. _ipp._tcp.local
IanBenzMaxim 0:33d4e66780c0 460 2. _ftp._tcp.local
IanBenzMaxim 0:33d4e66780c0 461
IanBenzMaxim 0:33d4e66780c0 462 \param[in] ServiceLen The length of the service name (in_pService).
IanBenzMaxim 0:33d4e66780c0 463 \param[in] Family IPv4 or IPv6 (SL_AF_INET , SL_AF_INET6).
IanBenzMaxim 0:33d4e66780c0 464 \param[out] pAddr Contains the IP address of the service.
IanBenzMaxim 0:33d4e66780c0 465 \param[out] pPort Contains the port of the service.
IanBenzMaxim 0:33d4e66780c0 466 \param[out] pTextLen Has 2 options. One as Input field and the other one as output:
IanBenzMaxim 0:33d4e66780c0 467 - Input: \n
IanBenzMaxim 0:33d4e66780c0 468 Contains the max length of the text that the user wants to get.\n
IanBenzMaxim 0:33d4e66780c0 469 It means that if the text len of service is bigger that its value than
IanBenzMaxim 0:33d4e66780c0 470 the text is cut to inout_TextLen value.
IanBenzMaxim 0:33d4e66780c0 471 - Output: \n
IanBenzMaxim 0:33d4e66780c0 472 Contain the length of the text that is returned. Can be full text or part of the text (see above).
IanBenzMaxim 0:33d4e66780c0 473
IanBenzMaxim 0:33d4e66780c0 474 \param[out] pOut_pText Contains the text of the service full or partial
IanBenzMaxim 0:33d4e66780c0 475
IanBenzMaxim 0:33d4e66780c0 476 \return On success, zero is returned
IanBenzMaxim 0:33d4e66780c0 477 SL_POOL_IS_EMPTY may be return in case there are no resources in the system
IanBenzMaxim 0:33d4e66780c0 478 In this case try again later or increase MAX_CONCURRENT_ACTIONS
IanBenzMaxim 0:33d4e66780c0 479 In case No service is found error SL_NET_APP_DNS_NO_ANSWER will be returned
IanBenzMaxim 0:33d4e66780c0 480
IanBenzMaxim 0:33d4e66780c0 481 \note The returns attributes belongs to the first service found.
IanBenzMaxim 0:33d4e66780c0 482 There may be other services with the same service name that will response to the query.
IanBenzMaxim 0:33d4e66780c0 483 The results of these responses are saved in the peer cache of the Device and should be read by another API.
IanBenzMaxim 0:33d4e66780c0 484
IanBenzMaxim 0:33d4e66780c0 485 Only one sl_NetAppDnsGetHostByService can be handled at a time.
IanBenzMaxim 0:33d4e66780c0 486 Calling this API while the same command is called from another thread, may result
IanBenzMaxim 0:33d4e66780c0 487 in one of the two scenarios:
IanBenzMaxim 0:33d4e66780c0 488 1. The command will wait (internal) until the previous command finish, and then be executed.
IanBenzMaxim 0:33d4e66780c0 489 2. There are not enough resources and SL_POOL_IS_EMPTY error will return.
IanBenzMaxim 0:33d4e66780c0 490 In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try
IanBenzMaxim 0:33d4e66780c0 491 again later to issue the command.
IanBenzMaxim 0:33d4e66780c0 492
IanBenzMaxim 0:33d4e66780c0 493 \warning Text length can be 120 bytes only
IanBenzMaxim 0:33d4e66780c0 494 */
IanBenzMaxim 0:33d4e66780c0 495 #if _SL_INCLUDE_FUNC(sl_NetAppDnsGetHostByService)
IanBenzMaxim 0:33d4e66780c0 496 _i32 sl_NetAppDnsGetHostByService(_i8 *pServiceName, /* string containing all (or only part): name + subtype + service */
IanBenzMaxim 0:33d4e66780c0 497 const _u8 ServiceLen,
IanBenzMaxim 0:33d4e66780c0 498 const _u8 Family, /* 4-IPv4 , 16-IPv6 */
IanBenzMaxim 0:33d4e66780c0 499 _u32 pAddr[],
IanBenzMaxim 0:33d4e66780c0 500 _u32 *pPort,
IanBenzMaxim 0:33d4e66780c0 501 _u16 *pTextLen, /* in: max len , out: actual len */
IanBenzMaxim 0:33d4e66780c0 502 _i8 *pText
IanBenzMaxim 0:33d4e66780c0 503 );
IanBenzMaxim 0:33d4e66780c0 504
IanBenzMaxim 0:33d4e66780c0 505 #endif
IanBenzMaxim 0:33d4e66780c0 506
IanBenzMaxim 0:33d4e66780c0 507 /*!
IanBenzMaxim 0:33d4e66780c0 508 \brief Get service List
IanBenzMaxim 0:33d4e66780c0 509 Insert into out pBuffer a list of peer's services that are the NWP.
IanBenzMaxim 0:33d4e66780c0 510 The list is in a form of service struct. The user should chose the type
IanBenzMaxim 0:33d4e66780c0 511 of the service struct like:
IanBenzMaxim 0:33d4e66780c0 512 - Full service parameters with text.
IanBenzMaxim 0:33d4e66780c0 513 - Full service parameters.
IanBenzMaxim 0:33d4e66780c0 514 - Short service parameters (port and IP only) especially for tiny hosts.
IanBenzMaxim 0:33d4e66780c0 515
IanBenzMaxim 0:33d4e66780c0 516 The different types of struct are made to give the
IanBenzMaxim 0:33d4e66780c0 517 Possibility to save memory in the host
IanBenzMaxim 0:33d4e66780c0 518
IanBenzMaxim 0:33d4e66780c0 519
IanBenzMaxim 0:33d4e66780c0 520 The user also chose how many max services to get and start point index
IanBenzMaxim 0:33d4e66780c0 521 NWP peer cache.
IanBenzMaxim 0:33d4e66780c0 522 For example:
IanBenzMaxim 0:33d4e66780c0 523 1. Get max of 3 full services from index 0.Up to 3 full services
IanBenzMaxim 0:33d4e66780c0 524 from index 0 are inserted into pBuffer (services that are in indexes 0,1,2).
IanBenzMaxim 0:33d4e66780c0 525 2. Get max of 4 full services from index 3.Up to 4 full services
IanBenzMaxim 0:33d4e66780c0 526 from index 3 are inserted into pBuffer (services that are in indexes 3,4,5,6).
IanBenzMaxim 0:33d4e66780c0 527 3. Get max of 2 int services from index 6.Up to 2 int services
IanBenzMaxim 0:33d4e66780c0 528 from index 6 are inserted into pBuffer (services that are in indexes 6,7).
IanBenzMaxim 0:33d4e66780c0 529
IanBenzMaxim 0:33d4e66780c0 530 See below - command parameters.
IanBenzMaxim 0:33d4e66780c0 531
IanBenzMaxim 0:33d4e66780c0 532 \param[in] indexOffset - The start index in the peer cache that from it the first service is returned.
IanBenzMaxim 0:33d4e66780c0 533 \param[in] MaxServiceCount - The Max services that can be returned if existed or if not exceed the max index
IanBenzMaxim 0:33d4e66780c0 534 in the peer cache
IanBenzMaxim 0:33d4e66780c0 535 \param[in] Flags - an ENUM number that means which service struct to use (means which types of service to fill)
IanBenzMaxim 0:33d4e66780c0 536 - use SlNetAppGetFullServiceWithTextIpv4List_t
IanBenzMaxim 0:33d4e66780c0 537 - use SlNetAppGetFullServiceIpv4List_t
IanBenzMaxim 0:33d4e66780c0 538 - use SlNetAppGetShortServiceIpv4List_t
IanBenzMaxim 0:33d4e66780c0 539
IanBenzMaxim 0:33d4e66780c0 540 \param[out] Buffer - The Services are inserted into this buffer. In the struct form according to the bit that is set in the Flags
IanBenzMaxim 0:33d4e66780c0 541 input parameter.
IanBenzMaxim 0:33d4e66780c0 542
IanBenzMaxim 0:33d4e66780c0 543 \return ServiceFoundCount - The number of the services that were inserted into the buffer. zero means no service is found
IanBenzMaxim 0:33d4e66780c0 544 negative number means an error
IanBenzMaxim 0:33d4e66780c0 545 \sa sl_NetAppMDNSRegisterService
IanBenzMaxim 0:33d4e66780c0 546 \note
IanBenzMaxim 0:33d4e66780c0 547 \warning
IanBenzMaxim 0:33d4e66780c0 548 if the out pBuffer size is bigger than an RX packet(1480), than
IanBenzMaxim 0:33d4e66780c0 549 an error is returned because there
IanBenzMaxim 0:33d4e66780c0 550 is no place in the RX packet.
IanBenzMaxim 0:33d4e66780c0 551 The size is a multiply of MaxServiceCount and size of service struct(that is set
IanBenzMaxim 0:33d4e66780c0 552 according to flag value).
IanBenzMaxim 0:33d4e66780c0 553 */
IanBenzMaxim 0:33d4e66780c0 554
IanBenzMaxim 0:33d4e66780c0 555 #if _SL_INCLUDE_FUNC(sl_NetAppGetServiceList)
IanBenzMaxim 0:33d4e66780c0 556 _i16 sl_NetAppGetServiceList(const _u8 IndexOffest,
IanBenzMaxim 0:33d4e66780c0 557 const _u8 MaxServiceCount,
IanBenzMaxim 0:33d4e66780c0 558 const _u8 Flags,
IanBenzMaxim 0:33d4e66780c0 559 _i8 *pBuffer,
IanBenzMaxim 0:33d4e66780c0 560 const _u32 RxBufferLength
IanBenzMaxim 0:33d4e66780c0 561 );
IanBenzMaxim 0:33d4e66780c0 562
IanBenzMaxim 0:33d4e66780c0 563 #endif
IanBenzMaxim 0:33d4e66780c0 564
IanBenzMaxim 0:33d4e66780c0 565 /*!
IanBenzMaxim 0:33d4e66780c0 566 \brief Unregister mDNS service
IanBenzMaxim 0:33d4e66780c0 567 This function deletes the mDNS service from the mDNS package and the database.
IanBenzMaxim 0:33d4e66780c0 568
IanBenzMaxim 0:33d4e66780c0 569 The mDNS service that is to be unregistered is a service that the application no longer wishes to provide. \n
IanBenzMaxim 0:33d4e66780c0 570 The service name should be the full service name according to RFC
IanBenzMaxim 0:33d4e66780c0 571 of the DNS-SD - meaning the value in name field in the SRV answer.
IanBenzMaxim 0:33d4e66780c0 572
IanBenzMaxim 0:33d4e66780c0 573 Examples for service names:
IanBenzMaxim 0:33d4e66780c0 574 1. PC1._ipp._tcp.local
IanBenzMaxim 0:33d4e66780c0 575 2. PC2_server._ftp._tcp.local
IanBenzMaxim 0:33d4e66780c0 576
IanBenzMaxim 0:33d4e66780c0 577 \param[in] pServiceName Full service name. \n
IanBenzMaxim 0:33d4e66780c0 578 Example for service name:
IanBenzMaxim 0:33d4e66780c0 579 1. PC1._ipp._tcp.local
IanBenzMaxim 0:33d4e66780c0 580 2. PC2_server._ftp._tcp.local
IanBenzMaxim 0:33d4e66780c0 581 \param[in] ServiceLen The length of the service.
IanBenzMaxim 0:33d4e66780c0 582 \return On success, zero is returned
IanBenzMaxim 0:33d4e66780c0 583 \sa sl_NetAppMDNSRegisterService
IanBenzMaxim 0:33d4e66780c0 584 \note
IanBenzMaxim 0:33d4e66780c0 585 \warning
IanBenzMaxim 0:33d4e66780c0 586 The size of the service length should be smaller than 255.
IanBenzMaxim 0:33d4e66780c0 587 */
IanBenzMaxim 0:33d4e66780c0 588 #if _SL_INCLUDE_FUNC(sl_NetAppMDNSUnRegisterService)
IanBenzMaxim 0:33d4e66780c0 589 _i16 sl_NetAppMDNSUnRegisterService(const _i8 *pServiceName,const _u8 ServiceNameLen);
IanBenzMaxim 0:33d4e66780c0 590 #endif
IanBenzMaxim 0:33d4e66780c0 591
IanBenzMaxim 0:33d4e66780c0 592 /*!
IanBenzMaxim 0:33d4e66780c0 593 \brief Register a new mDNS service
IanBenzMaxim 0:33d4e66780c0 594 \par
IanBenzMaxim 0:33d4e66780c0 595 This function registers a new mDNS service to the mDNS package and the DB.
IanBenzMaxim 0:33d4e66780c0 596
IanBenzMaxim 0:33d4e66780c0 597 This registered service is a service offered by the application.
IanBenzMaxim 0:33d4e66780c0 598 The service name should be full service name according to RFC
IanBenzMaxim 0:33d4e66780c0 599 of the DNS-SD - meaning the value in name field in the SRV answer.
IanBenzMaxim 0:33d4e66780c0 600 Example for service name:
IanBenzMaxim 0:33d4e66780c0 601 1. PC1._ipp._tcp.local
IanBenzMaxim 0:33d4e66780c0 602 2. PC2_server._ftp._tcp.local
IanBenzMaxim 0:33d4e66780c0 603
IanBenzMaxim 0:33d4e66780c0 604 If the option is_unique is set, mDNS probes the service name to make sure
IanBenzMaxim 0:33d4e66780c0 605 it is unique before starting to announce the service on the network.
IanBenzMaxim 0:33d4e66780c0 606 Instance is the instance portion of the service name.
IanBenzMaxim 0:33d4e66780c0 607
IanBenzMaxim 0:33d4e66780c0 608 \param[in] ServiceLen The length of the service.
IanBenzMaxim 0:33d4e66780c0 609 \param[in] TextLen The length of the service should be smaller than 64.
IanBenzMaxim 0:33d4e66780c0 610 \param[in] port The port on this target host port.
IanBenzMaxim 0:33d4e66780c0 611 \param[in] TTL The TTL of the service
IanBenzMaxim 0:33d4e66780c0 612 \param[in] Options bitwise parameters: \n
IanBenzMaxim 0:33d4e66780c0 613 - bit 0 - service is unique (means that the service needs to be unique)
IanBenzMaxim 0:33d4e66780c0 614 - bit 31 - for internal use if the service should be added or deleted (set means ADD).
IanBenzMaxim 0:33d4e66780c0 615 - bit 1-30 for future.
IanBenzMaxim 0:33d4e66780c0 616
IanBenzMaxim 0:33d4e66780c0 617 \param[in] pServiceName The service name.
IanBenzMaxim 0:33d4e66780c0 618 Example for service name: \n
IanBenzMaxim 0:33d4e66780c0 619 1. PC1._ipp._tcp.local
IanBenzMaxim 0:33d4e66780c0 620 2. PC2_server._ftp._tcp.local
IanBenzMaxim 0:33d4e66780c0 621
IanBenzMaxim 0:33d4e66780c0 622 \param[in] pText The description of the service.
IanBenzMaxim 0:33d4e66780c0 623 should be as mentioned in the RFC
IanBenzMaxim 0:33d4e66780c0 624 (according to type of the service IPP,FTP...)
IanBenzMaxim 0:33d4e66780c0 625
IanBenzMaxim 0:33d4e66780c0 626 \return On success, zero is returned
IanBenzMaxim 0:33d4e66780c0 627 Possible error codes:
IanBenzMaxim 0:33d4e66780c0 628 - Maximum advertise services are already configured.
IanBenzMaxim 0:33d4e66780c0 629 Delete another existed service that is registered and then register again the new service
IanBenzMaxim 0:33d4e66780c0 630 - Trying to register a service that is already exists
IanBenzMaxim 0:33d4e66780c0 631 - Trying to delete service that does not existed
IanBenzMaxim 0:33d4e66780c0 632 - Illegal service name according to the RFC
IanBenzMaxim 0:33d4e66780c0 633 - Retry request
IanBenzMaxim 0:33d4e66780c0 634 - Illegal length of one of the mDNS Set functions
IanBenzMaxim 0:33d4e66780c0 635 - mDNS is not operational as the device has no IP.Connect the device to an AP to get an IP address.
IanBenzMaxim 0:33d4e66780c0 636 - mDNS parameters error
IanBenzMaxim 0:33d4e66780c0 637 - mDNS internal cache error
IanBenzMaxim 0:33d4e66780c0 638 - mDNS internal error
IanBenzMaxim 0:33d4e66780c0 639 - Adding a service is not allowed as it is already exist (duplicate service)
IanBenzMaxim 0:33d4e66780c0 640 - mDNS is not running
IanBenzMaxim 0:33d4e66780c0 641 - Host name error. Host name format is not allowed according to RFC 1033,1034,1035, 6763
IanBenzMaxim 0:33d4e66780c0 642 - List size buffer is bigger than internally allowed in the NWP (API get service list),
IanBenzMaxim 0:33d4e66780c0 643 change the APIs’ parameters to decrease the size of the list
IanBenzMaxim 0:33d4e66780c0 644
IanBenzMaxim 0:33d4e66780c0 645
IanBenzMaxim 0:33d4e66780c0 646 \sa sl_NetAppMDNSUnRegisterService
IanBenzMaxim 0:33d4e66780c0 647
IanBenzMaxim 0:33d4e66780c0 648 \warning 1) Temporary - there is an allocation on stack of internal buffer.
IanBenzMaxim 0:33d4e66780c0 649 Its size is NETAPP_MDNS_MAX_SERVICE_NAME_AND_TEXT_LENGTH. \n
IanBenzMaxim 0:33d4e66780c0 650 It means that the sum of the text length and service name length cannot be bigger than
IanBenzMaxim 0:33d4e66780c0 651 NETAPP_MDNS_MAX_SERVICE_NAME_AND_TEXT_LENGTH.\n
IanBenzMaxim 0:33d4e66780c0 652 If it is - An error is returned. \n
IanBenzMaxim 0:33d4e66780c0 653 2) According to now from certain constraints the variables parameters are set in the
IanBenzMaxim 0:33d4e66780c0 654 attribute part (contain constant parameters)
IanBenzMaxim 0:33d4e66780c0 655 */
IanBenzMaxim 0:33d4e66780c0 656 #if _SL_INCLUDE_FUNC(sl_NetAppMDNSRegisterService)
IanBenzMaxim 0:33d4e66780c0 657 _i16 sl_NetAppMDNSRegisterService( const _i8* pServiceName,
IanBenzMaxim 0:33d4e66780c0 658 const _u8 ServiceNameLen,
IanBenzMaxim 0:33d4e66780c0 659 const _i8* pText,
IanBenzMaxim 0:33d4e66780c0 660 const _u8 TextLen,
IanBenzMaxim 0:33d4e66780c0 661 const _u16 Port,
IanBenzMaxim 0:33d4e66780c0 662 const _u32 TTL,
IanBenzMaxim 0:33d4e66780c0 663 _u32 Options);
IanBenzMaxim 0:33d4e66780c0 664 #endif
IanBenzMaxim 0:33d4e66780c0 665
IanBenzMaxim 0:33d4e66780c0 666 /*!
IanBenzMaxim 0:33d4e66780c0 667 \brief send ICMP ECHO_REQUEST to network hosts
IanBenzMaxim 0:33d4e66780c0 668
IanBenzMaxim 0:33d4e66780c0 669 Ping uses the ICMP protocol's mandatory ECHO_REQUEST
IanBenzMaxim 0:33d4e66780c0 670
IanBenzMaxim 0:33d4e66780c0 671 \param[in] pPingParams Pointer to the ping request structure: \n
IanBenzMaxim 0:33d4e66780c0 672 - if flags parameter is set to 0, ping will report back once all requested pings are done (as defined by TotalNumberOfAttempts). \n
IanBenzMaxim 0:33d4e66780c0 673 - if flags parameter is set to 1, ping will report back after every ping, for TotalNumberOfAttempts.
IanBenzMaxim 0:33d4e66780c0 674 - if flags parameter is set to 2, ping will stop after the first successful ping, and report back for the successful ping, as well as any preceding failed ones.
IanBenzMaxim 0:33d4e66780c0 675 For stopping an ongoing ping activity, set parameters IP address to 0
IanBenzMaxim 0:33d4e66780c0 676
IanBenzMaxim 0:33d4e66780c0 677 \param[in] family SL_AF_INET or SL_AF_INET6
IanBenzMaxim 0:33d4e66780c0 678 \param[out] pReport Ping pReport
IanBenzMaxim 0:33d4e66780c0 679 \param[out] pCallback Callback function upon completion.
IanBenzMaxim 0:33d4e66780c0 680 If callback is NULL, the API is blocked until data arrives
IanBenzMaxim 0:33d4e66780c0 681
IanBenzMaxim 0:33d4e66780c0 682
IanBenzMaxim 0:33d4e66780c0 683 \return On success, zero is returned. On error, -1 is returned
IanBenzMaxim 0:33d4e66780c0 684 SL_POOL_IS_EMPTY may be return in case there are no resources in the system
IanBenzMaxim 0:33d4e66780c0 685 In this case try again later or increase MAX_CONCURRENT_ACTIONS
IanBenzMaxim 0:33d4e66780c0 686
IanBenzMaxim 0:33d4e66780c0 687 \sa sl_NetAppPingReport
IanBenzMaxim 0:33d4e66780c0 688 \note Only one sl_NetAppPingStart can be handled at a time.
IanBenzMaxim 0:33d4e66780c0 689 Calling this API while the same command is called from another thread, may result
IanBenzMaxim 0:33d4e66780c0 690 in one of the two scenarios:
IanBenzMaxim 0:33d4e66780c0 691 1. The command will wait (internal) until the previous command finish, and then be executed.
IanBenzMaxim 0:33d4e66780c0 692 2. There are not enough resources and SL_POOL_IS_EMPTY error will return.
IanBenzMaxim 0:33d4e66780c0 693 In this case, MAX_CONCURRENT_ACTIONS can be increased (result in memory increase) or try
IanBenzMaxim 0:33d4e66780c0 694 again later to issue the command.
IanBenzMaxim 0:33d4e66780c0 695 \warning
IanBenzMaxim 0:33d4e66780c0 696 \par Example:
IanBenzMaxim 0:33d4e66780c0 697 \code
IanBenzMaxim 0:33d4e66780c0 698
IanBenzMaxim 0:33d4e66780c0 699 An example of sending 20 ping requests and reporting results to a callback routine when
IanBenzMaxim 0:33d4e66780c0 700 all requests are sent:
IanBenzMaxim 0:33d4e66780c0 701
IanBenzMaxim 0:33d4e66780c0 702 // callback routine
IanBenzMaxim 0:33d4e66780c0 703 void pingRes(SlPingReport_t* pReport)
IanBenzMaxim 0:33d4e66780c0 704 {
IanBenzMaxim 0:33d4e66780c0 705 // handle ping results
IanBenzMaxim 0:33d4e66780c0 706 }
IanBenzMaxim 0:33d4e66780c0 707
IanBenzMaxim 0:33d4e66780c0 708 // ping activation
IanBenzMaxim 0:33d4e66780c0 709 void PingTest()
IanBenzMaxim 0:33d4e66780c0 710 {
IanBenzMaxim 0:33d4e66780c0 711 SlPingReport_t report;
IanBenzMaxim 0:33d4e66780c0 712 SlPingStartCommand_t pingCommand;
IanBenzMaxim 0:33d4e66780c0 713
IanBenzMaxim 0:33d4e66780c0 714 pingCommand.Ip = SL_IPV4_VAL(10,1,1,200); // destination IP address is 10.1.1.200
IanBenzMaxim 0:33d4e66780c0 715 pingCommand.PingSize = 150; // size of ping, in bytes
IanBenzMaxim 0:33d4e66780c0 716 pingCommand.PingIntervalTime = 100; // delay between pings, in milliseconds
IanBenzMaxim 0:33d4e66780c0 717 pingCommand.PingRequestTimeout = 1000; // timeout for every ping in milliseconds
IanBenzMaxim 0:33d4e66780c0 718 pingCommand.TotalNumberOfAttempts = 20; // max number of ping requests. 0 - forever
IanBenzMaxim 0:33d4e66780c0 719 pingCommand.Flags = 0; // report only when finished
IanBenzMaxim 0:33d4e66780c0 720
IanBenzMaxim 0:33d4e66780c0 721 sl_NetAppPingStart( &pingCommand, SL_AF_INET, &report, pingRes ) ;
IanBenzMaxim 0:33d4e66780c0 722 }
IanBenzMaxim 0:33d4e66780c0 723
IanBenzMaxim 0:33d4e66780c0 724 \endcode
IanBenzMaxim 0:33d4e66780c0 725 */
IanBenzMaxim 0:33d4e66780c0 726 #if _SL_INCLUDE_FUNC(sl_NetAppPingStart)
IanBenzMaxim 0:33d4e66780c0 727 _i16 sl_NetAppPingStart(const SlPingStartCommand_t* pPingParams,const _u8 family,SlPingReport_t *pReport,const P_SL_DEV_PING_CALLBACK pPingCallback);
IanBenzMaxim 0:33d4e66780c0 728 #endif
IanBenzMaxim 0:33d4e66780c0 729
IanBenzMaxim 0:33d4e66780c0 730 /*!
IanBenzMaxim 0:33d4e66780c0 731 \brief Internal function for setting network application configurations
IanBenzMaxim 0:33d4e66780c0 732
IanBenzMaxim 0:33d4e66780c0 733 \return On success, zero is returned. On error, -1 is
IanBenzMaxim 0:33d4e66780c0 734 returned
IanBenzMaxim 0:33d4e66780c0 735
IanBenzMaxim 0:33d4e66780c0 736 \param[in] AppId Application id, could be one of the following: \n
IanBenzMaxim 0:33d4e66780c0 737 - SL_NET_APP_HTTP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 738 - SL_NET_APP_DHCP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 739 - SL_NET_APP_MDNS_ID
IanBenzMaxim 0:33d4e66780c0 740 - SL_NET_APP_DEVICE_CONFIG_ID
IanBenzMaxim 0:33d4e66780c0 741
IanBenzMaxim 0:33d4e66780c0 742 \param[in] SetOptions set option, could be one of the following: \n
IanBenzMaxim 0:33d4e66780c0 743 - SL_NET_APP_DHCP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 744 - NETAPP_SET_DHCP_SRV_BASIC_OPT
IanBenzMaxim 0:33d4e66780c0 745 - SL_NET_APP_HTTP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 746 - NETAPP_SET_GET_HTTP_OPT_PORT_NUMBER
IanBenzMaxim 0:33d4e66780c0 747 - NETAPP_SET_GET_HTTP_OPT_AUTH_CHECK
IanBenzMaxim 0:33d4e66780c0 748 - NETAPP_SET_GET_HTTP_OPT_AUTH_NAME
IanBenzMaxim 0:33d4e66780c0 749 - NETAPP_SET_GET_HTTP_OPT_AUTH_PASSWORD
IanBenzMaxim 0:33d4e66780c0 750 - NETAPP_SET_GET_HTTP_OPT_AUTH_REALM
IanBenzMaxim 0:33d4e66780c0 751 - NETAPP_SET_GET_HTTP_OPT_ROM_PAGES_ACCESS
IanBenzMaxim 0:33d4e66780c0 752 - SL_NET_APP_MDNS_ID
IanBenzMaxim 0:33d4e66780c0 753 - NETAPP_SET_GET_MDNS_CONT_QUERY_OPT
IanBenzMaxim 0:33d4e66780c0 754 - NETAPP_SET_GET_MDNS_QEVETN_MASK_OPT
IanBenzMaxim 0:33d4e66780c0 755 - NETAPP_SET_GET_MDNS_TIMING_PARAMS_OPT
IanBenzMaxim 0:33d4e66780c0 756 - SL_NET_APP_DEVICE_CONFIG_ID
IanBenzMaxim 0:33d4e66780c0 757 - NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN
IanBenzMaxim 0:33d4e66780c0 758 - NETAPP_SET_GET_DEV_CONF_OPT_DOMAIN_NAME
IanBenzMaxim 0:33d4e66780c0 759
IanBenzMaxim 0:33d4e66780c0 760
IanBenzMaxim 0:33d4e66780c0 761 \param[in] OptionLen option structure length
IanBenzMaxim 0:33d4e66780c0 762
IanBenzMaxim 0:33d4e66780c0 763 \param[in] pOptionValues pointer to the option structure
IanBenzMaxim 0:33d4e66780c0 764 \sa
IanBenzMaxim 0:33d4e66780c0 765 \note
IanBenzMaxim 0:33d4e66780c0 766 \warning
IanBenzMaxim 0:33d4e66780c0 767 \par
IanBenzMaxim 0:33d4e66780c0 768 \code
IanBenzMaxim 0:33d4e66780c0 769 Set DHCP Server (AP mode) parameters example:
IanBenzMaxim 0:33d4e66780c0 770
IanBenzMaxim 0:33d4e66780c0 771 SlNetAppDhcpServerBasicOpt_t dhcpParams;
IanBenzMaxim 0:33d4e66780c0 772 _u8 outLen = sizeof(SlNetAppDhcpServerBasicOpt_t);
IanBenzMaxim 0:33d4e66780c0 773 dhcpParams.lease_time = 4096; // lease time (in seconds) of the IP Address
IanBenzMaxim 0:33d4e66780c0 774 dhcpParams.ipv4_addr_start = SL_IPV4_VAL(192,168,1,10); // first IP Address for allocation. IP Address should be set as Hex number - i.e. 0A0B0C01 for (10.11.12.1)
IanBenzMaxim 0:33d4e66780c0 775 dhcpParams.ipv4_addr_last = SL_IPV4_VAL(192,168,1,16); // last IP Address for allocation. IP Address should be set as Hex number - i.e. 0A0B0C01 for (10.11.12.1)
IanBenzMaxim 0:33d4e66780c0 776 sl_NetAppStop(SL_NET_APP_DHCP_SERVER_ID); // Stop DHCP server before settings
IanBenzMaxim 0:33d4e66780c0 777 sl_NetAppSet(SL_NET_APP_DHCP_SERVER_ID, NETAPP_SET_DHCP_SRV_BASIC_OPT, outLen, (_u8* )&dhcpParams); // set parameters
IanBenzMaxim 0:33d4e66780c0 778 sl_NetAppStart(SL_NET_APP_DHCP_SERVER_ID); // Start DHCP server with new settings
IanBenzMaxim 0:33d4e66780c0 779 \endcode
IanBenzMaxim 0:33d4e66780c0 780 \code
IanBenzMaxim 0:33d4e66780c0 781 Set Device URN name example:
IanBenzMaxim 0:33d4e66780c0 782
IanBenzMaxim 0:33d4e66780c0 783 Device name, maximum length of 33 characters
IanBenzMaxim 0:33d4e66780c0 784 Device name affects URN name, own SSID name in AP mode, and WPS file "device name" in WPS I.E (STA-WPS / P2P)
IanBenzMaxim 0:33d4e66780c0 785 In case no device URN name set, the default name is "mysimplelink"
IanBenzMaxim 0:33d4e66780c0 786 Allowed characters in device name are: 'a - z' , 'A - Z' , '0-9' and '-'
IanBenzMaxim 0:33d4e66780c0 787
IanBenzMaxim 0:33d4e66780c0 788 _u8 *my_device = "MY-SIMPLELINK-DEV";
IanBenzMaxim 0:33d4e66780c0 789 sl_NetAppSet (SL_NET_APP_DEVICE_CONFIG_ID, NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN, strlen(my_device), (_u8 *) my_device);
IanBenzMaxim 0:33d4e66780c0 790 \endcode
IanBenzMaxim 0:33d4e66780c0 791
IanBenzMaxim 0:33d4e66780c0 792 */
IanBenzMaxim 0:33d4e66780c0 793 #if _SL_INCLUDE_FUNC(sl_NetAppSet)
IanBenzMaxim 0:33d4e66780c0 794 _i32 sl_NetAppSet(const _u8 AppId ,const _u8 Option,const _u8 OptionLen,const _u8 *pOptionValue);
IanBenzMaxim 0:33d4e66780c0 795 #endif
IanBenzMaxim 0:33d4e66780c0 796
IanBenzMaxim 0:33d4e66780c0 797 /*!
IanBenzMaxim 0:33d4e66780c0 798 \brief Internal function for getting network applications configurations
IanBenzMaxim 0:33d4e66780c0 799
IanBenzMaxim 0:33d4e66780c0 800 \return On success, zero is returned. On error, -1 is
IanBenzMaxim 0:33d4e66780c0 801 returned
IanBenzMaxim 0:33d4e66780c0 802
IanBenzMaxim 0:33d4e66780c0 803 \param[in] AppId Application id, could be one of the following: \n
IanBenzMaxim 0:33d4e66780c0 804 - SL_NET_APP_HTTP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 805 - SL_NET_APP_DHCP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 806 - SL_NET_APP_MDNS_ID
IanBenzMaxim 0:33d4e66780c0 807 - SL_NET_APP_DEVICE_CONFIG_ID
IanBenzMaxim 0:33d4e66780c0 808
IanBenzMaxim 0:33d4e66780c0 809 \param[in] SetOptions set option, could be one of the following: \n
IanBenzMaxim 0:33d4e66780c0 810 - SL_NET_APP_DHCP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 811 - NETAPP_SET_DHCP_SRV_BASIC_OPT
IanBenzMaxim 0:33d4e66780c0 812 - SL_NET_APP_HTTP_SERVER_ID
IanBenzMaxim 0:33d4e66780c0 813 - NETAPP_SET_GET_HTTP_OPT_PORT_NUMBER
IanBenzMaxim 0:33d4e66780c0 814 - NETAPP_SET_GET_HTTP_OPT_AUTH_CHECK
IanBenzMaxim 0:33d4e66780c0 815 - NETAPP_SET_GET_HTTP_OPT_AUTH_NAME
IanBenzMaxim 0:33d4e66780c0 816 - NETAPP_SET_GET_HTTP_OPT_AUTH_PASSWORD
IanBenzMaxim 0:33d4e66780c0 817 - NETAPP_SET_GET_HTTP_OPT_AUTH_REALM
IanBenzMaxim 0:33d4e66780c0 818 - NETAPP_SET_GET_HTTP_OPT_ROM_PAGES_ACCESS
IanBenzMaxim 0:33d4e66780c0 819 - SL_NET_APP_MDNS_ID
IanBenzMaxim 0:33d4e66780c0 820 - NETAPP_SET_GET_MDNS_CONT_QUERY_OPT
IanBenzMaxim 0:33d4e66780c0 821 - NETAPP_SET_GET_MDNS_QEVETN_MASK_OPT
IanBenzMaxim 0:33d4e66780c0 822 - NETAPP_SET_GET_MDNS_TIMING_PARAMS_OPT
IanBenzMaxim 0:33d4e66780c0 823 - SL_NET_APP_DEVICE_CONFIG_ID
IanBenzMaxim 0:33d4e66780c0 824 - NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN
IanBenzMaxim 0:33d4e66780c0 825 - NETAPP_SET_GET_DEV_CONF_OPT_DOMAIN_NAME
IanBenzMaxim 0:33d4e66780c0 826
IanBenzMaxim 0:33d4e66780c0 827
IanBenzMaxim 0:33d4e66780c0 828 \param[in] OptionLen The length of the allocated memory as input, when the
IanBenzMaxim 0:33d4e66780c0 829 function complete, the value of this parameter would be
IanBenzMaxim 0:33d4e66780c0 830 the len that actually read from the device.
IanBenzMaxim 0:33d4e66780c0 831 If the device return length that is longer from the input
IanBenzMaxim 0:33d4e66780c0 832 value, the function will cut the end of the returned structure
IanBenzMaxim 0:33d4e66780c0 833 and will return ESMALLBUF
IanBenzMaxim 0:33d4e66780c0 834
IanBenzMaxim 0:33d4e66780c0 835 \param[out] pValues pointer to the option structure which will be filled with the response from the device
IanBenzMaxim 0:33d4e66780c0 836
IanBenzMaxim 0:33d4e66780c0 837 \sa
IanBenzMaxim 0:33d4e66780c0 838 \note
IanBenzMaxim 0:33d4e66780c0 839 \warning
IanBenzMaxim 0:33d4e66780c0 840 \par
IanBenzMaxim 0:33d4e66780c0 841 \code
IanBenzMaxim 0:33d4e66780c0 842 Get DHCP Server parameters example:
IanBenzMaxim 0:33d4e66780c0 843
IanBenzMaxim 0:33d4e66780c0 844 SlNetAppDhcpServerBasicOpt_t dhcpParams;
IanBenzMaxim 0:33d4e66780c0 845 _u8 outLen = sizeof(SlNetAppDhcpServerBasicOpt_t);
IanBenzMaxim 0:33d4e66780c0 846 sl_NetAppGet(SL_NET_APP_DHCP_SERVER_ID, NETAPP_SET_DHCP_SRV_BASIC_OPT, &outLen, (_u8* )&dhcpParams);
IanBenzMaxim 0:33d4e66780c0 847
IanBenzMaxim 0:33d4e66780c0 848 printf("DHCP Start IP %d.%d.%d.%d End IP %d.%d.%d.%d Lease time seconds %d\n",
IanBenzMaxim 0:33d4e66780c0 849 SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,3),SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,2),
IanBenzMaxim 0:33d4e66780c0 850 SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,1),SL_IPV4_BYTE(dhcpParams.ipv4_addr_start,0),
IanBenzMaxim 0:33d4e66780c0 851 SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,3),SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,2),
IanBenzMaxim 0:33d4e66780c0 852 SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,1),SL_IPV4_BYTE(dhcpParams.ipv4_addr_last,0),
IanBenzMaxim 0:33d4e66780c0 853 dhcpParams.lease_time);
IanBenzMaxim 0:33d4e66780c0 854 \endcode
IanBenzMaxim 0:33d4e66780c0 855 \code
IanBenzMaxim 0:33d4e66780c0 856 Get Device URN name example:
IanBenzMaxim 0:33d4e66780c0 857 Maximum length of 33 characters of device name.
IanBenzMaxim 0:33d4e66780c0 858 Device name affects URN name, own SSID name in AP mode, and WPS file "device name" in WPS I.E (STA-WPS / P2P)
IanBenzMaxim 0:33d4e66780c0 859 in case no device URN name set, the default name is "mysimplelink"
IanBenzMaxim 0:33d4e66780c0 860
IanBenzMaxim 0:33d4e66780c0 861 _u8 my_device_name[35];
IanBenzMaxim 0:33d4e66780c0 862 sl_NetAppGet (SL_NET_APP_DEVICE_CONFIG_ID, NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN, strlen(my_device_name), (_u8 *)my_device_name);
IanBenzMaxim 0:33d4e66780c0 863 \endcode
IanBenzMaxim 0:33d4e66780c0 864 */
IanBenzMaxim 0:33d4e66780c0 865 #if _SL_INCLUDE_FUNC(sl_NetAppGet)
IanBenzMaxim 0:33d4e66780c0 866 _i32 sl_NetAppGet(const _u8 AppId,const _u8 Option,_u8 *pOptionLen, _u8 *pOptionValue);
IanBenzMaxim 0:33d4e66780c0 867 #endif
IanBenzMaxim 0:33d4e66780c0 868
IanBenzMaxim 0:33d4e66780c0 869
IanBenzMaxim 0:33d4e66780c0 870
IanBenzMaxim 0:33d4e66780c0 871 /*!
IanBenzMaxim 0:33d4e66780c0 872
IanBenzMaxim 0:33d4e66780c0 873 Close the Doxygen group.
IanBenzMaxim 0:33d4e66780c0 874 @}
IanBenzMaxim 0:33d4e66780c0 875
IanBenzMaxim 0:33d4e66780c0 876 */
IanBenzMaxim 0:33d4e66780c0 877
IanBenzMaxim 0:33d4e66780c0 878
IanBenzMaxim 0:33d4e66780c0 879 #ifdef __cplusplus
IanBenzMaxim 0:33d4e66780c0 880 }
IanBenzMaxim 0:33d4e66780c0 881 #endif /* __cplusplus */
IanBenzMaxim 0:33d4e66780c0 882
IanBenzMaxim 0:33d4e66780c0 883 #endif /* __NETAPP_H__ */
IanBenzMaxim 0:33d4e66780c0 884