This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
mbed/NetConfig.h@115:fa79286d8ea4, 2017-02-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |