Skip to content

Commit

Permalink
Refactored RadioMediumObservable and added new Observable
Browse files Browse the repository at this point in the history
Refactored RadioMediumObservable to RadioTransmissionObservable because of its function
Added correct RadioMediumObservable and updating in AbstractRadioMedium, DirectedGraphMedium and MRM
Added some documentation
  • Loading branch information
darki2002 authored and cmorty committed Aug 31, 2015
1 parent 42077ad commit c1a275f
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 20 deletions.
4 changes: 2 additions & 2 deletions tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ public AreaViewer(Simulation simulationToVisualize, Cooja gui) {
// We want to listen to changes both in the channel model as well as in the radio medium
currentChannelModel.addSettingsObserver(channelModelSettingsObserver);
currentRadioMedium.addSettingsObserver(radioMediumSettingsObserver);
currentRadioMedium.addRadioMediumObserver(radioMediumActivityObserver);
currentRadioMedium.addRadioTransmissionObserver(radioMediumActivityObserver);

// Set initial size etc.
setSize(500, 500);
Expand Down Expand Up @@ -2344,7 +2344,7 @@ public void closePlugin() {
}

if (currentRadioMedium != null && radioMediumActivityObserver != null) {
currentRadioMedium.deleteRadioMediumObserver(radioMediumActivityObserver);
currentRadioMedium.deleteRadioTransmissionObserver(radioMediumActivityObserver);
} else {
logger.fatal("Could not remove observer: " + radioMediumActivityObserver);
}
Expand Down
6 changes: 6 additions & 0 deletions tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java
Original file line number Diff line number Diff line change
Expand Up @@ -143,13 +143,19 @@ public void noiseLevelChanged(NoiseSourceRadio radio, int signal) {
public void registerRadioInterface(Radio radio, Simulation sim) {
super.registerRadioInterface(radio, sim);

/* Radio Medium changed here so notify Observers */
radioMediumObservable.setChangedAndNotify();

if (WITH_NOISE && radio instanceof NoiseSourceRadio) {
((NoiseSourceRadio)radio).addNoiseLevelListener(noiseListener);
}
}
public void unregisterRadioInterface(Radio radio, Simulation sim) {
super.unregisterRadioInterface(radio, sim);

/* Radio Medium changed here so notify Observers */
radioMediumObservable.setChangedAndNotify();

if (WITH_NOISE && radio instanceof NoiseSourceRadio) {
((NoiseSourceRadio)radio).removeNoiseLevelListener(noiseListener);
}
Expand Down
10 changes: 5 additions & 5 deletions tools/cooja/java/org/contikios/cooja/RadioMedium.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,24 +100,24 @@ public abstract class RadioMedium {
* Adds an observer which is notified each time a radio connection has finished.
*
* @see #getLastConnection()
* @see #deleteRadioMediumObserver(Observer)
* @see #deleteRadioTransmissionObserver(Observer)
* @param observer New observer
*/
public abstract void addRadioMediumObserver(Observer observer);
public abstract void addRadioTransmissionObserver(Observer observer);

/**
* @return Radio medium observable
*/
public abstract Observable getRadioMediumObservable();
public abstract Observable getRadioTransmissionObservable();

/**
* Deletes an radio medium observer.
*
* @see #addRadioMediumObserver(Observer)
* @see #addRadioTransmissionObserver(Observer)
* @param observer
* Observer to delete
*/
public abstract void deleteRadioMediumObserver(Observer observer);
public abstract void deleteRadioTransmissionObserver(Observer observer);

/**
* @return Last radio connection finished in the radio medium
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ public DGRMConfigurator(Simulation sim, Cooja gui) {
radioMedium = (DirectedGraphMedium) sim.getRadioMedium();

/* Listen for graph updates */
radioMedium.addRadioMediumObserver(radioMediumObserver = new Observer() {
radioMedium.addRadioTransmissionObserver(radioMediumObserver = new Observer() {
public void update(Observable obs, Object obj) {
model.fireTableDataChanged();
}
Expand Down Expand Up @@ -500,7 +500,7 @@ public Class<? extends Object> getColumnClass(int c) {
};

public void closePlugin() {
radioMedium.deleteRadioMediumObserver(radioMediumObserver);
radioMedium.deleteRadioTransmissionObserver(radioMediumObserver);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ public EventListener(Simulation simulationToControl, Cooja gui) {

JCheckBox radioMediumCheckBox = new JCheckBox("Radio medium event", false);
radioMediumCheckBox.putClientProperty("observable", mySimulation
.getRadioMedium().getRadioMediumObservable());
.getRadioMedium().getRadioTransmissionObservable());
radioMediumCheckBox.addActionListener(generalCheckBoxListener);
generalPanel.add(radioMediumCheckBox);

Expand Down
4 changes: 2 additions & 2 deletions tools/cooja/java/org/contikios/cooja/plugins/RadioLogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ public void keyPressed(KeyEvent e) {
adjuster.setDynamicAdjustment(true);
adjuster.packColumns();

radioMedium.addRadioMediumObserver(radioMediumObserver = new Observer() {
radioMedium.addRadioTransmissionObserver(radioMediumObserver = new Observer() {
@Override
public void update(Observable obs, Object obj) {
RadioConnection conn = radioMedium.getLastConnection();
Expand Down Expand Up @@ -784,7 +784,7 @@ private void prepareTooltipString(RadioConnectionLog conn) {
@Override
public void closePlugin() {
if (radioMediumObserver != null) {
radioMedium.deleteRadioMediumObserver(radioMediumObserver);
radioMedium.deleteRadioTransmissionObserver(radioMediumObserver);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public void run() {
historyList.clear();

/* Start observing radio medium for transmissions */
radioMedium.addRadioMediumObserver(radioMediumObserver);
radioMedium.addRadioTransmissionObserver(radioMediumObserver);

/* Fade away arrows */
simulation.scheduleEvent(ageArrowsTimeEvent, simulation.getSimulationTime() + 100*Simulation.MILLISECOND);
Expand All @@ -147,7 +147,7 @@ public void setInactive() {
}

/* Stop observing radio medium */
radioMedium.deleteRadioMediumObserver(radioMediumObserver);
radioMedium.deleteRadioTransmissionObserver(radioMediumObserver);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,13 @@ public abstract class AbstractRadioMedium extends RadioMedium {
public int COUNTER_RX = 0;
public int COUNTER_INTERFERED = 0;

/**
* Two Observables to observe the radioMedium and radioTransmissions
* @see addRadioTransmissionObserver
* @see addRadioMediumObserver
*/
protected ScnObservable radioMediumObservable = new ScnObservable();
protected ScnObservable radioTransmissionObservable = new ScnObservable();

/**
* This constructor should always be called from implemented radio mediums.
Expand Down Expand Up @@ -280,7 +286,7 @@ public void execute(long t) {

/* Notify observers */
lastConnection = null;
radioMediumObservable.setChangedAndNotify();
radioTransmissionObservable.setChangedAndNotify();
}
break;
case TRANSMISSION_FINISHED: {
Expand Down Expand Up @@ -325,7 +331,7 @@ public void execute(long t) {
updateSignalStrengths();

/* Notify observers */
radioMediumObservable.setChangedAndNotify();
radioTransmissionObservable.setChangedAndNotify();
}
break;
case CUSTOM_DATA_TRANSMITTED: {
Expand All @@ -340,7 +346,7 @@ public void execute(long t) {
/* Custom data object */
Object data = ((CustomDataRadio) radio).getLastCustomDataTransmitted();
if (data == null) {
logger.fatal("No custom data object to forward");
logger.fatal("No custom data objecTransmissiont to forward");
return;
}

Expand Down Expand Up @@ -438,6 +444,7 @@ public void registerRadioInterface(Radio radio, Simulation sim) {

registeredRadios.add(radio);
radio.addObserver(radioEventsObserver);
radioMediumObservable.setChangedAndNotify();

/* Update signal strengths */
updateSignalStrengths();
Expand All @@ -454,6 +461,8 @@ public void unregisterRadioInterface(Radio radio, Simulation sim) {

removeFromActiveConnections(radio);

radioMediumObservable.setChangedAndNotify();

/* Update signal strengths */
updateSignalStrengths();
}
Expand Down Expand Up @@ -520,10 +529,40 @@ public void setSendRssi(Radio radio, double rssi) {
sendRssi.put(radio, rssi);
}

/**
* Register an observer that gets notified when the radiotransmissions changed.
* E.g. creating new connections.
* This does not include changes in the settings and (de-)registration of radios.
* @see addRadioMediumObserver
* @param observer the Observer to register
*/
public void addRadioTransmissionObserver(Observer observer) {
radioTransmissionObservable.addObserver(observer);
}

public Observable getRadioTransmissionObservable() {
return radioTransmissionObservable;
}

public void deleteRadioTransmissionObserver(Observer observer) {
radioTransmissionObservable.deleteObserver(observer);
}

/**
* Register an observer that gets notified when the radio medium changed.
* This includes changes in the settings and (de-)registration of radios.
* This does not include transmissions, etc as these are part of the radio
* and not the radio medium itself.
* @see addRadioTransmissionObserver
* @param observer the Observer to register
*/
public void addRadioMediumObserver(Observer observer) {
radioMediumObservable.addObserver(observer);
}

/**
* @return the radioMediumObservable
*/
public Observable getRadioMediumObservable() {
return radioMediumObservable;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public void addEdge(Edge e) {
edges.add(e);
requestEdgeAnalysis();

radioMediumObservable.setChangedAndNotify();
radioTransmissionObservable.setChangedAndNotify();
}

public void removeEdge(Edge edge) {
Expand All @@ -104,14 +104,15 @@ public void removeEdge(Edge edge) {
edges.remove(edge);
requestEdgeAnalysis();

radioMediumObservable.setChangedAndNotify();

radioTransmissionObservable.setChangedAndNotify();
}

public void clearEdges() {
edges.clear();
requestEdgeAnalysis();

radioMediumObservable.setChangedAndNotify();
radioTransmissionObservable.setChangedAndNotify();
}

public Edge[] getEdges() {
Expand Down Expand Up @@ -221,6 +222,9 @@ protected void analyzeEdges() {

this.edgesTable = arrTable;
edgesDirty = false;

/* Radio Medium changed here so notify Observers */
radioMediumObservable.setChangedAndNotify();
}

/**
Expand Down

0 comments on commit c1a275f

Please sign in to comment.