mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
started adding WindListener pattern to NMEAWindReceiver
Change-Id: Idbdd0b205370f32a3282a418fc9600d226a6313a
This commit is contained in:
+10
-2
@@ -1,5 +1,9 @@
|
||||
package com.sap.sailing.nmeaconnector;
|
||||
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindListener;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
import net.sf.marineapi.nmea.event.SentenceListener;
|
||||
import net.sf.marineapi.nmea.io.SentenceReader;
|
||||
import net.sf.marineapi.nmea.sentence.DateSentence;
|
||||
@@ -12,7 +16,9 @@ import net.sf.marineapi.nmea.sentence.TimeSentence;
|
||||
* for which it acts as a {@link SentenceListener} for sentences providing information
|
||||
* about wind measurements, date/time reference, location of measurements and data
|
||||
* that may be required to convert apparent wind speeds and angles into true wind
|
||||
* speeds and directions.<p>
|
||||
* speeds and directions. Clients can {@link #addWindListener(WindListener) register}
|
||||
* as a {@link WindListener} and receive {@link WindListener#windDataReceived} callbacks
|
||||
* whenever a {@link Wind} fix was assembled out of the various NMEA sentences.<p>
|
||||
*
|
||||
* The NMEA 0183 protocol specifies that a {@link SentenceId#MWV} sentence may provide
|
||||
* "true" (relative to true north) or "relative" (relative to bow) wind angles. However,
|
||||
@@ -41,5 +47,7 @@ import net.sf.marineapi.nmea.sentence.TimeSentence;
|
||||
*
|
||||
*/
|
||||
public interface NMEAWindReceiver {
|
||||
|
||||
void addWindListener(WindListener listener);
|
||||
|
||||
void removeWindListener(WindListener listener);
|
||||
}
|
||||
|
||||
+25
@@ -1,7 +1,32 @@
|
||||
package com.sap.sailing.nmeaconnector.impl;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindListener;
|
||||
import com.sap.sailing.nmeaconnector.NMEAWindReceiver;
|
||||
|
||||
public class NMEAWindReceiverImpl implements NMEAWindReceiver {
|
||||
private final ConcurrentHashMap<WindListener, WindListener> listeners;
|
||||
|
||||
public NMEAWindReceiverImpl() {
|
||||
super();
|
||||
this.listeners = new ConcurrentHashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addWindListener(WindListener listener) {
|
||||
listeners.put(listener, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeWindListener(WindListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
private void notifyListeners(Wind wind) {
|
||||
for (WindListener listener : listeners.values()) {
|
||||
listener.windDataReceived(wind);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user