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

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Wed Aug 07 16:43:32 2013 +0000
Revision:
49:d4334acc3ec3
Parent:
48:00d211aac2ec
Child:
50:35e765380772
backup; fix uuid writer overflow; ?????; Notify??????Net?????????????modUPnP??????????

Who changed what in which revision?

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