This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
mbed/Net.cpp@108:8dae2a2682e7, 2014-11-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |