Jun Furutani / libMiMic

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Sun Nov 03 11:18:49 2013 +0000
Revision:
65:38049208ea29
Parent:
51:45d42af201c2
Child:
67:0a24ad966876
fix memory leak Net::stop; maybe corrected.

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 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 3:0a94993be1f6 15 NyLPC_cNet_initialize(&(this->_inst));
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 3:0a94993be1f6 21 NyLPC_cNet_finalize(&(this->_inst));
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 48:00d211aac2ec 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 48:00d211aac2ec 31 if(NyLPC_cNet_requestAddrDhcp(&(this->_inst),&(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 37:fc4b4fd6a649 37 NyLPC_TcApipa_t apipa;
nyatla 37:fc4b4fd6a649 38 NyLPC_cApipa_initialize(&apipa);
nyatla 48:00d211aac2ec 39 if(NyLPC_cApipa_requestAddr(&apipa,&(base_cfg->super),3)){
nyatla 37:fc4b4fd6a649 40 break;
nyatla 37:fc4b4fd6a649 41 }
nyatla 37:fc4b4fd6a649 42 }
nyatla 37:fc4b4fd6a649 43 }
nyatla 37:fc4b4fd6a649 44 }
nyatla 37:fc4b4fd6a649 45 //start mDNS
nyatla 51:45d42af201c2 46 if((base_cfg->services.flags & NyLPC_TcNetConfig_SERVICE_FLAG_MDNS) !=0){
nyatla 37:fc4b4fd6a649 47 this->_mdns=(NyLPC_TcMDnsServer_t*)malloc(sizeof(NyLPC_TcMDnsServer_t));
nyatla 48:00d211aac2ec 48 NyLPC_cMDnsServer_initialize(this->_mdns,i_cfg.refMdnsRecord());
nyatla 37:fc4b4fd6a649 49 }
nyatla 48:00d211aac2ec 50 //start UPnP
nyatla 51:45d42af201c2 51 if((base_cfg->services.flags & NyLPC_TcNetConfig_SERVICE_FLAG_UPNP) !=0){
nyatla 48:00d211aac2ec 52 this->_upnp=(NyLPC_TcUPnP_t*)malloc(sizeof(NyLPC_TcUPnP_t));
nyatla 50:35e765380772 53 NyLPC_cUPnP_initialize(this->_upnp,i_cfg.getHttpPort(),UPNP_ROOT_PATH,i_cfg.refUPnPDevDesc());
nyatla 48:00d211aac2ec 54
nyatla 48:00d211aac2ec 55 }
nyatla 48:00d211aac2ec 56 NyLPC_cNet_start(&(this->_inst),base_cfg);
nyatla 49:d4334acc3ec3 57 if(this->_upnp!=NULL){
nyatla 49:d4334acc3ec3 58 NyLPC_cUPnP_start(this->_upnp);
nyatla 50:35e765380772 59 }
nyatla 37:fc4b4fd6a649 60 }
nyatla 37:fc4b4fd6a649 61 void Net::stop()
nyatla 37:fc4b4fd6a649 62 {
nyatla 37:fc4b4fd6a649 63 NyLPC_cNet_stop(&(this->_inst));
nyatla 37:fc4b4fd6a649 64 //stop mDNS
nyatla 37:fc4b4fd6a649 65 if(this->_mdns!=NULL){
nyatla 37:fc4b4fd6a649 66 NyLPC_cMDnsServer_finalize(this->_mdns);
nyatla 37:fc4b4fd6a649 67 free(this->_mdns);
nyatla 37:fc4b4fd6a649 68 this->_mdns=NULL;
nyatla 37:fc4b4fd6a649 69 }
nyatla 65:38049208ea29 70 if(this->_upnp!=NULL){
nyatla 65:38049208ea29 71 NyLPC_cUPnP_finalize(this->_upnp);
nyatla 65:38049208ea29 72 free(this->_upnp);
nyatla 65:38049208ea29 73 this->_upnp=NULL;
nyatla 65:38049208ea29 74 }
nyatla 37:fc4b4fd6a649 75 }
nyatla 37:fc4b4fd6a649 76
nyatla 3:0a94993be1f6 77 }