/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package project.latex.balloon.sensor.gps;
import project.latex.balloon.sensor.SensorReadFailedException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.log4j.Logger;
import project.latex.balloon.sensor.SensorController;
/**
*
* @author will
*/
public class GPSSensorController implements SensorController {
private static final Logger logger = Logger.getLogger(GPSSensorController.class);
private final UBloxGPSSensor gps;
private final ArrayList<String> keys = new ArrayList<>();
public GPSSensorController(UBloxGPSSensor gps, List<String> keys) {
this.keys.addAll(keys);
this.gps = gps;
}
@Override
public HashMap<String, Object> getCurrentData() throws SensorReadFailedException {
HashMap<String, Object> requestedData = new HashMap<>();
HashMap<String, String> allData = new HashMap<>();
// Get and parse all data from all supported sentence types.
allData = PolledSentenceParser.parse(gps.getPolledSentence());
// Match this controllers keys to the keys in allData and collect together
// the data corrsponding to matching keys.
for (String key : keys) {
if (allData.get(key) == null) {
logger.info("Data not available for key: " + key);
} else {
requestedData.put(key, allData.get(key));
}
}
return requestedData;
}
}