/*
 * Copyright (C) 2005-2006 Kouji Sugisawa. All rights reserved.
 */

package jp.sourceforge.livez.vodafone;

import jp.sourceforge.livez.MobilePhoneRequest;

/**
 * ボーダフォン端末リクエスト(MS-Profile)情報のインターフェースです。
 * 
 * @author 杉澤 浩二
 */
public interface VodafoneRequest extends MobilePhoneRequest<VodafoneUserAgent> {

	/**
	 * ボーダフォン端末の HTTP ユーザエージェント情報を返します。
	 * 
	 * @return ボーダフォンHTTPユーザエージェント情報
	 */
	public VodafoneUserAgent getUserAgent();

	/**
	 * 端末の詳細な型を返します。
	 * 
	 * @return 端末型
	 */
	public VodafoneType getType();

	/**
	 * 端末ID(x-jphone-msname の値)を返します。
	 * 
	 * @return 端末ID
	 */
	public String getId();

	/**
	 * 端末ID(x-jphone-msnameの値)からマイナーバージョン番号を取除いた機種名を返します。
	 * 
	 * @return 機種名
	 */
	public String getName();

	/**
	 * シリーズ名を返します。
	 * 
	 * @return シリーズ名
	 */
	public String getSeriesName();

	/**
	 * ベンダーIDを返します。
	 * 
	 * @return ベンダーID
	 */
	public String getVendorId();

	/**
	 * モノクロ画面かどうかを返します。
	 * 
	 * @return モノクロ画面かどうか
	 */
	public boolean isMonochrome();

	/**
	 * (x-jphone-color) 色数または階調数を返します。
	 * 
	 * @return 色数または階調数
	 */
	public int getColor();

	/**
	 * (x-jphone-display) ブラウザの表示可能な幅を返します。
	 * 3GC 端末では LCD の物理幅を返します。
	 * 
	 * @return ブラウザの表示可能な幅。3GC端末では LCD の幅
	 */
	public int getDisplayWidth();

	/**
	 * (x-jphone-display) ブラウザの表示可能な高さを返します。
	 * 3GC 端末では LCD の物理高さを返します。
	 * 
	 * @return ブラウザの表示可能な高さ。3GC端末では LCD の高さ
	 */
	public int getDisplayHeight();

	/**
	 * (x-jphone-geocode) C型(C2除く)及びP型端末の場合は位置情報を返します。
	 * それ以外の場合は <code>null</code> を返します。<p>
	 * 値は既に復号化されています。
	 * 
	 * @return 位置情報
	 */
	public String getGeoCode();

	/**
	 * (x-jphone-java) C4型端末の場合(パケット非対応機の場合)に、対応 Java (JSCL) バージョンを返します。
	 * それ以外の場合は <code>null</code> を返します。
	 * 
	 * @return Java (JSCL) バージョン
	 */
	public String getJsclVersion();

	/**
	 * (x-jphone-region) W型及び3GC型端末の場合、ユーザの利用地域(国内/国外)を返します。
	 * 不明な場合は <code>null</code> を返します。
	 * 
	 * @return ユーザの利用地域
	 */
	public String getRegion();

	/**
	 * (x-jphone-smaf) SMAF タイプを返します。
	 * 不明な(C2型端末や一部の3GC型端末の)場合は <code>null</code> を返します。
	 * 
	 * @return SMAF タイプ
	 */
	public VodafoneSmaf getSmaf();

	/**
	 * (x-jphone-sound) 演奏可能な SMD の最大和音数(Skyメロディ和音種別)を返します。
	 * SMD に対応していない場合(3GC型端末の場合)は 0 以下の値を返します。
	 * 
	 * @return 演奏可能な SMD の最大和音数。非対応の場合は 0 以下の値
	 */
	public int getSmd();


	/**
	 * (x-jphone-notifyid) 課金の一意性を表すID(英数字10桁)を返します。
	 * 3GC端末で、従量課金及び Separate Delivery を利用した場合の送達確認情報送出時のみ値を返します。
	 * それ以外の場合は <code>null</code> を返します。
	 * 
	 * @return 課金の一意性を表すID
	 */
	public String getNotifyId();

	/**
	 * (x-jphone-regidterd) 情報料課金サービスにおいて有料情報の利用に同意したかどうかを返します。
	 * 3GC端末におけるコンテンツ・キー課金の場合、常に <code>false</code> を返します。
	 * 
	 * @return 有料情報の利用に同意したかどうか
	 */
	public boolean getRegisterd();

	/**
	 * UID 情報を返します。
	 * 
	 * @return UID 情報
	 */
	public UID getUID();

}
