/* * $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>:パスワード"); } |