private BatteryState getSimulatedBatteryState() { if (simulatedBatteryState.getLevel() <= 0) { simulatedBatteryState.setLevel(MAX_BATTERY_LEVEL); } simulatedBatteryState.setLevel(Math.max(MIN_BATTERY_LEVEL, simulatedBatteryState.getLevel() - (RANDOM.nextInt(2)))); return simulatedBatteryState.build(); }
@Override protected void applyDataUpdate(BatteryData.Builder internalBuilder, ServiceType serviceType) { switch (serviceType) { case BATTERY_STATE_SERVICE: if (!internalBuilder.getBatteryState().hasValue() || internalBuilder.getBatteryState().getValue() == BatteryState.State.UNKNOWN) { if (internalBuilder.getBatteryState().getLevel() <= 5) { internalBuilder.getBatteryStateBuilder().setValue(BatteryState.State.INSUFFICIENT); } else if (internalBuilder.getBatteryState().getLevel() <= 15) { internalBuilder.getBatteryStateBuilder().setValue(BatteryState.State.CRITICAL); } else { internalBuilder.getBatteryStateBuilder().setValue(BatteryState.State.OK); } } break; } } }
/** * Transform a number to a battery state. The number is set as the level and * should be between 0 and 100. If the level is higher than 15 the battery * state is set as okay, higher than 3 means critical and between 0 and 3 * means insufficient. If the value is smaller than 0 unknown is set as the * battery state. * * @param value the battery level between 0 and 100 * @return the corresponding battery state */ public static BatteryState transform(final Double value) { BatteryState.Builder state = BatteryState.newBuilder(); state.setLevel(value); return state.build(); }
/** * Creates a new custom unit simulator. * * @param unitController the unit to simulate. */ public BatteryStateServiceSimulator(final UnitController unitController) { super(unitController, ServiceType.BATTERY_STATE_SERVICE); this.simulatedBatteryState = BatteryState.newBuilder(); this.simulatedBatteryState.setLevel(RANDOM.nextInt(MAX_BATTERY_LEVEL)); }