Skip to content

Commit

Permalink
Fix json format for GC
Browse files Browse the repository at this point in the history
Change month format in ride headder
Make sure numbers are formatted correctly ie not scientific notation
Log all current values:
  Perviously it only logged values that were measured.
  However, if GC doesn't see the other values it assumes they are zero.
  • Loading branch information
chethenry committed Nov 21, 2014
1 parent bd7082f commit ee5f032
Show file tree
Hide file tree
Showing 6 changed files with 137 additions and 58 deletions.
2 changes: 1 addition & 1 deletion contrib/RideLogger/src/com/ridelogger/StartActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public class StartActivity extends FragmentActivity
public static final String PAIRED_ANTS = "PairedAnts";
SharedPreferences settings;
AlertDialog dialog;
public MultiDeviceSearch mSearch;

@Override
protected void onCreate(Bundle savedInstanceState)
Expand Down Expand Up @@ -78,7 +79,6 @@ public void onClick(DialogInterface dialog, int id) {

protected void setupAnt() {

MultiDeviceSearch mSearch;
MultiDeviceSearch.SearchCallbacks mCallback;
MultiDeviceSearch.RssiCallback mRssiCallback;
final ArrayList<MultiDeviceSearchResult> foundDevices = new ArrayList<MultiDeviceSearchResult>();
Expand Down
123 changes: 101 additions & 22 deletions contrib/RideLogger/src/com/ridelogger/listners/Base.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import java.io.BufferedWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Map;

/**
Expand Down Expand Up @@ -76,34 +77,112 @@ public void writeData(String key, String value)

public void writeData(Map<String, String> map)
{
String ts = String.valueOf((double) (System.currentTimeMillis() - start_time) / 1000.0);
current_values.put("SECS", ts);
String ts = String.valueOf((double) (System.currentTimeMillis() - start_time) / 1000.0);
current_values.put("SECS", ts);

try {
synchronized (buf) {
buf.write(",{");
try {
synchronized (buf) {
buf.write(",{");

buf.write("\"");
buf.write("SECS");
buf.write("\":");
buf.write(ts);

for (Map.Entry<String, String> entry : map.entrySet())
{
String key = entry.getKey();
String value = entry.getValue();

buf.write("\"");
buf.write("SECS");
buf.write(",\"");
buf.write(key);
buf.write("\":");
buf.write(ts);
buf.write(value);

for (Map.Entry<String, String> entry : map.entrySet())
{
String key = entry.getKey();
String value = entry.getValue();

buf.write(",\"");
buf.write(key);
buf.write("\":");
buf.write(value);

current_values.put(key, value);
}
current_values.put(key, value);
}

buf.write("}");
buf.write("}");
}
} catch (IOException e) {}
}


public void alterCurrentData(String key, String value)
{
synchronized (current_values) {
current_values.put("SECS", getTs());
current_values.put(key, value);
}

}


public void alterCurrentData(Map<String, String> map)
{
synchronized (current_values) {
current_values.put("SECS", getTs());

for (Map.Entry<String, String> entry : map.entrySet())
{
current_values.put(entry.getKey(), entry.getValue());
}
}
}


public void writeCurrentData()
{
try {
synchronized (buf) {
buf.write(",{");

for (Map.Entry<String, String> entry : current_values.entrySet())
{
buf.write(",\"");
buf.write(entry.getKey());
buf.write("\":");
buf.write(entry.getValue());
}
} catch (IOException e) {}

buf.write("}");
}
} catch (IOException e) {}
}


public String getTs() {
return reduceNumberToString((double) (System.currentTimeMillis() - start_time) / 1000.0);
}


public static String reduceNumberToString(double d)
{
if(d == (long) d)
return String.format("%d",(long)d);
else
return String.format("%f", d);
}


public static String reduceNumberToString(float d)
{
if(d == (long) d)
return String.format("%d",(long)d);
else
return String.format("%f", d);
}


public static String reduceNumberToString(BigDecimal d)
{
try {
long test = d.longValueExact();
return String.format("%d", test);
} catch (Exception e) {
// TODO: handle exception
return String.format("%s", d.toPlainString());
}
}


Expand Down
14 changes: 7 additions & 7 deletions contrib/RideLogger/src/com/ridelogger/listners/Gps.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ public Gps(Context mContext)
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
Map<String, String> map = new HashMap<String, String>();
map.put("ALTITUDE", Double.toString(location.getAltitude()) );
map.put("KPH", Float.toString( location.getSpeed()) );
map.put("bearing", Float.toString( location.getBearing()) );
map.put("gpsa", Float.toString( location.getAccuracy()) );
map.put("LAT", Double.toString(location.getLatitude()) );
map.put("LON", Double.toString(location.getLongitude()));
writeData(map);
map.put("ALTITUDE", reduceNumberToString(location.getAltitude()) );
map.put("KPH", reduceNumberToString(location.getSpeed()) );
map.put("bearing", reduceNumberToString(location.getBearing()) );
map.put("gpsa", reduceNumberToString(location.getAccuracy()) );
map.put("LAT", reduceNumberToString(location.getLatitude()) );
map.put("LON", reduceNumberToString(location.getLongitude()));
alterCurrentData(map);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public void onResultReceived(AntPlusHeartRatePcc result, RequestAccessResult res
new IHeartRateDataReceiver() {
@Override
public void onNewHeartRateData(final long estTimestamp, EnumSet<EventFlag> eventFlags, final int computedHeartRate, final long heartBeatCount, final BigDecimal heartBeatEventTime, final DataState dataState) {
writeData("HR", String.valueOf(computedHeartRate));
alterCurrentData("HR", reduceNumberToString(computedHeartRate));
}
}
);
Expand Down
32 changes: 16 additions & 16 deletions contrib/RideLogger/src/com/ridelogger/listners/Power.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void onResultReceived(AntPlusBikePowerPcc result, RequestAccessResult res
result.subscribeCalculatedPowerEvent(new ICalculatedPowerReceiver() {
@Override
public void onNewCalculatedPower(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedPower) {
writeData("WATTS", String.format("%.1f", calculatedPower));
alterCurrentData("WATTS", reduceNumberToString(calculatedPower));
}
}
);
Expand All @@ -66,7 +66,7 @@ public void onNewCalculatedPower(final long estTimestamp, final EnumSet<EventFla
new ICalculatedTorqueReceiver() {
@Override
public void onNewCalculatedTorque(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedTorque) {
writeData("NM", String.format("%.1f", calculatedTorque));
alterCurrentData("NM", reduceNumberToString(calculatedTorque));
}
}
);
Expand All @@ -75,7 +75,7 @@ public void onNewCalculatedTorque(final long estTimestamp, final EnumSet<EventFl
new ICalculatedCrankCadenceReceiver() {
@Override
public void onNewCalculatedCrankCadence(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedCrankCadence) {
writeData("RPM", String.format("%.1f", calculatedCrankCadence));
alterCurrentData("RPM", reduceNumberToString(calculatedCrankCadence));
}
}
);
Expand All @@ -85,7 +85,7 @@ public void onNewCalculatedCrankCadence(final long estTimestamp, final EnumSet<E
@Override
public void onNewCalculatedWheelSpeed(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedWheelSpeed)
{
writeData("KMH", String.format("%.1f", calculatedWheelSpeed));
alterCurrentData("KMH", reduceNumberToString(calculatedWheelSpeed));
}
}
);
Expand All @@ -95,7 +95,7 @@ public void onNewCalculatedWheelSpeed(final long estTimestamp, final EnumSet<Eve
@Override
public void onNewCalculatedWheelDistance(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final BigDecimal calculatedWheelDistance)
{
writeData("KM", String.format("%.1f", calculatedWheelDistance));
alterCurrentData("KM", reduceNumberToString(calculatedWheelDistance));
}
}
);
Expand All @@ -105,7 +105,7 @@ public void onNewCalculatedWheelDistance(final long estTimestamp, final EnumSet<
@Override
public void onNewInstantaneousCadence(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final DataSource dataSource, final int instantaneousCadence)
{
writeData("RPM", String.format("%d", instantaneousCadence));
alterCurrentData("RPM", reduceNumberToString(instantaneousCadence));
}
}
);
Expand All @@ -115,7 +115,7 @@ public void onNewInstantaneousCadence(final long estTimestamp, final EnumSet<Eve
@Override
public void onNewRawPowerOnlyData(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long powerOnlyUpdateEventCount, final int instantaneousPower, final long accumulatedPower)
{
writeData("WATTS", String.format("%d", instantaneousPower));
alterCurrentData("WATTS", reduceNumberToString(instantaneousPower));
}
}
);
Expand All @@ -125,7 +125,7 @@ public void onNewRawPowerOnlyData(final long estTimestamp, final EnumSet<EventFl
@Override
public void onNewPedalPowerBalance(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final boolean rightPedalIndicator, final int pedalPowerPercentage)
{
writeData("LTE", String.format("%d", pedalPowerPercentage));
alterCurrentData("LTE", reduceNumberToString(pedalPowerPercentage));
}
}
);
Expand All @@ -135,7 +135,7 @@ public void onNewPedalPowerBalance(final long estTimestamp, final EnumSet<EventF
@Override
public void onNewRawWheelTorqueData(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long wheelTorqueUpdateEventCount, final long accumulatedWheelTicks, final BigDecimal accumulatedWheelPeriod, final BigDecimal accumulatedWheelTorque)
{
writeData("NM", String.format("%.1f", accumulatedWheelTorque));
alterCurrentData("NM", reduceNumberToString(accumulatedWheelTorque));
}
}
);
Expand All @@ -145,7 +145,7 @@ public void onNewRawWheelTorqueData(final long estTimestamp, final EnumSet<Event
@Override
public void onNewRawCrankTorqueData(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long crankTorqueUpdateEventCount, final long accumulatedCrankTicks, final BigDecimal accumulatedCrankPeriod, final BigDecimal accumulatedCrankTorque)
{
writeData("NM", String.format("%.1f", accumulatedCrankTorque));
alterCurrentData("NM", reduceNumberToString(accumulatedCrankTorque));
}
}
);
Expand All @@ -156,9 +156,9 @@ public void onNewRawCrankTorqueData(final long estTimestamp, final EnumSet<Event
public void onNewTorqueEffectiveness(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long powerOnlyUpdateEventCount, final BigDecimal leftTorqueEffectiveness, final BigDecimal rightTorqueEffectiveness)
{
Map<String, String> map = new HashMap<String, String>();
map.put("LTE", String.format("%.1f", leftTorqueEffectiveness));
map.put("RTE", String.format("%.1f", rightTorqueEffectiveness));
writeData(map);
map.put("LTE", reduceNumberToString(leftTorqueEffectiveness));
map.put("RTE", reduceNumberToString(rightTorqueEffectiveness));
alterCurrentData(map);
}

}
Expand All @@ -169,9 +169,9 @@ public void onNewTorqueEffectiveness(final long estTimestamp, final EnumSet<Even
public void onNewPedalSmoothness(final long estTimestamp, final EnumSet<EventFlag> eventFlags, final long powerOnlyUpdateEventCount, final boolean separatePedalSmoothnessSupport, final BigDecimal leftOrCombinedPedalSmoothness, final BigDecimal rightPedalSmoothness)
{
Map<String, String> map = new HashMap<String, String>();
map.put("SNPLC", String.format("%.1f", leftOrCombinedPedalSmoothness));
map.put("SNPR", String.format("%.1f", rightPedalSmoothness));
writeData(map);
map.put("SNPLC", reduceNumberToString(leftOrCombinedPedalSmoothness));
map.put("SNPR", reduceNumberToString(rightPedalSmoothness));
alterCurrentData(map);
}
}
);
Expand Down
22 changes: 11 additions & 11 deletions contrib/RideLogger/src/com/ridelogger/listners/Sensors.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
writeData("lux", Float.toString(event.values[0]));
alterCurrentData("lux", reduceNumberToString(event.values[0]));
}
};

Expand All @@ -60,10 +60,10 @@ public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
Map<String, String> map = new HashMap<String, String>();
map.put("ms2x", Float.toString(event.values[0]));
map.put("ms2y", Float.toString(event.values[1]));
map.put("ms2z", Float.toString(event.values[2]));
writeData(map);
map.put("ms2x", reduceNumberToString(event.values[0]));
map.put("ms2y", reduceNumberToString(event.values[1]));
map.put("ms2z", reduceNumberToString(event.values[2]));
alterCurrentData(map);
}
};

Expand All @@ -78,7 +78,7 @@ public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
writeData("press", Float.toString(event.values[0]));
alterCurrentData("press", reduceNumberToString(event.values[0]));
}
};

Expand All @@ -93,7 +93,7 @@ public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
writeData("temp", Float.toString(event.values[0]));
alterCurrentData("temp", reduceNumberToString(event.values[0]));
}
};

Expand All @@ -107,10 +107,10 @@ public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
Map<String, String> map = new HashMap<String, String>();
map.put("uTx", Float.toString(event.values[0]));
map.put("uTy", Float.toString(event.values[1]));
map.put("uTz", Float.toString(event.values[2]));
writeData(map);
map.put("uTx", reduceNumberToString(event.values[0]));
map.put("uTy", reduceNumberToString(event.values[1]));
map.put("uTz", reduceNumberToString(event.values[2]));
alterCurrentData(map);
}
};

Expand Down

0 comments on commit ee5f032

Please sign in to comment.