// Do an O(n^2) pass through updating all connectivity public void updateModel() { Iterator it1 = state.getMoteSimObjects().iterator(); while (it1.hasNext()) { MoteSimObject moteSender = (MoteSimObject) it1.next(); Iterator it2 = state.getMoteSimObjects().iterator(); while (it2.hasNext()) { MoteSimObject moteReceiver = (MoteSimObject) it2.next(); if (moteReceiver.getID() == moteSender.getID()) continue; updateLossRate(moteSender, moteReceiver); } } }
// Send the loss rate for all pairs of motes to the simulator public void publishModel() { debug.err.println("RADIOMODEL: Publishing model, current is " + curModel); Iterator it1 = state.getMoteSimObjects().iterator(); while (it1.hasNext()) { MoteSimObject moteSender = (MoteSimObject) it1.next(); MoteCoordinateAttribute moteSenderCoord = moteSender.getCoordinate(); Iterator it2 = state.getMoteSimObjects().iterator(); while (it2.hasNext()) { MoteSimObject moteReceiver = (MoteSimObject) it2.next(); if (moteReceiver.getID() == moteSender.getID()) continue; String key = graphKey(moteSender, moteReceiver); double prob = ((Double) connectivityGraph.get(key)).doubleValue(); publishLossRate(moteSender, moteReceiver, prob); } } }