void writeNetworksSection(std::ostream& out, NodeSet& ns) { out << "# Networks" << std::endl; NetworkSet& nets = ns.networksUsed(); NetworkSet::iterator it = nets.begin(); while (it != nets.end()) { Network* n = *it; out << "SUBNET " << n->address; out << " { "; std::set<Node*>::iterator nit = n->nodes.begin(); double lat = 0.0; double lon = 0.0; double alt = 0.0; while (nit != n->nodes.end()) { out << (*nit)->NodeId << " "; lat += (*nit)->entity->worldLocation.lat; lon += (*nit)->entity->worldLocation.lon; alt += (*nit)->entity->worldLocation.alt; nit++; } lat = lat / (1.0*n->nodes.size()); lon = lon / (1.0*n->nodes.size()); alt = alt / (1.0*n->nodes.size()); out << "} " << lat << " " << lon << " " << alt << std::endl; std::stringstream mask; ChannelSet::iterator cit = ns.channelsUsed().begin(); while (cit != ns.channelsUsed().end()) { if (*cit == n->channel) { mask << "1"; } else { mask << "0"; } cit++; } out << "[ " << n->address << "] PHY-LISTENABLE-CHANNEL-MASK " << mask.str() << std::endl; out << "[ " << n->address << "] PHY-LISTENING-CHANNEL-MASK " << mask.str() << std::endl; out << std::endl; it++; } }
void writePhysicalSection(std::ostream& out, Config& config, NodeSet& ns) { out << "# Physical" << std::endl; NetworkSet& nets = ns.networksUsed(); std::string defaultModel = config.getParameter("VRLINK-DEFAULT-ROUTER-MODEL").value; std::set<std::string> models; NetworkSet::iterator nit = nets.begin(); while (nit != nets.end()) { if ((*nit)->models.size() == 0) { models.insert(defaultModel); } else { models.insert((*nit)->models.begin(), (*nit)->models.end()); } nit++; } if (models.size() == 1) { ParameterMap* parameters = config.getModelParameterList(*models.begin()); if (parameters) { writeParameters(out, "", parameters); } } else if (models.size() > 1) { nit = nets.begin(); while (nit != nets.end()) { Network* n = *nit; ParameterMap* common = n->getCommonParameters(); std::stringstream subnet; subnet << "[" << n->address << "]"; writeParameters(out, subnet.str(), common); std::set<std::string>::iterator mit = n->models.begin(); while (mit != n->models.end()) { ParameterMap* parameters = config.getModelParameterList(*mit); ParameterMap* specfic = *parameters - *common; std::string group = n->getGroup(*mit); if (parameters && !group.empty()) { writeParameters(out, group, specfic); } delete specfic; mit++; } nit++; } } std::set<std::string>::iterator it = ns.modelsUsed().begin(); if (it != ns.modelsUsed().end()) { out << config.getParameter("ROUTER-MODEL-CONFIG-FILE") << std::endl; } }