This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
mbed/NetConfig.cpp@115:fa79286d8ea4, 2017-02-24 (annotated)
- Committer:
- furutani
- Date:
- Fri Feb 24 04:43:41 2017 +0000
- Revision:
- 115:fa79286d8ea4
- Parent:
- 109:18f12ac01097
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 | #include "NetConfig.h" |
nyatla | 27:eb66b517efe6 | 2 | #include "NyLPC_flash.h" |
nyatla | 109:18f12ac01097 | 3 | #include "NyLPC_netif.h" |
nyatla | 29:e19aab0c4156 | 4 | #include "utils/PlatformInfo.h" |
nyatla | 13:a71705c5e6fd | 5 | #include <stdio.h> |
nyatla | 13:a71705c5e6fd | 6 | #include <stdlib.h> |
nyatla | 13:a71705c5e6fd | 7 | #include "mbed.h" |
nyatla | 27:eb66b517efe6 | 8 | |
nyatla | 48:00d211aac2ec | 9 | /** |
nyatla | 48:00d211aac2ec | 10 | * Default UPnP Description |
nyatla | 48:00d211aac2ec | 11 | */ |
nyatla | 48:00d211aac2ec | 12 | const static char* UPNP_DEVICE_TYPE ="urn:schemas-upnp-org:device:Basic:1"; |
nyatla | 70:2ed02b798004 | 13 | const static char* UPNP_DEFAULT_FRENDLY_NAME="MiMic Device"; |
nyatla | 51:45d42af201c2 | 14 | const static char* UPNP_DEFAULT_MANUFACTUR_NAME="nyatla.jp"; |
nyatla | 48:00d211aac2ec | 15 | const static char* UPNP_DEFAULT_MANUFACTUR_URL="http://nyatla.jp/"; |
nyatla | 48:00d211aac2ec | 16 | const static char* UPNP_DEFAULT_MODEL_NAME="MiMic UPnP device."; |
nyatla | 48:00d211aac2ec | 17 | const static char* STR_EMPTY=""; |
nyatla | 48:00d211aac2ec | 18 | const static char* UPNP_DEFAULT_PRESENTATION_URL="/"; |
nyatla | 50:35e765380772 | 19 | const static char* UPNP_DEFAULT_ICON_MIMETYPE="image/png"; |
nyatla | 50:35e765380772 | 20 | const static char* UPNP_DEFAULT_ICON_URL="./icon.png"; |
nyatla | 48:00d211aac2ec | 21 | |
nyatla | 48:00d211aac2ec | 22 | |
nyatla | 48:00d211aac2ec | 23 | /* |
nyatla | 48:00d211aac2ec | 24 | setUPnPFriendlyName |
nyatla | 48:00d211aac2ec | 25 | setUPnPManufactur(name,url,description) |
nyatla | 48:00d211aac2ec | 26 | setUPnPModel(name,number,url) |
nyatla | 48:00d211aac2ec | 27 | setUPnPPresentationUrl(name,number,url) |
nyatla | 48:00d211aac2ec | 28 | */ |
nyatla | 48:00d211aac2ec | 29 | |
nyatla | 48:00d211aac2ec | 30 | |
nyatla | 37:fc4b4fd6a649 | 31 | //default mdns records |
nyatla | 37:fc4b4fd6a649 | 32 | const static char* MDNS_SRV_HTTP="_http._tcp\0"; |
nyatla | 48:00d211aac2ec | 33 | //const static char* MDNS_NAME="LPC176x(MiMic)\0"; |
nyatla | 37:fc4b4fd6a649 | 34 | |
nyatla | 27:eb66b517efe6 | 35 | extern "C" void mbed_mac_address(char *s); |
nyatla | 37:fc4b4fd6a649 | 36 | |
nyatla | 37:fc4b4fd6a649 | 37 | |
nyatla | 37:fc4b4fd6a649 | 38 | static void overrideMacAddrIfmbed(NyLPC_TcNetConfig& v) |
nyatla | 27:eb66b517efe6 | 39 | { |
nyatla | 37:fc4b4fd6a649 | 40 | mbed_mac_address((char*)(v.super.eth_mac.addr)); |
nyatla | 37:fc4b4fd6a649 | 41 | //update default hostname |
nyatla | 37:fc4b4fd6a649 | 42 | strcpy(v.hostname,"MiMic"); |
nyatla | 48:00d211aac2ec | 43 | NyLPC_uitoa2(NyLPC_TcIPv4Config_getEtherMac000120203(&(v.super)),v.hostname+ 5,16,8); |
nyatla | 48:00d211aac2ec | 44 | NyLPC_uitoa2((NyLPC_TcIPv4Config_getEtherMac0405xxxx(&(v.super))>>16)&0xffff,v.hostname+13,16,4); |
nyatla | 51:45d42af201c2 | 45 | v.services.flags=NyLPC_TcNetConfig_SERVICE_FLAG_MDNS|NyLPC_TcNetConfig_SERVICE_FLAG_UPNP; |
nyatla | 37:fc4b4fd6a649 | 46 | } |
nyatla | 37:fc4b4fd6a649 | 47 | |
nyatla | 37:fc4b4fd6a649 | 48 | static void updateOnchipConfig(NyLPC_TcNetConfig& v) |
nyatla | 48:00d211aac2ec | 49 | { |
nyatla | 48:00d211aac2ec | 50 | struct NyLPC_TMiMicConfigulation cfg_image; |
nyatla | 27:eb66b517efe6 | 51 | //パラメータ→ROMイメージ変換 |
nyatla | 27:eb66b517efe6 | 52 | cfg_image.fast_boot=0xffffffff; |
nyatla | 37:fc4b4fd6a649 | 53 | cfg_image.mac_00_01_02_03=NyLPC_TcIPv4Config_getEtherMac000120203(&(v.super)); |
nyatla | 37:fc4b4fd6a649 | 54 | cfg_image.mac_04_05_xx_xx=NyLPC_TcIPv4Config_getEtherMac0405xxxx(&(v.super)); |
nyatla | 37:fc4b4fd6a649 | 55 | cfg_image.ipv4_addr_net =NyLPC_ntohl(v.super.ip_addr.v); |
nyatla | 37:fc4b4fd6a649 | 56 | cfg_image.ipv4_mask_net =NyLPC_ntohl(v.super.netmask.v); |
nyatla | 37:fc4b4fd6a649 | 57 | cfg_image.ipv4_drut_net =NyLPC_ntohl(v.super.dr_addr.v); |
nyatla | 37:fc4b4fd6a649 | 58 | //additional information |
nyatla | 37:fc4b4fd6a649 | 59 | cfg_image.ipv4_flags=v.tcp_mode; |
nyatla | 37:fc4b4fd6a649 | 60 | cfg_image.http_port=v.services.http_port; |
nyatla | 37:fc4b4fd6a649 | 61 | cfg_image.srv_flags=v.services.flags; |
nyatla | 37:fc4b4fd6a649 | 62 | strcpy(cfg_image.hostname,v.hostname); |
nyatla | 27:eb66b517efe6 | 63 | //FreeRTOSの停止 |
nyatla | 27:eb66b517efe6 | 64 | NyLPC_cIsr_enterCritical(); |
nyatla | 27:eb66b517efe6 | 65 | //Flashへの書き込み |
nyatla | 27:eb66b517efe6 | 66 | NyLPC_cMiMicConfiglation_updateConfigulation(&cfg_image); |
nyatla | 27:eb66b517efe6 | 67 | //FreeRTOSの復帰 |
nyatla | 27:eb66b517efe6 | 68 | NyLPC_cIsr_exitCritical(); |
nyatla | 27:eb66b517efe6 | 69 | } |
nyatla | 37:fc4b4fd6a649 | 70 | |
nyatla | 37:fc4b4fd6a649 | 71 | |
nyatla | 3:0a94993be1f6 | 72 | namespace MiMic |
nyatla | 3:0a94993be1f6 | 73 | { |
nyatla | 48:00d211aac2ec | 74 | NetConfig::NetConfig(bool i_is_factory_default) |
nyatla | 48:00d211aac2ec | 75 | { |
nyatla | 48:00d211aac2ec | 76 | NyLPC_cNetConfig_initialize(&(this->_inst),i_is_factory_default); |
nyatla | 48:00d211aac2ec | 77 | this->_ref_custom_dns_record=NULL; |
nyatla | 48:00d211aac2ec | 78 | this->_ref_custom_upnp_desc=NULL; |
nyatla | 27:eb66b517efe6 | 79 | |
nyatla | 48:00d211aac2ec | 80 | //check mbed |
nyatla | 88:89598b2097fa | 81 | if(PlatformInfo::getPlatformType()==PlatformInfo::PF_MBED) { |
nyatla | 88:89598b2097fa | 82 | //mbedチップからMACアドレスを取得 |
nyatla | 88:89598b2097fa | 83 | if(!NyLPC_cMiMicConfiglation_hasUserConfigulation()) { |
nyatla | 88:89598b2097fa | 84 | //is 1st read? |
nyatla | 88:89598b2097fa | 85 | //mbed override |
nyatla | 88:89598b2097fa | 86 | overrideMacAddrIfmbed((this->_inst)); |
nyatla | 88:89598b2097fa | 87 | //save |
nyatla | 88:89598b2097fa | 88 | updateOnchipConfig((this->_inst)); |
nyatla | 88:89598b2097fa | 89 | } else { |
nyatla | 88:89598b2097fa | 90 | //2nd read |
nyatla | 88:89598b2097fa | 91 | if(i_is_factory_default) { |
nyatla | 88:89598b2097fa | 92 | //mbed override |
nyatla | 88:89598b2097fa | 93 | overrideMacAddrIfmbed((this->_inst)); |
nyatla | 88:89598b2097fa | 94 | } else { |
nyatla | 88:89598b2097fa | 95 | //nothing to do |
nyatla | 88:89598b2097fa | 96 | } |
nyatla | 88:89598b2097fa | 97 | } |
nyatla | 3:0a94993be1f6 | 98 | } |
nyatla | 37:fc4b4fd6a649 | 99 | |
nyatla | 48:00d211aac2ec | 100 | //updateUUID |
nyatla | 50:35e765380772 | 101 | this->setUPnPUdn(0xe29f7100,0x4ba2,0x01e0,0); |
nyatla | 48:00d211aac2ec | 102 | this->_upnp_desc.device_type=UPNP_DEVICE_TYPE; |
nyatla | 48:00d211aac2ec | 103 | this->_upnp_desc.frendly_name=UPNP_DEFAULT_FRENDLY_NAME; |
nyatla | 48:00d211aac2ec | 104 | this->_upnp_desc.manufacturer=UPNP_DEFAULT_MANUFACTUR_NAME; |
nyatla | 48:00d211aac2ec | 105 | this->_upnp_desc.manufacturer_url=UPNP_DEFAULT_MANUFACTUR_URL; |
nyatla | 48:00d211aac2ec | 106 | this->_upnp_desc.model_descriprion=STR_EMPTY; |
nyatla | 48:00d211aac2ec | 107 | this->_upnp_desc.model_name=UPNP_DEFAULT_MODEL_NAME; |
nyatla | 48:00d211aac2ec | 108 | this->_upnp_desc.model_number=NULL; |
nyatla | 48:00d211aac2ec | 109 | this->_upnp_desc.model_url=NULL; |
nyatla | 48:00d211aac2ec | 110 | this->_upnp_desc.serial_number=STR_EMPTY; |
nyatla | 50:35e765380772 | 111 | this->_upnp_desc.udn=this->_udn;//pointer |
nyatla | 48:00d211aac2ec | 112 | this->_upnp_desc.upc=NULL; |
nyatla | 50:35e765380772 | 113 | this->_upnp_icon.width=32; |
nyatla | 50:35e765380772 | 114 | this->_upnp_icon.height=32; |
nyatla | 50:35e765380772 | 115 | this->_upnp_icon.depth=8; |
nyatla | 50:35e765380772 | 116 | this->_upnp_icon.mimetype=UPNP_DEFAULT_ICON_MIMETYPE; |
nyatla | 50:35e765380772 | 117 | this->_upnp_icon.url=UPNP_DEFAULT_ICON_URL; |
nyatla | 50:35e765380772 | 118 | this->_upnp_desc.icons=&this->_upnp_icon;//pointer |
nyatla | 48:00d211aac2ec | 119 | this->_upnp_desc.presentation_url=UPNP_DEFAULT_PRESENTATION_URL; |
nyatla | 48:00d211aac2ec | 120 | this->_upnp_desc.number_of_devices=0; |
nyatla | 48:00d211aac2ec | 121 | this->_upnp_desc.number_of_service=0; |
nyatla | 50:35e765380772 | 122 | this->_upnp_desc.number_of_icon=1; |
nyatla | 48:00d211aac2ec | 123 | this->_upnp_desc.devices=NULL; |
nyatla | 48:00d211aac2ec | 124 | this->_upnp_desc.services=NULL; |
nyatla | 50:35e765380772 | 125 | //mdns |
nyatla | 50:35e765380772 | 126 | this->_dns_record.name=UPNP_DEFAULT_FRENDLY_NAME; |
nyatla | 50:35e765380772 | 127 | this->_dns_record.a=this->_inst.hostname;//pointer |
nyatla | 50:35e765380772 | 128 | this->_dns_record.num_of_srv=1; |
nyatla | 50:35e765380772 | 129 | this->_srv_record.protocol=MDNS_SRV_HTTP; |
nyatla | 50:35e765380772 | 130 | this->_srv_record.port=this->_inst.services.http_port; |
nyatla | 50:35e765380772 | 131 | this->_dns_record.srv=&(this->_srv_record); |
nyatla | 50:35e765380772 | 132 | |
nyatla | 48:00d211aac2ec | 133 | } |
nyatla | 48:00d211aac2ec | 134 | |
nyatla | 48:00d211aac2ec | 135 | NetConfig::~NetConfig() |
nyatla | 48:00d211aac2ec | 136 | { |
nyatla | 48:00d211aac2ec | 137 | NyLPC_cNetConfig_finalize(&(this->_inst)); |
nyatla | 48:00d211aac2ec | 138 | } |
nyatla | 48:00d211aac2ec | 139 | |
nyatla | 48:00d211aac2ec | 140 | const struct NyLPC_TUPnPDevDescDevice* NetConfig::refUPnPDevDesc()const |
nyatla | 48:00d211aac2ec | 141 | { |
nyatla | 48:00d211aac2ec | 142 | return this->_ref_custom_upnp_desc!=NULL?this->_ref_custom_upnp_desc:&this->_upnp_desc; |
nyatla | 48:00d211aac2ec | 143 | } |
nyatla | 48:00d211aac2ec | 144 | /** internal dns record*/ |
nyatla | 48:00d211aac2ec | 145 | const struct NyLPC_TDnsRecord* NetConfig::refMdnsRecord()const |
nyatla | 48:00d211aac2ec | 146 | { |
nyatla | 48:00d211aac2ec | 147 | return this->_ref_custom_dns_record!=NULL?this->_ref_custom_dns_record:&this->_dns_record; |
nyatla | 48:00d211aac2ec | 148 | } |
nyatla | 48:00d211aac2ec | 149 | |
nyatla | 48:00d211aac2ec | 150 | |
nyatla | 48:00d211aac2ec | 151 | void NetConfig::setZeroconf(bool v) |
nyatla | 48:00d211aac2ec | 152 | { |
nyatla | 48:00d211aac2ec | 153 | this->_inst.tcp_mode=(v?NyLPC_TcNetConfig_IPV4_FLAG_MODE_APIPA:NyLPC_TcNetConfig_IPV4_FLAG_MODE_MANUAL); |
nyatla | 48:00d211aac2ec | 154 | } |
nyatla | 48:00d211aac2ec | 155 | /** |
nyatla | 48:00d211aac2ec | 156 | * Set IPv4 ip address to instance. |
nyatla | 48:00d211aac2ec | 157 | */ |
nyatla | 48:00d211aac2ec | 158 | void NetConfig::setIpAddr(unsigned char ip1,unsigned char ip2,unsigned char ip3,unsigned char ip4) |
nyatla | 48:00d211aac2ec | 159 | { |
nyatla | 48:00d211aac2ec | 160 | NyLPC_TIPv4Addr_set(&(this->_inst.super.ip_addr),ip1,ip2,ip3,ip4); |
nyatla | 48:00d211aac2ec | 161 | } |
nyatla | 58:03b89038b21a | 162 | |
nyatla | 58:03b89038b21a | 163 | void NetConfig::setIpAddr(const IpAddr& i_addr) |
nyatla | 58:03b89038b21a | 164 | { |
nyatla | 58:03b89038b21a | 165 | this->_inst.super.ip_addr=i_addr.addr.v4; |
nyatla | 58:03b89038b21a | 166 | } |
nyatla | 58:03b89038b21a | 167 | |
nyatla | 48:00d211aac2ec | 168 | /** |
nyatla | 48:00d211aac2ec | 169 | * Set IPv4 network mask value to instance. |
nyatla | 48:00d211aac2ec | 170 | */ |
nyatla | 48:00d211aac2ec | 171 | void NetConfig::setNetMask(unsigned char ip1,unsigned char ip2,unsigned char ip3,unsigned char ip4) |
nyatla | 48:00d211aac2ec | 172 | { |
nyatla | 48:00d211aac2ec | 173 | NyLPC_TIPv4Addr_set(&(this->_inst.super.netmask),ip1,ip2,ip3,ip4); |
nyatla | 48:00d211aac2ec | 174 | } |
nyatla | 58:03b89038b21a | 175 | void NetConfig::setNetMask(const IpAddr& i_mask) |
nyatla | 58:03b89038b21a | 176 | { |
nyatla | 58:03b89038b21a | 177 | this->_inst.super.netmask=i_mask.addr.v4; |
nyatla | 58:03b89038b21a | 178 | } |
nyatla | 58:03b89038b21a | 179 | |
nyatla | 48:00d211aac2ec | 180 | /** |
nyatla | 48:00d211aac2ec | 181 | * Set IPv4 default gateway address to instance. |
nyatla | 48:00d211aac2ec | 182 | */ |
nyatla | 48:00d211aac2ec | 183 | void NetConfig::setGateway(unsigned char ip1,unsigned char ip2,unsigned char ip3,unsigned char ip4) |
nyatla | 48:00d211aac2ec | 184 | { |
nyatla | 48:00d211aac2ec | 185 | NyLPC_TIPv4Addr_set(&(this->_inst.super.dr_addr),ip1,ip2,ip3,ip4); |
nyatla | 48:00d211aac2ec | 186 | } |
nyatla | 58:03b89038b21a | 187 | void NetConfig::setGateway(const IpAddr& i_addr) |
nyatla | 58:03b89038b21a | 188 | { |
nyatla | 58:03b89038b21a | 189 | this->_inst.super.dr_addr=i_addr.addr.v4; |
nyatla | 58:03b89038b21a | 190 | } |
nyatla | 58:03b89038b21a | 191 | |
nyatla | 48:00d211aac2ec | 192 | /** |
nyatla | 48:00d211aac2ec | 193 | * Set ethernet mac address to instance. |
nyatla | 48:00d211aac2ec | 194 | */ |
nyatla | 48:00d211aac2ec | 195 | void NetConfig::setEmac(unsigned char a1,unsigned char a2,unsigned char a3,unsigned char a4,unsigned char a5,unsigned char a6) |
nyatla | 48:00d211aac2ec | 196 | { |
nyatla | 48:00d211aac2ec | 197 | NyLPC_TEthAddr_set(&(this->_inst.super.eth_mac),a1,a2,a3,a4,a5,a6); |
nyatla | 48:00d211aac2ec | 198 | //update only node field |
nyatla | 48:00d211aac2ec | 199 | for(NyLPC_TInt16 i=0;i<6;i++){ |
nyatla | 48:00d211aac2ec | 200 | NyLPC_uitoa2(this->_inst.super.eth_mac.addr[i],&this->_udn[5+24+i*2],16,2); |
nyatla | 37:fc4b4fd6a649 | 201 | } |
nyatla | 37:fc4b4fd6a649 | 202 | |
nyatla | 48:00d211aac2ec | 203 | } |
nyatla | 48:00d211aac2ec | 204 | void NetConfig::setSrvHttpPort(unsigned short port) |
nyatla | 48:00d211aac2ec | 205 | { |
nyatla | 50:35e765380772 | 206 | this->_srv_record.port=this->_inst.services.http_port=port; |
nyatla | 48:00d211aac2ec | 207 | } |
nyatla | 48:00d211aac2ec | 208 | void NetConfig::setSrvMdns(bool i_enable) |
nyatla | 48:00d211aac2ec | 209 | { |
nyatla | 48:00d211aac2ec | 210 | if(i_enable) { |
nyatla | 48:00d211aac2ec | 211 | this->_inst.services.flags|=NyLPC_TcNetConfig_SERVICE_FLAG_MDNS; |
nyatla | 48:00d211aac2ec | 212 | } else { |
nyatla | 48:00d211aac2ec | 213 | this->_inst.services.flags&=(~NyLPC_TcNetConfig_SERVICE_FLAG_MDNS); |
nyatla | 48:00d211aac2ec | 214 | } |
nyatla | 48:00d211aac2ec | 215 | } |
nyatla | 48:00d211aac2ec | 216 | void NetConfig::setSrvUPnP(bool i_enable) |
nyatla | 48:00d211aac2ec | 217 | { |
nyatla | 48:00d211aac2ec | 218 | if(i_enable) { |
nyatla | 48:00d211aac2ec | 219 | this->_inst.services.flags|=NyLPC_TcNetConfig_SERVICE_FLAG_UPNP; |
nyatla | 48:00d211aac2ec | 220 | } else { |
nyatla | 48:00d211aac2ec | 221 | this->_inst.services.flags&=(~NyLPC_TcNetConfig_SERVICE_FLAG_UPNP); |
nyatla | 48:00d211aac2ec | 222 | } |
nyatla | 48:00d211aac2ec | 223 | } |
nyatla | 48:00d211aac2ec | 224 | |
nyatla | 48:00d211aac2ec | 225 | void NetConfig::setHostName(const char* i_hostname) |
nyatla | 48:00d211aac2ec | 226 | { |
nyatla | 48:00d211aac2ec | 227 | this->setHostName(i_hostname,strlen(i_hostname)); |
nyatla | 48:00d211aac2ec | 228 | } |
nyatla | 48:00d211aac2ec | 229 | void NetConfig::setHostName(const char* i_hostname,int len) |
nyatla | 48:00d211aac2ec | 230 | { |
nyatla | 48:00d211aac2ec | 231 | int l=(len>(NyLPC_TcNetConfig_HOSTNAME_LEN-1))?NyLPC_TcNetConfig_HOSTNAME_LEN-1:len; |
nyatla | 48:00d211aac2ec | 232 | memcpy(this->_inst.hostname,i_hostname,l); |
nyatla | 48:00d211aac2ec | 233 | *(this->_inst.hostname+l)='\0'; |
nyatla | 48:00d211aac2ec | 234 | } |
nyatla | 99:875f75e7e63e | 235 | const char* NetConfig::getHostName() |
nyatla | 99:875f75e7e63e | 236 | { |
nyatla | 99:875f75e7e63e | 237 | return this->_inst.hostname; |
nyatla | 99:875f75e7e63e | 238 | } |
nyatla | 99:875f75e7e63e | 239 | |
nyatla | 48:00d211aac2ec | 240 | void NetConfig::setFriendlyName(const char* i_name) |
nyatla | 48:00d211aac2ec | 241 | { |
nyatla | 48:00d211aac2ec | 242 | this->_dns_record.name=this->_upnp_desc.frendly_name=(i_name==NULL?STR_EMPTY:i_name); |
nyatla | 48:00d211aac2ec | 243 | } |
nyatla | 48:00d211aac2ec | 244 | void NetConfig::setUPnPManufactur(const char* i_name,const char* i_url) |
nyatla | 48:00d211aac2ec | 245 | { |
nyatla | 48:00d211aac2ec | 246 | this->_upnp_desc.manufacturer=i_name==NULL?STR_EMPTY:i_name; |
nyatla | 48:00d211aac2ec | 247 | this->_upnp_desc.manufacturer_url=i_name==NULL?STR_EMPTY:i_url; |
nyatla | 48:00d211aac2ec | 248 | } |
nyatla | 48:00d211aac2ec | 249 | void NetConfig::setUPnPModel(const char* i_name,const char* i_number,const char* i_url,const char* i_description) |
nyatla | 48:00d211aac2ec | 250 | { |
nyatla | 48:00d211aac2ec | 251 | this->_upnp_desc.model_descriprion=i_description==NULL?STR_EMPTY:i_description; |
nyatla | 48:00d211aac2ec | 252 | this->_upnp_desc.model_name=i_name==NULL?STR_EMPTY:i_name; |
nyatla | 48:00d211aac2ec | 253 | this->_upnp_desc.model_number=i_number; |
nyatla | 48:00d211aac2ec | 254 | this->_upnp_desc.model_url=i_url; |
nyatla | 48:00d211aac2ec | 255 | } |
nyatla | 48:00d211aac2ec | 256 | void NetConfig::setUPnPSerialNumber(const char* i_number) |
nyatla | 48:00d211aac2ec | 257 | { |
nyatla | 48:00d211aac2ec | 258 | this->_upnp_desc.serial_number=i_number; |
nyatla | 48:00d211aac2ec | 259 | } |
nyatla | 48:00d211aac2ec | 260 | void NetConfig::setUPnPUdn(unsigned long i_time_l,unsigned short i_time_m,unsigned short i_time_h,unsigned short i_sq) |
nyatla | 48:00d211aac2ec | 261 | { |
nyatla | 48:00d211aac2ec | 262 | NyLPC_TcUuid_t uuid; |
nyatla | 48:00d211aac2ec | 263 | NyLPC_cUuid_initialize(&uuid); |
nyatla | 48:00d211aac2ec | 264 | NyLPC_cUuid_setTimeBase(&uuid,i_time_l,(i_time_h<<16)|i_time_m,i_sq,&(this->_inst.super.eth_mac)); |
nyatla | 48:00d211aac2ec | 265 | strcpy(this->_udn,"uuid:"); |
nyatla | 48:00d211aac2ec | 266 | NyLPC_cUuid_toString(&uuid,this->_udn+5); |
nyatla | 49:d4334acc3ec3 | 267 | NyLPC_cUuid_finalize(&uuid); |
nyatla | 48:00d211aac2ec | 268 | } |
nyatla | 50:35e765380772 | 269 | void NetConfig::setUPnPIcon(unsigned short i_width,unsigned short i_height,unsigned short i_depth,const char* i_mimetype,const char* i_url) |
nyatla | 50:35e765380772 | 270 | { |
nyatla | 50:35e765380772 | 271 | this->_upnp_icon.width=i_width; |
nyatla | 50:35e765380772 | 272 | this->_upnp_icon.height=i_height; |
nyatla | 50:35e765380772 | 273 | this->_upnp_icon.depth=i_depth; |
nyatla | 50:35e765380772 | 274 | this->_upnp_icon.mimetype=i_mimetype; |
nyatla | 50:35e765380772 | 275 | this->_upnp_icon.url=i_url; |
nyatla | 50:35e765380772 | 276 | } |
nyatla | 48:00d211aac2ec | 277 | |
nyatla | 48:00d211aac2ec | 278 | void NetConfig::setUPnPPresentationURL(const char* i_url) |
nyatla | 48:00d211aac2ec | 279 | { |
nyatla | 48:00d211aac2ec | 280 | this->_upnp_desc.presentation_url=i_url; |
nyatla | 48:00d211aac2ec | 281 | } |
nyatla | 48:00d211aac2ec | 282 | void NetConfig::setCustomUPnPDescription(const struct NyLPC_TUPnPDevDescDevice* i_ref_description) |
nyatla | 48:00d211aac2ec | 283 | { |
nyatla | 48:00d211aac2ec | 284 | this->_ref_custom_upnp_desc=i_ref_description; |
nyatla | 48:00d211aac2ec | 285 | } |
nyatla | 48:00d211aac2ec | 286 | void NetConfig::setCustomMdnsRecord(const struct NyLPC_TDnsRecord* i_ref_record) |
nyatla | 48:00d211aac2ec | 287 | { |
nyatla | 48:00d211aac2ec | 288 | this->_ref_custom_dns_record=i_ref_record; |
nyatla | 48:00d211aac2ec | 289 | } |
nyatla | 48:00d211aac2ec | 290 | |
nyatla | 48:00d211aac2ec | 291 | bool NetConfig::loadFromFile(const char* i_file) |
nyatla | 48:00d211aac2ec | 292 | { |
nyatla | 51:45d42af201c2 | 293 | #define NUMBER_OF_NAME 8 |
nyatla | 48:00d211aac2ec | 294 | const static char* tbl[]= { |
nyatla | 48:00d211aac2ec | 295 | "macaddr", //0 |
nyatla | 48:00d211aac2ec | 296 | "ipaddr", //1 |
nyatla | 48:00d211aac2ec | 297 | "netmask", //2 |
nyatla | 48:00d211aac2ec | 298 | "gateway", //3 |
nyatla | 48:00d211aac2ec | 299 | "srv_http_port",//4 |
nyatla | 48:00d211aac2ec | 300 | "srv_mdns",//5 |
nyatla | 51:45d42af201c2 | 301 | "srv_upnp" //6 |
nyatla | 51:45d42af201c2 | 302 | "host",//7 |
nyatla | 48:00d211aac2ec | 303 | }; |
nyatla | 48:00d211aac2ec | 304 | char tmp[32]; |
nyatla | 48:00d211aac2ec | 305 | union { |
nyatla | 48:00d211aac2ec | 306 | unsigned char u8[6]; |
nyatla | 48:00d211aac2ec | 307 | NyLPC_TUInt32 u32; |
nyatla | 48:00d211aac2ec | 308 | } v; |
nyatla | 48:00d211aac2ec | 309 | const char* p;//pointer to read |
nyatla | 48:00d211aac2ec | 310 | const char* key; |
nyatla | 48:00d211aac2ec | 311 | const char* t; |
nyatla | 48:00d211aac2ec | 312 | int l; |
nyatla | 48:00d211aac2ec | 313 | FILE* fp = fopen(i_file,"r"); |
nyatla | 48:00d211aac2ec | 314 | if(fp==NULL) { |
nyatla | 48:00d211aac2ec | 315 | return false; |
nyatla | 48:00d211aac2ec | 316 | } |
nyatla | 48:00d211aac2ec | 317 | //read from values |
nyatla | 48:00d211aac2ec | 318 | while(fgets(tmp,31,fp)) { |
nyatla | 48:00d211aac2ec | 319 | p=NyLPC_cFormatTextReader_seekSpace(tmp)+tmp;//skip space |
nyatla | 48:00d211aac2ec | 320 | l=NyLPC_cFormatTextReader_readWord(p,&key); |
nyatla | 51:45d42af201c2 | 321 | for(int i=0; i<NUMBER_OF_NAME; i++) { |
nyatla | 48:00d211aac2ec | 322 | if(l>=0 && NyLPC_strnicmp(key,tbl[i],l)==0) { |
nyatla | 48:00d211aac2ec | 323 | p+=l;//skip keyname |
nyatla | 48:00d211aac2ec | 324 | p=NyLPC_cFormatTextReader_seekSpace(p)+p;//skip space |
nyatla | 48:00d211aac2ec | 325 | if(*p!='=') { |
nyatla | 48:00d211aac2ec | 326 | break;//check equal |
nyatla | 48:00d211aac2ec | 327 | } |
nyatla | 48:00d211aac2ec | 328 | p++; |
nyatla | 48:00d211aac2ec | 329 | //skip space |
nyatla | 48:00d211aac2ec | 330 | p=NyLPC_cFormatTextReader_seekSpace(p)+p;//skip space |
nyatla | 48:00d211aac2ec | 331 | switch(i) { |
nyatla | 37:fc4b4fd6a649 | 332 | case 0://macaddr |
nyatla | 48:00d211aac2ec | 333 | if(NyLPC_cFormatTextReader_readMacAddr(p,v.u8)!=0) { |
nyatla | 37:fc4b4fd6a649 | 334 | this->setEmac(v.u8[0],v.u8[1],v.u8[2],v.u8[3],v.u8[4],v.u8[5]); |
nyatla | 13:a71705c5e6fd | 335 | } |
nyatla | 13:a71705c5e6fd | 336 | break; |
nyatla | 37:fc4b4fd6a649 | 337 | case 1://ipaddr |
nyatla | 48:00d211aac2ec | 338 | if(NyLPC_cFormatTextReader_readIpAddr(p,v.u8)!=0) { |
nyatla | 37:fc4b4fd6a649 | 339 | this->setIpAddr(v.u8[0],v.u8[1],v.u8[2],v.u8[3]); |
nyatla | 37:fc4b4fd6a649 | 340 | this->setZeroconf(false); |
nyatla | 48:00d211aac2ec | 341 | } else { |
nyatla | 48:00d211aac2ec | 342 | if(NyLPC_cFormatTextReader_readWord(p,&t)==4) { |
nyatla | 48:00d211aac2ec | 343 | if(NyLPC_strnicmp(t,"auto",4)==0) { |
nyatla | 37:fc4b4fd6a649 | 344 | this->setZeroconf(true); |
nyatla | 37:fc4b4fd6a649 | 345 | } |
nyatla | 37:fc4b4fd6a649 | 346 | } |
nyatla | 13:a71705c5e6fd | 347 | } |
nyatla | 13:a71705c5e6fd | 348 | break; |
nyatla | 13:a71705c5e6fd | 349 | case 2: |
nyatla | 48:00d211aac2ec | 350 | if(NyLPC_cFormatTextReader_readIpAddr(p,v.u8)!=0) { |
nyatla | 37:fc4b4fd6a649 | 351 | this->setNetMask(v.u8[0],v.u8[1],v.u8[2],v.u8[3]); |
nyatla | 13:a71705c5e6fd | 352 | } |
nyatla | 13:a71705c5e6fd | 353 | break; |
nyatla | 13:a71705c5e6fd | 354 | case 3: |
nyatla | 48:00d211aac2ec | 355 | if(NyLPC_cFormatTextReader_readIpAddr(p,v.u8)!=0) { |
nyatla | 37:fc4b4fd6a649 | 356 | this->setGateway(v.u8[0],v.u8[1],v.u8[2],v.u8[3]); |
nyatla | 37:fc4b4fd6a649 | 357 | } |
nyatla | 37:fc4b4fd6a649 | 358 | break; |
nyatla | 37:fc4b4fd6a649 | 359 | case 4: |
nyatla | 48:00d211aac2ec | 360 | if(NyLPC_cFormatTextReader_readUInt(p,&(v.u32))!=0) { |
nyatla | 37:fc4b4fd6a649 | 361 | this->setSrvHttpPort((unsigned short)v.u32); |
nyatla | 37:fc4b4fd6a649 | 362 | } |
nyatla | 37:fc4b4fd6a649 | 363 | break; |
nyatla | 37:fc4b4fd6a649 | 364 | case 5: |
nyatla | 37:fc4b4fd6a649 | 365 | l=NyLPC_cFormatTextReader_readWord(p,&t); |
nyatla | 48:00d211aac2ec | 366 | if((*t=='y' || *t=='Y')) { |
nyatla | 37:fc4b4fd6a649 | 367 | this->setSrvMdns(true); |
nyatla | 48:00d211aac2ec | 368 | } else if((*t=='n' || *t=='N')) { |
nyatla | 37:fc4b4fd6a649 | 369 | this->setSrvMdns(false); |
nyatla | 37:fc4b4fd6a649 | 370 | } |
nyatla | 37:fc4b4fd6a649 | 371 | break; |
nyatla | 37:fc4b4fd6a649 | 372 | case 6: |
nyatla | 37:fc4b4fd6a649 | 373 | l=NyLPC_cFormatTextReader_readWord(p,&t); |
nyatla | 51:45d42af201c2 | 374 | if((*t=='y' || *t=='Y')) { |
nyatla | 51:45d42af201c2 | 375 | this->setSrvUPnP(true); |
nyatla | 51:45d42af201c2 | 376 | } else if((*t=='n' || *t=='N')) { |
nyatla | 51:45d42af201c2 | 377 | this->setSrvUPnP(false); |
nyatla | 51:45d42af201c2 | 378 | } |
nyatla | 51:45d42af201c2 | 379 | break; |
nyatla | 51:45d42af201c2 | 380 | case 7: |
nyatla | 51:45d42af201c2 | 381 | l=NyLPC_cFormatTextReader_readWord(p,&t); |
nyatla | 48:00d211aac2ec | 382 | if(l>1) { |
nyatla | 37:fc4b4fd6a649 | 383 | this->setHostName(t,l); |
nyatla | 13:a71705c5e6fd | 384 | } |
nyatla | 13:a71705c5e6fd | 385 | break; |
nyatla | 13:a71705c5e6fd | 386 | default: |
nyatla | 13:a71705c5e6fd | 387 | break; |
nyatla | 13:a71705c5e6fd | 388 | } |
nyatla | 13:a71705c5e6fd | 389 | } |
nyatla | 13:a71705c5e6fd | 390 | } |
nyatla | 37:fc4b4fd6a649 | 391 | } |
nyatla | 48:00d211aac2ec | 392 | fclose(fp); |
nyatla | 48:00d211aac2ec | 393 | return true; |
nyatla | 48:00d211aac2ec | 394 | } |
nyatla | 88:89598b2097fa | 395 | }; |