Package org.traccar.model

Examples of org.traccar.model.ExtendedInfoFormatter


            sendResponse(channel);

            // Create new position
            Position position = new Position();
            position.setDeviceId(deviceId);
            ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

            Integer index = 1;

            // Time
            Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
            time.clear();
            time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MILLISECOND, Integer.valueOf(parser.group(index++)));

            // Latitude
            Double latitude = Double.valueOf(parser.group(index++));
            latitude += Double.valueOf(parser.group(index++)) / 60;
            if (parser.group(index++).compareTo("S") == 0) latitude = -latitude;
            position.setLatitude(latitude);

            // Longitude
            Double longitude = Double.valueOf(parser.group(index++));
            longitude += Double.valueOf(parser.group(index++)) / 60;
            if (parser.group(index++).compareTo("W") == 0) longitude = -longitude;
            position.setLongitude(longitude);
           
            // HDOP
            extendedInfo.set("hdop", parser.group(index++));

            // Altitude
            position.setAltitude(Double.valueOf(parser.group(index++)));
           
            // Validity
            int fix = Integer.valueOf(parser.group(index++));
            extendedInfo.set("fix", fix);
            position.setValid(fix > 0);

            // Course
            position.setCourse(Double.valueOf(parser.group(index++)));

            // Speed
            index += 1; // speed in kph
            position.setSpeed(Double.valueOf(parser.group(index++)));

            // Date
            time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
            time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));
            position.setTime(time.getTime());

            // Satellites
            extendedInfo.set("satellites", parser.group(index++));

            // Extended info
            position.setExtendedInfo(extendedInfo.toString());

            return position;
        }
       
        return null;
View Full Code Here


        int length = (buf.readUnsignedShort() & 0x7fff) + 3;
       
        List<Position> positions = new LinkedList<Position>();
        Set<Integer> tags = new HashSet<Integer>();
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());
       
        while (buf.readerIndex() < length) {

            // Check if new message started
            int tag = buf.readUnsignedByte();
            if (tags.contains(tag)) {
                position.setExtendedInfo(extendedInfo.toString());
                positions.add(position);
                tags.clear();
                position = new Position();
                extendedInfo = new ExtendedInfoFormatter(getProtocol());
            }
            tags.add(tag);
           
            switch (tag) {

                case TAG_IMEI:
                    String imei = buf.toString(buf.readerIndex(), 15, Charset.defaultCharset());
                    buf.skipBytes(imei.length());
                    try {
                        deviceId = getDataManager().getDeviceByImei(imei).getId();
                    } catch(Exception error) {
                        Log.warning("Unknown device - " + imei);
                    }
                    break;

                case TAG_DATE:
                    position.setTime(new Date(buf.readUnsignedInt() * 1000));
                    break;
                   
                case TAG_COORDINATES:
                    position.setValid((buf.readUnsignedByte() & 0xf0) == 0x00);
                    position.setLatitude(buf.readInt() / 1000000.0);
                    position.setLongitude(buf.readInt() / 1000000.0);
                    break;
                   
                case TAG_SPEED_COURSE:
                    position.setSpeed(buf.readUnsignedShort() * 0.0539957);
                    position.setCourse(buf.readUnsignedShort() * 0.1);
                    break;
                   
                case TAG_ALTITUDE:
                    position.setAltitude((double) buf.readShort());
                    break;
                   
                case TAG_STATUS:
                    extendedInfo.set("status", buf.readUnsignedShort());
                    break;
                   
                case TAG_POWER:
                    extendedInfo.set("power", buf.readUnsignedShort());
                    break;
                   
                case TAG_BATTERY:
                    extendedInfo.set("battery", buf.readUnsignedShort());
                    break;
                   
                case TAG_MILAGE:
                    extendedInfo.set("milage", buf.readUnsignedInt());
                    break;
                   
                default:
                    buf.skipBytes(getTagLength(tag));
                    break;
                   
            }
        }

        position.setExtendedInfo(extendedInfo.toString());
        positions.add(position);
       
        if (deviceId == null) {
            Log.warning("Unknown device");
            return null;
View Full Code Here

        }
    }
   
    private Position parseUnitReport(ChannelBuffer buf, long deviceId, int sequenceNumber) {
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        position.setValid(true);
        extendedInfo.set("index", sequenceNumber);
        position.setDeviceId(deviceId);
       
        buf.readUnsignedShort(); // report trigger
        buf.readUnsignedShort(); // flags
       
        position.setLatitude(buf.readInt() * 0.0000001);
        position.setLongitude(buf.readInt() * 0.0000001);
        position.setAltitude((double) buf.readUnsignedShort());
       
        buf.readUnsignedShort(); // satellites in fix
        buf.readUnsignedShort(); // satellites in track
        buf.readUnsignedShort(); // GPS antenna state
       
        position.setSpeed(buf.readUnsignedShort() * 0.194384);
        position.setCourse((double) buf.readUnsignedShort());
       
        buf.readUnsignedInt(); // distance
        buf.readUnsignedInt(); // delta distance

        extendedInfo.set("battery", buf.readUnsignedShort() * 0.001);
       
        buf.readUnsignedShort(); // battery charger status
       
        position.setTime(convertTimestamp(buf.readUnsignedInt()));
       
        // TODO: a lot of other stuff

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

        return position;
    }
   
    private Position parseTg2Report(ChannelBuffer buf, long deviceId, int sequenceNumber) {
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        position.setValid(true);
        extendedInfo.set("index", sequenceNumber);
        position.setDeviceId(deviceId);
       
        buf.readUnsignedShort(); // report trigger
        buf.readUnsignedByte(); // reserved
        buf.readUnsignedByte(); // assisted GPS age
       
        position.setTime(convertTimestamp(buf.readUnsignedInt()));
       
        position.setLatitude(buf.readInt() * 0.0000001);
        position.setLongitude(buf.readInt() * 0.0000001);
        position.setAltitude((double) buf.readUnsignedShort());
       
        buf.readUnsignedByte(); // satellites in fix
        buf.readUnsignedByte(); // satellites in track
       
        position.setSpeed(buf.readUnsignedShort() * 0.194384);
        position.setCourse((double) buf.readUnsignedShort());
       
        buf.readUnsignedInt(); // distance
        buf.readUnsignedShort(); // maximum speed
        buf.readUnsignedShort(); // minimum speed

        buf.readUnsignedShort(); // VSAUT1 voltage
        buf.readUnsignedShort(); // VSAUT2 voltage
        buf.readUnsignedShort(); // solar voltage
        extendedInfo.set("battery", buf.readUnsignedShort() * 0.001);
       
        // TODO: a lot of other stuff

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

        return position;
    }
   
    private Position parsePositionReport(ChannelBuffer buf, long deviceId, int sequenceNumber, long timestamp) {
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        extendedInfo.set("index", sequenceNumber);
        position.setDeviceId(deviceId);
        position.setTime(convertTimestamp(timestamp));
       
        position.setLatitude(buf.readMedium() * 0.00002);
        position.setLongitude(buf.readMedium() * 0.00002);
        position.setAltitude(0.0);
       
        position.setSpeed(buf.readUnsignedByte() * 0.539957);
        position.setCourse(buf.readUnsignedByte() * 2.0);
       
        short flags = buf.readUnsignedByte();
        position.setValid((flags & 0x80) == 0x80 && (flags & 0x40) == 0x40);
       
        buf.readUnsignedByte(); // reserved

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

        return position;
    }
   
    private Position parsePositionReport2(ChannelBuffer buf, long deviceId, int sequenceNumber, long timestamp) {
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        extendedInfo.set("index", sequenceNumber);
        position.setDeviceId(deviceId);
        position.setTime(convertTimestamp(timestamp));
       
        position.setLatitude(buf.readInt() * 0.0000001);
        position.setLongitude(buf.readInt() * 0.0000001);
        position.setAltitude(0.0);
       
        buf.readUnsignedByte(); // report trigger

        position.setSpeed(buf.readUnsignedByte() * 0.539957);
        position.setCourse(0.0);
       
        short flags = buf.readUnsignedByte();
        position.setValid((flags & 0x80) == 0x80 && (flags & 0x40) == 0x40);
       
        int x = buf.readUnsignedByte(); // satellites in fix
        buf.readUnsignedInt(); // distance

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

        return position;
    }
   
    private Position parseSnapshot4(ChannelBuffer buf, long deviceId, int sequenceNumber) {
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        extendedInfo.set("index", sequenceNumber);
        position.setDeviceId(deviceId);

        buf.readUnsignedByte(); // report trigger
        buf.readUnsignedByte(); // position fix source
        buf.readUnsignedByte(); // GNSS fix quality
        buf.readUnsignedByte(); // GNSS assistance age
       
        long flags = buf.readUnsignedInt();
        position.setValid((flags & 0x0400) == 0x0400);
       
        position.setTime(convertTimestamp(buf.readUnsignedInt()));
       
        position.setLatitude(buf.readInt() * 0.0000001);
        position.setLongitude(buf.readInt() * 0.0000001);
        position.setAltitude((double) buf.readUnsignedShort());
       
        buf.readUnsignedByte(); // satellites in fix
        buf.readUnsignedByte(); // satellites in track
       
        position.setSpeed(buf.readUnsignedShort() * 0.194384);
        position.setCourse(buf.readUnsignedShort() * 0.1);
       
        buf.readUnsignedByte(); // maximum speed
        buf.readUnsignedByte(); // minimum speed
        buf.readUnsignedInt(); // distance

        buf.readUnsignedByte(); // supply voltage 1
        buf.readUnsignedByte(); // supply voltage 2
        extendedInfo.set("battery", buf.readUnsignedShort() * 0.001);

        // TODO: a lot of other stuff

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

        return position;
    }
   
    private Position parseTrackingData(ChannelBuffer buf, long deviceId, int sequenceNumber, long timestamp) {
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        extendedInfo.set("index", sequenceNumber);
        position.setDeviceId(deviceId);
        position.setTime(convertTimestamp(timestamp));

        buf.readUnsignedByte(); // tracking mode
       
        short flags = buf.readUnsignedByte();
        position.setValid((flags & 0x01) == 0x01);
       
        buf.readUnsignedShort(); // duration

        position.setLatitude(buf.readInt() * 0.0000001);
        position.setLongitude(buf.readInt() * 0.0000001);
        position.setAltitude(0.0);
       
        position.setSpeed(buf.readUnsignedByte() * 0.539957);
        position.setCourse(buf.readUnsignedByte() * 2.0);

        buf.readUnsignedByte(); // satellites in fix
       
        extendedInfo.set("battery", buf.readUnsignedShort() * 0.001);
       
        buf.readUnsignedInt(); // distance

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

            }

            // Create new position
            Position position = new Position();
            position.setDeviceId(deviceId);
            ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

            Integer index = 1;

            // Time
            Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
            time.clear();
            time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
            time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
            position.setTime(time.getTime());

            // Location
            position.setLatitude(Double.valueOf(parser.group(index++)));
            position.setLongitude(Double.valueOf(parser.group(index++)));
            position.setSpeed(Double.valueOf(parser.group(index++)));
            position.setCourse(Double.valueOf(parser.group(index++)));
            position.setAltitude(0.0);
           
            // Distance
            extendedInfo.set("milage", parser.group(index++));
           
            // Event
            extendedInfo.set("event", parser.group(index++));
           
            // Status
            int status = Integer.valueOf(parser.group(index++));
            position.setValid((status & 0x04) == 0);
            extendedInfo.set("status", status);

            position.setExtendedInfo(extendedInfo.toString());
            return position;
        }
       
        return null;
    }
View Full Code Here

            return null;
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        Integer index = 1;

        // Get device by IMEI
        String id = parser.group(index++);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(id).getId());
        } catch(Exception error) {
            Log.warning("Unknown device - " + id);
            return null;
        }

        // Time
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MILLISECOND, Integer.valueOf(parser.group(index++)));

        // Validity
        position.setValid(parser.group(index++).compareTo("A") == 0);

        // Latitude
        Double latitude = Double.valueOf(parser.group(index++));
        latitude += Double.valueOf(parser.group(index++)) / 60;
        if (parser.group(index++).compareTo("S") == 0) {
            latitude = -latitude;
        }
        position.setLatitude(latitude);

        // Longitude
        Double longitude = Double.valueOf(parser.group(index++));
        longitude += Double.valueOf(parser.group(index++)) / 60;
        if (parser.group(index++).compareTo("W") == 0) {
            longitude = -longitude;
        }
        position.setLongitude(longitude);

        // Altitude
        position.setAltitude(0.0);

        // Speed
        String speed = parser.group(index++);
        if (speed != null) {
            position.setSpeed(Double.valueOf(speed));
        } else {
            position.setSpeed(0.0);
        }

        // Course
        String course = parser.group(index++);
        if (course != null) {
            position.setCourse(Double.valueOf(course));
        } else {
            position.setCourse(0.0);
        }

        // Date
        time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
        time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));
        position.setTime(time.getTime());

        // Extended info
        position.setExtendedInfo(extendedInfo.toString());

        return position;
    }
View Full Code Here

TOP

Related Classes of org.traccar.model.ExtendedInfoFormatter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.