use of org.traccar.helper.Parser in project traccar by tananaev.
the class MegastekProtocolDecoder method parseLocation.
private boolean parseLocation(String location, Position position) {
Parser parser = new Parser(PATTERN_GPRMC, location);
if (!parser.matches()) {
return false;
}
DateBuilder dateBuilder = new DateBuilder().setTime(parser.nextInt(0), parser.nextInt(0), parser.nextInt(0), parser.nextInt(0));
position.setValid(parser.next().equals("A"));
position.setLatitude(parser.nextCoordinate());
position.setLongitude(parser.nextCoordinate());
position.setSpeed(parser.nextDouble(0));
position.setCourse(parser.nextDouble(0));
dateBuilder.setDateReverse(parser.nextInt(0), parser.nextInt(0), parser.nextInt(0));
position.setTime(dateBuilder.getDate());
return true;
}
use of org.traccar.helper.Parser in project traccar by tananaev.
the class MegastekProtocolDecoder method decodeNew.
private Position decodeNew(Channel channel, SocketAddress remoteAddress, String sentence) {
Parser parser = new Parser(PATTERN_NEW, sentence);
if (!parser.matches()) {
return null;
}
DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, parser.next());
if (deviceSession == null) {
return null;
}
Position position = new Position(getProtocolName());
position.setDeviceId(deviceSession.getDeviceId());
if (parser.next().equals("S")) {
position.set(Position.KEY_ARCHIVE, true);
}
position.setTime(parser.nextDateTime(Parser.DateTimeFormat.DMY_HMS));
position.setValid(parser.next().equals("A"));
position.setLatitude(parser.nextCoordinate());
position.setLongitude(parser.nextCoordinate());
position.set(Position.KEY_SATELLITES, parser.nextInt(0));
position.set(Position.KEY_HDOP, parser.nextDouble(0));
position.setSpeed(parser.nextDouble(0));
position.setCourse(parser.nextDouble(0));
position.setAltitude(parser.nextDouble(0));
if (parser.hasNext()) {
position.set(Position.KEY_ODOMETER, parser.nextDouble(0) * 1000);
}
position.setNetwork(new Network(CellTower.from(parser.nextInt(0), parser.nextInt(0), parser.nextHexInt(0), parser.nextHexInt(0), parser.nextInt(0))));
position.set(Position.KEY_INPUT, parser.nextBinInt(0));
position.set(Position.KEY_OUTPUT, parser.nextBinInt(0));
for (int i = 1; i <= 3; i++) {
position.set(Position.PREFIX_ADC + i, parser.nextInt(0));
}
for (int i = 1; i <= 2; i++) {
String adc = parser.next();
if (adc != null) {
position.set(Position.PREFIX_TEMP + i, Double.parseDouble(adc));
}
}
position.set(Position.KEY_DRIVER_UNIQUE_ID, parser.next());
String battery = parser.next();
if (battery != null) {
position.set(Position.KEY_BATTERY, Integer.parseInt(battery));
}
position.set(Position.KEY_ALARM, decodeAlarm(parser.next()));
return position;
}
use of org.traccar.helper.Parser in project traccar by tananaev.
the class MeiligaoProtocolDecoder method decodeObdA.
private Position decodeObdA(Position position, String sentence) {
Parser parser = new Parser(PATTERN_OBDA, sentence);
if (!parser.matches()) {
return null;
}
getLastLocation(position, null);
position.set("totalIgnitionNo", parser.nextInt(0));
position.set("totalDrivingTime", parser.nextDouble(0));
position.set("totalIdlingTime", parser.nextDouble(0));
position.set("averageHotStartTime", parser.nextInt(0));
position.set("averageSpeed", parser.nextInt(0));
position.set("historyHighestSpeed", parser.nextInt(0));
position.set("historyHighestRpm", parser.nextInt(0));
position.set("totalHarshAccerleration", parser.nextInt(0));
position.set("totalHarshBrake", parser.nextInt(0));
return position;
}
use of org.traccar.helper.Parser in project traccar by tananaev.
the class MeiligaoProtocolDecoder method decodeRegular.
private Position decodeRegular(Position position, String sentence) {
Parser parser = new Parser(PATTERN, sentence);
if (!parser.matches()) {
return null;
}
DateBuilder dateBuilder = new DateBuilder().setTime(parser.nextInt(0), parser.nextInt(0), parser.nextInt(0));
position.setValid(parser.next().equals("A"));
position.setLatitude(parser.nextCoordinate());
position.setLongitude(parser.nextCoordinate());
if (parser.hasNext()) {
position.setSpeed(parser.nextDouble(0));
}
if (parser.hasNext()) {
position.setCourse(parser.nextDouble(0));
}
dateBuilder.setDateReverse(parser.nextInt(0), parser.nextInt(0), parser.nextInt(0));
position.setTime(dateBuilder.getDate());
position.set(Position.KEY_HDOP, parser.nextDouble());
if (parser.hasNext()) {
position.setAltitude(parser.nextDouble(0));
}
position.set(Position.KEY_STATUS, parser.next());
for (int i = 1; i <= 8; i++) {
position.set(Position.PREFIX_ADC + i, parser.nextHexInt());
}
position.set(Position.KEY_RSSI, parser.nextHexInt());
position.set(Position.KEY_ODOMETER, parser.nextHexLong());
position.set(Position.KEY_SATELLITES, parser.nextHexInt());
position.set("driverLicense", parser.next());
position.set(Position.KEY_ODOMETER, parser.nextLong());
position.set(Position.KEY_DRIVER_UNIQUE_ID, parser.next());
return position;
}
use of org.traccar.helper.Parser in project traccar by tananaev.
the class MeiligaoProtocolDecoder method decodeObd.
private Position decodeObd(Position position, String sentence) {
Parser parser = new Parser(PATTERN_OBD, sentence);
if (!parser.matches()) {
return null;
}
getLastLocation(position, null);
position.set(Position.KEY_BATTERY, parser.nextDouble());
position.set(Position.KEY_RPM, parser.nextInt());
position.set(Position.KEY_OBD_SPEED, parser.nextInt());
position.set(Position.KEY_THROTTLE, parser.nextDouble());
position.set(Position.KEY_ENGINE_LOAD, parser.nextDouble());
position.set(Position.KEY_COOLANT_TEMP, parser.nextInt());
position.set(Position.KEY_FUEL_CONSUMPTION, parser.nextDouble());
position.set("averageFuelConsumption", parser.nextDouble());
position.set("drivingRange", parser.nextDouble());
position.set(Position.KEY_ODOMETER, parser.nextDouble());
position.set("singleFuelConsumption", parser.nextDouble());
position.set("totalFuelConsumption", parser.nextDouble());
position.set(Position.KEY_DTCS, parser.nextInt());
position.set("hardAccelerationCount", parser.nextInt());
position.set("hardBrakingCount", parser.nextInt());
return position;
}
Aggregations