/* FPLUGTemperatureProfile.java Copyright (c) 2015 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.fplug.profile; import android.content.Intent; import org.deviceconnect.android.deviceplugin.fplug.FPLUGApplication; import org.deviceconnect.android.deviceplugin.fplug.FPLUGDeviceService; import org.deviceconnect.android.deviceplugin.fplug.fplug.FPLUGController; import org.deviceconnect.android.deviceplugin.fplug.fplug.FPLUGRequestCallback; import org.deviceconnect.android.deviceplugin.fplug.fplug.FPLUGResponse; import org.deviceconnect.android.message.MessageUtils; import org.deviceconnect.android.profile.TemperatureProfile; import org.deviceconnect.android.profile.api.DConnectApi; import org.deviceconnect.android.profile.api.GetApi; import org.deviceconnect.message.DConnectMessage; /** * Temperature Profile. * * @author NTT DOCOMO, INC. */ public class FPLUGTemperatureProfile extends TemperatureProfile { private final DConnectApi mGetTemperatureApi = new GetApi() { @Override public boolean onRequest(final Intent request, final Intent response) { String serviceId = getServiceID(request); FPLUGApplication app = ((FPLUGApplication) getContext().getApplicationContext()); FPLUGController controller = app.getConnectedController(serviceId); if (controller == null) { MessageUtils.setNotFoundServiceError(response, "Not found fplug: " + serviceId); return true; } controller.requestTemperature(new FPLUGRequestCallback() { @Override public void onSuccess(FPLUGResponse fResponse) { double temp = fResponse.getTemperature(); String typeString = request.getStringExtra("type"); int type; try { type = Integer.valueOf(typeString); } catch(NumberFormatException e) { type = TemperatureType.Celsius.getValue(); } if (type == TemperatureType.CelsiusFahrenheit.getValue()) { temp = convertCelsiusToFahrenheit(temp); } setTemperature(response, temp); setType(response, type); sendResultOK(response); } @Override public void onError(String message) { sendResultError(response); } @Override public void onTimeout() { sendResultTimeout(response); } }); return false; } }; public FPLUGTemperatureProfile() { addApi(mGetTemperatureApi); } private void sendResultOK(Intent response) { setResult(response, DConnectMessage.RESULT_OK); ((FPLUGDeviceService) getContext()).sendResponse(response); } private void sendResultError(Intent response) { MessageUtils.setUnknownError(response); ((FPLUGDeviceService) getContext()).sendResponse(response); } private void sendResultTimeout(Intent response) { MessageUtils.setTimeoutError(response); ((FPLUGDeviceService) getContext()).sendResponse(response); } // Convert Celsius to Fahrenheit. private double convertCelsiusToFahrenheit(final double celsius) { return (1.8 * celsius + 32); } // Convert Fahrenheit to Celsius. private double convertFahrenheitToCelsius(final double fahrenheit) { return ((0.56) * (fahrenheit - 32)); } }