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

package jp.sourceforge.livez.vodafone;

import jp.sourceforge.livez.CarrierType;
import jp.sourceforge.livez.MobilePhone;
import jp.sourceforge.livez.Screen;
import jp.sourceforge.livez.ServiceType;

/**
 * ボーダフォン端末情報のインターフェースです。
 * 
 * @author 杉澤 浩二
 */
public interface Vodafone extends MobilePhone<VodafoneBrowser, Vappli, UID> {

	/**
	 * 端末の提供する通信サービスの種類を返します。<p>
	 * 必ず "ボーダフォンライブ" を返します。
	 * 
	 * @return 提供する通信サービスの種類
	 */
	public ServiceType getServiceType();

	/**
	 * キャリアの種類を返します。<p>
	 * この実装は必ず "ボーダフォン" を返します。
	 * 
	 * @return キャリアの種類
	 */
	public CarrierType getCarrierType();

	/**
	 * 端末の一意な識別子を返します。<p>
	 * 
	 * @return 端末の一意な識別子
	 */
	public String getId();

	/**
	 * 必ず端末名を返します。<p>
	 * 端末名は端末IDから "_a" や "_b" などのマイナーバージョンシンボルを取り除いた値となります。
	 * 
	 * @return 端末名
	 */
	public String getName();

	/**
	 * 製品名を返します。<p>
	 * 実装は単に端末名を返します。
	 * 
	 * @return 製品名
	 */
	public String getProductName();

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

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

	/**
	 * 画面情報を返します。<p>
	 * 不明な場合は <code>null</code> を返します。
	 * 
	 * @return 液晶画面情報
	 */
	public Screen getScreen();

	/**
	 * ボーダフォンブラウザ情報を返します。<p>
	 * 
	 * @return ボーダフォンブラウザ情報
	 */
	public VodafoneBrowser getBrowser();

	/**
	 * Vアプリ実行環境情報を返します。<p>
	 * 非対応の場合は <code>null</code> を返します。
	 * 
	 * @return Vアプリ実行環境情報
	 */
	public Vappli getAppli();

	/**
	 * ボーダフォンサウンド情報を返します。<p>
	 * 不明な場合は <code>null</code> を返します。
	 * 
	 * @return ボーダフォンサウンド情報
	 */
	public VodafoneSound getSound();

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

	/**
	 * 3GC端末でのアプリケーション情報を返します。<p>
	 * 不明な場合は <code>null</code> を返します。
	 * 
	 * @return 3GC端末でのアプリケーション情報
	 */
	public Application getApplication();


	/**
	 * 端末の製造番号を返します。<p>
	 * ユーザID通知設定が無効な場合は <code>null</code> を返します。
	 * 
	 * @return 製造番号
	 */
	public String getSerialNumber();

	/**
	 * UID 情報を返します。<p>
	 * 
	 * @return UID 情報
	 */
	public UID getUserId();

}
