日本語 | English


RSi

/*
* $Id: RobotMimamoriMain.java 322 2010-05-18 07:35:39Z mitsuki $
*
* Copyright 2009-2010 Fujitsu Limited.
* FUJITSU CONFIDENTIAL.
*/

package sample.rsnp2x;

import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Logger;

import org.robotservices.v02.exception.RSiException; import org.robotservices.v02.profile.common.Ret_value; import org.robotservices.v02.profile.invoker.IBasic_profile; import org.robotservices.v02.profile.invoker.IInformation_profile; import org.robotservices.v02.profile.invoker.IMultimedia_profile; import org.robotservices.v02.profile.invoker.InvokerProfileFactory; import org.robotservices.v02.util.ConnectionInfo;

import sample.rsnp2x.info.StateNotificator; import sample.rsnp2x.info.StateParam;

import com.fujitsu.rsi.helper.BasicProfileHelper; import com.fujitsu.rsi.helper.MultimediaProfileHelper; import com.fujitsu.rsi.util.RESULT;

/**

* 見守りサービス サンプル
* ロボットアプリメイン
*/
public class RobotMimamoriMain {
	private static Logger log = Logger.getLogger(RobotMimamoriMain.class
			.getName());
	private static String targetEPR = "http://rsi.aiit.ac.jp/rsnpServer/services";
	// ベーシック認証用ID/PW
	private static String basic_id = "rsiuser0";
	private static String basic_pw = "servicerobot";
	public static void main(String[] args) throws IOException {
		if (args.length < 2) {
			printUsage();
			return;
		}
		ServerSocket serversock = new ServerSocket(9000);
		Socket sock = null;
		String user_id = args[0];
		String password = args[1];
		// 接続情報の設定
		ConnectionInfo ci = new ConnectionInfo();
		ci.set_endpointname(targetEPR);
		ci.set_username(basic_id);
		ci.set_password(basic_pw);
		// ci.set_proxy("localhost:8000");
		InvokerProfileFactory factory = null;
		IBasic_profile bp = null;
		long conv_id = -1;
		StateNotificator sn = null;
		IMultimedia_profile mmp = null;
		try {
			factory = InvokerProfileFactory.newInstance(ci);
			// 通信経路を開設
			factory.connect();
			// Basic_profileによる認証
			bp = factory.getBasic_profile();
			Ret_value ret = bp.open(user_id, password);
			BasicProfileHelper bphlp = new BasicProfileHelper(ret);
			if (bphlp.getResult() != RESULT.SUCCESS.getResult()) {
				log.severe("Basic_profile#open()エラー[" + bphlp.getDetailCode()
						+ "]:" + bphlp.getDetail());
				bp = null;
				return;
			}
			conv_id = bphlp.getConv_id();
			log.info("conv_id:" + conv_id);
			// Information_profileでロボットの状態通知
			IInformation_profile inp = factory.getInformation_profile();
			sn = new StateNotificator(conv_id, inp);
			StateParam state = new StateParam();
			state.setAccountID(user_id);
			state.setLoginUser("robotuser");
			state.setCameraStatus(StateParam.CAMERA_STATE_AVAILABLE);
			sn.setStatus(state);
			// Multimedia_profileで画像送信
			mmp = factory.getMultimedia_profile();
			ret = mmp.start_profile(conv_id);
			MultimediaProfileHelper mphlp = new MultimediaProfileHelper(ret);
			if (mphlp.getResult() != RESULT.SUCCESS.getResult()) {
				log.severe("Multimedia_profile#start_profile()エラー["
						+ mphlp.getDetailCode() + "]:" + mphlp.getDetail());
				mmp = null;
				return;
			}
			// Socketに接続があるまで停止
			System.out.println("localhost の9000番ポートに接続すると終了します。");
			sock = serversock.accept();
			// マルチメディアプロファイル終了
			if (mmp != null) {
				mmp.end_profile(conv_id);
			}
			// 状態通知停止
			if (sn != null) {
				sn.stopNotify();
			}
			// 会話セッション終了
			if (bp != null) {
				bp.close(conv_id);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// 通信経路を切断
				if (factory != null) {
					factory.disconnect();
				}
			} catch (RSiException e) {
				e.printStackTrace();
			}
			if (sock != null) {
				sock.close();
			}
			serversock.close();
		}
		log.info("exit");
		System.exit(0);
	}
	/**
	 * 使用方法を表示します。
	 */
	private static void printUsage() {
		System.out.println("使い方:");
		System.out
				.println("java sample.rsnp2x.RobotMimamoriMain <robotid> <password> ");
		System.out.println("	<robotid>:ロボットアカウント");
		System.out.println("	<password>:パスワード");
	}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-25 (金) 13:50:51 (4357d)