/* HitoeBatteryProfile Copyright (c) 2015 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.hitoe.profile; import android.content.Intent; import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; import org.deviceconnect.android.message.MessageUtils; import org.deviceconnect.android.profile.BatteryProfile; import org.deviceconnect.android.profile.api.DConnectApi; import org.deviceconnect.android.profile.api.GetApi; import org.deviceconnect.message.DConnectMessage; /** * Implement HitoeBatteryProfile. * @author NTT DOCOMO, INC. */ public class HitoeBatteryProfile extends BatteryProfile { /** * Constructor. */ public HitoeBatteryProfile() { addApi(mGetAll); addApi(mGetLevel); } /** * Get Battery all. */ private final DConnectApi mGetAll = new GetApi() { @Override public boolean onRequest(final Intent request, final Intent response) { return getBattery(request, response); } }; /** * Get Battery level. */ private final DConnectApi mGetLevel = new GetApi() { @Override public String getAttribute() { return ATTRIBUTE_LEVEL; } @Override public boolean onRequest(final Intent request, final Intent response) { return getBattery(request, response); } }; /** * Get Battery info. * @param request request * @param response response * @return true:sync, false:async */ private boolean getBattery(final Intent request, final Intent response) { String serviceId = getServiceID(request); if (serviceId == null) { MessageUtils.setEmptyServiceIdError(response); } else { HitoeManager mgr = getManager(); if (mgr == null) { MessageUtils.setNotFoundServiceError(response); return true; } HeartRateData data = mgr.getHeartRateData(serviceId); if (data == null) { MessageUtils.setNotFoundServiceError(response); return true; } double level = data.getDevice().getBatteryLevel(); if (level < 0) { MessageUtils.setUnknownError(response, "Battery level is unknown."); } else { setResult(response, DConnectMessage.RESULT_OK); setLevel(response, level); } } return true; } /** * Gets a instance of HitoeManager. * * @return {@link HitoeManager}, or null on error */ private HitoeManager getManager() { HitoeDeviceService service = (HitoeDeviceService) getContext(); if (service == null) { return null; } HitoeApplication app = (HitoeApplication) service.getApplication(); if (app == null) { return null; } return app.getHitoeManager(); } }