/* IRKitTVProfile.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.irkit.profile; import android.content.Intent; import org.deviceconnect.android.deviceplugin.irkit.data.IRKitDBHelper; import org.deviceconnect.android.deviceplugin.irkit.data.VirtualProfileData; import org.deviceconnect.android.deviceplugin.irkit.service.VirtualService; import org.deviceconnect.android.message.MessageUtils; import org.deviceconnect.android.profile.DConnectProfile; import org.deviceconnect.android.profile.api.DConnectApi; import org.deviceconnect.android.profile.api.DeleteApi; import org.deviceconnect.android.profile.api.PutApi; import java.util.List; /** * 仮想デバイスのTVプロファイル. * @author NTT DOCOMO, INC. */ public class IRKitTVProfile extends DConnectProfile { /** * プロファイル名: {@value}. */ public static final String PROFILE_NAME = "tv"; /** * 属性: {@value}. */ public static final String ATTRIBUTE_CHANNEL = "channel"; /** * 属性: {@value}. */ public static final String ATTRIBUTE_VOLUME = "volume"; /** * 属性: {@value}. */ public static final String ATTRIBUTE_BROADCASTWAVE = "broadcastWave"; /** * 属性: {@value}. */ public static final String ATTRIBUTE_MUTE = "mute"; /** * 属性: {@value}. */ public static final String ATTRIBUTE_ENLPROPERTY = "enlProperty"; /** * パラメータ: {@value}. */ public static final String PARAM_TVID = "tvId"; /** * パラメータ: {@value}. */ public static final String PARAM_CONTROL = "control"; /** * パラメータ: {@value}. */ public static final String PARAM_TUNING = "tuning"; /** * パラメータ: {@value}. */ public static final String PARAM_SELECT = "select"; /** * パラメータ: {@value}. */ public static final String PARAM_EPC = "epc"; /** * パラメータ: {@value}. */ public static final String PARAM_VALUE = "value"; /** * パラメータ: {@value}. */ public static final String PARAM_POWERSTATUS = "powerstatus"; /** * パラメータ: {@value}. */ public static final String PARAM_PROPERTIES = "properties"; /** * パラメータ: {@value}. */ public static final String PARAM_ON = "ON"; /** * パラメータ: {@value}. */ public static final String PARAM_OFF = "OFF"; /** * パラメータ: {@value}. */ public static final String PARAM_UNKNOWN = "UNKNOWN"; /** * パラメータ: {@value}. */ public static final String PARAM_NEXT = "next"; /** * パラメータ: {@value}. */ public static final String PARAM_PREVIOUS = "previous"; /** * パラメータ: {@value}. */ public static final String PARAM_UP = "up"; /** * パラメータ: {@value}. */ public static final String PARAM_DOWN = "down"; /** * パラメータ: {@value}. */ public static final String PARAM_DTV = "DTV"; /** * パラメータ: {@value}. */ public static final String PARAM_BS = "BS"; /** * パラメータ: {@value}. */ public static final String PARAM_CS = "CS"; public IRKitTVProfile() { addApi(mPutPowerOnApi); addApi(mPutChannelApi); addApi(mPutVolumeApi); addApi(mPutBroadcastWaveApi); addApi(mDeletePowerOffApi); } @Override public String getProfileName() { return PROFILE_NAME; } private final DConnectApi mPutPowerOnApi = new PutApi() { @Override public boolean onRequest(final Intent request, final Intent response) { String tv = "/" + PROFILE_NAME; ; return ((VirtualService) getService()).sendTVRequest(getServiceID(request), "PUT", tv, response); } }; private final DConnectApi mPutChannelApi = new PutApi() { @Override public String getAttribute() { return ATTRIBUTE_CHANNEL; } @Override public boolean onRequest(final Intent request, final Intent response) { String control = null; if (request.getExtras().getString(PARAM_CONTROL) != null) { control = "/" + PROFILE_NAME + "/" + ATTRIBUTE_CHANNEL + "?" + PARAM_CONTROL + "=" + request.getExtras().getString(PARAM_CONTROL); } if (request.getExtras().getString(PARAM_TUNING) != null) { if (request.getExtras().getString(PARAM_CONTROL) == null) { control = "/" + PROFILE_NAME + "/" + ATTRIBUTE_CHANNEL + "?"; } else { control = control + "&"; } control = control + PARAM_TUNING + "=" + request.getExtras().getString(PARAM_TUNING); } return ((VirtualService) getService()).sendTVRequest(getServiceID(request), "PUT", control, response); } }; private final DConnectApi mPutVolumeApi = new PutApi() { @Override public String getAttribute() { return ATTRIBUTE_VOLUME; } @Override public boolean onRequest(final Intent request, final Intent response) { String control = "/" + PROFILE_NAME + "/" + ATTRIBUTE_VOLUME + "?" + PARAM_CONTROL + "=" + request.getExtras().getString(PARAM_CONTROL); return ((VirtualService) getService()).sendTVRequest(getServiceID(request), "PUT", control, response); } }; private final DConnectApi mPutBroadcastWaveApi = new PutApi() { @Override public String getAttribute() { return ATTRIBUTE_BROADCASTWAVE; } @Override public boolean onRequest(final Intent request, final Intent response) { String select = "/" + PROFILE_NAME + "/" + ATTRIBUTE_BROADCASTWAVE + "?" + PARAM_SELECT + "=" + request.getExtras().getString(PARAM_SELECT); return ((VirtualService) getService()).sendTVRequest(getServiceID(request), "PUT", select, response); } }; private final DConnectApi mDeletePowerOffApi = new DeleteApi() { @Override public boolean onRequest(final Intent request, final Intent response) { String tv = "/" + PROFILE_NAME; return ((VirtualService) getService()).sendTVRequest(getServiceID(request), "DELETE", tv, response); } }; }