/* * ShareNav - Copyright (c) 2009 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See file COPYING. */ package net.sharenav.gps.location; import java.util.Enumeration; import java.util.Vector; import net.sharenav.util.Logger; /** * Wrapper that wraps a List of CompassReceivers in a way that classes can * use it like a single CompassReceiver. * * @author jan rose */ public class CompassReceiverList implements CompassReceiver { private final static Logger logger = Logger.getInstance(CompassReceiverList.class, Logger.DEBUG); /** * Vector of all the CompassReceivers */ private final Vector receiverList; private volatile int currentSolution = 0; public CompassReceiverList() { receiverList = new Vector(2); } public void locationDecoderEnd() { Enumeration en = receiverList.elements(); CompassReceiver receiver; while (en.hasMoreElements()) { receiver = (CompassReceiver) en.nextElement(); receiver.locationDecoderEnd(); } } public void locationDecoderEnd(String msg) { Enumeration en = receiverList.elements(); CompassReceiver receiver; while (en.hasMoreElements()) { receiver = (CompassReceiver) en.nextElement(); receiver.locationDecoderEnd(msg); } } public void receiveMessage(String msg) { Enumeration en = receiverList.elements(); CompassReceiver receiver; while (en.hasMoreElements()) { receiver = (CompassReceiver) en.nextElement(); receiver.receiveMessage(msg); } } public void receiveCompass(float direction) { Enumeration en = receiverList.elements(); CompassReceiver receiver; while (en.hasMoreElements()) { receiver = (CompassReceiver) en.nextElement(); receiver.receiveCompass(direction); } } public void receiveCompassStatus(int solution) { currentSolution = solution; Enumeration en = receiverList.elements(); CompassReceiver receiver; while (en.hasMoreElements()) { receiver = (CompassReceiver) en.nextElement(); receiver.receiveCompassStatus(solution); } } public int getCurrentSolution() { return currentSolution; } public void receiveStatistics(int[] statRecord, byte quality) { Enumeration en = receiverList.elements(); CompassReceiver receiver; while (en.hasMoreElements()) { receiver = (CompassReceiver) en.nextElement(); receiver.receiveStatistics(statRecord, quality); } } /** * add a receiver to the List * * @param rec * CompassReceiver to add */ public void addReceiver(CompassReceiver receiver) { //#debug info logger.info("Adding a location receiver to the list (" + receiver + ")"); receiverList.addElement(receiver); } /** * remove a given receiver from the List * * @param rec * CompassReceiver to be removed */ public boolean removeReceiver(CompassReceiver receiver) { //#debug info logger.info("Removing location receiver from the list (" + receiver + ")"); // should be safe to remove the first occurrence return receiverList.removeElement(receiver); } }