1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-24 07:38:45 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/BatteryInfo.java
Andreas Shimokawa 1d41f2f8e4 Refactoring
The notfification APIs now use NotificationSpec as their only parameter, which
contains all information (required and optional ones).
We no longer have separate methods and actions for SMS/EMAIL/GENERIC anymore.
The type of notification is important now, not how we received them technically.
2015-09-24 14:45:21 +02:00

65 lines
2.0 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.miband;
import java.util.GregorianCalendar;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandDateConverter;
import nodomain.freeyourgadget.gadgetbridge.model.BatteryState;
public class BatteryInfo extends AbstractInfo {
public static final byte DEVICE_BATTERY_NORMAL = 0;
public static final byte DEVICE_BATTERY_LOW = 1;
public static final byte DEVICE_BATTERY_CHARGING = 2;
public static final byte DEVICE_BATTERY_CHARGING_FULL = 3;
public static final byte DEVICE_BATTERY_CHARGE_OFF = 4;
public BatteryInfo(byte[] data) {
super(data);
}
public int getLevelInPercent() {
if (mData.length >= 1) {
return mData[0];
}
return 50; // actually unknown
}
public BatteryState getState() {
if (mData.length >= 10) {
int value = mData[9];
switch (value) {
case DEVICE_BATTERY_NORMAL:
return BatteryState.BATTERY_NORMAL;
case DEVICE_BATTERY_LOW:
return BatteryState.BATTERY_LOW;
case DEVICE_BATTERY_CHARGING:
return BatteryState.BATTERY_CHARGING;
case DEVICE_BATTERY_CHARGING_FULL:
return BatteryState.BATTERY_CHARGING_FULL;
case DEVICE_BATTERY_CHARGE_OFF:
return BatteryState.BATTERY_NOT_CHARGING_FULL;
}
}
return BatteryState.UNKNOWN;
}
public GregorianCalendar getLastChargeTime() {
GregorianCalendar lastCharge = MiBandDateConverter.createCalendar();
if (mData.length >= 10) {
lastCharge = MiBandDateConverter.rawBytesToCalendar(new byte[]{
mData[1], mData[2], mData[3], mData[4], mData[5], mData[6]
});
}
return lastCharge;
}
public int getNumCharges() {
if (mData.length >= 10) {
return ((0xff & mData[7]) | ((0xff & mData[8]) << 8));
}
return -1;
}
}