This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Fork of libMiMic by Ryo Iizuka

Committer:
furutani
Date:
Fri Feb 24 04:43:41 2017 +0000
Revision:
115:fa79286d8ea4
Parent:
99:875f75e7e63e
Delete missing include line.; Add parameter "timeout" to TCPSocket::connect(), precv().; Fix to send ARP request to default gateway when connecting to IP address of different segment.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 3:0a94993be1f6 1 #pragma once
nyatla 3:0a94993be1f6 2 ////////////////////////////////////////////////////////////////////////////////
nyatla 3:0a94993be1f6 3 // NetConfig.h
nyatla 3:0a94993be1f6 4 ////////////////////////////////////////////////////////////////////////////////
nyatla 3:0a94993be1f6 5
nyatla 3:0a94993be1f6 6 #include "NyLPC_net.h"
nyatla 58:03b89038b21a 7 #include "IpAddr.h"
nyatla 37:fc4b4fd6a649 8
nyatla 37:fc4b4fd6a649 9
nyatla 3:0a94993be1f6 10 namespace MiMic
nyatla 3:0a94993be1f6 11 {
nyatla 58:03b89038b21a 12 class IpAddr;
nyatla 3:0a94993be1f6 13 /**
nyatla 3:0a94993be1f6 14 * Network configulation class.
nyatla 48:00d211aac2ec 15 * The class is used by Net constructor.
nyatla 3:0a94993be1f6 16 */
nyatla 3:0a94993be1f6 17 class NetConfig
nyatla 3:0a94993be1f6 18 {
nyatla 37:fc4b4fd6a649 19 private:
nyatla 37:fc4b4fd6a649 20 /**service record*/
nyatla 48:00d211aac2ec 21 NyLPC_TcNetConfig_t _inst;
nyatla 37:fc4b4fd6a649 22 struct NyLPC_TMDnsServiceRecord _srv_record;
nyatla 48:00d211aac2ec 23 void _syncServiceInfo();
nyatla 48:00d211aac2ec 24 struct NyLPC_TDnsRecord _dns_record;
nyatla 48:00d211aac2ec 25 struct NyLPC_TUPnPDevDescDevice _upnp_desc;
nyatla 50:35e765380772 26 struct NyLPC_TUPnPDevDescIcon _upnp_icon;
nyatla 48:00d211aac2ec 27 const struct NyLPC_TDnsRecord* _ref_custom_dns_record;
nyatla 48:00d211aac2ec 28 const struct NyLPC_TUPnPDevDescDevice* _ref_custom_upnp_desc;
nyatla 48:00d211aac2ec 29 char _udn[42];//uuid:00000000-0000-0000-0000-000000000000+'\0'
nyatla 3:0a94993be1f6 30 public:
nyatla 48:00d211aac2ec 31 /** wrapped base LPC class.*/
nyatla 48:00d211aac2ec 32 NyLPC_TcNetConfig_t* refBaseInstance(){return &this->_inst;}
nyatla 48:00d211aac2ec 33 /** internal UPnP description*/
nyatla 48:00d211aac2ec 34 const struct NyLPC_TUPnPDevDescDevice* refUPnPDevDesc()const;
nyatla 48:00d211aac2ec 35 /** internal dns record*/
nyatla 48:00d211aac2ec 36 const struct NyLPC_TDnsRecord* refMdnsRecord()const;
nyatla 48:00d211aac2ec 37 /** Thi sfunction returnes recommended HTTP service port number.*/
nyatla 48:00d211aac2ec 38 unsigned short getHttpPort()const{return this->_inst.services.http_port;}
nyatla 3:0a94993be1f6 39 public:
nyatla 3:0a94993be1f6 40 /**
nyatla 3:0a94993be1f6 41 * The constructor.
nyatla 3:0a94993be1f6 42 * This function initializes instance by onchip configulation data.
nyatla 3:0a94993be1f6 43 * @param i_is_factory_default
nyatla 11:c82a7b2899b0 44 * Factory default flag.
nyatla 3:0a94993be1f6 45 * <ul>
nyatla 3:0a94993be1f6 46 * <li>true - The function sets factory default setting.
nyatla 3:0a94993be1f6 47 * <li>false -The function sets onchip memory configulation (default)
nyatla 3:0a94993be1f6 48 * </ul>
nyatla 3:0a94993be1f6 49 */
nyatla 3:0a94993be1f6 50 NetConfig(bool i_is_factory_default=false);
nyatla 37:fc4b4fd6a649 51 virtual ~NetConfig();
nyatla 11:c82a7b2899b0 52 /**
nyatla 11:c82a7b2899b0 53 * Set IPv4 ip address to instance.
nyatla 11:c82a7b2899b0 54 */
nyatla 11:c82a7b2899b0 55 void setIpAddr(unsigned char ip4,unsigned char ip3,unsigned char ip2,unsigned char ip1);
nyatla 58:03b89038b21a 56 void setIpAddr(const IpAddr& i_addr);
nyatla 11:c82a7b2899b0 57 /**
nyatla 11:c82a7b2899b0 58 * Set IPv4 network mask value to instance.
nyatla 11:c82a7b2899b0 59 */
nyatla 11:c82a7b2899b0 60 void setNetMask(unsigned char ip4,unsigned char ip3,unsigned char ip2,unsigned char ip1);
nyatla 58:03b89038b21a 61 void setNetMask(const IpAddr& i_mask);
nyatla 11:c82a7b2899b0 62 /**
nyatla 11:c82a7b2899b0 63 * Set IPv4 default gateway address to instance.
nyatla 11:c82a7b2899b0 64 */
nyatla 11:c82a7b2899b0 65 void setGateway(unsigned char ip4,unsigned char ip3,unsigned char ip2,unsigned char ip1);
nyatla 58:03b89038b21a 66 void setGateway(const IpAddr& i_addr);
nyatla 11:c82a7b2899b0 67 /**
nyatla 37:fc4b4fd6a649 68 * Set Zero configuration enable flag.
nyatla 37:fc4b4fd6a649 69 * @param v
nyatla 37:fc4b4fd6a649 70 * True, Zero configuration mode. The mimic will try DHCP and AutoIP configuration.
nyatla 37:fc4b4fd6a649 71 * ipaddress,netmask,gateway are ignored.
nyatla 37:fc4b4fd6a649 72 * False, Manual mode. The mimic will set ip address from on chip data.
nyatla 37:fc4b4fd6a649 73 */
nyatla 37:fc4b4fd6a649 74 void setZeroconf(bool v);
nyatla 37:fc4b4fd6a649 75 /**
nyatla 37:fc4b4fd6a649 76 * This function set a recommended HTTP port number to the application.
nyatla 37:fc4b4fd6a649 77 */
nyatla 37:fc4b4fd6a649 78 void setSrvHttpPort(unsigned short port);
nyatla 37:fc4b4fd6a649 79 /**
nyatla 37:fc4b4fd6a649 80 * Set mDNS operation flag.
nyatla 37:fc4b4fd6a649 81 * This function recommends to the application to provide mDNS service to network.
nyatla 37:fc4b4fd6a649 82 */
nyatla 37:fc4b4fd6a649 83 void setSrvMdns(bool i_enable);
nyatla 48:00d211aac2ec 84 /**
nyatla 48:00d211aac2ec 85 * Set UPnP operation flag.
nyatla 48:00d211aac2ec 86 * This function recommends to the application to provide UPnP service to network.
nyatla 48:00d211aac2ec 87 */
nyatla 48:00d211aac2ec 88 void setSrvUPnP(bool i_enable);
nyatla 48:00d211aac2ec 89 /**
nyatla 48:00d211aac2ec 90 * This function sets host name for mDNS.
nyatla 48:00d211aac2ec 91 * This value has effect to the mDNS a record.
nyatla 48:00d211aac2ec 92 * @param i_hostname
nyatla 48:00d211aac2ec 93 * host name.
nyatla 48:00d211aac2ec 94 * NULL terminated string.
nyatla 48:00d211aac2ec 95 */
nyatla 37:fc4b4fd6a649 96 void setHostName(const char* i_hostname);
nyatla 48:00d211aac2ec 97 /**
nyatla 48:00d211aac2ec 98 * This function sets host name for mDNS.
nyatla 48:00d211aac2ec 99 * This is effective for mDNS a record.
nyatla 48:00d211aac2ec 100 * @param i_hostname
nyatla 48:00d211aac2ec 101 * host name.
nyatla 48:00d211aac2ec 102 * @param i_len
nyatla 48:00d211aac2ec 103 * length of host name.
nyatla 48:00d211aac2ec 104 * maximum length is NyLPC_TcNetConfig_HOSTNAME_LEN-1
nyatla 48:00d211aac2ec 105 */
nyatla 37:fc4b4fd6a649 106 void setHostName(const char* i_hostname,int len);
nyatla 99:875f75e7e63e 107 const char* getHostName();
nyatla 37:fc4b4fd6a649 108 /**
nyatla 11:c82a7b2899b0 109 * Set ethernet mac address to instance.
nyatla 11:c82a7b2899b0 110 */
nyatla 11:c82a7b2899b0 111 void setEmac(unsigned char ip6,unsigned char ip5,unsigned char ip4,unsigned char ip3,unsigned char ip2,unsigned char ip1);
nyatla 48:00d211aac2ec 112 /**
nyatla 48:00d211aac2ec 113 * Set FrendlyName to instance.
nyatla 48:00d211aac2ec 114 * This value has effect to the mDNS name and UPnP frendlyName.
nyatla 48:00d211aac2ec 115 */
nyatla 48:00d211aac2ec 116 void setFriendlyName(const char* i_name);
nyatla 48:00d211aac2ec 117 void setUPnPManufactur(const char* i_name,const char* i_url);
nyatla 48:00d211aac2ec 118 void setUPnPModel(const char* i_name,const char* i_number,const char* i_url,const char* i_description);
nyatla 48:00d211aac2ec 119 void setUPnPSerialNumber(const char* i_number);
nyatla 48:00d211aac2ec 120 void setUPnPPresentationURL(const char* i_url);
nyatla 48:00d211aac2ec 121
nyatla 48:00d211aac2ec 122 /**
nyatla 48:00d211aac2ec 123 * Set Time base UDN value.
nyatla 48:00d211aac2ec 124 * UDN is expressed as follows.
nyatla 48:00d211aac2ec 125 * The value of the UDN, must be different for each device.
nyatla 48:00d211aac2ec 126 * [i_time_l]-[i_time_m]-[i_time_h|0x80]-[i_sq&0x3F|0x80]-[MAC ADDRESS]
nyatla 48:00d211aac2ec 127 */
nyatla 48:00d211aac2ec 128 void setUPnPUdn(unsigned long i_time_l,unsigned short i_time_m,unsigned short i_time_h,unsigned short i_sq);
nyatla 50:35e765380772 129 void setUPnPIcon(unsigned short i_width,unsigned short i_height,unsigned short i_depth,const char* i_mimetype,const char* i_url);
nyatla 48:00d211aac2ec 130 /**
nyatla 48:00d211aac2ec 131 * This function sets a custom UPnP device description to instance.
nyatla 48:00d211aac2ec 132 * All UPnP description will be overwritten if set it.
nyatla 48:00d211aac2ec 133 * @param i_ref_description
nyatla 48:00d211aac2ec 134 * Perfect description structure.
nyatla 48:00d211aac2ec 135 */
nyatla 48:00d211aac2ec 136 void setCustomUPnPDescription(const struct NyLPC_TUPnPDevDescDevice* i_ref_description);
nyatla 48:00d211aac2ec 137 /**
nyatla 48:00d211aac2ec 138 * This function sets a custom mDNS record to instance.
nyatla 48:00d211aac2ec 139 * All mDNS record will be overwritten if set it.
nyatla 48:00d211aac2ec 140 * @param i_ref_record
nyatla 48:00d211aac2ec 141 * Perfect DNS record structure.
nyatla 48:00d211aac2ec 142 */
nyatla 48:00d211aac2ec 143 void setCustomMdnsRecord(const struct NyLPC_TDnsRecord* i_ref_record);
nyatla 48:00d211aac2ec 144
nyatla 48:00d211aac2ec 145
nyatla 48:00d211aac2ec 146
nyatla 13:a71705c5e6fd 147 /**
nyatla 13:a71705c5e6fd 148 * Load configulation from text file.
nyatla 13:a71705c5e6fd 149 * <p>File format example
nyatla 13:a71705c5e6fd 150 * <pre>
nyatla 13:a71705c5e6fd 151 * macaddr=00:00:00:00:00:00
nyatla 37:fc4b4fd6a649 152 * host=MiMic01
nyatla 13:a71705c5e6fd 153 * ipaddr=192.168.0.1
nyatla 13:a71705c5e6fd 154 * netmask=255.255.255.0
nyatla 13:a71705c5e6fd 155 * gateway=192.168.0.254
nyatla 37:fc4b4fd6a649 156 * srv_http_port=80
nyatla 37:fc4b4fd6a649 157 * srv_mdns=yes
nyatla 13:a71705c5e6fd 158 * </pre>
nyatla 13:a71705c5e6fd 159 * <p>Keys
nyatla 13:a71705c5e6fd 160 * <ul>
nyatla 13:a71705c5e6fd 161 * <li>macaddr=[:macaddr:] - 48bit ethernet mac address that are separated by ':'</li>
nyatla 37:fc4b4fd6a649 162 * <li>ipaddr=[:ip:] || AUTO
nyatla 37:fc4b4fd6a649 163 * - 32 bit IP address or auto detection. AUTO will be to try DHCP and AUTOIP.
nyatla 37:fc4b4fd6a649 164 * </li>
nyatla 13:a71705c5e6fd 165 * <li>netmask=[:ip:]- 32 bit network mask value.</li>
nyatla 13:a71705c5e6fd 166 * <li>gateway=[:ip:] - 32 bit default gateway address.</li>
nyatla 37:fc4b4fd6a649 167 * <li>srv_http_port=[:UINT16:] - 16bit http service port number(not ZERO)</li>
nyatla 37:fc4b4fd6a649 168 * <li>srv_mdns=[yes|no] - mDNS service flag.</li>
nyatla 37:fc4b4fd6a649 169 * </ul>
nyatla 37:fc4b4fd6a649 170 * </p>
nyatla 37:fc4b4fd6a649 171 * <p>Default setting
nyatla 37:fc4b4fd6a649 172 * <ul>
nyatla 37:fc4b4fd6a649 173 * <li>macaddr=02:01:02:03:04:05 (In case of mbed it is preset value.)
nyatla 37:fc4b4fd6a649 174 * <li>host=MiMic020102030405
nyatla 37:fc4b4fd6a649 175 * <li>ipaddr =192.168.0.39
nyatla 37:fc4b4fd6a649 176 * <li>netmask=255.255.255.0
nyatla 37:fc4b4fd6a649 177 * <li>gateway=192.168.0.254
nyatla 37:fc4b4fd6a649 178 * <li>srv_http_port=80
nyatla 37:fc4b4fd6a649 179 * <li>srv_mdns=yes</li>
nyatla 13:a71705c5e6fd 180 * </ul>
nyatla 13:a71705c5e6fd 181 * </p>
nyatla 13:a71705c5e6fd 182 * Maximum line length is 31.
nyatla 13:a71705c5e6fd 183 * Specified values are override on-chip setting value.
nyatla 13:a71705c5e6fd 184 * If the same value appeared, then the last one is enabled.
nyatla 37:fc4b4fd6a649 185 * In case of ipaddr=AUTO, gateway and netmask are ignored.
nyatla 13:a71705c5e6fd 186 * </p>
nyatla 13:a71705c5e6fd 187 * @return
nyatla 13:a71705c5e6fd 188 * true if file read. false is not read.
nyatla 13:a71705c5e6fd 189 */
nyatla 14:4618692ec239 190 bool loadFromFile(const char* i_file);
nyatla 13:a71705c5e6fd 191 };
nyatla 13:a71705c5e6fd 192 }