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

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Wed Nov 19 14:45:17 2014 +0000
Revision:
109:18f12ac01097
Parent:
108:8dae2a2682e7
Child:
110:257739f9b31e
new MiMicIP API;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 3:0a94993be1f6 1 ////////////////////////////////////////////////////////////////////////////////
nyatla 3:0a94993be1f6 2 // Net.h
nyatla 3:0a94993be1f6 3 ////////////////////////////////////////////////////////////////////////////////
nyatla 3:0a94993be1f6 4 #include "Net.h"
nyatla 3:0a94993be1f6 5 #include "NetConfig.h"
nyatla 37:fc4b4fd6a649 6 #include "mbed.h"
nyatla 108:8dae2a2682e7 7
nyatla 3:0a94993be1f6 8 namespace MiMic
nyatla 3:0a94993be1f6 9 {
nyatla 51:45d42af201c2 10
nyatla 50:35e765380772 11 const char* Net::UPNP_ROOT_PATH="upnp";
nyatla 50:35e765380772 12
nyatla 37:fc4b4fd6a649 13 Net::Net()
nyatla 3:0a94993be1f6 14 {
nyatla 109:18f12ac01097 15 NyLPC_cNetIf_initialize();
nyatla 37:fc4b4fd6a649 16 this->_mdns=NULL;
nyatla 48:00d211aac2ec 17 this->_upnp=NULL;
nyatla 3:0a94993be1f6 18 }
nyatla 3:0a94993be1f6 19 Net::~Net()
nyatla 3:0a94993be1f6 20 {
nyatla 109:18f12ac01097 21 NyLPC_cNetIf_finalize();
nyatla 3:0a94993be1f6 22 }
nyatla 37:fc4b4fd6a649 23 void Net::start(NetConfig& i_cfg)
nyatla 37:fc4b4fd6a649 24 {
nyatla 48:00d211aac2ec 25 NyLPC_TcNetConfig_t* base_cfg=i_cfg.refBaseInstance();
nyatla 37:fc4b4fd6a649 26 //DHCP & autoIP request
nyatla 108:8dae2a2682e7 27 if((base_cfg->tcp_mode & NyLPC_TcNetConfig_IPV4_FLAG_MODE_MASK)!=0){
nyatla 37:fc4b4fd6a649 28 for(;;){
nyatla 37:fc4b4fd6a649 29 //DHCP
nyatla 48:00d211aac2ec 30 if((base_cfg->tcp_mode & NyLPC_TcNetConfig_IPV4_FLAG_MODE_DHCP)!=0){
nyatla 109:18f12ac01097 31 if(NyLPC_cNetIf_requestAddrDhcp(&(base_cfg->super),3)){
nyatla 37:fc4b4fd6a649 32 break;
nyatla 37:fc4b4fd6a649 33 }
nyatla 37:fc4b4fd6a649 34 }
nyatla 37:fc4b4fd6a649 35 //AUTOIP
nyatla 48:00d211aac2ec 36 if((base_cfg->tcp_mode & NyLPC_TcNetConfig_IPV4_FLAG_MODE_AUTOIP)!=0){
nyatla 109:18f12ac01097 37 if(NyLPC_cNetIf_requestAddrApipa(&(base_cfg->super),3)){
nyatla 37:fc4b4fd6a649 38 break;
nyatla 37:fc4b4fd6a649 39 }
nyatla 37:fc4b4fd6a649 40 }
nyatla 37:fc4b4fd6a649 41 }
nyatla 37:fc4b4fd6a649 42 }
nyatla 37:fc4b4fd6a649 43 //start mDNS
nyatla 51:45d42af201c2 44 if((base_cfg->services.flags & NyLPC_TcNetConfig_SERVICE_FLAG_MDNS) !=0){
nyatla 37:fc4b4fd6a649 45 this->_mdns=(NyLPC_TcMDnsServer_t*)malloc(sizeof(NyLPC_TcMDnsServer_t));
nyatla 48:00d211aac2ec 46 NyLPC_cMDnsServer_initialize(this->_mdns,i_cfg.refMdnsRecord());
nyatla 37:fc4b4fd6a649 47 }
nyatla 48:00d211aac2ec 48 //start UPnP
nyatla 51:45d42af201c2 49 if((base_cfg->services.flags & NyLPC_TcNetConfig_SERVICE_FLAG_UPNP) !=0){
nyatla 48:00d211aac2ec 50 this->_upnp=(NyLPC_TcUPnP_t*)malloc(sizeof(NyLPC_TcUPnP_t));
nyatla 50:35e765380772 51 NyLPC_cUPnP_initialize(this->_upnp,i_cfg.getHttpPort(),UPNP_ROOT_PATH,i_cfg.refUPnPDevDesc());
nyatla 48:00d211aac2ec 52
nyatla 48:00d211aac2ec 53 }
nyatla 109:18f12ac01097 54 NyLPC_cNetIf_start(&(base_cfg->super));
nyatla 49:d4334acc3ec3 55 if(this->_upnp!=NULL){
nyatla 49:d4334acc3ec3 56 NyLPC_cUPnP_start(this->_upnp);
nyatla 50:35e765380772 57 }
nyatla 37:fc4b4fd6a649 58 }
nyatla 37:fc4b4fd6a649 59 void Net::stop()
nyatla 37:fc4b4fd6a649 60 {
nyatla 109:18f12ac01097 61 NyLPC_cNetIf_stop();
nyatla 37:fc4b4fd6a649 62 //stop mDNS
nyatla 37:fc4b4fd6a649 63 if(this->_mdns!=NULL){
nyatla 37:fc4b4fd6a649 64 NyLPC_cMDnsServer_finalize(this->_mdns);
nyatla 37:fc4b4fd6a649 65 free(this->_mdns);
nyatla 37:fc4b4fd6a649 66 this->_mdns=NULL;
nyatla 37:fc4b4fd6a649 67 }
nyatla 37:fc4b4fd6a649 68 }
nyatla 37:fc4b4fd6a649 69
nyatla 109:18f12ac01097 70 }