Changeset 3337 in osm for applications


Ignore:
Timestamp:
2007-06-25T19:10:28+02:00 (17 years ago)
Author:
christofd
Message:

print some status messages
fire only events if something changed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/livegps/livegps/LiveGpsAcquirer.java

    r3076 r3337  
    2222        boolean shutdownFlag = false;
    2323    private List<PropertyChangeListener> propertyChangeListener = new ArrayList<PropertyChangeListener>();
     24    private PropertyChangeEvent lastStatusEvent;
     25    private PropertyChangeEvent lastDataEvent;
    2426       
    2527        public LiveGpsAcquirer() {
     
    4547    public void fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus status, String statusMessage) {
    4648        PropertyChangeEvent event = new PropertyChangeEvent(this, "gpsstatus", null, new LiveGpsStatus(status, statusMessage));
    47         firePropertyChangeEvent(event);
     49        if(!event.equals(lastStatusEvent)) {
     50            firePropertyChangeEvent(event);
     51            lastStatusEvent = event;
     52        }
    4853    }
    4954
     
    5661    public void fireGpsDataChangeEvent(LiveGpsData oldData, LiveGpsData newData) {
    5762        PropertyChangeEvent event = new PropertyChangeEvent(this, "gpsdata", oldData, newData);
    58         firePropertyChangeEvent(event);
     63        if(!event.equals(lastDataEvent)) {
     64            firePropertyChangeEvent(event);
     65            lastDataEvent = event;
     66        }
    5967    }
    6068   
     
    8492                                if (!connected)
    8593                                {
     94                                    System.out.println("LiveGps try to connect to gpsd");
    8695                    fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTING, tr("Connecting"));
    8796                                        InetAddress[] addrs = InetAddress.getAllByName(gpsdHost);
     
    99108                                                gpsdReader = new BufferedReader(new InputStreamReader(gpsdSocket.getInputStream()));
    100109                                                gpsdSocket.getOutputStream().write(new byte[] { 'w', 13, 10 });
    101                         fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTED, tr("Connected"));
     110                        fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTING, tr("Connecting"));
    102111                                                connected = true;
    103112                                        }
     
    106115
    107116                if(connected) {
     117                    // <FIXXME date="23.06.2007" author="cdaller">
     118                    // TODO this read is blocking if gps is connected but has no fix, so gpsd does not send positions
    108119                    String line = gpsdReader.readLine();
     120                    // </FIXXME>
    109121                    if (line == null) break;
    110122                    String words[] = line.split(",");
     
    155167                            // not interested
    156168                        }
     169                        fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTED, tr("Connected"));
    157170                        gpsData.setFix(haveFix);
    158171                        if (haveFix) {
     
    166179                } else {
    167180                    // not connected:
     181                    fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.DISCONNECTED, tr("Not connected"));
    168182                    try { Thread.sleep(1000); } catch (InterruptedException ignore) {};
    169183                }
    170184                        } catch(IOException iox) {
    171185                                connected = false;
    172                 gpsData.setFix(false);
    173                 fireGpsDataChangeEvent(oldGpsData, gpsData);
     186                                if(gpsData != null) {
     187                                    gpsData.setFix(false);
     188                                    fireGpsDataChangeEvent(oldGpsData, gpsData);
     189                                }
    174190                fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTION_FAILED, tr("Connection Failed"));
    175191                                try { Thread.sleep(1000); } catch (InterruptedException ignore) {};
     
    178194                        }
    179195                }
    180         fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.DISCONNECTED, tr("Disconnected"));
     196        fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.DISCONNECTED, tr("Not connected"));
    181197                if (gpsdSocket != null) try { gpsdSocket.close(); } catch (Exception ignore) {};
    182198        }
Note: See TracChangeset for help on using the changeset viewer.