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

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Thu Nov 13 14:06:19 2014 +0000
Revision:
108:8dae2a2682e7
Parent:
68:f7def7eb5504
Child:
109:18f12ac01097
delete debug codes; update mdns announce

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