package com.buglabs.nmea2; import java.util.ArrayList; import java.util.List; import com.buglabs.nmea.SV; /** * Contains GSV type NMEA sentence. * * @author kgilmer * */ public final class GSV extends AbstractNMEASentence { private int numberOfMessages; private int messageNumber; private int numberOfSVs; private List satellites; public GSV(String sentence) { super(sentence); } protected void initialize() { numberOfMessages = -1; messageNumber = -1; numberOfSVs = -1; satellites = new ArrayList(3); } protected void parseField(int index, String field, String fields[]) { switch (index) { case 1: numberOfMessages = Integer.parseInt(field); break; case 2: messageNumber = Integer.parseInt(field); break; case 3: numberOfSVs = Integer.parseInt(field); break; case 4: if (fields.length > index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], fields[index + 3])); } case 5: case 6: case 7: break; case 8: if (fields.length > index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], fields[index + 3])); } else if (fields.length == index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], "")); } case 9: case 10: case 11: break; case 12: if (fields.length > index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], fields[index + 3])); } else if (fields.length == index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], "")); } case 13: case 14: case 15: break; case 16: if (fields.length > index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], fields[index + 3])); } else if (fields.length == index + 3) { satellites.add(new SV(field, fields[index + 1], fields[index + 2], "")); } default: break; } } protected void validate() { } public int getNumberOfMessages() { return numberOfMessages; } public int getMessageNumber() { return messageNumber; } public int getNumberOfSVs() { return numberOfSVs; } public List getSatellites() { return satellites; } }