■■■ ■■■ 情報家電のための分散ソフトウェアプラットフォームの構築 ■■■ 取扱説明書 (CD-ROM配布用) ■■■ ■■■ 2000年6月 ■■■ 社団法人トロン協会 ■■■ ---------------------------------------------------------------------------- English version is "MANUAL_E.TXT". ---------------------------------------------------------------------------- ■ 目次 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.本システムの概要 1.1 ソフトウェアの全体構成 1.2 動作環境及び開発環境 2.インストール説明書 2.1 ホストマシン側のインストール 2.1.1 B-right/V開発環境のインストール 2.1.2 本システムで提供されるミドルウェア群のロード 2.1.3 本システムを用いたアプリケーションの開発 2.1.4 本システムを用いたCORBAアプリケーションの開発 2.2 ターゲットマシン側のインストール 2.2.1 実行環境の準備 2.2.2 ターゲットマシンへのプログラム転送と実行 3.JTRONプラットフォーム機能の利用方法 3.1 ITRONアタッチクラスAPI説明書 3.1.1 概要説明 3.1.2 パッケージ名 3.1.3 使用方法概要 3.1.4 パッケージに属するクラス 3.1.5 アタッチクラスの説明 3.1.5.1 Task 3.1.5.2 FixedMemoryPool 3.1.5.3 VariableMemoryPool 3.1.5.4 Semaphore 3.1.5.5 EventFlag 3.1.5.6 MailBox 3.1.5.7 MessageBuffer 3.1.5.8 Port 3.1.6 生成情報クラス 3.1.6.1 T_CMPF 3.1.6.2 T_CMPL 3.1.6.3 T_CSEM 3.1.6.4 T_CFLG 3.1.6.5 T_CMBX 3.1.6.6 T_CMBF 3.1.6.7 T_CPOR 3.1.7 状態参照クラス 3.1.7.1 T_RTSK 3.1.7.2 T_RMPF 3.1.7.3 T_RMPL 3.1.7.4 T_RSEM 3.1.7.5 T_RFLG 3.1.7.6 T_RMBX 3.1.7.7 T_RMBF 3.1.7.8 T_RPOR 3.1.8 メモリ領域を操作するためのクラス 3.1.8.1 ItronMemory 3.1.8.2 ItronFixedMemory 3.1.8.3 ItronVariableMemory 3.1.8.4 Rendezvous 3.1.9 JTRON例外クラス 3.1.9.1 JTRONException 3.1.10 ITRON API互換クラス 3.1.10.1 ItronApi 3.2 共有オブジェクトクラスAPI説明書 3.2.1 概要説明 3.2.2 パッケージ名 3.2.3 使用方法概要 3.2.4 パッケージに属するクラス及びITRON側API 3.2.5 共有オブジェクトクラスの説明 3.2.5.1 Sharable 3.2.5.2 SharedObject 3.2.5.3 SharedObjectManager 3.2.5.4 SharedObjectManagerImpl 3.2.5.5 ShmException 3.2.5.6 ShmIllegalStateException 3.2.5.7 ShmTimeoutException 3.2.6 ITRON側APIの説明 3.2.6.1 jti_get_obj 3.2.6.2 jti_get_mem 3.2.6.3 jti_loc_obj 3.2.6.4 jti_unl_obj 3.2.6.5 jti_funl_obj 3.2.6.6 jti_get_thr 3.2.6.7 jti_isa_thr 3.2.6.8 jti_int_thr 3.2.6.9 jti_isi_thr 3.2.6.10 jti_sus_thr 3.2.6.11 jti_rsm_thr 3.2.6.12 jti_sta_thr 3.2.6.13 jti_thr_stp 3.2.6.14 jti_des_thr 3.2.6.15 jti_get_jpr 3.2.6.16 jti_set_jpr 3.2.6.17 jti_get_tgr 3.2.6.18 jti_des_tgr 3.2.6.19 jti_sus_tgr 3.2.6.20 jti_rsm_tgr 3.2.6.21 jti_stp_tgr 3.3 ストリームクラスAPI説明書 3.3.1 概要説明 3.3.2 パッケージ名 3.3.3 使用方法概要 3.3.4 パッケージに属するクラス及びITRON側API 3.3.5 ストリームクラスの説明 3.3.5.1 JtiDataStream 3.3.5.2 JtiDataStreamException 3.3.6 ITRON側APIの説明 3.3.6.1 jti_cre_stm 3.3.6.2 jti_del_stm 3.3.6.3 jti_wri_stm 3.3.6.4 jti_rea_stm 3.3.6.5 jti_sht_stm 3.3.6.6 jti_ref_stm 4.CORBA関連機能の利用方法 4.1 CORBA関連機能インターフェース仕様 4.1.1 リソース設定 4.1.2 ORB 4.1.3 CORBA Object 4.1.4 POA 4.1.5 exception 4.1.6 memory 4.1.7 stub skelton 4.1.8 dynamic entry 4.2 IOR作成コマンド 5.GUIミドルウェア機能の利用方法 5.1 GUIミドルウェア機能の概要 5.1.1 イベント管理機能 5.1.2 パネル管理機能-描画編 5.1.3 パネル管理機能-シーン/パネル編 5.1.4 パーツ管理機能 5.1.5 文字入力管理機能 5.1.6 データボックス管理機能 5.2 GUIミドルウェア機能のシステムコール一覧 5.2.1 イベント管理機能のシステムコール 5.2.2 パネル管理機能-描画編のシステムコール 5.2.3 パネル管理機能-シーン/パネル編のシステムコール 5.2.4 パーツ管理機能のシステムコール 5.2.5 文字入力管理機能のシステムコール 5.2.6 データボックス管理機能のシステムコール 5.3 評価用ドライバ 付録1 GUIミドルウェア機能の外部設計書 付録1.1 イベント管理機能 付録1.1.1 イベントキュー管理機能 付録1.1.2 入力機器管理機能 付録1.2 パネル管理機能 付録1.2.1 描画環境管理機能 付録1.2.2 直線描画機能 付録1.2.3 長方形描画機能 付録1.2.4 円描画機能 付録1.2.5 文字描画機能 付録1.2.6 ビットマップ描画機能 付録1.2.7 パネル表示機能 付録1.2.8 パネル消去機能 付録1.3 パーツ管理機能 付録1.3.1 モーメンタリスイッチ管理機能 付録1.3.2 オルタネートスイッチ管理機能 付録1.3.3 スイッチセレクタ管理機能 付録1.3.4 スクロールセレクタ管理機能 付録1.3.5 シリアルセレクタ管理機能 付録1.3.6 ボリューム管理機能 付録1.4 文字入力管理機能 付録1.4.1 テキストボックス管理機能 付録1.5 データボックス管理機能 付録1.5.1 データボックス登録機能 ■ 1.本システムの概要 ■■■■■■■■■■■■■■■■■■■■■■■■■■ ━ 1.1 ソフトウェアの全体構成 ━━━━━━━━━━━━━━━━━━━━━ 本件開発成果物(本システム)で提供されるソフトウェアの全体構成を、 図1.1に示す。 ┌───────────────────────────────────┐ │ │ │ 組込み機器の制御アプリケーション │ │ │ ├───────────────┬───────────┬───────┤ │ │ │ │ │ JTRON │ │ │ │ プラットフォーム機能★ │ CORBA関連機能★ │ │ │ │ │ │ │ ┌───────────┼───────┐ │ │ │ │ / │ │ GUI │ │ │ / TCP/IP │ │ ミドルウェア│ │ │ Java Virtual / プロトコル │ │ 機能★ │ │ │ Machine (JVM) △ / スタック △ │ │ │ │ │ / │ │ │ │ │ / │ │ │ ├───┴────────┴──────────┴───┴───────┤ │ │ │ μITRON仕様OS △ │ │ (リアルタイムカーネル) │ │ │ ├───────────────────────────────────┤ │ │ │ DOS/V PC (x86 ハードウェア) △ │ │ │ └───────────────────────────────────┘ ★: 本件における開発項目 △: 既存品を利用 図1.1 本システムで提供されるソフトウェア 以下、項目別に説明を行う。 (1)JTRONプラットフォーム機能 ソフトウェアのポータビリティ及びネットワーク接続という観点から最 も強力なソリューションとなるのが、Javaの実行環境である。しかしな がら、Javaのみではハードウェアの細かい制御やリアルタイム処理に不 向きである。そこで、Java 実行環境とリアルタイムカーネルを融合さ せたプラットフォームを提供し、リアルタイム性が必要なアプリケーシ ョンはリアルタイムカーネル上に、 Java の利点が有効なアプリケーシ ョンは Java 実行環境上に実装すれば、双方の利点を組み合わせて利用 できる。これを目指したものが、TRONプロジェクトで仕様を標準化した JTRON仕様である。 JTRON仕様には、1997年末に仕様が公開され、 既に商品化まで行われて いるJTRON 1.0仕様と、μITRON〜Java間の連携機能を強化したJTRON 2. 0仕様がある。本件では、JTRON 2.0仕様OSの開発を行う。 Java 実行環境上のプログラムとμITRON仕様カーネル上のタスクとの間 の通信機構については、JTRON 2.0仕様において次の3つのタイプ定義し ており、これらの機能をそれぞれ実装する。 タイプ1: Java 実行環境上のプログラムから、μITRON仕様カーネル のシステムコールを呼び出すための機構。Java プログラム からμITRONの資源にアクセスすることが可能になる。 タイプ2: μITRON仕様カーネル上のタスクから、Java実行環境内のオ ブジェクトを直接アクセスするための機構。 タイプ3: Java 実行環境上のプログラムとμITRON仕様カーネル上の タスクの間でストリーム通信を行うための機構。 具体的な開発方針としては、 Java環境のスレッドをμITRONのタスクに マッピングし、Java スレッド間の各同期機構をμITRONの同期機構を用 いて実現する。なお、 JTRON仕様OSの実現のために利用するJavaバイト コード処理系(いわゆる JVM - Java Virtual Machine) については、HP 社のChaiVMを使用しているが、 JVMの実装に依存する部分は極力減らす 方針であり、他のJVMへの移植も可能である。 (2)CORBA関連機能 情報家電や自動車内のネットワークにおいて相互接続性を確保するため には、低レベルのネットワークプロトコルの標準化に加えて、より抽象 度の高いレベルでの通信をサポートすることが必要になる。高レベルの 通信プロトコルとしては、情報家電の機能をオブジェクトとしてとらえ、 情報家電の連携動作をオブジェクト間通信により実現する方法が有力視 されており、 それを具体化した仕様としてCORBA(The Common Object Request Broker: Architecture and Specification)がある。本件にお いては、 オブジェクト指向の分散プラットフォームであるCORBAをベー スに、情報家電の連携動作のための高レベル通信プロトコルの処理系の ソフトウェア開発を行う。 ところで、家電や自動車内の制御システムのネットワーク化に際しては、 無線や電源ラインを用いたネットワークなど回線容量の小さい場合にも 対応しなければならない。また、コスト削減が厳しく求められ、リアル タイム性が必要といった要求も厳しい。既存のインターネットプロトコ ル及びCORBAでは、 こういった観点からの問題が多いため、本件では特 にこれらの問題点を解決することを目標とし、開発機能の名称も「組込 みCORBA」としている。具体的には、CORBA を情報家電に適用するにあ たっての様々な問題点の解決、すなわち、ソフトウェアのコンパクト化、 運用の容易性、家電向けオブジェクトサービスインタフェースなどに重 点をおいて開発を行う。 (3)GUIミドルウェア機能 μITRON上に実装可能な、 コンパクトでスケーラビリティの高いGUI (Graphical User Interface)の構築支援ミドルウェアのソフトウェア開 発を行う。 組込み機器や家電に求められるGUI機能は、 かなり限定されたものであ るのが一般的である。これに対して、パソコンやワークステーションを メインターゲットとして開発された既存のウィンドウシステムはオーバ ースペックであるために、プロセッサの処理能力の面でもメモリ使用量 の面でも無駄が大きい。 また、一口に情報家電に求められるGUIと言っ ても、必要な機能は応用機器の性質、すなわちユーザインタフェースの 機能、ディスプレイの解像、入力デバイスなどによって大きく異なる。 一方、要求毎に別々のソフトウェアを開発する方法を採った場合、ソフ トウェアの保守コストの面からは不利となる。 これに対して、本件で開発を行うμITRON用のGUIミドルウェアは、その スケーラビリティないしは適応性を特長とする。具体的には、個々の機 能のモジュール化や適応化を進め、広範囲な用途への実装が可能なミド ルウェアを目指す。GUIミドルウェアの内部構成は、 ディスプレイへの 描画モジュール、 スイッチなどのGUIパーツ管理モジュール、画面やパ ネルを管理するモジュール、入力デバイスからの情報(イベント)を管理 モジュールなどに分けられるが、これらの中から必要なモジュールのみ を利用できることに加えて、個々のモジュールの機能も用途に応じて最 適化できるように工夫する。 なお、Javaにもawtと呼ばれるGUI向けのモジュールが用意されているた め、この機能はある意味でそれと重複する。しかし、コンパクト性やス ケーラビリティといった観点から見ると、 Java上で動く標準のGUIモジ ュールは利用できないケースも多い。 一方、本件で開発するGUIミドル ウェアは、 既存のウィンドウシステムやJava上のGUI環境の実装が困難 な小さめの組込み機器に対しても、 GUI機能を提供できる点にメリット がある。 ━ 1.2 動作環境及び開発環境 ━━━━━━━━━━━━━━━━━━━━━━ (1)全体構成 本システムの動作環境及び開発環境は図1.2の通りである。 ターゲットマシン ホストマシン(開発環境) ┌─────────────┐ ┌─────────────┐ ┌ │ ☆ │ │開発用コンソール │ │ │ 評価実験用プログラム │ │ 評価実験用プログラムの │ │ │ │ │ 管理、コンパイル │ │ ├─────────────┤ │ RS232Cの通信端末 │ ソ │ │実験で利用する開発対象機能│ │ │ フ │ │ ★│ │コンパイラ │ ト │ │ JTRONプラットフォーム機能│ │ GCC (Ver 2.7.2.1 以降) │ ウ ┤ │ CORBA関連機能 │ │ │ ェ │ │ GUIミドルウェア機能 │ │ │ ア │ ├────┬─────┬──┤ ├─────────────┤ │ │Java △│TCP/IP △│ │ │ │ │ │Virtual │プロトコル│ │ │ │ │ │Machine │スタック │ │ │ │ │ │ (JVM) │ │ │ │ OS: Solaris (Ver 2.5以降)│ │ ├────┴─────┘ │ │ │ │ │ μITRON 3.0仕様 │ │ │ └ │ リアルタイムカーネル△ │ │ │ ├─────────────┤ ├─────────────┤ ハ ┌ │ │ │ │ │ │ │ DOS/V PC │ │ │ ド ┤ │ │ │ SUN Ultra 1 または相当品 │ ウ │ ├─────────────┤ │ │ ェ │ │Intel EtherExpress PRO/10+│ │ │ ア └ │ (LANボード) │ │ │ └─────────────┘ └────┬───┬────┘ ↑ ↑ │ │ │ │RS-232C │ │ │ └───────────┘ │ │ │ │ │ ←───┴────────────────────┴────────→ LAN(Ethernet 10Base-T, 10Mbps) ★: 本システムで提供されるソフトウェア ☆: ユーザの開発するアプリケーションプログラム △: 既存品を利用 図1.2 本システムの動作環境及び開発環境 上記のうち、ホストマシン(開発環境)のハードウェア及びソフトウェア 構成は次の通りである。 ・ハードウェア: SUN Ultra 1 または相当品、メモリ: 64MB以 上、HDD: 2GB 以上 ・ソフトウェア: OS: Solaris (Ver 2.5以降) ・開発言語: GCC (Ver 2.7.2.1以降) ・ネットワーク: Ethernet (TCP/IP) ホストマシン上で作成したアプリケーションプログラムは、 LAN経由で ターゲットマシンに転送し、その上で実行する。また、ホストマシン上 で動く通信端末プログラム(UNIXのtipなど)を、RS-232Cの回線経由でタ ーゲットマシンのシリアルポートに接続し、ターゲットマシン上で動く CLIユーティリティを用いて、 OSの起動やアプリケーションプログラム の実行を指示する。 CLIユーティリティの詳細については、結合試験報 告書の付録4.を参照のこと。 ターゲットマシンのハードウェア構成及びソフトウェア構成については、 以下に説明する。 (2)ハードウェア構成 動作環境のうち、ターゲットマシンのハードウェア構成は図1.3の通 りである。 ┌───────────────────────────┐ │ DOS/V PC │ │ │ │ ※ IBM-PC/AT互換機、いわゆるWindows 95/98用マシン │ └─┬─────────────────────────┘ │ │ ┌───────────────────┐ ├─┤ CPU (Pentium 以上) │ │ └───────────────────┘ │ │ ┌───────────────────┐ ├─┤ 64Mバイト以上のメインメモリ │ │ └───────────────────┘ │ │ ┌───────────────────┐ ├─┤ IDEタイプのHDD │ │ └───────────────────┘ │ │ ┌───────────────────┐ ├─┤ 106/109日本語キーボード │ │ │ │ │ │ または101/104英語キーボード │ │ └───────────────────┘ │ │ ┌───────────────────┐ ├─┤ シリアルポート ├─── RS-232C │ └───────────────────┘ │ │ ┌───────────────────┐ ├─┤ PS/2互換マウス │ │ └───────────────────┘ │ │ ┌───────────────────┐ ├─┤ 640×480ドット16色VGA仕様、 │ │ │ │ │ │ VESA BIOS 2.0以上のグラフィック機能 │ │ └───────────────────┘ │ │ ┌───────────────────┐ └─┤Intel EtherExpress PRO/10+ (LANボード)├─── Ethernet(10Base-T,10Mbps) └───────────────────┘ 図1.3 ターゲットマシンのハードウェア構成 (3)ソフトウェア構成 本件で開発するソフトウェアは、μITRON 3. 0仕様のリアルタイムカー ネルの上で動作する。すなわち、JTRONプラットフォーム機能、CORBA関 連機能、GUIミドルウェア機能のいずれの部分も、μITRON 3.0仕様のリ アルタイムカーネルの機能を使って実装されており、必要に応じてリア ルタイムカーネルの機能を呼び出す。 μITRON 3.0仕様のリアルタイム カーネルとしては、既存品を利用する。 また、Java Virtual Machine(JVM)、 TCP/IPプロトコルスタックの部分 についても、 既存品を利用する。JTRONプラットフォーム機能の実装に はJVMの機能も使うが、さらに、JVMは必要に応じてリアルタイムカーネ ルやTCP/IPプロトコルスタックの機能を呼び出す。また、 CORBA関連機 能の実装のためにもTCP/IPプロトコルスタックの機能を利用するが、さ らに、TCP/IPプロトコルスタックはLANドライバを、LANドライバはリア ルタイムカーネルの機能を呼び出す。 上記の既存品として、具体的に使用するソフトウェアは次の通りである。 JVM: HP社のChai VM (Ver 2.1以降) μITRON 3.0仕様リアルタイムカーネル: パーソナルメディア社の超漢字(B-right/V R2) ※ BTRON仕様OSであるが、 その中心核として ITRON(I-right/V)を含んでおり、 ITRONの実 行環境としても利用できる。 TCP/IPプロトコルスタック: B-right/Vに含まれている当該機能を利用 また、ターゲットマシン側において、アプリケーションプログラムの実 行を指示したり、ターゲットマシン内部の状態を参照したりするために、 B-right/V に含まれる「CLI」というユーティリティを使用する。CLIユ ーティリティの詳細については、結合試験報告書の付録4.を参照のこと。 (D)ネットワーク構成 「JTRONプラットフォーム機能」及び「CORBA関連機能」の一部は、クラ イアントマシンとサーバマシンをLANで接続した環境で動作する。 この 様子を図1.4に示す。クライアントマシンとサーバマシンを接続する ために、10Mbps の Ethernet (TCP/IP) を使用する。 ターゲットマシン1 ターゲットマシン2 (クライアントマシン) (サーバマシン) ┌─────────────┐ ┌─────────────┐ ┌ │ ☆│ │ ☆│ │ │アプリケーションプログラム│ │アプリケーションプログラム│ │ │ │ │ │ │ ├─────────────┤ ├─────────────┤ ソ │ │ ★│ │ ★│ フ │ │JTRONプラットフォーム機能 │ │JTRONプラットフォーム機能 │ ト │ │ の一部 │ │ の一部 │ ウ ┤ │ │ │ │ ェ │ │CORBA関連機能の一部 │ │CORBA関連機能の一部 │ ア │ ├────┬─────┬──┤ ├────┬─────┬──┤ │ │Java △│TCP/IP △│ │ │Java △│TCP/IP △│ │ │ │Virtual │プロトコル│ │ │Virtual │プロトコル│ │ │ │Machine │スタック │ │ │Machine │スタック │ │ │ │ (JVM) │ │ │ │ (JVM) │ │ │ │ ├────┴─────┘ │ ├────┴─────┘ │ │ │ μITRON 3.0仕様 │ │ μITRON 3.0仕様 │ └ │ リアルタイムカーネル△ │ │ リアルタイムカーネル△ │ ├─────────────┤ ├─────────────┤ ハ ┌ │ │ │ │ │ │ │ DOS/V PC │ │ DOS/V PC │ ド ┤ │ │ │ │ ウ │ ├─────────────┤ ├─────────────┤ ェ │ │Intel EtherExpress PRO/10+│ │Intel EtherExpress PRO/10+│ ア └ │ (LANボード) │ │ (LANボード) │ └─────────────┘ └─────────────┘ ↑ ↑ ↑ ↑ │ │ │ │ │ │RS-232C RS-232C│ │ │ ┌─┴───────────┴─┐ │ │ │ 開発環境(SUN Ultra 1 相当品) │ │ │ └───────┬───────┘ │ │ │ │ │ │ │ ←───┴──────────┴─────────┴────────→ Ethernet(10Base-T, 10Mbps) ★: 本システムで提供されるソフトウェア ☆: ユーザの開発するアプリケーションプログラム △: 既存品を利用 図1.4 ネットワーク環境 ■ 2.インストール説明書 ■■■■■■■■■■■■■■■■■■■■■■■■■ 本システムで提供される「JTRONプラットフォーム機能」「CORBA関連機 能」「GUIミドルウェア機能」は、いわゆるミドルウェア群であり、 こ れ単独のアプリケーションとして実行できるものではない。これらのミ ドルウェア群は、開発環境上のライブラリ等として提供され、ユーザの 作成したアプリケーションプログラムと一緒にリンクすることにより、 ターゲットマシン上で動くロードモジュールとなる。 本章では、まず、これらのミドルウェア群を開発環境上にインストール する方法について説明する。次に、ターゲットマシン上に、本システム の実行環境や本件を利用したアプリケーションプログラムをインストー ルする方法について説明する。 ━ 2.1 ホストマシン側のインストール ━━━━━━━━━━━━━━━━━━ 2.1.1 B-right/V開発環境のインストール 本システムで提供するミドルウェア群をインストールする前に、まず、 ホストマシン(SUN Ultra 1 または相当品)上に、「B-right/V開発環境 (BV-GSDK: B-right/V GNU based Software Developer's Kit)」 をイン ストールしておく必要がある。 BV-GSDKの入手とインストール方法につ いては、以下のURLで示される「超漢字開発者サイト」 に説明があるの で、 それにしたがってBV-GSDKをダウンロードし、ホストマシンにイン ストールする。 (なお、この「超漢字開発環境」は、CD-ROM内にも含まれている) 超漢字開発者サイト: http://www.personal-media.co.jp/btron/developer/index.html ※ 「超漢字」は、B-right/V R2 の製品名称である。 2.1.2 本システムで提供されるミドルウェア群のロード CD-ROMから、以下のファイルをロードする。この操作により、本システ ムのミドルウェア群(ライブラリ群)のオブジェクトやヘッダファイルを ホストマシンの開発環境に加える。 なお、以下では、開発環境(BV-GSDK)のベースディレクトリを "${BD}" で 表示し、アプリケーションを開発するためのソース等を入れるディレクト リを $BD/jcg としている。 また、以下の "${CDROM}" は、CD-ROM上のファイルの所在を示すディレク トリを意味し、ホストマシンの環境に依存して変化する。CD-ROMの個別の ファイルを直接アクセスできる場合には、"/cdrom/cdrom0" (ホスト依存) などの名称を書く。8+3文字のファイル名の制約などにより、CD-ROM上の アーカイブファイル(JCGPRG.TGZ)を展開したものを使う場合には、アー カイブファイルの展開を行ったディレクトリの名称を書く。 ◇共通手順 ・${BD}/include の下にディレクトリ jcg を作成し、ヘッダファイル *.h (libjcg.h など) をその下にコピーする。 % mkdir ${BD}/include/jcg % cp ${CDROM}/include/*.h ${BD}/include/jcg ・JCG実行環境構築用プログラム libjcg.a を、${BD}/lib/i386e/ の下に コピーする。 % cp ${CDROM}/env/libjcg.a ${BD}/lib/i386e ・アプリケーションを開発するためのディレクトリを用意し、 その下 にディレクトリ etc を作成する。makerules をその下にコピーする。 makerules 内の BD の設定は、実際の環境に合わせて修正する。 % mkdir ${BD}/jcg % mkdir ${BD}/jcg/etc % cp ${CDROM}/include/makerules ${BD}/jcg/etc ◇組込みCORBAのアプリケーション開発に必要な手順 ・組込みCORBAの開発成果物をライブラリ化したファイル libecb.a を、 ${BD}/lib/i386e/ の下にコピーする。 % cp ${CDROM}/lib/libecb.a ${BD}/lib/i386e ・CORBAのアプリケーションを開発するためのIOR作成コマンド cre_ior を、${BD}/jcg/etc の下にコピーする。 % cp ${CDROM}/lib/cre_ior ${BD}/jcg/etc ◇GUIミドルウェアのアプリケーション開発に必要な手順 ・GUIミドルウェアの開発成果物をライブラリ化したファイル libgui.a を、 ${BD}/lib/i386e/ の下にコピーする。 % cp ${CDROM}/lib/libgui.a ${BD}/lib/i386e 上記の操作を行った結果のディレクトリ構成(関連部分のみ)を以下に示す。 開発環境のベースディレクトリ (${BD}) | |----include | |------jcg ※ jcg ディレクトリを作成し、*.h をコピーする | | | |----corba.h | |----ecbasrv.h | |----ecbcfg.h | |----ecbcon.h | |----ecberr.h | |----ecbgiop.h | |----ecbinit.h | |----ecbmem.h | |----ecbmrshl.h | |----ecbobj.h | |----ecborb.h | |----ecbpoa.h | |----ecbseq.h | |----ecbtype.h | |----i_device.h | |----i_jt2ext.h | |----i_malloc.h | |----i_pload.h | |----i_socket.h | |----libgui.h | |----lib | |-----i386e | |----libecb.a ※ *.a をコピーする | |----libjcg.a | |----libgui.a | ... | |----jcg | |----etc | | |----cre_ior ※ cre_ior をコピーする | | |----makerules ※ makerules をコピーする | | | | | |----アプリケーションのソース等 | ... | | 2.1.3 本システムを用いたアプリケーションの開発 以下、 「GUIミドルウェア機能」を用いたサンプルプログラム「dt」の 開発手順を例にとって説明する。 (dt については sample/draw/src/Makefile を参照) ユーザの書いたアプリケーションプログラムが「GUIミドルウェア機能」 を利用する場合、アプリケーションのソースプログラム中で「libgui.h」 のヘッダファイルをインクルードする必要がある。また、リンクオプシ ョンとして「-lgui -ljcg」を指定し、「libgui.a」と「libjcg.a」 を リンクする。サンプルプログラム「dt」の場合、「dt.h」中の以下の行 で「libgui.h」のインクルードをおこなっている。 #include また、「Makefile」中の以下の行において、「libgui.a」「libjcg.a」 のリンクを指定している。 LOADLIBES += -lgui -ljcg これらの指定を行った後にmakeを実行すると、「GUIミドルウェア機能」 が組み込まれたアプリケーションプログラム「dt」が得られる。 2.1.4 本システムを用いたCORBAアプリケーションの開発 本システムの「CORBA関連機能」を用いたアプリケーションの開発には、 スタブ及びスケルトンも含めたプログラムをユーザが作成する必要があ る。 スタブは、 クライアント側からサーバ側へ送信するリクエスト(オペレ ーションの引数)をマーシャリングする処理、 マーシャリングされたリ クエストをサーバへ送信する処理、 サーバ側からの応答(オペレーショ ンの戻り値)を受信する処理、 受信した応答をアンマーシャリングする 処理を含む。 スケルトンは、受信したリクエストのアンマーシャリング処理、オペレ ーションの呼び出し、その応答のマーシャリング処理、マーシャリング された応答をクライアントへ送信する処理送信を含む。 さらに、 動的に(ターゲットマシン稼働中に)登録される新規CORBAオブ ジェクトは、実行コードのダウンロード機能、ダンロードしたプログラ ムのリンク機能などが必要であり、プログラムを実装する機器に依存し たものとなる。よって、ダウンロード機能及びリンク機能に関してはユ ーザが独自に開発する必要がある。 また、CORBAの共通サービス(ネーミングサービス等) の既成品を使用ま たはユーザが開発すれば、よりネットワークに透過な分散オブジェクト 環境を構築可能である。 以下、 「CORBA関連機能」 を用いたサンプルプログラム「long」 及び 「dync」の開発手順を説明する。 サンプルプログラム「long」は、サーバ側ターゲットマシンに常駐する CORBAオブジェクトに関するサンプルプログラムであり、 クライアント 側プログラムとサーバ側プログラムが存在する。クライアント側は、サ ーバ側からソケットI/Fを用いて送信されるIORを受信することで、 IOR を取得している。 サンプルプログラム「dync」は、 サーバ側ターゲットマシンで動的(タ ーゲットマシン稼働中に)に登録される新規CORBAオブジェクトについて のサンプルプログラムであり、クライアント側プログラムとサーバ側プ ログラムが存在する。サンプルプログラム「dync」の動的に登録される 新規CORBAオブジェクトは、 サーバ側のダウンロードモジュールを作成 する際、 動的に登録される新規CORBAオブジェクトを一緒にリンクし、 ダウンロードする。 また、IORに関してはクライアント側のダウンロー ドモジュールと一緒にリンクしている。 このIORは、 IOR作成コマンド cre_iorにより作成される。 ユーザの書いたアプリケーションプログラムが「CORBA関連機能」 を利 用する場合、アプリケーションのソースプログラム中で「corba.h」 の ヘッダファイルをインクルードする必要がある。また、リンクオプショ ンとして「-lecb -ljcg」を指定し、「libecb.a」と「libjcg.a」をリ ンクする。サンプルプログラム「long」及び「dync」は、「test.h」中 の以下の行で「corba.h」のインクルードをおこなっている。 #include また、「Makefile」中の以下の行において、「libecb.a」「libjcg.a」 のリンクを指定している。 LOADLIBES += -lecb -ljcg さらに、「CORBA関連機能」 を用いたアプリケーションプログラムは、 初期化関数ECORBA_initにより「CORBA関連機能」を初期化する。その際、 初期化データの指定が必要となる。そのデータについてサンプルプログ ラムでは、 「config. h」 に記述されており、 ターゲット名のみ 「makeinfo」の中に指定している。以下は、「makeinfo」中にサーバ側 ターゲット名 dell1 及びクライアント側ターゲット名 dell2 を指定し ている例である。 SRV_HOST = dell1 CLI_HOST = dell2 これらの指定を行った後にmymakeを実行すると、「CORBA関連機能」 が 組み込まれたアプリケーションプログラムが得られる。 サンプルプログラム「long」では、以下のダウンロードモジュールが得 られる。 クライアント側 longc サーバ側 longs サンプルプログラム「dync」では、以下のダウンロードモジュールが得 られる。 クライアント側 dyncc サーバ側 dyncs ━ 2.2 ターゲットマシン側のインストール ━━━━━━━━━━━━━━━━ 2.2.1 実行環境の準備 ターゲットマシン上では、超漢字(B-right/V R2)をインストールした後、 以下の手順で、本システムの実行を行うための実行環境を準備する。 1) CD-ROM内の ENV/JCGENV のファイルを、超漢字 (B-right/V R2.xxx) がインス トールされているマシンの Windows 上のファイルとしてロードする。 2) 超漢字を起動して小物メニューの「ファイル変換」を指定し、Windows 上に ロードした JCGENV のファイルを超漢字上にドラッグする。 変換方法は、「無変換(基本)」を指定する。 ※ 1), 2) の手順の代わりに、超漢字上の「ファイル変換」を用いて、CD-ROM内の ENV/JCGENV ファイルを直接超漢字上のファイルに変換することもできる。 3) 小物メニューの「システム環境設定」を指定して、「バージョン」の画面を 表示し、上記で変換した JCGENV をその中にドラッグする。 「JCG実行環境」のシステム登録処理を行いますか ? というパネルが表示され るので、実行スイッチを押して登録する。 登録の後、システムを再起動する。 なお、このソフトウェアは、 B-right/V上でITRONの実行環境を提供するための インタフェース用ソフトウェアである。 小物メニューの「ネットワーク環境設定」を選択し、ネットワークの設 定をおこなっておく。 起動時のウィンドウにある「小物箱」をダブルクリックし、現われたウ ィンドウの「コンソール」をダブルクリックする。現われたウィンドウ で「debugmode 1」と入力することで、デバッグモードに切り替える。 [/SYS]% debugmode 1 + 0: DEBUGMODE 1 [/SYS]% 最後に、起動時のウィンドウで終了メニューを選択し、「更新して終了」 「更新して終了」「再起動」を選択して再起動する。 デバッグモードでは、コンソールに以下のようなプロンプトが表示される。 [/SYS]% 2.2.2 ターゲットマシンへのプログラム転送と実行 まず、ターゲットマシンのOSをITRONモード(非GUIモード)にするため、 以下のように入力して再起動する。 [/SYS]% ren STARTUP.CMD STARTUP [/SYS]% なお、元のモード(BTRONモード)に戻すには、 以下のように入力して再 起動する。 [/SYS]% ren STARTUP STARTUP.CMD [/SYS]% ITRONモードで起動すると、 「[IMS]%」のプロンプトが表示される。こ こで「$cli」と入力することにより、CLIが動作する。なお、CLIの詳細 については、「超漢字開発環境」に付属している説明書を参照のこと。 [IMS]% $cli pid = 2 (pri = -1) << START cli : R1.100 >> 2000/1/17(月) 18:36:01 [/SYS]% ホストマシン上で開発したプログラムをftp経由でターゲットマシンに ダウンロードするため、 まず、 ネットワークドライバをロードする。 ftpによるダウンロードをおこなわない場合には、この操作は必要ない。 [/SYS]% kerext tcpipmgr KEREXT tcpipmgr [1] c0212000 - c0242000 [/SYS]% kerext netdrv KEREXT netdrv [2] c01fb000 - c0201000 [/SYS]% 続いて、本システムを用いてホストマシン上で開発したアプリケーショ ンプログラムのダウンロードをおこなう。 以下の例では、「GUIミドル ウェア機能」が組み込まれたアプリケーションプログラム「dt」をダウ ンロードしている。 [/SYS]% fget -uuser -ppass host:/dt/pcat/dt 220 u30 FTP server (UNIX(r) System V Release 4.0) ready. .......................................................- ............................... 887677 bytes transferd. (177535 Bytes/sec) [/SYS] また、GUIミドルウェア機能を利用する場合は、必要に応じて、 以下の ようにキーボード/PDドライバ(gkbpd)もダウンロードする。 [/SYS]% fget -uuser -ppass host:/gkbpd/pcat/gkbpd 220 u30 FTP server (UNIX(r) System V Release 4.0) ready. .. 26631 bytes transferd. (26631 Bytes/sec) [/SYS] 最後に、 ダウンロードしたアプリケーションプログラムを実行する。 GUIミドルウェア機能を利用する場合は、必要に応じて、 その前にキー ボード/PDドライバ(CD-ROM内の LIB/gkbpd) もターゲットに転送し、 実行しておく。以下の例では、「GUIミドルウェア機能」が組み込まれた アプリケーションプログラム「dt」を実行している。 [/SYS]% kerext gkbpd KEREXT gkbpd [3] c01f2000 - c01f6000 [/SYS]% kerext dt KEREXT dt [4] c0242000 - c0334000 [/SYS] 「JTRONプラットフォーム機能」 を使用したアプリケーションプログラ ムを動作させる場合は、 その前にITRONアプリケーションプログラム用 インターフェースライブラリ(CD-ROM内の LIB/jt2ext)もターゲットに 転送し、これも実行しておく。 [/SYS]% kerext jt2ext また、Javaアプリケーションプログラムを動作させる場合は、 「JTRON プラットフォーム機能」が組み込まれたJVM(CD-ROM内の LIB/slimrt)も ターゲットに転送し、同時に実行する。 [/SYS]% kerext slimrt は、実行するJavaアプリケーション名(拡張子.class)である。 ■ 3.JTRONプラットフォーム機能の利用方法 ■■■■■■■■■■■■■■■■ ━ 3.1 ITRONアタッチクラスAPI説明書 ━━━━━━━━━━━━━━━━━━ 3.1.1 概要説明 本ITRONアタッチクラスを利用することにより、ITRONカーネルオブジェ クトに対応したJavaオブジェクトを生成できる。 そして、 生成された Javaオブジェクトを操作する事で対応元のITRONカーネルオブジェクト を操作しJavaプログラムからμITRON仕様リアルタイムカーネルの同期 ・通信機能を利用できる。 本ITRONアタッチクラスで扱うことのできるITRONカーネルオブジェクト は以下の8つである。 (A)タスク (B)固定長メモリプール (C)可変長メモリプール (D)セマフォ (E)イベントフラグ (F)メイルボックス (G)メッセージバッファ (H)ポート 3.1.2 パッケージ名 パッケージ名は jp.gr.itron.jtron.attach である。 3.1.3 使用方法概要 本ITRONアタッチクラスがどのように使用されるかを以下に述べる。 手順1: JavaプログラムからITRONカーネルオブジェクトに対応したJava オブジェクトを生成する。その際、ITRONカーネルオブジェクト を新規に作成してJavaオブジェクトを対応させることもできる し、既に存在するITRONカーネルオブジェクトにJavaオブジェク トを対応させることもできる。 手順2: 生成したJavaオブジェクトはITRONカーネルオブジェクトに対応 している。 Javaオブジェクトのメソッドを実行すると対応した ITRONカーネルオブジェクトに対してμITRONシステムコールを 発行することができるため、JavaからμITRON仕様リアルタイム カーネルの同期・通信機能を利用できる。 手順3: メソッドを実行した結果は、対応しているITRONカーネルオブジ ェクトへのμITRONシステムコールの結果となる。 μITRONシス テムコールにエラーが発生した場合はJava例外機能を使用して エラーの発生を起動元Javaプログラムに通知する。 コンストラクタには以下の3種類が用意されている。 (A) ITRONカーネルオブジェクトのIDを指定して、ITRONカーネルオブジ ェクトを新規に作成し対応させる。 (B)ITRONカーネルオブジェクトのIDを指定せずに、 μITRON仕様リアル タイムカーネルに割り当ててもらったIDを持ったITRONカーネルオブジ ェクトを新規に作成し対応させる。 (C) 既に存在するITRONカーネルオブジェクトのIDを指定してITRONカー ネルオブジェクトに対応させる。 3.1.4 パッケージに属するクラス 本ITRONアタッチクラスは大きく分けて以下の6種類のクラスで構成され る。 (A)ITRONカーネルオブジェクトに対応したクラス (B)ITRONカーネルオブジェクトの生成情報を指定するためのクラス (C)ITRONカーネルオブジェクトの参照情報を返すためのクラス (D)メモリ領域を操作するためのクラス (E)JTRON例外クラス (F)ITRON API互換クラス これ以降、上記(A),(B),(C)をそれぞれアタッチクラス、 生成情報クラ ス、状態参照クラスと呼ぶ。 メモリ領域を操作するためのクラスについて説明する。 ITRONアプリケ ーションとJavaプログラムが協調動作を行う際にITRONアプリケーショ ンとJavaプログラムでデータ交換を行うために、 μITRONシステムコー ルに合わせてメモリ領域の先頭アドレスを受け渡すことになる。しかし Javaではアドレスを指定してその内容を操作する事ができない。そのた めメモリ領域に対応したJavaオブジェクトを生成し、対応したメモリ領 域を操作できるようした。そのためのクラスがメモリ領域を操作するた めのクラスである。 JTRON例外クラスとは本ITRONアタッチクラスを使用した際にITRONカー ネルオブジェクトとの同期・通信にエラーが発生した場合に発生する例 外クラスである。 ITRON API互換クラスとは、Javaオブジェクトを生成することなく、μ ITRONシステムコールと互換するAPIをJavaのstaticメソッドとして提供 するために用意したクラスである。 以下にアタッチクラスを列挙する。 (A)Task (B)FixedMemoryPool (C)VariableMemoryPool (D)Semaphore (E)EventFlag (F)MailBox (G)MessageBuffer (H)Port 以下にメモリ領域を操作するためのクラスを列挙する。 (A)ItronMemory (B)ItronFixedMemory (C)ItronVariableMemory (D)Rendezvous 以下にJTRON例外クラスを列挙する。 (A)JTRONException 以下にITRON API互換クラスを列挙する。 (A)ItronApi アタッチクラスの親クラスとなるAttachBasicについて説明する。 AttachBasicとは以下のフィールドとメソッドを持つ。 フィールド (A)int Id 対応元のITRONカーネルオブジェクトのID メソッド (A)public int getId() 対応元のITRONカーネルオブジェクトのIDを返す。 3.1.5 アタッチクラスの説明 3.1.5.1 Task (1)クラス名、親クラス public class Task extends AttachBasic (2)説明 ITRONタスクを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public Task (int taskId) throws JTRONException タスクIDを与えて既存のタスクにアタッチするオブジェクトを生成する。 (B)public Task (Thread thread) throws JTRONException スレッドを与えてスレッドにマッピングされたタスクにアタッチするオ ブジェクトを生成する。 (5)メソッド (C)public static Task currentTask () throws JTRONException カレントスレッドに対応するタスクにアタッチするオブジェクトを生成 する。 (D)public void start () throws JTRONException タスクの起動。sta_tskに相当する。 (E)public void terminate () throws JTRONException タスクの強制終了。ter_tskに相当する。 (F)public void changePriority (int priority) throws JTRONException タスク優先度の変更。chg_priに相当する。 (G)public void releaseWait () throws JTRONException 待ち状態の強制解除。rel_waiに相当する。 (H)public T_RTSK referStatus () throws JTRONException タスクの状態参照。ref_tskに相当する。 (I)public void suspend () throws JTRONException 強制待ち状態への移行。sus_tskに相当する。 (J)public void resume () throws JTRONException 強制待ち状態からの再開。rsm_tskに相当する。 (K)public void forceResume () throws JTRONException 強制待ち状態からの強制再開。frsm_tskに相当する。 (L)public void sleep () throws JTRONException 自タスクを起床待ち状態に移行させる。 (M)public void sleep (int tmout) throws JTRONException タイムアウト時間を指定し自タスクを起床待ち状態に移行させる。 (N)public void wakeup () throws JTRONException タスクの起床。wup_tskに相当する。 (O)public int cancelWakeup () throws JTRONException タスクの起床要求のキャンセル。can_wupに相当する。 (P)public static void rotateReadyQueue (int priority) throws JTRONException 指定された優先度のタスクの優先順位を回転する。 (Q)public static int getTaskId () throws JTRONException 自タスクのタスクIDを得る。 (6)特記事項 JTRON2.0仕様との差異はない。Task(Thread thread)に渡すThreadはrun ()メソッドを実行した後のスレッドでなければ例外が発生する。 3.1.5.2 FixedMemoryPool (1)クラス名、親クラス public class FixedMemoryPool extends AttachBasic (2)説明 固定長メモリプールを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public FixedMemoryPool (int mpfid,int length) throws JTRONException 既存の固定長メモリプールのアタッチオブジェクトを生成する。 (B)public FixedMemoryPool (int mpfid,T_CMPF cmpf) throws JTRONException 新規に固定長メモリプールを生成し,アタッチオブジェクトを生成する。 idの指定あり。 (C)public FixedMemoryPool (T_CMPF cmpf) throws JTRONException 新規に固定長メモリプールを生成し,アタッチオブジェクトを生成する。 idの指定なし。 (5)メソッド (D)public void delete () throws JTRONException メモリプールの削除。del_mpfに対応。 (E)public ItronFixedMemory get () throws JTRONException メモリ領域の確保。get_blfに対応。 (F)public ItronFixedMemory get (int tmout) throws JTRONException メモリ領域の確保。tget_blfに対応。タイムアウト指定あり。 (G)public ItronFixedMemory poll () throws JTRONException メモリ領域の確保。pget_blfに対応。ポーリング。 (H)private T_RMPF referStatus () throws JTRONException メモリプールの状態参照。ref_mpfに対応。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.5.3 VariableMemoryPool (1)クラス名、親クラス public class VariableMemoryPool extends AttachBasic (2)説明 可変長メモリプールを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public VariableMemoryPool (int mplid) throws JTRONException 既存の可変長メモリプールのアタッチオブジェクトを生成する。 (B)public VariableMemoryPool (int mplid,T_CMPL cmpl) throws JTRONException 新規に可変長メモリプールを生成し,アタッチオブジェクトを生成する。 idの指定あり。 (C)public VariableMemoryPool (T_CMPL cmpl) throws JTRONException 新規に可変長メモリプールを生成し,アタッチオブジェクトを生成する。 idの指定なし。 (5)メソッド (D)public void delete () throws JTRONException メモリプールの削除。del_mplに対応。 (E)public ItronVariableMemory get (int length) throws JTRONException メモリ領域の確保。get_blkに対応。 (F)public ItronVariableMemory get (int length,int tmout) throws JTRONException メモリ領域の確保。tget_blkに対応。タイムアウト指定あり。 (G)public ItronVariableMemory poll (int length) throws JTRONException メモリ領域の確保。pget_blkに対応。ポーリング。 (H)public T_RMPL referStatus () throws JTRONException メモリプールの状態参照。ref_mplに対応。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.5.4 Semaphore (1)クラス名、親クラス public class Semaphore extends AttachBasic (2)説明 セマフォを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public Semaphore (int semId) throws JTRONException 既存セマフォのアタッチオブジェクトを生成する。 (B)public Semaphore (int semid,T_CSEM csem) throws JTRONException 新規にセマフォを生成し,アタッチオブジェクトを生成する。 idの指定 あり。 (C)public Semaphore (T_CSEM csem) throws JTRONException 新規にセマフォを生成し, アタッチオブジェクトを生成する。idの指定 なし。 (5)メソッド (D)public void delete () throws JTRONException セマフォの削除。 (E)public void signal () throws JTRONException セマフォ資源の返却。sig_semに相当する。 (F)public void waitSemaphore () throws JTRONException セマフォ資源の獲得。wai_semに相当する。 (G)public void waitSemaphore (int tmout) throws JTRONException セマフォ資源の獲得 タイムアウトあり。twai_semに相当する。 (H)public void poll () throws JTRONException セマフォ資源の獲得 ポーリング。pol_semに相当する。 (I)public T_RSEM referStatus () throws JTRONException セマフォ状態の参照。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.5.5 EventFlag (1)クラス名、親クラス public class EventFlag extends AttachBasic (2)説明 イベントフラグを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public EventFlag (int evfId) throws JTRONException 既存イベントフラグのアタッチオブジェクトを生成する。 (B)public EventFlag (int evfid,T_CFLG cflg) throws JTRONException 新規にイベントフラグを生成し,アタッチオブジェクトを生成する。 id の指定あり。 (C)public EventFlag (T_CFLG cflg) throws JTRONException 新規にイベントフラグを生成し, アタッチオブジェクトを生成する。id の指定なし。 (5)メソッド (D)public void delete () throws JTRONException イベントフラグの削除。del_flgに相当する。 (E)public void set (int pattern) throws JTRONException イベントフラグのセット。set_flgに相当する。 (F)public void clear (int pattern) throws JTRONException イベントフラグのクリア。clr_flgに相当する。 (G)public int waitFlag (int waitPattern,int waitMode) throws JTRONException イベントフラグ待ち。wai_flgに相当する。 (H)public int waitFlag (int waitPattern,int waitMode,int tmout) throws JTRONException イベントフラグ待ち タイムアウトあり。twai_flgに相当する。 (I)public int poll (int waitPattern,int waitMode) throws JTRONException イベントフラグ待ち ポーリング。pol_flgに相当する。 (J)public T_RFLG referStatus () throws JTRONException イベントフラグの状態参照。ref_flgに相当する。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.5.6 MailBox (1)クラス名、親クラス public class MailBox extends AttachBasic (2)説明 メイルボックスを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public MailBox (int mbxId) throws JTRONException 既存のメイルボックスのアタッチオブジェクトを生成する。 (B)public MailBox (int mbxid,T_CMBX cmbx) throws JTRONException 新規にメイルボックスを生成し,アタッチオブジェクトを生成する。 id の指定あり。 (C)public MailBox (T_CMBX cmbx) throws JTRONException 新規にメイルボックスを生成し, アタッチオブジェクトを生成する。id の指定なし。 (5)メソッド (D)public void delete () throws JTRONException メイルボックスの削除。del_mbxに相当する。 (E)public void send (ItronMemory data) throws JTRONException メッセージを送信する。snd_mbxに相当する。 (F)public ItronMemory receive (int length) throws JTRONException メッセージを受信する。rcv_mbxに相当する。 (G)public ItronMemory receive (int length,int tmout) throws JTRONException メッセージを受信する。タイムアウトあり。trcv_mbxに相当する。 (H)public ItronMemory pollReceive (int length) throws JTRONException メッセージを受信する。ポーリング。prcv_mbxに相当する。 (I)public T_RMBX referStatus () throws JTRONException メールボックスの状態参照。ref_mbxに相当する。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.5.7 MessageBuffer (1)クラス名、親クラス public class MessageBuffer extends AttachBasic (2)説明 メッセージバッファを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public MessageBuffer (int mbfId) throws JTRONException 既存のメッセージバッファのアタッチオブジェクトを生成する。 (B)public MessageBuffer (int mbfid,T_CMBF cmbf) throws JTRONException 新規にメッセージバッファを生成し,アタッチオブジェクトを生成する。 idの指定あり。 (C)public MessageBuffer (T_CMBF cmbf) throws JTRONException 新規にメッセージバッファを生成し,アタッチオブジェクトを生成する。 idの指定なし。 (5)メソッド (D)public void delete () throws JTRONException メッセージバッファの削除。del_mbf。 (E)public void send (ItronMemory data) throws JTRONException メッセージ送信。snd_mbfに相当する。 (F)public void send (ItronMemory data,int tmout) throws JTRONException メッセージ送信。タイムアウトあり。tsnd_mbfに相当する。 (G)public void pollSend (ItronMemory data) throws JTRONException メッセージ送信。ポーリング。psnd_mbfに相当する。 (H)public ItronMemory receive (int length) throws JTRONException メッセージ受信。rcv_mbfに相当する。 (I)public ItronMemory receive (int length,int tmout) throws JTRONException メッセージ受信。タイムアウトあり。trcv_mbfに相当する。 (J)public ItronMemory pollReceive (int length) throws JTRONException メッセージ受信。ポーリング。prcv_mbfに相当する。 (K)public void receiveWithMemory (ItronMemory data) throws JTRONException メッセージ受信。データ領域を指定する。rcv_mbfに相当する。 (L)public void receiveWithMemory (ItronMemory data,int tmout) throws JTRONException メッセージ受信。データ領域を指定する。タイムアウトあり。trcv_mbf に相当する。 (M)public void pollReceiveWithMemory (ItronMemory data) throws JTRONException メッセージ受信。データ領域を指定する。ポーリング。prcv_mbfに相当 する。 (N)public T_RMBF referStatus () throws JTRONException メッセージバッファの状態参照。ref_mbfに相当する。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.5.8 Port (1)クラス名、親クラス public class Port extends AttachBasic (2)説明 ポートを操作するためのクラス (3)フィールド なし (4)コンストラクタ (A)public Port (int portId) throws JTRONException 既存のポートのアタッチオブジェクトを生成する。 (B)public Port (int portid,T_CPOR cpor) throws JTRONException 新規にポートを生成し,アタッチオブジェクトを生成する。 idの指定あ り。 (C)public Port (T_CPOR cpor) throws JTRONException 新規にポートを生成し, アタッチオブジェクトを生成する。idの指定な し。 (5)メソッド (D)public void delete () throws JTRONException ポートの削除。del_porに相当する。 (E)public ItronMemory call (ItronMemory mem,int calptn,int csize) throws JTRONException ランデブの呼び出し。cal_porに相当する。 (F)public ItronMemory call (ItronMemory mem,int calptn,int csize,int tmout) throws JTRONException ランデブの呼び出し タイムアウトあり。tcal_porに相当する。 (G)public ItronMemory pollAndCall (ItronMemory mem,int calptn,int csize) throws JTRONException ランデブの呼び出し。ポーリング。pcal_porに相当する。 (H)public Rendezvous accept (int acpptn) throws JTRONException ランデブの受け付け。acp_porに相当する。 (I)public Rendezvous accept (int acpptn,int tmout) throws JTRONException ランデブの受け付け。タイムアウトあり。tacp_porに相当する。 (J)public Rendezvous pollAccept (int acpptn) throws JTRONException ランデブの受け付け。ポーリング。pacp_porに相当する。 (K)public void forward (int calptn,Rendezvous data) throws JTRONException ランデブの回送。fwd_porに相当する。 (L)public T_RPOR referStatus () throws JTRONException ポートの状態参照。ref_porに相当する。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6 生成情報クラス 3.1.6.1 T_CMPF (1)クラス名、親クラス public class T_CMPF (2)説明 固定長メモリプール生成情報クラス。 (3)フィールド public int mpfatr; // メモリプール属性 public int mpfcnt; // メモリプール全体のブロック数 public int blfsz; // 固定長メモリブロックサイズ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6.2 T_CMPL (1)クラス名、親クラス public class T_CMPL (2)説明 可変長メモリプール生成情報クラス。 (3)フィールド public int mplatr; /* メモリプール属性 */ public int mplsz; /* メモリプール全体のサイズ */ public static final int TA_FIFO = 0x0000; public static final int TA_TPRI = 0x0001; (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6.3 T_CSEM (1)クラス名、親クラス public class T_CSEM (2)説明 セマフォ生成情報クラス。 (3)フィールド public int sematr; /* セマフォ属性 */ public int isemcnt; /* セマフォの初期カウント値 */ public int maxsem; /* セマフォの最大カウント値 */ public static final int TA_FIFO = 0x0000; // 待ちタスクはFIFO public static final int TA_TPRI = 0x0001; // 待ちタスクは優先度順 (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6.4 T_CFLG (1)クラス名、親クラス public class T_CFLG (2)説明 イベントフラグ生成情報クラス。 (3)フィールド public int flgatr; /* イベントフラグ属性 */ public int iflgptn; /* イベントフラグの初期パターン */ public static final int TA_WSGL=0x00000000; /* 複数タスクの待 ちを許さない*/ public static final int TA_WMUL=0x00000008; /* 複数タスクの待 ちを許す */ public static final int TWF_ANDW=0x00000000; /* AND待ち */ public static final int TWF_ORW=0x00000002; /* OR待ち */ public static final int TWF_CLR=0x00000001; /* クリア指定 */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6.5 T_CMBX (1)クラス名、親クラス public class T_CMBX (2)説明 メイルボックス生成情報クラス (3)フィールド public int mbxatr; /* メイルボックス属性 */ public int bufcnt; /* リングバッファの大きさ */ public static final int TA_TFIFO = 0x0000; public static final int TA_TPRI = 0x0001; public static final int TA_MFIFO = 0x0000; public static final int TA_MPRI = 0x0002; (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6.6 T_CMBF (1)クラス名、親クラス public class T_CMBF (2)説明 メッセージバッファ生成情報クラス。 (3)フィールド public int mbfatr; /* メッセージバッファ属性 */ public int bufsz; /* メッセージバッファのサイズ */ public int maxmsz; /* メッセージの最大長 */ public static final int TA_TFIFO = 0x0000; public static final int TA_TPRI = 0x0001; (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.6.7 T_CPOR (1)クラス名、親クラス public class T_CPOR (2)説明 ポート生成情報クラス。 (3)フィールド public int poratr; /* ポート属性 */ public int maxcmsz; /* 呼出メッセージの最大長 */ public int maxrmsz; /* 返答メッセージの最大長 */ public static final int TA_NULL = 0x0000; (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7 状態参照クラス 3.1.7.1 T_RTSK (1)クラス名、親クラス public class T_RTSK (2)説明 タスク状態参照クラス。 (3)フィールド public int tskpri; // 現在の優先度 public int tskstat; // タスク状態 public int tskwait; // 待ち要因 public int wid; // 待ちオブジェクトID public int wupcnt; // 起床要求カウント public int suscnt; // SUSPEND要求カウント public int tskatr; // タスク属性 public int itskpri; // タスク起動時優先度 public int stksz; // スタックサイズ public static final int TTS_RUN = 0x0001; /* RUN */ public static final int TTS_RDY = 0x0002; /* READY */ public static final int TTS_WAI = 0x0004; /* WAIT */ public static final int TTS_SUS = 0x0008; /* SUSPEND */ public static final int TTS_WAS = 0x000c; /* WAIT-SUSPEND */ public static final int TTS_DMT = 0x0010; /* DORMANT */ public static final int TTW_SLP = 0x0001; /* 起床待ちによる 待ち */ public static final int TTW_DLY = 0x0002; /* タスクの遅延に よる待ち */ public static final int TTW_NOD = 0x0008; /* 接続機能応答待 ち */ public static final int TTW_FLG = 0x0010; /* イベントフラグ 待ち */ public static final int TTW_SEM = 0x0020; /* セマフォ待ち */ public static final int TTW_MBX = 0x0040; /* メイルボックス 待ち */ public static final int TTW_SMBF = 0x0080; /* メッセージバッ ファ送信待ち */ public static final int TTW_MBF = 0x0100; /* メッセージバッ ファ受信待ち */ public static final int TTW_CAL = 0x0200; /* ランデブ呼出待 ち */ public static final int TTW_ACP = 0x0400; /* ランデブ受付待 ち */ public static final int TTW_RDV = 0x0800; /* ランデブ終了待 ち */ public static final int TTW_MPL = 0x1000; /* 可変長メモリプ ール待ち */ public static final int TTW_MPF = 0x2000; /* 固定長メモリプ ール待ち */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.2 T_RMPF (1)クラス名、親クラス public class T_RMPF (2)説明 固定長メモリプール状態参照クラス。 (3)フィールド public int wtsk; // 待ちタスクの有無 public int frbcnt; // 空き領域のブロック数 (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.3 T_RMPL (1)クラス名、親クラス public class T_RMPL (2)説明 可変長メモリプール状態参照クラス (3)フィールド public int wtsk; /* 待ちタスクの有無 */ public int frsz; /* 空き領域の合計サイズ */ public int maxsz; /* 最大の連続空き領域のサイズ */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.4 T_RSEM (1)クラス名、親クラス public class T_RSEM (2)説明 セマフォ状態参照クラス。 (3)フィールド public int wtsk; /* 待ちタスクの有無 */ public int semcnt; /* 現在のセマフォカウント値 */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.5 T_RFLG (1)クラス名、親クラス public class T_RFLG (2)説明 イベントフラグ状態参照クラス。 (3)フィールド public int wtsk; /* 待ちタスクの有無 */ public int flgptn; /* 現在のイベントフラグパターン */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.6 T_RMBX (1)クラス名、親クラス public class T_RMBX (2)説明 メイルボックス状態クラス。 (3)フィールド public int wtsk; /* 待ちタスクの有無 */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.7 T_RMBF (1)クラス名、親クラス public class T_RMBF (2)説明 メッセージバッファ状態参照クラス。 (3)フィールド public int wtsk; /* 受信待ちタスクの有無 */ public int stsk; /* 送信待ちタスクの有無 */ public int msgsz; /* 次に受信されるメッセージのサイズ */ public int frbufsz; /* 空きバッファのサイズ */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.7.8 T_RPOR (1)クラス名、親クラス public class T_RPOR (2)説明 ポート状態参照クラス。 (3)フィールド public int wtsk; /* 呼出待ちタスクの有無 */ public int atsk; /* 受付待ちタスクの有無 */ (4)コンストラクタ 引数なしのコンストラクタのみ。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.8 メモリ領域を操作するためのクラス 3.1.8.1 ItronMemory (1)クラス名、親クラス public class ItronMemory extends AttachBasic (2)説明 メモリ領域を操作するためのクラス。 (3)フィールド なし。 (4)コンストラクタ (A)public ItronMemory (int len) throws JTRONException 指定した長さのメモリ領域を持ったメモリ操作オブジェクトを生成する。 (B)public ItronMemory () メモリ操作オブジェクトを生成する。 (5)メソッド (C)public void free () throws JTRONException メモリ領域を解放する。 (C)public int getLength () throws JTRONException メモリ領域の長さを取得する。 (D)public void disableWrite () メモリ領域の書き込みを禁止する。 (E)public void enableWrite () メモリ領域の書き込みを許可する。 (F)public boolean isWriteable () メモリ領域の書き込み許可・禁止状態を返す。 (G)public void seek (int offset) throws JTRONException メモリアクセスポインタの位置を,先頭からoffsetに設定する。 (H)public boolean checkSeek (int offset) offset先が領域内かチェックする。 (I)public boolean checkEof () accessPointがEOF位置かどうかを判断する。 (J)public int read () 現在位置のバイトデータを返す。 (K)public byte readByte () throws JTRONException バイトデータを読み込む。 (L)public byte readByte (int offset) throws JTRONException オフセット位置offsetのバイトデータを読み込む。 (M)public short readShort () throws JTRONException Shortデータを読み込む。 (N)public short readShort (int offset) throws JTRONException オフセット位置offsetのShortデータを読み込む。 (O)public int readInt () throws JTRONException Intデータを読み込む。 (P)public int readInt (int offset) throws JTRONException オフセット位置offsetのIntデータを読み込む。 (Q)public long readLong () throws JTRONException Longデータを読み込む。 (R)public long readLong (int offset) throws JTRONException オフセット位置offsetのLongデータを読み込む。 (S)public int read (byte b[],int len) throws JTRONException バイト配列を読み込む。 (T)public int read (int offset,byte b[],int len) throws JTRONException オフセット位置offsetのバイト配列を読み込む。 (U)public void writeByte (byte b) throws JTRONException バイトデータを書き込む。 (V)public void writeByte (int offset,byte b) throws JTRONException オフセット位置offsetにバイトデータを書き込む。 (W)public void writeShort (short s) throws JTRONException Shortデータを書き込む。 (X)public void writeShort (int offset,short s) throws JTRONException オフセット位置offsetにShortデータを書き込む。 (Y)public void writeInt (int i) throws JTRONException Intデータを書き込む。 (Z)public void writeInt (int offset,int i) throws JTRONException オフセット位置offsetにIntデータを書き込む。 (AA)public void writeLong (long l) throws JTRONException Longデータを書き込む。 (AB)public void writeLong (int offset,long l) throws JTRONException オフセット位置offsetにLongデータを書き込む。 (AC)public int write (byte b[],int len) throws JTRONException バイト配列を書き込む。 (AD)public int write (int offset,byte b[],int len) throws JTRONException オフセット位置offsetにバイト配列を書き込む。 (6)特記事項 JTRON2.0との差異は以下の点である。 (A)引数なしのコンストラクタを持つ。 (B)int read()メソッドを持つ。 (C)boolean checkSeek(int offset)メソッドを持つ。 (D)boolean checkEof()メソッドを持つ。 3.1.8.2 ItronFixedMemory (1)クラス名、親クラス public class ItronFixedMemory extends ItronMemory (2)説明 固定長メモリプールより確保したメモリ領域を操作するためのクラス。 (3)フィールド なし。 (4)コンストラクタ 固定長メモリプールに対応するアタッチクラス FixedMemoryPool のメ ソッドの返り値として取得する。 (5)メソッド (B)public int getPoolId () メモリプールIDを返す。 (C)public void release () throws JTRONException メモリ領域を解放する。 (D)public void free () throws JTRONException メモリ領域を解放する。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.8.3 ItronVariableMemory (1)クラス名、親クラス public class ItronVariableMemory extends ItronMemory (2)説明 可変長メモリプールより確保したメモリ領域を操作するためのクラス。 (3)フィールド なし。 (4)コンストラクタ 可変メモリプールに対応するアタッチクラス VariableMemoryPool のメ ソッドの返り値として取得する。 (5)メソッド (B)public int getPoolId () メモリプールIDを返す。 (C)public void release () throws JTRONException メモリ領域を解放する。 (D)public void free () throws JTRONException メモリ領域を解放する (6)特記事項 JTRON2.0仕様との差異はない。 3.1.8.4 Rendezvous (1)クラス名、親クラス public class Rendezvous extends ItronMemory (2)説明 ランデブに対応するメモリ操作クラス。 (3)フィールド なし。 (4)コンストラクタ なし。 (5)メソッド (A)public int getNo () ランデブ番号を返す。 (B)public void reply () throws JTRONException ランデブを終了する。メッセージを受け付ける。 (6)特記事項 JTRON2.0仕様との差異はない。 3.1.9 JTRON例外クラス 3.1.9.1 JTRONException (1)クラス名、親クラス public class JTRONException extends Exception (2)説明 ITRONアタッチクラスを使用した際にITRONカーネルオブジェクトとの同 期・通信にエラーが発生した場合に発生する例外クラス。 (3)フィールド 表3.1 JTRON例外クラスフィールドデータ ┌───────┬──────┬─────────────────────┐ │名前 │ 型 │ 説明 │ ├───────┼──────┼─────────────────────┤ │exceptionCode │ int │例外コード │ ├───────┼──────┼─────────────────────┤ │resourceId │ int │アタッチしているITRONカーネルオブジェクト │ │ │ │のID │ ├───────┼──────┼─────────────────────┤ │ApiNo │ int │μITRONシステムコール API番号 │ ├───────┼──────┼─────────────────────┤ │ApiCls │ int │μITRONシステムコール APIクラス番号 │ ├───────┼──────┼─────────────────────┤ │ApiName │ String │μITRONシステムコール名 │ ├───────┼──────┼─────────────────────┤ │ErrorCode │ int │エラーコード │ ├───────┼──────┼─────────────────────┤ │ErrorName │ String │エラー名 │ └───────┴──────┴─────────────────────┘ (4)コンストラクタ (A)JTRONException (String msg) メッセージを与えて例外クラスのオブジェクトを生成する。 (B)public JTRONException () 例外クラスのオブジェクトを生成する。 (5)メソッド なし (6)特記事項 JTRON2.0仕様との差異はない。 3.1.10 ITRON API互換クラス 3.1.10.1 ItronApi (1)クラス名、親クラス public class ItronApi (2)説明 Javaオブジェクトを生成することなく、 μITRONシステムコールと互換 するAPIをJavaのstaticメソッドとして提供するために用意したクラス。 (3)フィールド なし (4)コンストラクタ なし (5)メソッド (A)public native static int dis_dsp () ディスパッチ禁止。ER dis_dsp(void)に相当する。 (B)public native static int ena_dsp () ディスパッチ許可。ER ena_dsp(void)に相当する。 (C)public native static int chg_pri (int tskid,int tskpri) タスク優先度の変更。ER chg_pri(ID tskid, PRI tskpri)に相当する。 (D)public native static int rot_rdq (int tskpri) タスクの優先順位の回転。ER rot_rdq(PRI tskpri)に相当する。 (E)public native static int rel_wai (int tskid) 待ち状態の強制解除。ER rel_wai(ID tskid)に相当する。 (F)public native static int get_tid (Integer tskid) 実行状態のタスクIDの参照。ER get_tid(ID *p_tskid)に相当する。 (G)public native static int ref_tsk (T_RTSK rtsk,int tskid) タスクの状態参照。 ER ref_tsk(T_RTSK *pk_rtsk, ID tskid)に相当す る。 (H)public native static int sus_tsk (int tskid) 強制待ち状態への移行。ER sus_tsk(ID tskid)に相当する。 (I)public native static int rsm_tsk (int tskid) 強制待ち状態からの再開。ER rsm_tsk(ID tskid)に相当する。 (J)public native static int frsm_tsk (int tskid) 強制待ち状態からの強制再開。ER frsm_tsk(ID tskid)に相当する。 (K)public native static int slp_tsk () 自タスクを起床待ち状態に移行させる。ER slp_tsk(void)に相当する。 (L)public native static int tslp_tsk (int tmout) 自タスクを起床待ち状態に移行させる。 タイムアウトあり。 ER tslp_tsk(TMO tmout)に相当する。 (M)public native static int wup_tsk (int tskid) タスクの起床。ER wup_tsk(ID tskid)に相当する。 (N)public native static int can_wup (Integer wupcnt,int tskid) タスク起床要求のキャンセル。 ER can_wup(INT *p_wupcnt, ID tskid) に相当する。 (O)public native static int vcre_sem (T_CSEM csem) セマフォの生成 ID指定なし。ER vcre_sem(T_CSEM *pk_csem) に相当す る。 (P)public native static int cre_sem (int semid,T_CSEM csem) セマフォの生成 ID指定あり。ER cre_sem(ID semid, T_CSEM *pk_csem) に相当する。 (Q)public native static int del_sem (int semid) セマフォの削除。ER del_sem(ID semid)に相当する。 (R)public native static int sig_sem (int semid) セマフォ資源の返却。ER sig_sem(ID semid)に相当する。 (S)public native static int wai_sem (int semid) セマフォ資源の獲得。ER wai_sem(ID semid)に相当する。 (T)public native static int preq_sem (int semid) セマフォ資源の獲得 ポーリング。ER preq_sem(ID semid)に相当する。 (U)public native static int twai_sem (int semid,int tmout) セマフォ資源の獲得 タイムアウトあり。 ER twai_sem(ID semid, TMO tmout)に相当する。 (V)public native static int ref_sem (T_RSEM rsem,int semid) セマフォの状態参照。ER ref_sem(T_RSEM *pk_rsem, ID semid) に相当 する。 (W)public native static int vcre_flg (T_CFLG cflg) イベントフラグの生成。ER vcre_flg(T_CFLG *pk_cflg)に相当する。 (X)public native static int cre_flg (int flgid,T_CFLG cflg) イベントフラグの生成 ID指定あり。 ER cre_flg(ID flgid, T_CFLG * pk_cflg)に相当する。 (Y)public native static int del_flg (int flgid) イベントフラグの削除。ER del_flg(ID flgid)に相当する。 (Z)public native static int set_flg (int flgid,int setptn) イベントフラグのセット。ER set_flg(ID flgid, UINT setptn) に相当 する。 (AA)public native static int clr_flg (int flgid,int clrptn) イベントフラグのクリア。ER clr_flg(ID flgid,UINT clrptn)に相当す る。 (AB)public native static int wai_flg (Integer flgptn,int flgid,int waiptn,int wfmode) イベントフラグ待ち。 ER wai_flg(UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode)に相当する。 (AC)public native static int pol_flg (Integer flgptn,int flgid,int waiptn,int wfmode) イベントフラグ待ち ポーリング。 ER pol_flg(UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode)に相当する。 (AD)public native static int twai_flg (Integer flgptn,int flgid,int waiptn,int wfmode,int tmout) イベントフラグ待ち タイムアウトあり。ER twai_flg(UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode, TMO tmout)に相当する。 (AE)public native static int ref_flg (T_RFLG rflg,int flgid) イベントフラグの状態参照。 ER ref_flg(T_RFLG *pk_rflg, ID flgid) に相当する。 (AF)public native static int vcre_mbx (T_CMBX cmbx) メールボックスの生成。ER vcre_mbx(T_CMBX *pk_cmbx)に相当する。 (AG)public native static int cre_mbx (int mbxid,T_CMBX cmbx) メールボックスの生成 ID指定あり。ER cre_mbx(ID mbxid, T_CMBX * pk_cmbx)に相当する。 (AH)public native static int del_mbx (int mbxid) メールボックスの削除。ER del_mbx(ID mbxidに相当する。 (AI)public native static int snd_msg (int mbxid,ItronMemory mem) メールボックスへの送信。 ER snd_msg(ID mbxid, T_MSG *pk_msg)に相 当する。 (AJ)public native static int rcv_msg (ItronMemory mem,int mbxid) メールボックスからの受信。ER rcv_msg(T_MSG* *ppk_msg, ID mbxid) に相当する。 (AK)public native static int prcv_msg (ItronMemory mem,int mbxid) メールボックスからの受信 ポーリング。ER prcv_msg(T_MSG* *ppk_msg, ID mbxid)に相当する。 (AL)public native static int trcv_msg (ItronMemory mem,int mbxid,int tmout) メールボックスからの受信 タイムアウトあり。ER trcv_msg(T_MSG* * ppk_msg, ID mbxid, TMO tmout)に相当する。 (AM)public native static int ref_mbx (T_RMBX rmbx,int mbxid) メールボックスの状態参照。ER ref_mbx(T_RMBX *pk_rmbx, ID mbxid) に相当する。 (AN)public native static int vcre_mbf (T_CMBF cmbf) メッセージバッファの生成。ER vcre_mbf(T_CMBF *pk_cmbf)に相当する。 (AO)public native static int cre_mbf (int mbfid,T_CMBF cmbf) メッセージバッファの生成 ID指定あり。ER cre_mbf(ID mbfid, T_CMBF *pk_cmbf)に相当する。 (AP)public native static int del_mbf (int mbfid) メッセージバッファの削除。ER del_mbf(ID mbfid)に相当する。 (AQ)public native static int snd_mbf (int mbfid,ItronMemory mem,int size) メッセージバッファへの送信。 ER snd_mbf(ID mbfid, VP msg, INT msgsz)に相当する。 (AR)public native static int psnd_mbf (int mbfid,ItronMemory mem,int size) メッセージバッファへの送信 ポーリング。ER psnd_mbf(ID mbfid, VP msg, INT msgsz)に相当する。 (AS)public native static int tsnd_mbf (int mbfid,ItronMemory mem,int size,int tmout) メッセージバッファへの送信 タイムアウトあり。ER tsnd_mbf(ID mbfid, VP msg, INT msgsz, TMO tmout)に相当する。 (AT)public native static int rcv_mbf (ItronMemory mem,Integer size,int mbfid) メッセージバッファからの受信。 ER rcv_mbf(VP msg, INT *p_msgsz, ID mbfid)に相当する。 (AU)public native static int prcv_mbf (ItronMemory mem,Integer size,int mbfid) メッセージバッファからの受信 ポーリング。ER prcv_mbf(VP msg, INT *p_msgsz, ID mbfid)に相当する。 (AV)public native static int trcv_mbf (ItronMemory mem,Integer size,int mbfid,int tmout) メッセージバッファからの受信 タイムアウトあり。ER trcv_mbf(VP msg, INT *p_msgsz, ID mbfid, TMO tmout)に相当する。 (AW)public native static int ref_mbf (T_RMBF rmbf,int mbfid) メッセージバッファの状態参照。 ER ref_mbf(T_RMBF *pk_rmbf, ID mbfid)に相当する。 (AX)public native static int loc_cpu () CPUロック状態への移行。ER loc_cpu(void)。 (AY)public native static int unl_cpu () CPUロック状態の解除。ER unl_cpu(void)。 (AZ)public native static int dis_int (int eintno) 割込み禁止。 (BA)public native static int ena_int (int eintno) 割込みの許可。 (BB)public native static int vcre_mpl (T_CMPL cmpl) 可変長メモリプールの生成。ER vcre_mpl(T_CMPL *pk_cmpl)に相当する。 (BC)public native static int cre_mpl (int mplid,T_CMPL cmpl) 可変長メモリプールの生成 ID指定あり。ER cre_mpl(ID mplid, T_CMPL *pk_cmpl)に相当する。 (BD)public native static int del_mpl (int mplid) 可変長メモリプールの削除。ER del_mpl(ID mplid)に相当する。 (BE)public native static int get_blk (ItronMemory mem,int mplid,int size) 可変長メモリブロックの獲得。 ER get_blk(VP *p_blk, ID mplid, INT blksz)に相当する。 (BF)public native static int pget_blk (ItronMemory mem,int mplid,int size) 可変長メモリブロックの獲得 ポーリング。ER pget_blk(VP *p_blk, ID mplid, INT blksz)に相当する。 (BG)public native static int tget_blk (ItronMemory mem,int mplid,int size,int tmout) 可変長メモリブロックの獲得 タイムアウトあり。 ER tget_blk(VP * p_blk, ID mplid, INT blksz, TMO tmout)に相当する。 (BH)public native static int rel_blk (int mplid,ItronMemory mem) 可変長メモリブロックの返却。ER rel_blk(ID mplid, VP blk)に相当す る。 (BI)public native static int ref_mpl (T_RMPL rmpl,int mplid) 可変長メモリプールの状態参照。 ER ref_mpl(T_RMPL *pk_rmpl, ID mplid)に相当する。 (BJ)public native static int vcre_mpf (T_CMPF cmpf) 固定長メモリプール生成。ER vcre_mpf(T_CMPF *pk_cmpf)に相当する。 (BK)public native static int cre_mpf (int mpfid,T_CMPF cmpf) 固定長メモリプール生成 ID指定あり。ER cre_mpf(ID mpfid, T_CMPF * pk_cmpf)に相当する。 (BL)public native static int del_mpf (int mpfid) 固定長メモリプールの削除。ER del_mpf(ID mpfid)に相当する。 (BM)public native static int get_blf (ItronMemory mem,int mpfid) 固定長メモリブロックの獲得。ER get_blf(VP *p_blf, ID mpfid) に相 当する。 (BN)public native static int pget_blf (ItronMemory mem,int mpfid) 固定長メモリブロックの獲得 ポーリング。ER pget_blf(VP *p_blf, ID mpfid)に相当する。 (BO)public native static int tget_blf (ItronMemory mem,int mpfid,int tmout) 固定長メモリブロックの獲得 タイムアウトあり。 ER tget_blf(VP * p_blf, ID mpfid, TMO tmout)に相当する。 (BP)public native static int rel_blf (int mpfid,ItronMemory mem) 固定長メモリブロックの返却。ER rel_blf(ID mpfid, VP blf)に相当す る。 (BQ)public native static int ref_mpf (T_RMPF rmpf,int mpfid) 固定長メモリプールの状態参照。 ER ref_mpf(T_RMPF *pk_rmpf, ID mpfid)に相当する。 (BR)public native static int vcre_por (T_CPOR cpor) ランデブポートの作成。ER vcre_por(T_CPOR *pk_cpor)に相当する。 (BS)public native static int cre_por (int portid,T_CPOR cpor) ランデブポートの作成 ID指定あり。 ER cre_por(ID porid, T_CPOR * pk_cpor)に相当する。 (BT)public native static int del_por (int portid) ランデブポートの削除。ER del_por(ID porid)に相当する。 (BU)public native static int cal_por (ItronMemory mem,Integer rsize,int portid, int calptn, int csize) ランデブの呼び出し。 ER cal_por(VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz)に相当する。 (BV)public native static int pcal_por (ItronMemory mem,Integer rsize,int portid, int calptn, int csize) ランデブの呼び出し ポーリング。ER pcal_por(VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz)に相当する。 (BW)public native static int tcal_por (ItronMemory mem,Integer rsize,int portid,intcalptn,int csize, int tmout) ランデブの呼び出し タイムアウトあり。 ER tcal_por(VP msg, INT * p_rmsgsz, ID porid, UINT calptn, INT cmsgsz,TMO tmout)に相当する。 (BX)public native static int acp_por (Integer rdvno,ItronMemory mem,Integer csize,int portid, int acpptn) ランデブの受け付け。 ER acp_por(RNO *p_rdvno, VP msg, INT * p_cmsgsz, ID porid, UINT acpptn)に相当する。 (BY)public native static int pacp_por (Integer rdvno,ItronMemory mem,Integer csize,int portid, int acpptn) ランデブの受け付け ポーリング。ER pacp_por(RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn)に相当する。 (BZ)public native static int tacp_por (Integer rdvno,ItronMemory mem,Integer csize,int portid,int acpptn, int tmout) ランデブの受け付け タイムアウトあり。ER tacp_por(RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn,TMO tmout)に相当す る。 (CA)public native static int fwd_por (int portid,int calptn,int rdvno,ItronMemory mem,int csize) ランデブの回送。ER fwd_por(ID porid, UINT calptn, RNO rdvno, VP msg, INT cmsgsz)に相当する。 (CB)public native static int rpl_rdv (int rdvno,ItronMemory mem,int rsize) ランデブの終了。 ER rpl_rdv(RNO rdvno, VP msg, INT rmsgsz)に相当 する。 (CC)public native static int ref_por (T_RPOR rpor,int portid) ランデブポートの状態参照。ER ref_por(T_RPOR *pk_rpor, ID porid) に相当する。 (CD)public native static int set_tim (long time) システム時間の設定。ER set_tim(SYSTIME *pk_tim)に相当する。 (CE)public native static int get_tim (Long time) システム時刻の参照 。 現在のシステム時間を返す。 ER get_tim (SYSTIME *pk_tim)に相当する。 (6)特記事項 JTRON2.0仕様との差異は以下である。 (A)メソッド set_tim()、get_tim() でクラス SYSTIME を使用せずに Longを使用する。 ━ 3.2 共有オブジェクトクラスAPI説明書 ━━━━━━━━━━━━━━━━━ 3.2.1 概要説明 本共有オブジェクトクラスを使用することで、 ITRONアプリケーション タスクとJavaプログラムの間で共有オブジェクトを介してデータ交換を 行うことができる。 Javaプログラムで共有対象のJavaオブジェクトを共有オブジェクトマネ ージャに登録することにより、 ITRONアプリケーションタスクからJava オブジェクトにアクセスすることが可能になる。また、共有オブジェク トのデータの一貫性を保持するためにJavaプログラム、 またはITRONア プリケーションタスクから共有オブジェクトの排他制御を行うことがで きる。更に、 ITRONアプリケーションタスクからJavaのThreadクラス、 ThreadGroupクラスのうち、 状態遷移を伴う実行制御メソッドを呼び出 し、Javaスレッド及びJavaスレッドグループを制御することも可能であ る。 以下に共有オブジェクトとμITRONリアルタイムタスク、 Javaスレッド の関係を示す。 ┌──────┐ロック ┏━━━━━━━━┓ ロック ┌─────┐ │ │─────→┃ ┃←─────│ │ │ │アクセス ┃共有オブジェクト┃ アクセス │ │ │μITRON │←────→┃ ┃←────→│ Java │ │リアルタイム│ロック解除 ┃ ┃ ロック解除│ スレッド │ │タスク │─────→┃ ┃←─────│ │ │ │ ┗━━━━━━━━┛ │ │ │ │スレッド/スレッドグループ操作 │ │ │ │─────────────────────→│ │ └──────┘ └─────┘ 図3.1 共有オブジェクトとμITRONリアルタイムタスク、Javaスレッドの関係 ※Javaは、米国及びその他の国における米国Sun Microsystems社の登録 商標であ る。 ※スレッドとは、Javaのプログラムが動作するときに、必ず発生する処 理の単位で ある。 ※スレッドグループとは、スレッドの集合を表す。 ※メソッドとは、オブジェクト指向プログラミングでの関数を表す。 ※API(Application Programming Interface)とは、オペレーティングシ ステムと、 その上で動作するアプリケーションプログラム間のインターフェース である。 3.2.2 パッケージ名 Java側から共有オブジェクトを使用するためのクラスは以下のパッケー ジにまとめられる。 jp.gr.itron.jtron.shared 3.2.3 使用方法概要 本共有オブジェクトクラスがどのように使用されるかの概要を以下に述 べる。 手順1: JavaプログラムからSharedObjectクラスを継承するJavaオブジ ェクトを生成して、Javaオブジェクトを共有オブジェクトマネー ジャに登録する。 手順2: Javaプログラムでスレッドを生成して、 スレッドをサスペンド する。 手順3: ITRONアプリケーションタスクから、jti_get_objで共有オブジ ェクト識別番号を取得する。 手順4: ITRONアプリケーションタスクから、 jti_loc_objで共有オブジ ェクトをロックする。 手順5: ITRONアプリケーションタスクから、jti_get_memで共有オブジ ェクトのJNIインターフェースポインタと、 共有オブジェクト の参照を取得する。 手順6: ITRONアプリケーションタスクから、「手順5」で取得したJNIイ ンターフェースポインタ、 共有オブジェクトの参照とJNI関数 により、共有オブジェクトのフィールドデータにアクセスする。 手順7: ITRONアプリケーションタスクから、 jti_unl_objで共有オブジ ェクトのロックを解除する。 手順8: ITRONアプリケーションタスクから、jti_get_thrでスレッド識 別番号を取得する。 手順9: ITRONアプリケーションタスクから、「手順2」 でサスペンドし ていたJavaプログラムのスレッドを、jti_rsm_thrでレジューム する。 手順10: Javaプログラムのスレッドから、SharedObjectクラスのlockメ ソッドで共有オブジェクトをロックする。 手順11: Javaプログラムのスレッドから、共有オブジェクトのフィール ドデータにアクセスする。 手順12: Javaプログラムのスレッドから、SharedObjectクラスのunlock メソッドで共有オブジェクトのロックを解除する。 手順13: Javaプログラムから、SharedObjectクラスのunshareメソッド でJavaオブジェクトの共有を終了する。 (Javaオブジェクトが 共有オブジェクトマネージャへの登録から削除される) 3.2.4 パッケージに属するクラス及びITRON側API 共有オブジェクトをJava側から使用するためには以下のクラスがある。 (A) Sharable (B) SharedObject (C) SharedObjectManager (D) SharedObjectManagerImpl (E) ShmException (F) ShmIllegalStateException (G) ShmTimeoutException 共有オブジェクトをITRON側から使用するためには以下のAPIがある。 (A) jti_get_obj (B) jti_get_mem (C) jti_loc_obj (D) jti_unl_obj (E) jti_funl_obj スレッド/スレッド操作をITRON側から行うためには以下のAPIがある。 (A) jti_get_thr (B) jti_isa_thr (C) jti_int_thr (D) jti_isi_thr (E) jti_sus_thr (F) jti_rsm_thr (G) jti_sta_thr (H) jti_thr_stp (I) jti_des_thr (J) jti_get_jpr (K) jti_set_jpr (L) jti_get_tgr (M) jti_des_tgr (N) jti_sus_tgr (O) jti_rsm_tgr (P) jti_stp_tgr 3.2.5 共有オブジェクトクラスの説明 3.2.5.1 Sharable (1)クラス名、親クラス public interface Sharable (2)説明 共有オブジェクトのインタフェースを規定する。共有オブジェクトとし て使用するオブジェクトのクラスは、このインタフェースを実装しなけ ればならない。 (3)フィールド 特になし (4)コンストラクタ 特になし (5)メソッド (A)public abstract void lock () throws ShmIllegalStateException 共有オブジェクトをロックする。同一スレッドにより既にロックされて いる場合は、 何も起こらない。異なるスレッド、あるいはμITRONリア ルタイムタスクにより既にロックされている場合は、ロックが解除され るまでブロックする。 (B)public abstract void lock (int timeout) throws ShmTimeoutException, ShmIllegalStateException タイムアウト時間を指定して、共有オブジェクトをロックする。同一ス レッドにより既にロックされている場合は、何も起こらない。異なるス レッド、 あるいはμITRONリアルタイムタスクにより既にロックされて いる場合は、 タイムアウト時間timeout(単位はms)の間、ロックが解除 されるまでブロックする。 タイムアウト時間を超えた場合、 ShmTimeoutException例外が発生する。 (C)public abstract void unlock () throws ShmIllegalStateException 同一スレッドによりロックされた共有オブジェクトのロックを解除する。 既にロックが解除されている場合は、何もしない。異なるスレッド、あ るいはμITRONリアルタイムタスクによりロックされた共有オブジェク トに対しては、ShmIllegalStateException例外が発生する。 (D)public abstract void forceUnlock () throws ShmIllegalStateException スレッドによりロックされた共有オブジェクトのロックを強制的に解除 する。μITRONリアルタイムタスクによりロックされたものに関しては、 何もしない。 (E)public abstract void unshare () throws ShmIllegalStateException μITRONリアルタイムタスク側とのオブジェクトの共有を終了する。 既 にスレッド、 あるいはμITRONリアルタイムタスクによりロックされて いる場合は、ロックが解除されるまでブロックし、ロックを解除した後 に共有を終了する。 既に共有が終了されている場合は、 ShmIllegalStateException例外が発生する。 (F)public abstract void unshare (int timeout) throws ShmTimeoutException, ShmIllegalStateException タイムアウト時間を指定して壁TRONリアルタイムタスク側とのオブジェ クトの共有を終了する。異なるスレッド、 あるいはμITRONリアルタイ ムタスクにより既にロックされている場合は、 タイムアウト時間 timeout(単位はms)の間、ロックが解除されるまでブロックする。 タイ ムアウト時間を超えた場合、 ShmTimeoutException例外が発生する。ロ ックを解除した後に共有を終了する。 既に共有していない場合は、 ShmIllegalStateException例外が発生する。 (G)public abstract Object getContent () 共有オブジェクトを返す。SharedObjectManager は、このメソッドを使 って実際に共有オブジェクトを得る。 (6)特記事項 特になし 3.2.5.2 SharedObject (1)クラス名、親クラス public class SharedObject extends Object implements Sharable (2)説明 共有オブジェクトクラス。プログラマはこのクラスを継承するサブクラ スを定義することによって簡単に共有オブジェクトクラスを作成するこ とができる。 (3)フィールド 表3.2 SharedObjectのフィールド ┌─────┬─────────┬──────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼─────────┼──────────────┤ │ shm │protected Sharable│現在の共有オブジェクトの参照│ └─────┴─────────┴──────────────┘ (4)コンストラクタ (A) public SharedObject (String name) throws ShmIllegalStateException 指定された共有オブジェクト名nameで共有オブジェクトを生成する。生 成時に共有オブジェクトマネージャに登録され、 μITRONリアルタイム タスクからアクセスできる状態になる。 登録に失敗したときは、 ShmIllegalStateException例外が発生する。 (B) public SharedObject (Sharable shm, String name) throws ShmIllegalStateException Sharable を実装したクラスのオブジェクトshm を、指定された共有オ ブジェクト名nameで共有オブジェクトにする。生成時に、共有オブジェ クトマネージャに登録され、 μITRONリアルタイムタスクから参照でき る状態になる。登録に失敗したときは、ShmIllegalStateException例外 が発生する。 (5)メソッド (C) public void lock () throws ShmIllegalStateException 共有オブジェクトをロックする。同一スレッドにより既にロックされて いる場合は、 何もしない。異なるスレッド、あるいはμITRONリアルタ イムタスクにより既にロックされている場合は、ロックが解除されるま でブロックする。 (D) public void lock (int timeout) throws ShmIllegalStateException, ShmTimeoutException タイムアウト時間を指定して共有オブジェクトをロックする。同一スレ ッドにより既にロックされている場合は、何もしない。異なるスレッド、 あるいはμITRONリアルタイムタスクにより既にロックされている場合 は、タイムアウト時間timeout(単位はms) の間ロックが解除されるまで ブロックする。 タイムアウト時間を超えた場合、ShmTimeoutException 例外が発生する。 (E) public void unlock () throws ShmIllegalStateException 同一スレッドによりロックされた共有オブジェクトのロックを解除する。 既にロックが解除されている場合は、何もしない。異なるスレッド、あ るいはμITRONリアルタイムタスクによりロックされたオブジェクトに 対しては、ShmIllegalStateException例外が発生する。 (F) public void forceUnlock () throws ShmIllegalStateException スレッドによりロックされた共有オブジェクトのロックを強制的に解除 する。μITRONリアルタイムタスクによりロックされたものに関しては、 何もしない。 (G) public void unshare () throws ShmIllegalStateException μITRONリアルタイムタスク側とのオブジェクトの共有を終了する。 既 にスレッド、 あるいはμITRONリアルタイムタスクによりロックされて いる場合は、ロックが解除されるまでブロックし、ロックを解除した後 に共有を終了する。 既に共有していない場合は、 ShmIllegalStateException例外が発生する。 (H) public void unshare (int timeout) throws ShmIllegalStateException, ShmTimeoutException タイムアウト時間を指定して、 μITRONリアルタイムタスク側とのオブ ジェクトの共有を終了する。異なるスレッド、 あるいはμITRONリアル タイムタスクにより既にロックされている場合は、 タイムアウト時間 timeout(単位はms)の間、ロックが解除されるまでブロックする。 タイ ムアウト時間を超えた場合は、ShmTimeoutException が発生する。ロッ クを解除した後に共有を終了する。 既に共有していない場合は、 ShmIllegalStateException例外が発生する。 (I) public Object getContent () 共有オブジェクトを返す。SharedObjectManager は、このメソッドを使 って実際に共有オブジェクトを得る。SharedObjectでは、このメソッド は、 コンストラタの引数で指定されたSharableオブジェクトを返す(フ ィールドデータshm を返す実装になっている) 。SharedObjectのサブク ラスで、 別のオブジェクト(配列など) を共有対象にしたい場合は、こ のメソッドをオーバライドする。 (6)特記事項 ・共有オブジェクト名は、UTF-8コード文字列で63文字以内とする。 ※UTF-8(UCS transformation format 8-bit form)とは、Unicode文字の エンコーディング方式であり、文字によって表現するバイト数が変化 する、可変長エンコーディング方式である。ASCII文字は1バイトで表現 される。 3.2.5.3 SharedObjectManager (1)クラス名、親クラス public abstract class SharedObjectManager extends Object (2)説明 共有オブジェクトを管理するクラス。 μITRONリアルタイムタスク側と のインタフェースを受け持つ。 (3)フィールド 特になし (4)コンストラクタ (A)protected SharedObjectManager () 共有オブジェクトマネージャを生成する。 (5)メソッド (B) public static SharedObjectManager getSharedObjectManager () throws ShmIllegalStateException デフォルトの共有オブジェクトの共有オブジェクトマネージャのオブジ ェクトを返す。共有オブジェクトマネージャが用意できない場合や不正 な場合は、ShmIllegalStateException例外が発生する。 (C) public abstract void share (Sharable obj, String name) throws ShmIllegalStateException Sharable を実装したクラスのオブジェクトobj を指定された共有オブ ジェクト名nameで登録する。既に登録されている場合、または不正な名 前の場合は、ShmIllegalStateException例外が発生する。 (D) public abstract void unshare (String name) throws ShmIllegalStateException 指定された共有オブジェクト名name に対応する共有オブジェクトを削 除する。既に削除されている場合は、ShmIllegalStateException例外が 発生する。 (E) public abstract void unshare (String name, int timeout) throws ShmIllegalStateException, ShmTimeoutException タイムアウト時間を指定して、 指定された共有オブジェクト名name に 対応する共有オブジェクトを削除する。 既に削除されている場合は、 ShmIllegalStateException例外が発生する。 (F) public abstract void lock (Sharable obj) throws ShmIllegalStateException 共有オブジェクトをロックする。同一スレッドにより既にロックされて いる場合は、 何もしない。異なるスレッド、あるいはμITRONリアルタ イムタスクにより既にロックされている場合は、ロックが解除されるま でブロックする。 (G) public abstract void lock (Sharable obj, int timeout) throws ShmIllegalStateException, ShmTimeoutException タイムアウト時間を指定して、共有オブジェクトをロックする。同一ス レッドにより既にロックされている場合は、何も起こらない。異なるス レッド、 あるいはμITRONリアルタイムタスクにより既にロックされて いる場合は、 ロックが解除されるまでブロックする。タイムアウト(単 位はms)が指定でき、 タイムアウト時間の間ロックが解除されるまでブ ロックする。 タイムアウト時間が過ぎると、ShmTimeoutException例外 を発生する。 (H) public abstract void unlock (Sharable obj) throws ShmIllegalStateException 同一スレッドによりロックされた共有オブジェクトのロックを解除する。 既にロックが解除されている場合は、何もしない。異なるスレッド、あ るいはμITRONリアルタイムタスクによりロックされたオブジェクトに 対しては、ShmIllegalStateException例外が発生する。 (I) public abstract void forceUnlock (Sharable obj) throws ShmIllegalStateException ロックしたスレッドに関わらず、ロックされた共有オブジェクトのロッ クを解除する。既にロックが解除されている場合は、何もしない。用途 は、ロックした共有オブジェクトをスレッドがロックを解除しないで死 んだ場合に使用する。 (6)特記事項 ・共有オブジェクト名は、UTF-8コード文字列で63文字以内とする。 3.2.5.4 SharedObjectManagerImpl (1)クラス名、親クラス class SharedObjectManagerImpl extends SharedObjectManager (2)説明 共有オブジェクトを管理するクラス。 μITRONリアルタイムタスク側と のインタフェースを受け持つ。 このクラスは、SharedObjectManagerク ラスの実装クラスである。 (3)フィールド 特になし (4)コンストラクタ (A)protected SharedObjectManagerImpl () 共有オブジェクトマネージャを生成する。 (5)メソッド (B) public static SharedObjectManager getSharedObjectManager () throws ShmIllegalStateException デフォルトの共有オブジェクトの、共有オブジェクトマネージャのオブ ジェクトを返す。共有オブジェクトマネージャが用意できない場合や不 正な場合は、ShmIllegalStateException例外が発生する。 (C) public void share (Sharable obj, String name) throws ShmIllegalStateException Sharable を実装したクラスのオブジェクトobj を、 指定された共有オ ブジェクト名nameで登録する。既に登録されている場合、または不正な 名前の場合は、ShmIllegalStateException例外が発生する。 (D) public void unshare (String name) throws ShmIllegalStateException 指定された共有オブジェクト名name に対応する共有オブジェクトを削 除する。既に削除されている場合は、ShmIllegalStateException例外が 発生する. (E) public void unshare (String name, int timeout) throws ShmIllegalStateException, ShmTimeoutException タイムアウト時間を指定して、指定された共有オブジェクト名name に 対応する共有オブジェクトを削除する。 既に削除されている場合は、 ShmIllegalStateException例外が発生する。 (F) public void lock (Sharable obj) throws ShmIllegalStateException 共有オブジェクトをロックする。同一スレッドにより既にロックされて いる場合は、何も起こらない。異なるスレッド、 あるいはμITRONリア ルタイムタスクにより既にロックされている場合は、ロックが解除され るまでブロックする。 (G) public void lock (Sharable obj, int timeout) throws ShmIllegalStateException, ShmTimeoutException タイムアウト時間を指定して、共有オブジェクトをロックする。同一ス レッドにより既にロックされている場合は、何も起こらない。異なるス レッド、 あるいはμITRONリアルタイムタスクにより既にロックされて いる場合は、ロックが解除されるまでブロックする。 タイムアウト(単 位はms) が指定でき、タイムアウト時間の間ロックが解除されるまでブ ロックする。タイムアウト時間が過ぎると、 ShmTimeoutException例外 が発生する。 (H) public void unlock (Sharable obj) throws ShmIllegalStateException 同一スレッドによりロックされた共有オブジェクトのロックを解除する。 既にロックが解除されている場合は、何もしない。異なるスレッド、あ るいはμITRONリアルタイムタスクによりロックされたオブジェクトに 対しては、ShmIllegalStateException例外が発生する。 (I) public void forceUnlock (Sharable obj) throws ShmIllegalStateException ロックしたスレッドに関わらず、ロックされた共有オブジェクトのロッ クを解除する。既にロックが解除されている場合は、何もしない。用途 は、ロックした共有オブジェクトをスレッドがロックを解除しないで死 んだ場合に使用する。 (6)特記事項 ・共有オブジェクト名は、UTF-8コード文字列で63文字以内とする。 3.2.5.5 ShmException (1)クラス名、親クラス public class ShmException extends Exception (2)説明 共有オブジェクト関連の例外が発生したことを通知する。このクラスは、 このパッケージ内の全例外クラスのスーパークラスである。 (3)フィールド 特になし (4)コンストラクタ (A)public ShmException () 詳細なメッセージ無しで共有オブジェクト例外を生成する。 (B)public ShmException (String msg) 詳細メッセージmsgを持つ共有オブジェクト例外を生成する。 (5)メソッド 特になし (6)特記事項 特になし 3.2.5.6 ShmIllegalStateException (1)クラス名、親クラス public class ShmIllegalStateException extends ShmException (2)説明 あるメソッドを発行したときに、そのメソッドが実行できない不正な状 態であるときに発生する。 (3)フィールド 表3.3 ShmIllegalStateExceptionのフィールド ┌────────┬────────────┬──────────────────────────┐ │ ニモニック │ 型 │ 内容 │ ├────────┼────────────┼──────────────────────────┤ │ILLEGAL_MANAGER │public static final int │ 共有オブジェクトマネージャが不正(値:1) │ ├────────┼────────────┼──────────────────────────┤ │ OBJECT_IN_USE │public static final int │ Javaオブジェクトが既に登録されている(値:2) │ ├────────┼────────────┼──────────────────────────┤ │ OBJECT_NOEXIST │public static final int │ Javaオブジェクトが未登録(値:3) │ ├────────┼────────────┼──────────────────────────┤ │ ILLEGAL_NAME │public static final int │ 不正な名前(値:4) │ ├────────┼────────────┼──────────────────────────┤ │OBJECT_UNSHARED │public static final int │ Javaオブジェクトが未共有(値:5) │ ├────────┼────────────┼──────────────────────────┤ │ OBJECT_LOCKED │public static final int │Javaオブジェクトが他のJavaスレッド、またはμITRONリ │ │ │ │ │ │ │ │アルタイムタスクにロックされている(値:6) │ ├────────┼────────────┼──────────────────────────┤ │ SYSTEM_ERROR │public static final int │ システム内部のエラー(値:7) │ └────────┴────────────┴──────────────────────────┘ (4)コンストラクタ (A)public ShmIllegalStateException (int cause) 指定された原因の例外オブジェクトを生成する。パラメータcause には 例外の詳細原因を渡す。 (B)public ShmIllegalStateException (int cause, String msg) 指定された原因で、詳細なメッセージをもつ例外オブジェクトを生成す る。通常、cause には例外の詳細原因が、msg にはオブジェクト名が指 定される。 (5)メソッド (C)public int getCause () 例外の詳細原因を返す。 (6)特記事項 特になし 3.2.5.7 ShmTimeoutException (1)クラス名、親クラス public class ShmTimeoutException extends ShmException (2)説明 タイムアウト時間が過ぎたことを通知する。 (3)フィールド 特になし (4)コンストラクタ (A)public ShmTimeoutException () 詳細なメッセージなしでShmTimeoutException を生成する (B)public ShmTimeoutException (String msg) 指定された詳細メッセージmsg をもつShmTimeoutException を生成する。 通常、msg にはオブジェクト名が指定される。 (5)メソッド 特になし (6)特記事項 特になし 3.2.6 ITRON側APIの説明 3.2.6.1 jti_get_obj (1)API 共有オブジェクト名から共有オブジェクト識別番号を求める。 ER ercd = jti_get_obj (char *objnm, JNO *p_objno) (2)パラメータ 表3.4 jti_get_objのパラメータ ┌─────┬───┬────────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼───┼────────────────────┤ │ objnm │*char │処理対象とする共有オブジェクト名(文字列)│ ├─────┼───┼────────────────────┤ │ p_objno │ *JNO │ 共有オブジェクト識別番号(ポインタ) │ └─────┴───┴────────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.5 jti_get_objのエラーコード ┌────────┬──────────────────┐ │エラーコードの値│ 内容 │ ├────────┼──────────────────┤ │ E_OK │ 正常終了 │ ├────────┼──────────────────┤ │ E_OBJ │指定した共有オブジェクトが存在しない│ ├────────┼──────────────────┤ │ E_PAR │ パラメタの誤り(objnmがNULL) │ └────────┴──────────────────┘ (5)特記事項 ・共有オブジェクト名は、ASCIIコード文字列で63文字以内とする。 3.2.6.2 jti_get_mem (1)API 指定した共有オブジェクト(クラス名はSharable) に対応する共有オブ ジェクトの共有オブジェクトアドレス情報を返す。 ER ercd = jti_get_mem (JNO objno, JNI_PTR *p_addr) 共有オブジェクトへのアクセスは、 本APIにより取得した共有オブジェ クトアドレス情報構造体JNI_PTRに格納されたJNIインターフェイスポイ ンタ、共有オブジェクトの参照とJNI関数を使用して行う。 ※JNI(Java Native Interface)とは、Javaからプラットフォーム固有の ネイ ティブコードを呼び出す仕組みである。 (2)パラメータ 表3.6 jti_get_memのパラメータ ┌─────┬────┬──────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼────┼──────────────────┤ │ objno │ JNO │処理対象の共有オブジェクトの識別番号│ ├─────┼────┼──────────────────┤ │ p_addr │*JNI_PTR│ 共有オブジェクトアドレス情報 │ └─────┴────┴──────────────────┘ 表3.7 構造体 JNI_PTRの内容 ┌─────┬────┬──────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼────┼──────────────┤ │ env │*JNIEnv │JNIインターフェイスポインタ │ ├─────┼────┼──────────────┤ │ obj │jobject │ 共有オブジェクトの参照 │ └─────┴────┴──────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.8 jti_get_memのエラーコード ┌────────┬──────────────────┐ │エラーコードの値│ 内容 │ ├────────┼──────────────────┤ │ E_OK │ 正常終了 │ ├────────┼──────────────────┤ │ E_PAR │ パラメタの誤り(objnoが不正) │ ├────────┼──────────────────┤ │ E_OBJ │指定した共有オブジェクトが存在しない│ ├────────┼──────────────────┤ │ E_UNLOCK │ 自タスクによりロックされていない │ └────────┴──────────────────┘ (5)特記事項 ・処理対象の共有オブジェクト識別番号は、 jti_get_objにより取得し た値を使用 すること。・本APIを呼ぶ前に、jti_loc_objにより共有オブジェクト をロックしておくこと。 3.2.6.3 jti_loc_obj (1)API 指定された共有オブジェクトをロックする。 ER ercd = jti_loc_obj (JNO objno, TMO tmout) (2)パラメータ 表3.9 jti_loc_objのパラメータ ┌─────┬──┬──────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼──────────────────┤ │ objno │JNO │処理対象の共有オブジェクトの識別番号│ ├─────┼──┼──────────────────┤ │ tmout │TMO │ 指定するタイムアウトの時間(ms) │ └─────┴──┴──────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.10 jti_loc_objのエラーコード ┌────────┬──────────────────┐ │エラーコードの値│ 内容 │ ├────────┼──────────────────┤ │ E_OK │ 正常終了 │ ├────────┼──────────────────┤ │ E_PAR │ パラメタの誤り(objnoが不正) │ ├────────┼──────────────────┤ │ E_OBJ │指定した共有オブジェクトが存在しない│ ├────────┼──────────────────┤ │ E_TMOUT │ タイムアウトが発生した │ ├────────┼──────────────────┤ │ E_RLWAI │ 待ち状態が強制解除された │ ├────────┼──────────────────┤ │ E_DLT │ 共有が解除された │ └────────┴──────────────────┘ (5)特記事項 ・処理対象の共有オブジェクト識別番号は、 jti_get_objにより取得し た値を使用 すること。 3.2.6.4 jti_unl_obj (1)API 指定された共有オブジェクトのロックを解除する。 ER ercd = jti_unl_obj (JNO objno) (2)パラメータ 表3.11 jti_unl_objのパラメータ ┌─────┬──┬──────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼──────────────────┤ │ objno │JNO │処理対象の共有オブジェクトの識別番号│ └─────┴──┴──────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.12 jti_unl_objのエラーコード ┌────────┬───────────────────────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼───────────────────────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼───────────────────────────────────────┤ │ E_PAR │ パラメタの誤り(objnoが不正) │ ├────────┼───────────────────────────────────────┤ │ E_OBJ │指定した共有オブジェクトが存在しない、または他のタスクによりロックを解除しよう│ │ │ │ │ │とした │ └────────┴───────────────────────────────────────┘ (5)特記事項 ・処理対象の共有オブジェクト識別番号は、 jti_get_objにより取得し た値を使用すること。 3.2.6.5 jti_funl_obj (1)API 指定された共有オブジェクトのロックを強制解除する。 ER ercd = jti_funl_obj (JNO objno) (2)パラメータ 表3.13 jti_funl_objのパラメータ ┌─────┬──┬──────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼──────────────────┤ │ objno │JNO │処理対象の共有オブジェクトの識別番号│ └─────┴──┴──────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.14 jti_funl_objのパラメータ ┌────────┬──────────────────┐ │エラーコードの値│ 内容 │ ├────────┼──────────────────┤ │ E_OK │ 正常終了 │ ├────────┼──────────────────┤ │ E_PAR │ パラメタの誤り(objnoが不正) │ ├────────┼──────────────────┤ │ E_OBJ │指定した共有オブジェクトが存在しない│ └────────┴──────────────────┘ (5)特記事項 ・処理対象の共有オブジェクト識別番号は、 jti_get_objにより取得し た値を使用すること。 3.2.6.6 jti_get_thr (1)API Javaスレッドの名前から、スレッド識別番号を求める。 ER ercd = jti_get_thr (char *thrnm, JNO *p_thrno) (2)パラメータ 表3.15 jti_get_thrのパラメータ ┌─────┬───┬──────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼───┼──────────────┤ │ thrnm │*char │ スレッド名(ASCII文字列) │ ├─────┼───┼──────────────┤ │ p_thrno │ *JNO │スレッド識別番号(ポインタ)│ └─────┴───┴──────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.16 jti_get_thrのエラーコード ┌────────┬────────────────┐ │エラーコードの値│ 内容 │ ├────────┼────────────────┤ │ E_OK │ 正常終了 │ ├────────┼────────────────┤ │ E_OBJ │指定したJavaスレッドが存在しない│ ├────────┼────────────────┤ │ E_PAR │ パラメタの誤り │ └────────┴────────────────┘ (5)特記事項 ・スレッド名は、 ASCIIコード文字列で31文字以内とする。・処理対象 のJavaスレッドには、必ずJavaプログラムで名前を付けること。 3.2.6.7 jti_isa_thr (1)API Java のThread クラス中のisAlive メソッドを呼ぶ。 ER_BOOL ercd = jti_isa_thr (JNO thrno) (2)パラメータ 表3.17 jti_isa_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER_BOOL ercd メソッドの返却値もしくはエラーコード (4)エラーコード 表3.18 jti_isa_thrのエラーコード ┌────────┬───────┐ │エラーコードの値│ 内容 │ ├────────┼───────┤ │ TRUE │ 真 │ ├────────┼───────┤ │ FALES │ 偽 │ ├────────┼───────┤ │ E_PAR │パラメタの誤り│ └────────┴───────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.8 jti_int_thr (1)API Java のThread クラス中のinterrupt メソッドを呼ぶ。 ER ercd = jti_int_thr (JNO thrno) (2)パラメータ 表3.19 jti_int_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.20 jti_int_thrのエラーコード ┌────────┬───────┐ │エラーコードの値│ 内容 │ ├────────┼───────┤ │ E_OK │ 正常終了 │ ├────────┼───────┤ │ E_PAR │パラメタの誤り│ └────────┴───────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.9 jti_isi_thr (1)API Java のThread クラス中のisInterruputed メソッドを呼ぶ。 ER_BOOL ercd = jti_isi_thr (JNO thrno) (2)パラメータ 表3.21 jti_isi_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER_BOOL ercd メソッドの返却値もしくはエラーコード (4)エラーコード 表3.22 jti_isi_thrのエラーコード ┌────────┬───────┐ │エラーコードの値│ 内容 │ ├────────┼───────┤ │ TRUE │ 真 │ ├────────┼───────┤ │ FALES │ 偽 │ ├────────┼───────┤ │ E_PAR │パラメタの誤り│ └────────┴───────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.10 jti_sus_thr (1)API Java のThread クラス中のsuspend メソッドを呼ぶ。 ER ercd = jti_sus_thr (JNO thrno) (2)パラメータ 表3.23 jti_sus_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.24 jti_sus_thrのエラーコード ┌────────┬───────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼───────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼───────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼───────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外が発生した│ └────────┴───────────────────────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.11 jti_rsm_thr (1)API Java のThread クラス中のresume メソッドを呼ぶ。 ER ercd = jti_rsm_thr (JNO thrno) (2)パラメータ 表3.25 jti_rsm_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.26 jti_rsm_thrのエラーコード ┌────────┬────────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼────────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼────────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼────────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外が発生した。│ └────────┴────────────────────────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.12 jti_sta_thr (1)API Java のThread クラス中のstart メソッドを呼ぶ。 ER ercd = jti_sta_thr (JNO thrno) (2)パラメータ 表3.27 jti_sta_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.28 jti_sta_thrのエラーコード ┌────────┬────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼────────────────────┤ │ E_OBJ │Javaメソッド実行中に状態違反が発生した。│ └────────┴────────────────────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.13 jti_thr_stp (1)API Java のThread クラス中のstop メソッドを呼ぶ。 ER ercd = jti_thr_stp (JNO thrno) (2)パラメータ 表3.29 jti_thr_stpのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.30 jti_thr_stpのエラーコード ┌────────┬────────────────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼────────────────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼────────────────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼────────────────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外、NULLポインタ例外が発生した│ └────────┴────────────────────────────────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.14 jti_des_thr (1)API Java のThread クラス中のdestroy メソッドを呼ぶ。 ER ercd = jti_des_thr (JNO thrno) (2)パラメータ 表3.31 jti_des_thrのパラメータ ┌─────┬──┬─────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────┤ │ thrno │JNO │処理対象のスレッド識別番号│ └─────┴──┴─────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.32 jti_des_thrのエラーコード ┌────────┬───────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼───────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼───────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼───────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外が発生した│ └────────┴───────────────────────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.15 jti_get_jpr (1)API Java のThread クラス中のgetPriority メソッドを呼ぶ。 ER ercd = jti_get_jpr (JNO thrno, INT *p_rslt) (2)パラメータ 表3.33 jti_get_jprのパラメータ ┌─────┬──┬────────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼────────────────────┤ │ thrno │JNO │ 処理対象のスレッド識別番号 │ ├─────┼──┼────────────────────┤ │ p_rslt │*INT│取得したJavaスレッドの優先度(ポインタ)│ └─────┴──┴────────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.34 jti_get_jprのエラーコード ┌───┬───────┐ │ E_OK │ 正常終了 │ ├───┼───────┤ │E_PAR │パラメタの誤り│ └───┴───────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.16 jti_set_jpr (1)API Java のThread クラス中のメソッドsetPriority を呼ぶ。 ER ercd = jti_set_jpr (JNO thrno, INT newpri) (2)パラメータ 表3.35 jti_set_jprのパラメータ ┌─────┬──┬──────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼──────────────┤ │ thrno │JNO │ 処理対象のスレッド識別番号 │ ├─────┼──┼──────────────┤ │ newpri │INT │設定するJavaスレッドの優先度│ └─────┴──┴──────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.36 jti_set_jprのエラーコード ┌────────┬──────────────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼──────────────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼──────────────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼──────────────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外、引数誤り例外が発生した│ └────────┴──────────────────────────────┘ (5)特記事項 ・処理対象のスレッド識別番号は、 jti_get_thrにより取得した値を使 用すること。 3.2.6.17 jti_get_tgr (1)API Javaスレッドグループの名前から、スレッドグループ識別番号を求める。 ER ercd = jti_get_tgr (char *tgrnm, JNO *p_tgrno) (2)パラメータ 表3.37 jti_get_tgrのパラメータ ┌─────┬───┬──────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼───┼──────────────────┤ │ tgrnm │*char │ スレッドグループ名(ASCII文字列) │ ├─────┼───┼──────────────────┤ │ p_tgrno │ *JNO │スレッドグループ識別番号(ポインタ)│ └─────┴───┴──────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.38 jti_get_tgrのエラーコード ┌────────┬────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼────────────────────┤ │ E_OBJ │指定したJavaスレッドグループが存在しない│ ├────────┼────────────────────┤ │ E_PAR │ パラメタの誤り │ └────────┴────────────────────┘ (5)特記事項 ・Javaスレッドグループの名前は、 ASCIIコード文字列で31文字以内と する。 ・処理対象のJavaスレッドグループには、必ずJavaプログラムで 名前を付けること。 3.2.6.18 jti_des_tgr (1)API Java のThreadGroup クラス中のdestroy メソッドを呼ぶ。 ER ercd = jti_des_tgr (JNO tgrno) (2)パラメータ 表3.39 jti_des_tgrのパラメータ ┌─────┬──┬─────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────────┤ │ tgrno │JNO │処理対象のスレッドグループ識別番号│ └─────┴──┴─────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.40 jti_des_tgrのエラーコード ┌────────┬────────────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼────────────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼────────────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼────────────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外、状態違反が発生した│ └────────┴────────────────────────────┘ (5)特記事項 ・処理対象のスレッドグループ識別番号は、 jti_get_tgrにより取得し た値を使用すること。 3.2.6.19 jti_sus_tgr (1)API Java のThreadGroup クラス中のsuspend メソッドを呼ぶ。 ER ercd = jti_sus_tgr (JNO tgrno) (2)パラメータ 表3.41 jti_sus_tgrのパラメータ ┌─────┬──┬─────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────────┤ │ tgrno │JNO │処理対象のスレッドグループ識別番号│ └─────┴──┴─────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.42 jti_sus_tgrのエラーコード ┌────────┬───────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼───────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼───────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼───────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外が発生した│ └────────┴───────────────────────┘ (5)特記事項 ・処理対象のスレッドグループ識別番号は、 jti_get_tgrにより取得し た値を使用すること。 3.2.6.20 jti_rsm_tgr (1)API Java のThreadGroup クラス中のresume メソッドを呼ぶ。 ER ercd = jti_rsm_tgr (JNO tgrno) (2)パラメータ 表3.43 jti_rsm_tgrのパラメータ ┌─────┬──┬─────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────────┤ │ tgrno │JNO │処理対象のスレッドグループ識別番号│ └─────┴──┴─────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.44 jti_rsm_tgrのエラーコード ┌────────┬───────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼───────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼───────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼───────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外が発生した│ └────────┴───────────────────────┘ (5)特記事項 ・処理対象のスレッドグループ識別番号は、 jti_get_tgrにより取得し た値を使用すること。 3.2.6.21 jti_stp_tgr (1)API Java のThreadGroup クラス中のstop メソッドを呼ぶ。 ER ercd = jti_stp_tgr (JNO tgrno) (2)パラメータ 表3.45 jti_stp_tgrのパラメータ ┌─────┬──┬─────────────────┐ │ニモニック│ 型 │ 内容 │ ├─────┼──┼─────────────────┤ │ tgrno │JNO │処理対象のスレッドグループ識別番号│ └─────┴──┴─────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.46 jti_stp_tgrのエラーコード ┌────────┬───────────────────────┐ │エラーコードの値│ 内容 │ ├────────┼───────────────────────┤ │ E_OK │ 正常終了 │ ├────────┼───────────────────────┤ │ E_PAR │ パラメタの誤り │ ├────────┼───────────────────────┤ │ E_OBJ │Javaメソッド実行中にセキュリティ例外が発生した│ └────────┴───────────────────────┘ (5)特記事項 ・処理対象のスレッドグループ識別番号は、 jti_get_tgrにより取得し た値を使用すること。 ━ 3.3 ストリームクラスAPI説明書 ━━━━━━━━━━━━━━━━━━━━ 3.3.1 概要説明 本ストリームクラスを使用することでITRONアプリケーションとJavaプ ログラムの間でストリームを介してデータ交換を行うことができる。 ストリームは、 μITRONリアルタイムタスクからJavaスレッドへデータ を送信するための送信チャネルとμITRONリアルタイムタスクがJavaス レッドからデータを受信するための受信チャネルの2つのチャネルを持 つ。チャネルは両方使用することもできるし、片方のみ使用することも できる。 Java側からデータ送受信を行う場合、ストリームクラスより生成される Javaの標準的な入出力インターフェースである InputStream、 OutputStream を使用する。 以下にチャネルと入出力インターフェースの関係を示す。 ┏━━━━━━━┓ ┃ ストリーム ┃ ┃ ┃ ┌───────┐ ┌───┐ ┃_______┃ ┌────┐ │μITRONリアル │-│ITRON │ → 送信チャネル → InputStream →│Java │ │タイムタスク │ │API │ ┃ ̄ ̄ ̄ ̄ ̄ ̄ ̄┃ │スレッド│ │ │ │ │ ┃_______┃ │ │ │ │ │ │ ←受信チャネル ← OutputStream ←│ │ └───────┘ └───┘ ┃ ̄ ̄ ̄ ̄ ̄ ̄ ̄┃ └────┘ ┗━━━━━━━┛ 図3.2 チャネルと入出力インターフェース ※Javaは、米国及びその他の国における米国Sun Microsystems社の登録 商標である。 ※API(Application Programming Interface)とは、オペレーティングシ ステムと、その上で動作するアプリケーションプログラム間のインター フェースである。 ※スレッドとは、Javaのプログラムが動作するときに、必ず発生する処 理の単位である。 3.3.2 パッケージ名 Java側からストリームを使用するためのクラスは以下のパッケージにま とめられる。 jp.gr.itron.jtron.stream 3.3.3 使用方法概要 本ストリームクラスがどのように使用されるかの概要を以下に述べる。 手順1 ITRON APIを使用し、ITRONアプリケーションタスクから、ストリーム を生成しストリーム接続処理を行う。 手順2 Java APIを使用し、Javaプログラムからストリーム接続処理を行う。 手順3 ITRON API、Java APIを使用し、ITRONアプリケーションタスク、Java プログラムの双方からストリームに対し、読み込み、書き込み処理を行 いデータの送受信を行う。 手順4 ITRON API、Java APIを使用し、ITRONアプリケーションタスク、Java プログラムの双方からストリームの切断処理を行う。 手順5 ITRON APIを使用し、ストリームを削除する。 3.3.4 パッケージに属するクラス及びITRON側API ストリームをJava側から使用するために以下のクラスがある。 (A)JtiDataStream (B)JtiDataStreamException ストリームをITRON側から使用するために以下のAPIがある。 (A)jti_cre_stm (B)jti_del_stm (C)jti_wri_stm (D)jti_rea_stm (E)jti_sht_stm (F)jti_ref_stm 3.3.5 ストリームクラスの説明 3.3.5.1 JtiDataStream (1)クラス名、親クラス public class JtiDataStream (2)説明 ストリームを使ってμITRONリアルタイムタスクと通信を行うためのク ラス。 (3)フィールド 表3.47 JtiDataStreamのフィールド ┌──────┬───────┬─────────────┐ │ニモニック │ 型 │ 内容 │ ├──────┼───────┼─────────────┤ │MAIN_STREAM │ int │ 標準的なストリーム番号。 │ └──────┴───────┴─────────────┘ (4)コンストラクタ (A)public JtiDataStream (int stmid) throws JtiDataStreamException, InterruptedException, IOException 指定した番号のストリームをオープンする。両方のチャネルが接続状態 になる。片方のチャネルのみを持つストリームの場合は, 片方のチャネ ルのみが接続状態になる。 指定した番号が既に使用されている場合は JtiDataStreamExceptionが発生する。 (B)public JtiDataStream (int stmid,int tmout) throws java.io.IOException,java.lang.InterruptedException タイムアウト時間を指定して,指定したストリームをオープンする。 タ イムアウト時間はミリ秒。 指定した番号が既に使用されている場合は JtiDataStreamException が発生する。 タイムアウト発生時は例外 InterruptedException が発生する。 (C)protected JtiDataStream (JtiDataStreamImpl impl,int stmid,int tmout) throws java.io.IOException,java.lang.InterruptedException ユーザー定義の実装を用いて,タイムアウト時間を指定して,指定した番 号のストリームをオープンする。指定した番号が既に使用されている場 合はJtiDataStreamException が発生する。タイムアウト発生時は例外 InterrupptedException が発生する。 (5)メソッド (D)public synchronized InputStream getInputStream () throws java.io.IOException 送信チャネル用入出力ストリームを取得する. (E)public synchronized OutputStream getOutputStream () throws java.io.IOException 受信チャネル用入出力ストリームを取得する. (F)public synchronized void setIDSTimeOut (int tmout) throws java.io.IOException InputStreamに対してreadメソッドを実行した場合のタイムアウト時間 を指定する。単位はミリ秒。tmoutは0以上でなければならない。 0を指 定した場合は無限待ちになる。 タイムアウト発生時は java. io. InterruptedExceptionが発生する。なお,OutputStreamに対してwriteメ ソッドを実行した場合は他のストリーム操作と同様にタイムアウト指定 はできない。 (G)public synchronized int getIDSTimeOut () throws java.io.IOException ImputStreamに対してreadメソッドを実行した場合のタイムアウト時間 を取得する。単位はミリ秒である。 0が返却された場合は無限待ちを意 味する。 (H)public synchronized void close () throws java.io.IOException ストリームをクローズする。 具体的には,送信用のチャネルが接続状態 なら正常クローズして送信終了状態にし, 受信用のチャネルが接続状態 なら強制クローズして強制切断状態にする。また受信用のチャネルが送 信終了状態の場合には切断状態にする。 (6)特記事項 特になし 3.3.5.2 JtiDataStreamException (1)クラス名、親クラス public class JtiDataStreamException extends java.io.IOException (2)説明 ストリームクラス使用時の例外。l (3)フィールド 表3.48 JtiDataStreamExceptionのフィールド ┌────────────┬───────┬─────────────────┐ │ニモニック │ 型 │ 内容 │ ├────────────┼───────┼─────────────────┤ │Cause │ int │ エラー原因番号 │ ├────────────┼───────┼─────────────────┤ │STREAM_NOT_FOUND │ int │ ストリームが存在しない。 │ ├────────────┼───────┼─────────────────┤ │STREAM_IN_USE │ int │ ストリームは既に使用されている。 │ ├────────────┼───────┼─────────────────┤ │STREAM_CLOSED │ int │ ストリームは既に閉じている。 │ ├────────────┼───────┼─────────────────┤ │STREAM_ILLEGAL_ARGUMENT │ int │ 入力パラメータにエラーがある。 │ └────────────┴───────┴─────────────────┘ (4)コンストラクタ (A)public JtiDataStreamException (int c) エラー原因番号を指定してオブジェクトを生成する。 (B)public JtiDataStreamException (int c,String msg) エラー原因番号とエラーメッセージを指定してオブジェクトを生成する。 (5)メソッド (C)public int getCause () エラー原因番号を返す。 (6)特記事項 特になし 3.3.6 ITRON側APIの説明 3.3.6.1 jti_cre_stm (1)API ストリームの生成 ER ercd = jti_cre_stm(ID stmid,T_JTI_CSTM *pk_cstm) (2)パラメータ 表3.49 jti_cre_stmのパラメータ ┌──────┬────────┬──────────┐ │ニモニック │ 型 │ 内容 │ ├──────┼────────┼──────────┤ │stmid │ ID │ ストリーム番号 │ ├──────┼────────┼──────────┤ │pk_cstm │ T_JTI_CSTM * │ ストリーム生成情報 │ └──────┴────────┴──────────┘ 表3.50 構造体 T_JTI_CSTMの内容 ┌──────┬───┬────────────────────────┐ │ニモニック │ 型 │ 内容 │ ├──────┼───┼────────────────────────┤ │exinf │ VP │ 拡張情報 │ ├──────┼───┼────────────────────────┤ │stmatr │ ATR │ ストリーム属性 │ ├──────┼───┼────────────────────────┤ │wbuf │ VP │ 送信バッファの先頭アドレス │ │ │ │ NADRを指定した場合、バッファを内部で確保する。 │ ├──────┼───┼────────────────────────┤ │wbufsz │ INT │ 送信バッファサイズ(バイト数) │ ├──────┼───┼────────────────────────┤ │rbuf │ VP │ 受信バッファの先頭アドレス │ │ │ │ NADRを指定した場合、バッファを内部で確保する。 │ ├──────┼───┼────────────────────────┤ │rbufsz │ INT │ 受信バッファサイズ(バイト数) │ └──────┴───┴────────────────────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.51 jti_cre_stmのエラーコード ┌─────────┬────────────┐ │エラーコードの値 │ 内容 │ ├─────────┼────────────┤ │E_OK │ 正常終了 │ ├─────────┼────────────┤ │E_ID │ 不正ID番号 │ ├─────────┼────────────┤ │E_PAR │ パラメータエラー │ ├─────────┼────────────┤ │E_OBJ │ オブジェクト状態エラー │ └─────────┴────────────┘ (5)特記事項 特になし 3.3.6.2 jti_del_stm (1)API ストリームの削除 ER ercd = jti_del_stm(ID stmid) (2)パラメータ 表3.52 jti_del_stmのパラメータ ┌──────┬───┬────────┐ │ニモニック │ 型 │ 内容 │ ├──────┼───┼────────┤ │stmid │ ID │ ストリーム番号 │ └──────┴───┴────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.53 jti_del_stmのエラーコード ┌─────────┬────────────┐ │エラーコードの値 │ 内容 │ ├─────────┼────────────┤ │E_OK │ 正常終了 │ ├─────────┼────────────┤ │E_ID │ 不正ID番号 │ ├─────────┼────────────┤ │E_NOEXS │ オブジェクト未生成 │ ├─────────┼────────────┤ │E_OBJ │ オブジェクト状態エラー │ └─────────┴────────────┘ (5)特記事項 特になし 3.3.6.3 jti_wri_stm (1)API データの送信 ER ercd = jti_wri_stm(ID stmid,VP data,INT len,TMO tmout) (2)パラメータ 表3.54 jti_wri_stmのパラメータ ┌───────┬──────┬─────────────┐ │ニモニック │ 型 │ 内容 │ ├───────┼──────┼─────────────┤ │stmid │ ID │ ストリーム番号 │ ├───────┼──────┼─────────────┤ │data │ VP │ 送信データの先頭アドレス │ ├───────┼──────┼─────────────┤ │len │ INT │ 送信したいデータの長さ │ ├───────┼──────┼─────────────┤ │tmout │ TMO │ タイムアウト指定 │ └───────┴──────┴─────────────┘ (3)戻り値 ER ercd 送信した長さ(送信バッファに入れたデータの長さ)/エラーコ ード (4)エラーコード 表3.55 jti_wri_stmのエラーコード ┌─────────┬───────────────┐ │エラーコードの値 │ 内容 │ ├─────────┼───────────────┤ │E_ID │ 不正ID番号 │ ├─────────┼───────────────┤ │E_NOEXS │ オブジェクト未生成 │ ├─────────┼───────────────┤ │E_PAR │ パラメータエラー │ ├─────────┼───────────────┤ │E_OBJ │ オブジェクト状態エラー │ ├─────────┼───────────────┤ │E_TMOUT │ ポーリング失敗、タイムアウト │ ├─────────┼───────────────┤ │E_CLS │ チャネルの強制切断 │ └─────────┴───────────────┘ (5)特記事項 特になし 3.3.6.4 jti_rea_stm (1)API データの受信 ER ercd = jti_rea_stm(ID stmid,VP data,INT len,TMO tmout) (2)パラメータ 表3.56 jti_rea_stmのパラメータ ┌───────┬────┬─────────────┐ │ニモニック │ 型 │ 内容 │ ├───────┼────┼─────────────┤ │stmid │ ID │ ストリーム番号 │ ├───────┼────┼─────────────┤ │data │ VP │ 受信データの先頭アドレス │ ├───────┼────┼─────────────┤ │len │ INT │ 受信したいデータの長さ │ ├───────┼────┼─────────────┤ │tmout │ TMO │ タイムアウト指定 │ └───────┴────┴─────────────┘ (3)戻り値 ER ercd 受信したデータの長さ(受信バッファから取り出したデータの 長さ) /エラーコード (4)エラーコード 表3.57 jti_rea_stmのエラーコード ┌─────────┬───────────────┐ │エラーコードの値 │ 内容 │ ├─────────┼───────────────┤ │E_ID │ 不正ID番号 │ ├─────────┼───────────────┤ │E_NOEXS │ オブジェクト未生成 │ ├─────────┼───────────────┤ │E_PAR │ パラメータエラー │ ├─────────┼───────────────┤ │E_OBJ │ オブジェクト状態エラー │ ├─────────┼───────────────┤ │E_TMOUT │ ポーリング失敗、タイムアウト │ └─────────┴───────────────┘ (5)特記事項 特になし 3.3.6.5 jti_sht_stm (1)API データ送信の終了 ER ercd = jti_sht_stm(ID stmid) (2)パラメータ 表3.58 jti_sht_stmのパラメータ ┌───────┬──────┬────────┐ │ニモニック │ 型 │ 内容 │ ├───────┼──────┼────────┤ │stmid │ ID │ ストリーム番号 │ └───────┴──────┴────────┘ (3)戻り値 ER ercd エラーコード (4)エラーコード 表3.59 jti_sht_stmのエラーコード ┌─────────┬────────────┐ │エラーコードの値 │ 内容 │ ├─────────┼────────────┤ │E_OK │ 正常終了 │ ├─────────┼────────────┤ │E_ID │ 不正ID番号 │ ├─────────┼────────────┤ │E_NOEXS │ オブジェクト未生成 │ ├─────────┼────────────┤ │E_OBJ │ オブジェクト状態エラー │ ├─────────┼────────────┤ │E_CLS │ チャネルの強制切断 │ └─────────┴────────────┘ (5)特記事項 特になし 3.3.6.6 jti_ref_stm (1)API ストリームの状態参照 ER ercd = jti_ref_stm(ID stmid,T_JTI_RSTM *pk_rstm) (2)パラメータ 表3.60 jti_ref_stmのパラメータ ┌───────┬───────┬────────────────────┐ │ニモニック │ 型 │ 内容 │ ├───────┼───────┼────────────────────┤ │stmid │ ID │ ストリーム番号 │ ├───────┼───────┼────────────────────┤ │pk_rstm │ T_JTI_RSTM * │ ストリーム状態を返すパケットのアドレス │ └───────┴───────┴────────────────────┘ 表3.61 構造体 T_JTI_RSTMの内容 ┌──────┬───┬─────────────────────┐ │ニモニック │ 型 │ 内容 │ ├──────┼───┼─────────────────────┤ │exinf │ VP │ 拡張情報 │ ├──────┼───┼─────────────────────┤ │wrisz │ INT │ 待たずに送信可能なデータサイズ(バイト数) │ ├──────┼───┼─────────────────────┤ │reasz │ INT │ 待たずに受信可能なデータサイズ(バイト数 │ └──────┴───┴─────────────────────┘ (3)戻り値 ER ercdエラーコード (4)エラーコード 表3.62 jti_ref_stmのエラーコード ┌─────────┬──────────┐ │エラーコードの値 │ 内容 │ ├─────────┼──────────┤ │E_OK │ 正常終了 │ ├─────────┼──────────┤ │E_ID │ 不正ID番号 │ ├─────────┼──────────┤ │E_NOEXS │ オブジェクト未生成 │ ├─────────┼──────────┤ │E_PAR │ パラメータエラー │ └─────────┴──────────┘ (5)特記事項 特になし ■ 4.CORBA関連機能の利用方法 ■■■■■■■■■■■■■■■■■■■■■■ ━ 4.1 CORBA関連機能インターフェース仕様 ━━━━━━━━━━━━━━━━ CORBA関連機能を用いたアプリケーション作成に必要な関数のインターフェー ス仕様を説明する。 CORBA関連機能を用いたアプリケーションは、「4.1.1 リソース設定」以 降に説明する関数の組合せにより実現可能である。 関数の組合せ方は、以下に示すディレクトリに存在するサンプルプログラムを 参照。 corbaapl/sample/long/src (long型の引数、 戻り値をもつCORBAオペ レーションサンプルプログラム) corbaapl/sample/dync/src (動的登録サンプルプログラム) 4.1.1 リソース設定 ────────────────────────────────────── 【機能】 組込みCORBAリソース設定 【形式】 CORBA_int ECORBA_init(SG_CORBA *corba_sg) 【引数(パラメータ)】 SG_CORBA *corba_def /* ユーザ定義リソース要求情報へのポインタ */ 【戻り値(リターンパラメータ)】 CORBA_SGOK 正常終了 CORBA_SGERR_SYS システム依存部リソース設定失敗 CORBA_SGERR_MRSHL マーシャリングリソース設定失敗 CORBA_SGERR_CON コネクション管理リソース設定失敗 CORBA_SGERR_GIOP GIOPリソース設定失敗 CORBA_SGERR_ORB ORBリソース設定失敗 CORBA_SGERR_POA POAリソース設定失敗 CORBA_SGERR_ASRV 自動起動リソース設定失敗 【説明】 CORBA関連機能を使用するターゲットマシンは、本機能の初期化時に本関数を1 度呼び出す必要がある。 本関数は、引数からCORBA関連機能が使用可能なリソース量の上限値と設定値 を得て、組込みCORBAのリソース管理機能を初期化する。 引数であるSG_CORBA型データの内容は以下の通り。 typedef struct sg { CORBA_UsrDefine *sg_corba; ASRV_UsrDefine *sg_asrv; ORB_UsrDefine *sg_orb; POA_UsrDefine *sg_poa; MRSHL_UsrDefine *sg_mrshl; GIOP_UsrDefine *sg_giop; CON_UsrDefine *sg_con; SYS_UsrDefine *sg_sys; void *sg_rfu1; void *sg_rfu2; void *sg_rfu3; void *sg_rfu4; } SG_CORBA; SG_CORBA型データの構成要素は以下の通り。 (1)CORBA_UsrDefine型データ typedef struct corba_init { CORBA_char *corba_tgtnam; CORBA_unsigned_long corba_srvnum; CORBA_unsigned_long corba_memsz; CORBA_char *corba_buffp; void *corba_rfu1; void *corba_rfu2; void *corba_rfu3; void *corba_rfu4; } CORBA_UsrDefine; ・corba_tgtnam ターゲット名へのポインタ ・corba_srvnum ターゲットマシン上のCORBA関連機能を使用するサーバタスクの個数。 CORBA関連機能のサーバタスクの起動方法は、以下の3通りである。 (a)初期後ただちに生成/起動されるサーバ (b)初期後ただち自動起動サーバに登録され、リクエスト受信時に 起動されるサーバ (c)稼働中に自動起動サーバに登録され、リクエスト受信時に起動 されるサーバ ASRV_UsrDefine構造体のメンバasrv_dservnmおよびasrv_ddobjnmと本 メンバとの間では以下の関係が常に成り立つ。 ASRV_UsrDefine構造体については後述の「(2) ASRV_UsrDefine型デー タ」を参照 corba_srvnm >= (asrv_dservnm + asrv_ddobjnm) よって、上記(a)(b)(c)は、以下のような関係になる。 (a)+(b)+(c)= corba_srvnm (a)= corba_srvnm - asrv_dservnm - asrv_ddobjnm (b)= asrv_dservnm (c)= asrv_ddobjnm ・corba_memsz CORBA関連機能で使用可能なメモリ領域の合計サイズ。 ・corba_buffp 0固定。 ・corba_rfu1、corba_rfu2、corba_rfu3、corba_rfu4 予約領域 (2)ASRV_UsrDefine型データ typedef struct asrv_usrdef { ID asrv_aservid; PRI asrv_asrvpri; PRI asrv_dsrvpri; CORBA_unsigned_short asrv_portnum; CORBA_unsigned_long asrv_dservnm; CORBA_unsigned_long asrv_ddobjnm; void *asrv_rfu1; void *asrv_rfu2; void *asrv_rfu3; void *asrv_rfu4; } ASRV_UsrDefine; ・asrv_aservid 自動起動サーバのタスクID ・asrv_asrvpri 自動起動サーバタスクのプライオリティ ・asrv_dsrvpri 自動起動されるサーバタスクの初期プライオリティ 自動起動サーバのプライオリティよりも高いプライオリティを指定。 自動起動サーバによって起動されるサーバタスクは、生成/起動時に は自動起動サーバよりも高いプリオリティで実行される。受信可能状 態になるとユーザ指定された本来のプライオリティで走行する。 ・asrv_portnum 自動起動サーバのポート番号 ・asrv_dservnm 自動起動されるサーバタスクの個数 ・asrv_ddobjnm ターゲットシステム稼働中に動的に自動起動サーバに登録され、自動 起動されるサーバタスクの個数 ・asrv_rfu1、asrv_rfu2、asrv_rfu3、asrv_rfu4 予約領域 (3)ORB_UsrDefine型データ 設定を必要とするリソースがないため0で固定 (4)POA_UsrDefine型データ typedef struct tagPOA_UsrDefine { CORBA_unsigned_long poa_limit; CORBA_unsigned_long map_limit; void *poa_rfu1; void *poa_rfu2; void *poa_rfu3; void *poa_rfu4; } POA_UsrDefine; ・poa_limit CORBA関連機能で使用可能なオブジェクトアダプタ上限数 ・map_limit CORBA関連機能で使用可能なサーバント上限数 ・poa_rfu1、poa_rfu2、poa_rfu3、poa_rfu4 予約領域 (5)MRSHL_UsrDefine型データ 設定を必要とするリソースがないため0で固定 (6)GIOP_UsrDefine型データ 設定を必要とするリソースがないため0で固定 (7)CON_UsrDefine型データ typedef struct con_usr_define { CORBA_unsigned_long con_srvlim; CORBA_unsigned_long con_clilim; CORBA_unsigned_long con_tmout; void *con_rfu1; void *con_rfu2; void *con_rfu3; void *con_rfu4; } CON_UsrDefine; ・con_srvlim サーバタスク当たりのコネクション管理上限数 サーバ側オブジェクトが使用可能なコネクションの合計値は、本メン バで設定される値とCORBA_UsrDefine型データのメンバcorba_srvnum で設定した値を掛け合わせた値である。 ・con_clilim クライアントのコネクション管理上限数 本メンバで設定された値が、クライアントが使用できるコネクション の合計値となる。 ・con_tmout サーバタスクの終了チェックを行う間隔(microseconds) ・con_rfu1、con_rfu2、con_rfu3、con_rfu4 予約領域 (8)SYS_UsrDefine型データ 設定を必要とするリソースがないため0で固定 4.1.2 ORB ────────────────────────────────────── 【機能】 ORB初期化 【形式】 CORBA_ORB CORBA_ORB_init(int *argc, char **argv, CORBA_ORBid orb_identifier, CORBA_Environment *env); 【引数(パラメータ)】 int *argc /* コンフィグレーション情報数 へのポインタ */ char **argv /* コンフィグレーション情報格 納領域の先頭アドレスへのポ インタ */ CORBA_ORBid orb_identifier /* ORBのID */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 正常終了 ORBオブジェクト 異常終了 NULL 正常終了および異常終了の判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 ORBオブジェクトを獲得する。 アプリケーションがCORBA関連機能を初期化するために、引数orb_identifier に文字列"e-corba"を指定して本関数を呼び出す。 自動起動サーバによって起動されることを期待されている(永続化されたPOAを 持つ)サーバタスクには、本関数の引数*argcに1を設定する。さらに、引数 **argvに文字列"ServerName=<サーバ名>"の格納領域の先頭アドレスへのポイ ンタを設定する必要がある。この<サーバ名>には、サーバタスクの名前を指定 する。 名前を付けないタスクに関しては、引数*argcは0を指定する。 戻り値となるORBオブジェクトは、本関数内で獲得したメモリ領域を使用して いる。よって、ORBオブジェクトが不要となった場合、関数 CORBA_Object_releaseによってメモリ領域を解放する必要がある。 ────────────────────────────────────── 【機能】 初期オブジェクト獲得 【形式】 CORBA_Object CORBA_ORB_resolve_initial_references(CORBA_ORB orb, CORBA_char *object_name, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_ORB orb /* ORBオブジェクト */ CORBA_char *object_name /* 獲得したい初期オブジェクト の名前へのポインタ */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 正常終了 CORBAオブジェクト 異常終了 NULL 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 引数object_nameで指定されたサービスのCORBAオブジェクトを得る。 サーバ側のアプリケーションは、引数*object_nameに文字列"RootPOA"を指定 することにより、POAの初期化を行い、CORBAオブジェクト型のRootPOAを獲得 する。 本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定す る。 戻り値となるCORBAオブジェクトは、本関数内で獲得したメモリ領域を使用し ている。よって、CORBAオブジェクトが不要となった場合、関数 CORBA_Object_releaseを用いてメモリ領域を解放する必要がある。 ────────────────────────────────────── 【機能】 CORBAオブジェクトを文字列に変換 【形式】 CORBA_char * CORBA_ORB_object_to_string(CORBA_ORB orb, CORBA_Object obj, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_ORB orb /* ORBオブジェクト */ CORBA_Object obj /* CORBAオブジェクト */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 正常終了 文字列(IOR形式) 異常終了 NULL 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 本関数は、引数objで指定されるCORBAオブジェクトを、インターオペラビリテ ィを考慮したIOR形式の文字列に変換する。 本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定す る。 戻り値となるIORは、本関数内で獲得したメモリ領域を使用している。よって、 IORが不要となった場合、関数CORBA_freeを用いてメモリ領域を解放する必要 がある。 ────────────────────────────────────── 【機能】 文字列をCORBAオブジェクトに変換 【形式】 CORBA_Object CORBA_ORB_string_to_object(CORBA_ORB orb, CORBA_char *buf, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_ORB orb /* ORBオブジェクト */ CORBA_char *buf /* 文字列へのポインタ */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 正常終了 CORBAオブジェクト 異常終了 NULL 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 引数*bufに指定された文字列(IOR形式)をCORBAオブジェクトに変換する。 クライアント側のアプリケーションは、本関数で得られたCORBAオブジェクト を使用してオペレーションを呼び出す。 本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定す る。 戻り値となるCORBAオブジェクトは、本関数内で獲得したメモリ領域を使用し ている。よって、CORBAオブジェクトが不要となった場合、関数 CORBA_Object_releaseを用いてメモリ領域を解放する必要がある。 ────────────────────────────────────── 【機能】 リクエスト受信待ち 【形式】 void CORBA_ORB_run(CORBA_ORB orb, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_ORB orb /* ORBオブジェクト */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 サーバ側のオブジェクトは、本関数を呼び出し、クライアントからのリクエス ト受信待ちループに入る。 本関数の引数orbは、関数CORBA_ORB_initで獲得したORBオブジェクトを指定す る。 クライアントからのリクエストを受信した場合、適切なサーバントを呼び出す。 ────────────────────────────────────── 【機能】 サーバ終了設定 【形式】 void CORBA_ORB_shutdown(CORBA_ORB orb, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_ORB orb /* ORBオブジェクト */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 サーバ側アプリケーションが関数CORBA_ORB_runを呼び出し、リクエスト受信 待ちとなると関数CORBA_ORB_runはリターンしない。 しかし、サーバ側アプリケーションに登録されたサーバントの関数内で、本関 数を呼び出された場合、関数CORBA_ORB_runからリターンすることが可能とな る。 4.1.3 CORBA Object ────────────────────────────────────── 【機能】 CORBAオブジェクトの解放 【形式】 void CORBA_Object_release(CORBA_Object obj, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_Object obj /* CORBAオブジェクト */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 本関数は引数objで指定されるCORBAオブジェクトを解放する。 4.1.4 POA ────────────────────────────────────── 【機能】 POAの作成 【形式】 void PortableServer_POA_create_POA(PortableServer_POA poa, CORBA_char *adapter_name, PortableServer_POAManager mgr, CORBA_PolicyList *policies, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* 作成するPOAの親POA */ CORBA_char *adapter_name /* 作成するPOAの名前 */ PortableServer_POAManager mgr /* 作成するPOAのPOAManager (NULLを指定すると、 POAManagerが作成される) */ CORBA_PolicyList *policies /* 作成されるPOAのポリシーリスト */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAを作成する。 この関数インタフェースは、すでに関数 CORBA_ORB_resolve_initial_referencesで作成済みの親POAに対して、子POAを 作成する場合に使う。 引数adapter_nameがPOAにすでに登録済みのものと一致した場合、登録されず に引数*envに例外を設定する。 引数mgrがNULLの場合は、引数poaを管理するためのPOAManagerが作成される。 作成されたPOAManagerを取り出し使用する場合は、後述する関数 PortableServer_POA__get_the_POAManagerを使用する。また、mgrが以前作成 されたPOAのPOAManagerである場合は、そのPOAManagerの管理リストにPOAが設 定される。 引数polieseは、ポリシーを設定しない場合はNULLを設定し、永続化ポリシー となるPOAを作成するときは、LifespanPolicyをセットしたポリシーリストを 設定する。 ────────────────────────────────────── 【機能】 POAを削除する 【形式】 void PortableServer_POA_destroy(PortableServer_POA poa, CORBA_boolean etherealize_objects, CORBA_boolean wait_for_completion, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* 削除するPOA * / CORBA_boolean etherealize_objects /* サーバントマネージャに よってオブジェクトの状態 を保持するか否かフラグ */ CORBA_boolean wait_for_completion /* すべてのリクエストの 起動が終わるまで待つ かのフラグ */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAを削除する。 引数etherealize_objectsは、CORBA関連機能がサーバントマネージャをサポー トしないので無視される。また、引数wait_for_completionもCORBA関連機能で は無視される。 本関数は、関数CORBA_ORB_resolve_initial_referencesと、関数 PortableServer_POA_create_POAによって作成されたPOAを削除する。 関数CORBA_ORB_resolve_initial_referencesや、関数 PortableServer_POA_create_POAによって作成されたPOAが不要となった場合、 本関数を使って削除する必要がある。 ────────────────────────────────────── 【機能】 POA名の獲得 【形式】 CORBA_char * PortableServer_POA__get_the_name(PortableServer_POA poa, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* 名前を得るPOA */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 引数poaで与えられたPOAの名前 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAの名前を得る。 ここでは、関数PortableServer_POA_create_POAの引数*adapter_nameに設定さ れたPOAの名前が返される。関数CORBA_ORB_resolve_initial_referencesで作 成されたRootPOAの場合は、"RootPOA"が返される。 ────────────────────────────────────── 【機能】 親POAの獲得 【形式】 POA PortableServer_POA__get_the_parent(PortableServer_POA poa, CORBA_environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* 親POAを得るPOA */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 引数poaで与えられたPOAの親POA 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 引数poaで与えられたPOAの親POAを得る。 関数PortableServer_POA_create_POAの引数poaで設定された親POAが返される。 関数CORBA_ORB_resolve_initial_referencesで作成されたRootPOAの場合は、 親POAは存在しないのでNULLが返される。 ────────────────────────────────────── 【機能】 POAManagerの獲得 【形式】 POA PortableServer_POA__get_the_POAManager(PortableServer_POA poa, CORBA_environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* POAManagerに管理されているPOA */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 引数poaで与えられたPOAのPOAManager 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 引数poaで指定されるPOAを管理しているPOAManaegerを返す。 関数PortableServer_POA_create_POAの引数mgrに設定されたPOAManagerが返さ れる。関数PortableServer_POA_create_POAの引数mgrがNULLに設定されている 場合は、関数PortableServer_POA_create_POAで作成されたPOAManagerが返さ れる。 関数CORBA_ORB_resolve_initial_referencesで作成されたRootPOAの場合は、 関数CORBA_ORB_resolve_initial_referencesで作成されたPOAManagerが返され る。 ────────────────────────────────────── 【機能】 POAの永続化ポリシーの作成 【形式】 LifespanPolicy create_lifespan_policy(PortableServer_POA poa, LifespanPolicyValue value, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* ポリシーの設定を行うPOA */ LifespanPolicyValue value /* 永続化ポリシーの値 */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 設定された永続化ポリシー 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAの永続化ポリシーを作成する。 POAの永続化ポリシーには、揮発性のPOAと、永続化されたPOAの2種類がある。 揮発性のPOAによって作成されたサーバントは、アプリケーションタスクが終 了すると、再度作成することは不可能である。また、永続化されたPOAによっ て作成されたサーバントは、アプリケーションタスクの生存期間に関わらず永 続化されている。 設定可能な永続化ポリシーは以下の通りである。 PortableServer_TRANSIENT /* 揮発性のPOA */ PortableServer_PERSISTENT /* 永続化されたPOA */ ────────────────────────────────────── 【機能】 POAにサーバントを登録する 【形式】 void PortableServer_POA_activate_object_with_id(PortableServer_POA poa, PortableServer_ObjectId oid, PortableServer_Servantp_servant, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* 登録先であるPOA */ PortableServer_ObjectId oid /* 新しいオブジェクトの オブジェクトID */ PortableServer_Servant p_servant /* 登録するサーバント */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAにオブジェクトID(引数oid)を識別子としてサーバントを登録する。 サーバプログラムは本関数を用いて、POAに実装オブジェクト(サーバント)を 登録する。登録されたサーバントは、引数oidで指定されたオブジェクトIDに よって識別される。 本関数によって登録されたサーバントは、サーバントとオブジェクトIDとを対 にしたテーブルによって管理される。このメモリ領域はサーバントが削除され るまで、POAによって保持される。よって、登録されたサーバントが不要とな った場合は、関数PortableServer_POA_deactivate_object_with_idを使って削 除する必要がある。 ────────────────────────────────────── 【機能】 POAからサーバントを削除 【形式】 void PortableServer_POA_deactivate_object_with_id(PortableServer_POA poa, PortableServer_ObjectId oid, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* サーバントを管理しているPOA */ PortableServer_ObjectId oid /* 削除するオブジェクトの オブジェクトID */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAに登録されているサーバントを削除する。 削除時には、引数oidで指定されたオブジェクトIDで検索を行い、オブジェク トIDが一致するサーバントを削除する。ただし、このオブジェクトIDは、登録 時に用いられたものである。 ────────────────────────────────────── 【機能】 サーバントからCORBAオブジェクト獲得 【形式】 PortableServer_Object PortableServer_POA_servant_to_reference(PortableServer_POA poa, PortableServer_Servant p_servant, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POA poa /* サーバントを管理しているPOA */ PortableServer_Servant p_servant /* CORBAオブジェクトを得るサーバント */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 引数p_servantと一致するCORBAオブジェクト 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 サーバントからCORBAオブジェクトを得る。 POAのアクティブオブジェクトマップからサーバントをキーにしてオブジェク トIDを検索する。その時に一致したオブジェクトIDより、CORBAオブジェクト を生成し返り値とする。 本関数内では、CORBAオブジェクトのメモリ領域の取得を行う。よって、返り 値であるCORBAオブジェクトが不要になった場合は、関数 CORBA_Object_releaseを使ってそのメモリ領域を解放する必要がある。 ────────────────────────────────────── 【機能】 POAManagerの活性化 【形式】 void PortableServer_POAManager_activate(PortableServer_POAManager mgr, CORBA_Environment *env) 【引数(パラメータ)】 PortableServer_POAmanager mgr /* 活性化を行うPOAManager */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 正常終了か異常終了かの判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 POAManagerを活性化する。 引数mgrに指定されたPOAManagerに属するPOAを活性化し、POAがメッセージを 受信可能な状態とする。 4.1.5 exception ────────────────────────────────────── 【機能】 環境変数の初期化 【形式】 void CORBA_exception_init(CORBA_Environment *env) 【引数(パラメータ)】 CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 【説明】 環境変数を初期化する。 環境変数を使用する前に、アプリケーション内で本関数を呼び出す必要がある。 ────────────────────────────────────── 【機能】 環境変数への例外情報設定 【形式】 void CORBA_exception_set(CORBA_Environment *env, CORBA_exception_type major, CORBA_char *exception_repos_id, void *param); 【引数(パラメータ)】 CORBA_Environment *env /* 環境変数へのポインタ */ CORBA_exception_type major /* メジャー番号 */ CORBA_char *exception_repos_id /* 例外識別子へのポインタ */ void *param /* 追加例外情報へのポインタ */ 【戻り値(リターンパラメータ)】 なし 【説明】 引数*envに、引数major、引数*exception_repos_idおよび引数*param を設定する。 引数majorに設定できる値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 引数*exception_repos_idに設定できる値は、例外種別を特定する文字列とな る。引数majorにCORBA_SYSTEM_EXCEPTIONと指定した場合は、CORBAの仕様で規 定されているシステム例外の種別を示す文字列を指定する。引数majorに CORBA_USER_EXCEPTIONと指定した場合は、ユーザが定義した例外の種別を示す 文字列を指定する。 引数*paramへは、追加例外情報があれば、その情報へのポインタを設定する。 なければ0を設定する。 本関数は、引数*envへ例外情報を設定する場合、メモリ領域の獲得を行う。 よって、例外情報が不要となった場合、獲得したメモリ領域を解放するため 関数CORBA_exception_freeを呼び出す必要がある。 ────────────────────────────────────── 【機能】 例外識別子の獲得 【形式】 CORBA_char * CORBA_exception_id(CORBA_Environment *env); 【引数(パラメータ)】 CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 例外識別子となる文字列へのポインタ 【説明】 引数*envに設定されている例外識別子へのポインタを戻り値に設定する。 CORBA_Environment型データへのポインタである引数*envのメンバ_majorが、 CORBA_USER_EXCEPTIONまたはCORBA_SYSTEM_EXCEPTIONである場合、本関数を呼 び出すことによって、例外種別情報となる例外識別子を獲得することができる。 ────────────────────────────────────── 【機能】 追加例外情報の獲得 【形式】 void * CORBA_exception_value(CORBA_Environment *env); 【引数(パラメータ)】 CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 追加例外情報へのポインタ 【説明】 引数*envに設定されている追加例外情報へのポインタを戻り値に設定する。 CORBA_Environment型データへのポインタである引数*envのメンバ_majorが、 CORBA_USER_EXCEPTIONまたはCORBA_SYSTEM_EXCEPTIONである場合、本関数を呼 び出すことによって、追加例外情報を獲得することができる。 ────────────────────────────────────── 【機能】 例外情報メモリ領域解放 【形式】 void CORBA_exception_free(CORBA_Environment *env); 【引数(パラメータ)】 CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 なし 【説明】 引数*envに設定されている例外情報を格納しているメモリ領域の解放を行う。 4.1.6 memory ────────────────────────────────────── 【機能】 メモリの獲得 【形式】 void * CORBA_malloc(CORBA_unsigned_long size, CORBA_unsigned_long count, f_func func) 【引数(パラメータ)】 CORBA_unsigned_long size /* メモリサイズ */ CORBA_unsigned_long len /* 獲得メモリ数 */ f_func func /* メモリ開放関数へのポインタ */ 【戻り値(リターンパラメータ)】 獲得メモリの先頭アドレス 【説明】 必要なサイズ(引数size * 引数len)のメモリ領域を獲得する。この時、獲得 したメモリ情報を格納するための領域(32バイト)も消費する。 本関数で獲得したメモリ領域は、関数CORBA_freeで解放しなければならない。 獲得したメモリが配列として使用され、個々の配列の要素が、さらに動的に獲 得したメモリのポインタを持ち、その動的に獲得したメモリを開放するための 関数が用意されている場合、引数funcにそのメモリ開放関数へのポインタを設 定することが可能である。 さらに配列の要素数を引数countに設定する。引数countおよびfuncは関数 CORBA_freeを呼び出された時に使用される。 ────────────────────────────────────── 【機能】 メモリの解放 【形式】 void CORBA_free(void *bufp) 【引数(パラメータ)】 void *bufp /* 解放するメモリ領域へのポインタ */ 【戻り値(リターンパラメータ)】 なし 【説明】 引数bufpで指定されたメモリ領域の解放を行う。 引数bufpで示される領域のメモリ解放関数が設定されていれば、そのメモリ開 放関数を呼び出してメモリの開放を行う。 4.1.7 stub skelton ────────────────────────────────────── 【機能】 送信バッファ内インデックス獲得関数 【形式】 CORBA_unsigned_long MRSHL_index_octet(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_boolean(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_char(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_short(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_unsigned_short(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_long(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_unsigned_long(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_long_long(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_unsigned_long_long(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_float(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_double(CORBA_unsigned_long index) CORBA_unsigned_long MRSHL_index_string(CORBA_unsigned_long index, CORBA_char *str) 【引数(パラメータ)】 CORBA_unsigned_long index /* マーシャリング開始時の送信バッファ 内インデックス */ CORBA_char *str /* 文字列へのポインタ 関数MRSHL_index_stringのみ必要 */ 【戻り値(リターンパラメータ)】 マーシャリング後の送信バッファ内インデックス 【説明】 送信バッファ内インデックスとは、マーシャリング後の送信バッファの先頭か らのオフセット値である。送信バッファの先頭のインデックス値は0である。 本関数はマーシャリングを行わず、インデックスのみ求める。 マーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必 要がある。 現在のバッファ内インデックス値である引数indexからCORBA_octet型データ格 納後のインデックス値を求める。 求めたインデックス値が、マーシャリング時に必要とされるメモリサイズとな る。 また、文字列型データのマーシャリング後の送信バッファ内インデックスを求 める場合のみ、引数str(文字列へのポインタ)が必要となる。 CORBAオペレーションが、long型とshort型の2つの引数をとる場合、以下の様 にしてバッファ内インデックス(マーシャリング時に必要とされるメモリサイ ズ)を求める。 CORBA_unsigned_long index; index = 0; index = MRSHL_index_long(index); index = MRSHL_index_short(index); ────────────────────────────────────── 【機能】 マーシャリング関数 【形式】 void MRSHL_put_octet(CORBA_char **bufp, CORBA_octet data) void MRSHL_put_boolean(CORBA_char **bufp, CORBA_boolean data) void MRSHL_put_char(CORBA_char **bufp, CORBA_char data) void MRSHL_put_short(CORBA_char **bufp, CORBA_short data) void MRSHL_put_unsigned_short(CORBA_char **bufp, CORBA_unsigned_short data) void MRSHL_put_long(CORBA_char **bufp, CORBA_long data) void MRSHL_put_unsigned_long(CORBA_char **bufp, CORBA_unsigned_long data) void MRSHL_put_long_long(CORBA_char **bufp, CORBA_long_long data) void MRSHL_put_unsigned_long_long(CORBA_char **bufp, CORBA_unsigned_long_long data) void MRSHL_put_float(CORBA_char **bufp, CORBA_float data) void MRSHL_put_double(CORBA_char **bufp, CORBA_double data) void MRSHL_put_string(CORBA_char **bufp, CORBA_char *data) 【引数(パラメータ)】 CORBA_char **bufp /* 送信バッファアドレスの格納 領域へのポインタ */ マーシャリング対象データ型 data /* マーシャリング対象データ 文字列のマーシャリング時は 文字列へのポインタとなる */ 【戻り値(リターンパラメータ)】 なし 【説明】 マーシャリング対象となるデータ型により【形式】に示す関数を使い分ける必 要がある。 格納後、送信バッファ内のアドレスは、引数**bufpに「送信バッファ内インデ ックス獲得関数」で得られたインデックスの値を加えたものである。 CORBAオペレーションが、long型データとshort型データの2つの引数をとる場 合、以下の様にして送信バッファへマーシャリングする。 CORBA_long ldata; CORBA_short sdata; CORBA_char *bufp; MRSHL_put_long(&bufp, ldata); MRSHL_put_short(&bufp, sdata); ────────────────────────────────────── 【機能】 アンマーシャリング関数 【形式】 CORBA_octet MRSHL_get_octet(CORBA_char **bufp) CORBA_boolean MRSHL_get_boolean(CORBA_char **bufp, CORBA_boolean order) CORBA_char MRSHL_get_char(CORBA_char **bufp, CORBA_boolean order) CORBA_short MRSHL_get_short(CORBA_char **bufp, CORBA_boolean order) CORBA_unsigned_short MRSHL_get_unsigned_short(CORBA_char **bufp, CORBA_boolean order) CORBA_long MRSHL_get_long(CORBA_char **bufp, CORBA_boolean order) CORBA_unsigned_long MRSHL_get_unsigned_long(CORBA_char **bufp, CORBA_boolean order) CORBA_long_long MRSHL_get_long_long(CORBA_char **bufp, CORBA_boolean order) CORBA_unsigned_long_long MRSHL_get_unsigned_long_long(CORBA_char **bufp, CORBA_boolean order) CORBA_float MRSHL_get_float(CORBA_char **bufp, CORBA_boolean order) CORBA_double MRSHL_get_double(CORBA_char **bufp, CORBA_boolean order) CORBA_char * MRSHL_get_string(CORBA_char **bufp, CORBA_boolean order) 【引数(パラメータ)】 CORBA_char **bufp /* 受信バッファアドレスの格納領域へのポインタ */ CORBA_boolean order /* 受信バッファ内データのバイトオーダ CORBA_TRUE : リトルエンディアン CORBA_FALSE: ビッグエンディアン */ 【戻り値(リターンパラメータ)】 アンマーシャリング後のデータ 文字列の場合は、文字列へのポインタとなる。 【説明】 アンマーシャリング対象となるデータ型により【形式】に示す関数を使い分け る必要がある。 引数**bufpが示す領域に格納されているデータを取り出し、戻り値に設定する。 この時、引数orderがネイティブバイトオーダと異なれば、ネイティブバイト オーダに変換した値を戻り値に設定する。 データの取り出し後、バッファ内のアドレスは、引数**bufpに「送信バッファ 内インデックス獲得関数」で得られたインデックスの値と同じ値を加えたもの である。設定する。 アンマーシャリングの対象となるデータが文字列の場合、文字列を格納するた めのメモリ領域を獲得し、その領域に文字列を格納する。そして、その領域の 先頭アドレスを戻り値に設定する。メモリ獲得に失敗した場合は、戻り値とし て0を設定する。 獲得したメモリ領域は、関数CORBA_freeで解放可能である。 CORBAオペレーションがlong型データとshort型データの2つの引数をとる場合、 以下のようにして受信バッファからデータを取り出す。 CORBA_long ldata; CORBA_short sdata; CORBA_char *bufp; CORBA_boolean order; ldata = MRSHL_get_long(&bufp, order); sdata = MRSHL_get_short(&bufp, order); ────────────────────────────────────── 【機能】 クライアント側送受信初期化 【形式】 void GIOP_init_cli(GIOP_CliInf *inf) 【引数(パラメータ)】 GIOP_CliInf *inf /* クライアント側GIOP管理データへのポインタ */ 【戻り値(リターンパラメータ)】 なし 【説明】 引数*infで示される情報に初期値を設定する。 スタブ関数内の最初の処理で本関数を必ず呼び出す必要がある。 ────────────────────────────────────── 【機能】 クライアント側送受信終了 【形式】 void GIOP_end_cli(GIOP_CliInf *inf) 【引数(パラメータ)】 GIOP_CliInf *inf /* クライアント側GIOP管理データへのポインタ */ 【戻り値(リターンパラメータ)】 なし 【説明】 引数*infで示される情報についての終了処理を行う。 具体的には送信および受信時に使用されたメモリの解放を行う。 スタブ関数内からリターンする場合は、本関数を必ず呼び出す必要がある。 ────────────────────────────────────── 【機能】 リクエスト用送信バッファの作成 【形式】 CORBA_char * GIOP_create_reqbuf(CORBA_Object obj, GIOP_CliInf *inf, CORBA_unsigned_long dsize, CORBA_boolean akflg, CORBA_char *op, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_Object obj /* CORBAオブジェクト */ GIOP_CliInf *inf /* クライアント側GIOP管理データへのポインタ */ CORBA_unsigned_long dsize /* オペレーション引数サイズ */ CORBA_boolean akflg /* リプライ待ちフラグ CORBA_TRUEで固定 */ CORBA_char *op /* オペレーション名へのポインタ */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 正常終了 送信バッファ内アドレス 異常終了 0 正常終了および異常終了の判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 送信バッファは、リクエストヘッダサイズとオペレーションの引数のサイズ( 引数dsize)を合計したメモリサイズ分だけ獲得される。 獲得した送信バッファに、リプライ待ちフラグ(引数akflg)およびオペレー ション名(引数*op)を含むリクエストヘッダを格納する。 本関数の戻り値には、送信バッファ内のリクエストヘッダ領域のボトムアドレ スを設定する。 つまり、スタブ内でオペレーションの引数となるデータを、本関数の戻り値の アドレスに、先頭からマーシャリング関数を用いて格納している。 ────────────────────────────────────── 【機能】 リクエスト送受信 【形式】 CORBA_char * GIOP_invoke_req(CORBA_Object obj, GIOP_CliInf *inf, CORBA_unsigned_long size, CORBA_Environment *env) 【引数(パラメータ)】 CORBA_Object obj /* CORBAオブジェクト */ GIOP_CliInf *inf /* クライアント側GIOP管理データへのポインタ */ CORBA_unsigned_long size /* 送信バッファサイズ */ CORBA_Environment *env /* 環境変数へのポインタ */ 【戻り値(リターンパラメータ)】 正常終了 受信バッファ内アドレス 異常終了 0 正常終了および異常終了の判断は、本関数の引数*envに設定した CORBA_Environment型データのメンバである_majorを、本関数呼び出し後に参 照して行う。メンバ_majorの取り得る値は以下の通り。 CORBA_NO_EXCEPTION 例外発生なし CORBA_USER_EXCEPTION ユーザ定義例外発生 CORBA_SYSTEM_EXCEPTION システム例外発生 【説明】 サーバにリクエストの送信を行い、リプライを受信する。 リクエスト送信時は、引数sizeが示すバイトサイズ分のデータ(引数*infで管 理されているバッファ内データ)をサーバへ送信する。リプライ受信時に受信 バッファ領域の獲得を行い、受信データを格納する。 本関数の戻り値には、受信バッファへのポインタを設定する。 つまり、スタブ内でオペレーションの戻り値となるデータを、本関数の戻り値 であるアドレスに、先頭からアンマーシャリング関数を用いて格納している。 ────────────────────────────────────── 【機能】 リプライ用送信バッファの作成 【形式】 CORBA_char * GIOP_create_repbuf(GIOP_SrvInf *inf, CORBA_unsigned_long dsize) 【引数(パラメータ)】 GIOP_SrvInf *inf /* サーバ側GIOP管理データへのポインタ */ CORBA_unsigned_long dsize /* オペレーション戻り値サイズ */ 【戻り値(リターンパラメータ)】 正常終了 送信バッファ内アドレス 異常終了 0 【説明】 送信バッファは、リプライヘッダサイズとオペレーションの戻り値のサイズ( 引数dsize)を合計したメモリサイズ分だけ獲得される。送信バッファは、サー バ側GIOP管理データ(引数*inf)で管理される。 獲得した送信バッファにリプライヘッダを格納する。本関数の戻り値には、送 信バッファ内のリプライヘッダ領域のボトムアドレスを設定する。 つまり、スケルトン内でオペレーションの戻り値となるデータを、本関数の戻 り値のアドレスに、先頭からまー社リング関数を用いて格納している。 ────────────────────────────────────── 【機能】 リプライ送信 【形式】 void GIOP_send_rep(GIOP_SrvInf *inf, CORBA_unsigned_long size) 【引数(パラメータ)】 GIOP_SrvInf *inf /* サーバ側GIOP管理データへのポインタ */ CORBA_unsigned_long size /* 送信バッファサイズ */ 【戻り値(リターンパラメータ)】 なし 【説明】 リプライ送信を行う。 引数*infで管理されているバッファ内データを引数sizeが示すバイトサイズ分 だけクライアントに送信する。 ────────────────────────────────────── 【機能】 システム例外のリプライ送信 【形式】 void GIOP_send_repexc(GIOP_SrvInf *inf, CORBA_char *id, CORBA_unsigned_long completed) 【引数(パラメータ)】 GIOP_SrvInf *inf CORBA_char *id /* 例外ID(文字列へのポインタ) */ CORBA_unsigned_long completed /* オペレーション呼び出し有無フラグ CORBA_COMPLETED_YES オペレーションは呼び出された CORBA_COMPLETED_NO オペレーションは呼び出されて いない CORBA_COMPLETED_MAYBE オペレーションは呼び出された かもしれない */ 【戻り値(リターンパラメータ)】 なし 【説明】 本関数は、スケルトンから呼び出される。 オペレーション処理中、またはスケルトン内でシステム例外が発生した場合、 本関数を使用してクライアントにシステム例外が発生したことを通知する。 引数*idでシステム例外の種別を指定し、引数completedでオペレーションの呼 び出しの有無を指定する。本関数は、指定された情報がシステム例外情報とし てクライアントに送信する。 4.1.8 dynamic entry ────────────────────────────────────── 【機能】 動的オブジェクト登録 【形式】 CORBA_int ASRV_entry_dobj(T_CTSK *tskinf, CORBA_char *srvnm, CORBA_int vers) 【引数(パラメータ)】 T_CTSK *tskinf /* サーバタスク生成情報へのポインタ */ CORBA_char *srvnm /* サーバ名へのポインタ */ CORBA_int vers /* バージョン番号 */ 【戻り値(リターンパラメータ)】 正常終了 動的オブジェクト識別子(正の整数) 異常終了 負の整数 【説明】 本関数によって、すでに稼働しているCORBA関連機能を用いたシステムに、サ ーバ側オブジェクトとなるサーバタスクが登録される。 CORBA関連機能が管理しているサーバタスクのサーバタスク生成情報(引数 *tskinf)、サーバ名(引数*srvnm)およびバージョン番号(引数vers)を本 関数の引数に指定する。 サーバタスクが正常に登録された場合、そのサーバを一意に識別可能な動的オ ブジェクト識別子(正の整数)が戻り値となる。 すでに同じサーバ名で登録されている場合、または登録に必要なメモリ領域が 獲得できない場合は、登録処理は行わず、負の整数が戻り値となる。 本関数で登録されたサーバは、クライアントからのリクエストを受信した際に 初めて起動する。よって、クライアントはサーバのロケーション情報を含む IORを、サーバが起動する前に用意しておく必要がある。 このIORは、IOR作成コマンドcre_iorにより取得可能である。 また、本関数により登録されるオブジェクトは、永続化オブジェクトとして実 装されなければならない。 ────────────────────────────────────── 【機能】 動的オブジェクト削除 【形式】 ID ASRV_cancel_dobj_id(CORBA_int doid) 【引数(パラメータ)】 CORBA_int doid /* 動的オブジェクト識別子 */ 【戻り値(リターンパラメータ)】 削除の対象となるサーバタスクID 【説明】 本関数は、関数ASRV_entry_dobjによって登録されたサーバタスクのサービス 停止と削除を行う。 削除対象となるサーバタスクの動的オブジェクト識別子を本関数の引数doidに 指定し、本関数内で削除処理を行い、削除対象となるサーバタスクのタスクID を戻り値に設定しリターンする。 本関数が呼び出された時点で削除対象となるサーバタスクが、クライアントか らのリクエストを処理している場合、その処理が終了した時点で削除される。 よって、本関数がリターンした時点ではサーバタスクが動作しており、削除さ れていない場合も考えられる。 ━ 4.2 IOR作成コマンド ━━━━━━━━━━━━━━━━━━━━━━━━━ 稼働中のシステムに、CORBA関連機能を用いて動的に登録されたサーバ側オブ ジェクト(サーバタスク)のロケーション情報を含むIORは、コマンドcre_ior により作成する。なお、システム初期化時に静的に生成されるサーバ側オブジ ェクト(サーバタスク)のIORは本コマンドでは生成できない。 【形式】 cre_ior 【引数(パラメータ)】 サーバ側マシンのホスト名 サーバ側マシンで動作している自動起動サーバのポート番号 登録されたオブジェクト(サーバタスク)のサーバ名 サーバントのIDL定義 サーバントが存在するPOAの階層情報 サーバントのオブジェクトID 【説明】 稼働中のシステムに、CORBA関連機能を用いて動的に登録されたサーバ側オブ ジェクト(サーバタスク)と同じ設定内容を本コマンドの【引数】に設定する。 本コマンドで得られたIORを引数として、関数CORBA_ORB_string_to_objectを 呼び出すことにより、動的に登録されたサーバ側オブジェクトのCORBAオブジ ェクトが獲得可能である。 クライアント側アプリケーションは、獲得したCORBAオブジェクトを用いてリ クエストの送信が可能となる。 【例】 cre_ior rtpgw5 5000 test-srv IDL:TestModule/TestIF RootPOA/test_poa test_object ■ 5.GUIミドルウェア機能の利用方法 ■■■■■■■■■■■■■■■■■■■ 「GUIミドルウェア機能」は、「イベント管理機能」「パネル管理機能」 「パーツ管理機能」「文字入力管理機能」「データボックス管理機能」 の5つの機能から構成されている。それぞれの機能の概要とシステムコ ールのAPI(Application Program Interface)は、以下の通りである。な お、パネル管理機能は機能が大きいため、描画編とシーン/パネル編に 分けてある。 「GUIミドルウェア機能」はライブラリで提供される。このライブラリ は、ユーザの開発したアプリケーションプログラムとリンクすることで 実行プログラムとなり、ターゲットマシンにダウンロードして実行する ことができるようになる。 なお、パラメータ等の詳細については、 「付録1 GUIミドルウェア機能の外部設計書」も合わせて参照されたい。 ━ 5.1 GUIミドルウェア機能の概要 ━━━━━━━━━━━━━━━━━━━━ 5.1.1 イベント管理機能 イベントは、以下の構造体で示される。 typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; typeはイベントの種類を示す。posは現在のPDの位置を示しており、key はキーイベントのときにキーに対応する文字コードを示す。statは、上 位16ビットにイベントの発生時刻が格納されている。 typeには以下の値が指定できる。 #define GE_NULL 0 #define GE_BUTDWN 1 #define GE_BUTUP 2 #define GE_KEYDWN 3 #define GE_KEYUP 4 #define GE_AUTKEY 5 GE_NULLはNULLイベントを示し、PDが移動した場合などに発生する。 GE_BUTDWNはボタンが押されたときに発生する。GE_BUTUPはボタンが離 されたときに発生する。これらのイベントでは、PDの座標がposに格納 され、イベントの発生時刻がstatに格納される。keyの値は意味を持た ない。 GE_KEYDWNは文字キーが押されたときに発生する。GE_KEYUPは文字キー が離されたときに発生する。GE_AUTKEYはキーリピートイベントで、文 字キーが押され続けたときに連続的に発生する。これらのイベントでは、 PDの座標がposに、キーに対応する文字コードがkeyに、イベントの発生 時刻がstatに格納される。 5.1.2 パネル管理機能-描画編 パネル管理機能は、複数のタスク間でスクリーンを共有できるよう、ス クリーンを描画環境として仮想化して提供している。描画環境にはスク リーンの一部が、他の描画環境と重ならないように割り当てられるため、 複数のタスクから描画環境に書き込んだ場合に他のタスクに影響を与え るのを避けることができる。 座標はスクリーンの左上を{0, 0}とし、右方向にX座標が増加し、下方 向にY座標が増加する。 描画環境にはIDが割り当てられており、描画環境を生成すると描画環境 IDが得られるので、これを用いてアクセスする。描画環境には、描画オ フセット、表示長方形、前置長方形配列、現在フォントが設定されてい る。描画オフセットは、描画要求として渡された座標に加算されて描画 されるもので、同じ座標指定のままで描画する位置を変化させることが できる。表示長方形は、この長方形領域の外には描画できないようにす る機能である。前置長方形配列は、この配列に指定された長方形領域内 部には描画できないようにする機能である。描画環境を生成した時点で は、描画オフセットは{0, 0}に、表示長方形はスクリーン全体に、前置 長方形配列は無に設定されている。GUIミドルウェアの一般的な使い方 では、描画オフセットにはパネルの左上の座標が、表示長方形にはパネ ルの外枠の座標が、前置長方形配列には手前に位置するパネルの外枠の 座標が、それぞれ設定される。 描画環境に図形を描画するために、色や模様を指定するためのパターン が用意されている。パターンはあらかじめ用意されているものを利用す ることも、ユーザーアプリケーションで新たに登録することもできる。 パターンを登録するとパターンIDが得られるので、これを描画時に指定 することでそのパターンによる描画をおこなうことができる。標準で用 意されているパターンは、パターンID=0がピクセル値0の塗りつぶし、 パターンID=1がピクセル値1の塗りつぶしである。 5.1.3 パネル管理機能-シーン/パネル編 パネル管理機能は、イベントを配送する対象として、シーン・パネルを 管理する機能を提供している。シーンはスクリーン全体の大きさを持ち、 複数のシーンのうちの高々1つが表示される。パネルは任意の大きさで、 複数のパネルを同時に表示することができる。パネルはシーンの手前に 重なった形で表示され、またパネルが複数ある場合にはパネル同士も重 なった形で表示される。新たにパネルを表示した場合、そのパネルはも っとも手前に表示される。 シーン・パネルは、システム全体で高々1つが入力受け付け状態となり、 イベントを独占的に受信する。パネルが1つでも表示されている場合に は、もっとも手前に表示されているパネルが入力受け付け状態となり、 パネルが表示されていない場合には、現在表示されているシーンが入力 受け付け状態となる。通常は、入力受け付け状態のシーン・パネルの操 作によってシーンの切り替え・パネルの表示・消去が起こるようにし、 他のシーン・パネルに入力受け付け状態が遷移するようにする。 シーン・パネルは、パーツの集まりとして定義する。パーツにはパーツ 管理機能や文字入力管理機能で提供されるもののほか、パネル管理機能 独自に持っているパーツや、ユーザープログラムで独自に作成したパー ツも使用可能である。パネルの場合には、パネルのサイズも指定する必 要がある。登録すると、シーンID・パネルIDが得られ、これをつかって シーン・パネルを操作することになる。 シーンを表示するには、gp_swi_scn()のシステムコールを使用する。こ れにより、今までシーンが表示されていれば消去され、指定されたシー ンが表示される。このときパネルが表示されていなければ、このシーン が入力受け付け状態となる。パネルの表示はgp_app_pnl()で、指定され たパネルがもっとも手前に表示され、入力受け付け状態となる。パネル の消去はgp_dis_pnl()で、指定されたパネルが消去され、必要に応じて 他のシーン・パネルに入力受け付け状態が遷移する。 入力受け付け状態のシーン・パネルでイベントを受け取るために、 gp_act_scn()・gp_act_pnl()のシステムコールが用意されている。この システムコールはシーンID・パネルIDを範囲で指定するようになってい るため、複数のシーン・パネルのイベントを同時に受け付けることがで きる。入力受け付け状態のシーン・パネルのみがイベントを受け付ける ことができる。イベントがパーツ上で発生した場合には、パーツ管理機 能を呼び出すことで、そのパーツの動作が起きる。 なお、文字入力管理機能のテキストボックスを利用する場合は、テキス トボックスの座標をgp_kps_scn()・gp_kps_pnl()で指定する必要がある。 これにより、発生したキーイベントはこの座標にあるテキストボックス に送られることになる。複数のテキストボックスに入力する場合には、 テキストボックスでのプレスなどの契機でテキストボックスの座標を設 定しなおす。 5.1.4 パーツ管理機能 パーツ管理機能は、さまざまなパーツを統一的に扱うための機能を提供 する。パーツを生成するとパーツIDが得られる。これを利用して、パー ツの表示・動作などをおこなうことができる。 パーツには、文字列と現在値が設定されており、文字列はパーツによっ ては異なる機能を持っている場合がある。現在値は選択状態を示す非負 の値である。現在値=0は通常、無選択状態を示す。 パーツの動作は、gc_act_par()に、初期イベントを渡すことでおこなわ れる。初期イベントは、パーツの動作のきっかけとなるイベントで、パ ーツによってはパーツの動作が完了するまでイベントを繰り返し受信し、 パーツの動作が完了してからリターンするものがある。動作の結果、現 在値が返る。 通常、パーツ管理機能はパネル管理機能内で呼び出されるため、アプリ ケーションから直接操作する必要がないこともある。 5.1.5 文字入力管理機能 文字入力管理機能では、テキストボックスのパーツを提供している。パ ーツ管理機能と類似した機能であるが、キーイベントを受け取るところ が異なっている。 テキストボックスでは文字列の編集がおこなわれるため、文字の入力位 置を示すカレットが表示されている。編集には、左右のカレットキーと 一字消キーを使用することができる。 5.1.6 データボックス管理機能 データボックス管理機能は、メモリ上またはファイル上に用意したデー タボックスを一括して登録する機能を提供する。登録できるのはシーン ・パネルの定義データで、この中にパーツの定義データが含まれる。 ━ 5.2 GUIミドルウェア機能のシステムコール一覧 ━━━━━━━━━━━━━ 5.2.1 イベント管理機能のシステムコール l────────────────────────────────────── 【形式と機能】 W err = ge_ini_evt(VOID *init) イベントキュー管理機能を初期化する。他のイベント管理機能のシステ ムコールを呼ぶ前に、このシステムコールを一度だけ実行しなければな らない。initにはNULLを指定する。 ────────────────────────────────────── 【形式と機能】 W err = ge_put_evt(EVENT *evt) イベントを発生させる。 ────────────────────────────────────── 【形式と機能】 W err = ge_get_evt(EVENT *evt, W tmout, W clr) イベントを取得する。 ────────────────────────────────────── 【形式と機能】 W err = ge_clr_evt(W all) イベントを消去する。 ────────────────────────────────────── 【形式と機能】 W err = ge_sus_evt(W sus) イベントの取得を禁止する。sus=1とすると、ge_get_evt()システムコ ールはエラーとなり、イベントの取得ができなくなる。このシステムコ ールは、イベント受信待ちを中断させるために、パネル管理機能から呼 び出される。 ────────────────────────────────────── 【形式と機能】 W err = ge_ini_inp(VOID *init) 入力機器管理機能を初期化する。他のイベント管理機能のシステムコー ルを呼ぶ前に、このシステムコールを一度だけ実行しなければならない。 initにはNULLを指定する。 ────────────────────────────────────── 【形式と機能】 W err = ge_gen_evt(RAWEVT *evt) 生イベントを発生させる。 ────────────────────────────────────── 【形式と機能】 W err = ge_set_pda(PD_ATTR *attr) PD属性を設定する。 ────────────────────────────────────── 【形式と機能】 W err = ge_get_pda(PD_ATTR *attr) PD属性を取得する。 ────────────────────────────────────── 【形式と機能】 W err = ge_set_kya(KEY_ATTR *attr) キー属性を設定する。 ────────────────────────────────────── 【形式と機能】 W err = ge_get_kya(KEY_ATTR *attr) キー属性を取得する。 ────────────────────────────────────── 【形式と機能】 W err = ge_set_ktb(W size, TC *table) キーテーブルを設定する。 ────────────────────────────────────── 【形式と機能】 W err = ge_get_ktb(W size, TC *table) キーテーブルを取得する。 5.2.2 パネル管理機能-描画編のシステムコール ────────────────────────────────────── 【形式と機能】 W err = gp_ini_env(BMP *screen) パネル管理機能の描画機能を初期化する。他のパネル管理機能のシステ ムコールを呼ぶ前に、このシステムコールを一度だけ実行しなければな らない。screenにNULLを指定した場合、内蔵のPC/AT用スクリーンドラ イバが動作する。screenにNULL以外を指定した場合、指定されたビット マップをスクリーンとみなして描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_set_ptr(W type, PNT *p) ポインタの座標を設定する。設定された位置に、十字線のポインタが表 示される。このシステムコールは、ポインタを移動させるために、イベ ント管理機能から呼び出される。 ────────────────────────────────────── 【形式と機能】 W gid = gp_cre_env(GENVPAR *par) 描画環境を生成する。 ────────────────────────────────────── 【形式と機能】 W err = gp_del_env(W gid) 描画環境を削除する。 ────────────────────────────────────── 【形式と機能】 W err = gp_set_off(W gid, PNT *p) 描画オフセットを設定する。 ────────────────────────────────────── 【形式と機能】 W err = gp_get_off(W gid, PNT *p) 描画オフセットを取得する。 ────────────────────────────────────── 【形式と機能】 W err = gp_set_vis(W gid, RECT *r) 表示長方形を設定する。 ────────────────────────────────────── 【形式と機能】 W err = gp_get_vis(W gid, RECT *r) 表示長方形を取得する。 ────────────────────────────────────── 【形式と機能】 W err = gp_set_fra(W gid, RECT *r, W cnt) 前置長方形配列を設定する。 ────────────────────────────────────── 【形式と機能】 W cnt = gp_get_fra(W gid, RECT *r, W cnt) 前置長方形配列を取得する。 ────────────────────────────────────── 【形式と機能】 W pid = gp_cre_pat(PAT *pat) パターンを生成する。 ────────────────────────────────────── 【形式と機能】 W err = gp_del_pat(W pid) パターンを削除する。 ────────────────────────────────────── 【形式と機能】 W err = gp_dra_lin(W gid, PNT s, PNT e, UW lattr, W pid, W mode) 直線を描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_fra_rec(W gid, RECT r, UW lattr, W pid, W mode) 長方形枠を描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_fil_rec(W gid, RECT r, W pid, W mode) 長方形内部を描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_fra_rrc(W gid, W rh, W rv, RECT r, UW lattr, W pid, W mode) 角丸長方形枠を描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_fil_rrc(W gid, W rh, W rv, RECT r, W pid, W mode) 角丸長方形内部を描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_fra_ovl(W gid, RECT r, UW lattr, W pid, W mode) 楕円枠を描画する。 ────────────────────────────────────── 【形式と機能】 W err = gp_fil_ovl(W gid, RECT r, W pid, W mode) 楕円内部を描画する。 ────────────────────────────────────── 【形式と機能】 W sts = gp_pic_lin(PNT pt, PNT s, PNT e, W width) 直線のピッキングをおこなう。 ────────────────────────────────────── 【形式と機能】 W sts = gp_pic_rec(PNT pt, RECT r, W width) 長方形のピッキングをおこなう。width=0の場合は長方形内部のピッキ ングを、width>0の場合は長方形枠のピッキングをおこなう。 ────────────────────────────────────── 【形式と機能】 W sts = gp_pic_rrc(PNT pt, W rh, W rv, RECT r, W width) 角丸長方形のピッキングをおこなう。width=0の場合は角丸長方形内部 のピッキングを、width>0の場合は角丸長方形枠のピッキングをおこな う。 ────────────────────────────────────── 【形式と機能】 W sts = gp_pic_ovl(PNT pt, RECT r, W width) 楕円のピッキングをおこなう。width=0の場合は楕円内部のピッキング を、width>0の場合は楕円枠のピッキングをおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_dra_bmp(W gid, BMP *bmp, PNT p, W mode) ビットマップの描画をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_set_fon(W gid, FONT *font) フォントの設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_dra_stp(W gid, PNT p, TC *str, W len, W pid, W mode) 文字列の描画をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_get_str(W gid, TC *str, W len, RECT *r) 文字列領域の取得をおこなう。 VOID* p = gp_savescreen() 現在のスクリーンをメモリに保存し、そのアドレスを返す。このシステ ムコールは、パネル背景の保存のため、パネル管理機能から呼び出され る。 ────────────────────────────────────── 【形式と機能】 W err = gp_restorescreen(VOID* p) gp_savescreen()で得られたアドレスを渡すことで、メモリからスクリ ーンを復帰する。このシステムコールは、パネル背景の復帰のため、パ ネル管理機能から呼び出される。 5.2.3 パネル管理機能-シーン/パネル編のシステムコール パネル管理機能の描画機能を初期化する。他のパネル管理機能のシステ ムコールを呼ぶ前に、このシステムコールを一度だけ実行しなければな らない。initにはNULLを指定する。 ────────────────────────────────────── 【形式と機能】 W err = gp_ini_pnl(VOID *init) パネル管理機能のシーン/パネル機能を初期化する。他のパネル管理機 能のシステムコールを呼ぶ前に、このシステムコールを一度だけ実行し なければならない。initにはNULLを指定する。 ────────────────────────────────────── 【形式と機能】 W wid = gp_cre_scn(PARTS *parts, W nitem) シーンの生成をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_del_scn(W wid) シーンの削除をおこなう。 ────────────────────────────────────── 【形式と機能】 W cid = gp_set_scn(W wid, W item, PARTS *parts) シーンの設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_swi_scn(W wid) シーンの切り替えをおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_vis_scn(W wid, RECT *r) シーンの表示長方形の設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_kps_scn(W wid, PNT *p) シーンのキー座標の設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W sts = gp_act_scn(W wids, W wide, EVENT *evt, W* wid, W* item, W tmout) シーンの動作をおこなう。 ────────────────────────────────────── 【形式と機能】 W wid = gp_cre_pnl(RECT *r, PARTS *parts, W nitem) パネルの生成をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_del_pnl(W wid) パネルの削除をおこなう。 ────────────────────────────────────── 【形式と機能】 W cid = gp_set_pnl(W wid, W item, PARTS *parts) パネルの設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_app_pnl(W wid) パネルの表示をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_dis_pnl(W wid) パネルの消去をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gp_vis_pnl(W wid, RECT *r) パネルの表示長方形を設定する。 ────────────────────────────────────── 【形式と機能】 W err = gp_kps_pnl(W wid, PNT *p) パネルのキー座標を設定する。 ────────────────────────────────────── 【形式と機能】 W sts = gp_act_pnl(W wids, W wide, EVENT *evt, W* wid, W* item, W tmout) パネルの動作をおこなう。 5.2.4 パーツ管理機能のシステムコール ────────────────────────────────────── 【形式と機能】 W err = gc_ini_par(VOID *init) パーツ管理機能の描画機能を初期化する。他のパーツ管理機能のシステ ムコールを呼ぶ前に、このシステムコールを一度だけ実行しなければな らない。initにはNULLを指定する。 ────────────────────────────────────── 【形式と機能】 W cid = gc_cre_par(W gid, PARTS *parts) パーツの登録をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gc_del_par(W cid) パーツの削除をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gc_dsp_par(W cid, W mode) パーツの表示をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gc_set_par(W cid, TC *str, W val) パーツの設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W val = gc_get_par(W cid, TC *str, W size) パーツの取得をおこなう。 ────────────────────────────────────── 【形式と機能】 W val = gc_act_par(W cid, EVENT *evt) パーツの動作をおこなう。 5.2.5 文字入力管理機能のシステムコール ────────────────────────────────────── 【形式と機能】 W cid = gt_cre_par(W gid, PARTS *parts) テキストボックスの生成をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gt_del_par(W cid) テキストボックスの削除をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gt_dsp_par(W cid, W mode) テキストボックスの表示をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gt_set_par(W cid, TC *str, W val) テキストボックスの設定をおこなう。 ────────────────────────────────────── 【形式と機能】 W val = gt_get_par(W cid, TC *str, W size) テキストボックスの取得をおこなう。 ────────────────────────────────────── 【形式と機能】 W val = gt_act_par(W cid, EVENT *evt) テキストボックスの動作をおこなう。 5.2.6 データボックス管理機能のシステムコール ────────────────────────────────────── 【形式と機能】 W cnt = gd_reg_dat(TC *data, W *id, W size) データボックスの登録をおこなう。 ────────────────────────────────────── 【形式と機能】 W err = gd_wri_dat(TC *filename, TC *data) データボックスのファイルへの書き出しをおこなう。 ────────────────────────────────────── 【形式と機能】 W cnt = gd_rea_dat(TC *filename, W *id, W size) データボックスのファイルからの登録をおこなう。 ━ 5.3 評価用ドライバ ━━━━━━━━━━━━━━━━━━━━━━━━━ 「GUIミドルウェア機能」を入れたライブラリには、評価目的で、PC/AT 互換機用のスクリーンドライバが含まれている。また、生イベント受け 付け用のメッセージハンドラも含まれており、別プログラムとして提供 されているキーボード/PDドライバからの入力を受けつけることができ る。これらは納品物ではないが、PC/AT互換機上での評価を容易にする 目的で添付される。 評価用スクリーンドライバはGUIミドルウェアに組み込まれており、 gp_ini_env(NULL)としてパネル管理機能のシステムコールを呼び出すこ とで機能する。解像度は640×480ドットで、白黒となる。ピクセル値0 が白、ピクセル値1が黒である。 評価用キーボード/PDドライバは、106キーボードとPS/2マウスをサポー トする。これらの情報は、生イベントを示すRAWEVT構造体を、ITRONの メッセージバッファを使用して送信される。 評価用キーボード/PDドライバからの生イベントを受け付けるには、GUI ミドルウェアの側でinit_evtsvr(1)のシステムコールを発行する。これ によりメッセージバッファに到着した生イベントを受け取ってイベント 管理を呼び出すためのタスクが起動する。 なお、「GUIミドルウェア機能」の起動時には、評価用キーボード/PDド ライバから、英大文字、一字消、カレットキーの入力を受け付けるよう にキーテーブルが設定されている。 ■ 付録1 GUIミドルウェア機能の外部設計書 ■■■■■■■■■■■■■■■■■ (1)機能説明 GUIに関連する機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)イベント管理機能 入力機器からの入力をイベントに変換して蓄積し、順に取得する機能を 提供する。 (B)パネル管理機能 画面への描画をおこなう機能を提供する。また、シーン・パネルの管理 をおこなう機能を提供する。 (C)パーツ管理機能 パーツの管理をおこなう機能を提供する。パーツは画面に表示され、ユ ーザーからの操作を受け付けることができる。 (D)文字入力管理機能 文字の入力を受け付ける機能を提供する。 (E)データボックス管理機能 あらかじめ作成したデータボックスから、シーン・パネル・パーツを一 括して生成する機能を提供する。 (2)入力データ GUIミドルウェア機能には、アプリケーションから以下の入力データが 渡される。 (A)イベント管理機能の場合 ┌─────────┬─────────────────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────────────────┤ │ イベント │ 発生させる生イベントへのポインタ │ ├─────────┼─────────────────────────────┤ │ 生イベント │ 加工・発生させるイベントへのポインタ │ ├─────────┼─────────────────────────────┤ │ PD属性 │ PDイベントの加工設定 │ ├─────────┼─────────────────────────────┤ │ キー属性 │ キーイベントの加工設定 │ ├─────────┼─────────────────────────────┤ │キーテーブルサイズ│ キーテーブルのサイズ(TC単位) │ ├─────────┼─────────────────────────────┤ │ キーテーブル │キーの番号と、そのキーを押した時に入力される文字との対応表│ └─────────┴─────────────────────────────┘ (B)パネル管理機能の場合 ┌────────┬───────────────────────────────────────┐ │ 名称 │ 意味 │ ├────────┼───────────────────────────────────────┤ │描画環境生成情報│ 描画環境を生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ 描画環境ID │ 描画環境を識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 座標 │ 水平位置・垂直位置の組み合わせによる、位置の指定 │ ├────────┼───────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせ│ │ │ │ │ │による、領域の指定 │ ├────────┼───────────────────────────────────────┤ │ 長方形数 │ 前置長方形配列の数 │ ├────────┼───────────────────────────────────────┤ │パターン生成情報│ パターンを生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ パターンID │ パターンを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├────────┼───────────────────────────────────────┤ │ 描画モード │ すでに描画されている図形との演算指定 │ ├────────┼───────────────────────────────────────┤ │ 水平角丸め直径 │ 角丸長方形の角丸め部分の水平直径 │ ├────────┼───────────────────────────────────────┤ │ 垂直角丸め直径 │ 角丸長方形の角丸め部分の垂直直径 │ ├────────┼───────────────────────────────────────┤ │ 線太さ │ 線の太さの指定 │ ├────────┼───────────────────────────────────────┤ │ フォント │ 文字のビットマップを文字コード順に並べたもの │ ├────────┼───────────────────────────────────────┤ │ 文字列 │ 描画する文字コードの配列 │ ├────────┼───────────────────────────────────────┤ │ 文字列長 │ 文字コードの配列の長さ │ ├────────┼───────────────────────────────────────┤ │ ビットマップ │ 点の集まりによる図形の表現 │ ├────────┼───────────────────────────────────────┤ │ パーツ生成情報 │ パーツを生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ パーツ数 │ シーン・パネルに含まれるパーツの数 │ ├────────┼───────────────────────────────────────┤ │ シーンID │ シーンを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 項目番号 │ シーン・パネルに登録されたパーツの番号 │ ├────────┼───────────────────────────────────────┤ │ 先頭シーンID │ シーンID範囲の、先頭ID │ ├────────┼───────────────────────────────────────┤ │ 末尾シーンID │ シーンID範囲の、末尾ID │ ├────────┼───────────────────────────────────────┤ │ イベント │ PD・キーボードからの入力データ │ ├────────┼───────────────────────────────────────┤ │ タイムアウト │ イベントを待つまでの時間指定 │ ├────────┼───────────────────────────────────────┤ │ パネルID │ パネルを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 先頭パネルID │ パネルID範囲の、先頭ID │ ├────────┼───────────────────────────────────────┤ │ 末尾パネルID │ パネルID範囲の、末尾ID │ └────────┴───────────────────────────────────────┘ (C)パーツ管理機能の場合 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ ├───────┼────────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼────────────────┤ │パーツ状態指定│ パーツ状態を変更するための指定 │ ├───────┼────────────────┤ │ パーツ文字列 │ パーツに登録されている文字列 │ ├───────┼────────────────┤ │ パーツ現在値 │ パーツに登録されている値 │ ├───────┼────────────────┤ │ 文字列領域 │ 文字列取り出しのための領域 │ ├───────┼────────────────┤ │ 文字列サイズ │ 文字列領域の長さ(単位はTC) │ ├───────┼────────────────┤ │ イベント │ イベントが格納されている領域 │ └───────┴────────────────┘ (D)文字入力管理機能の場合 ┌────────────┬─────────────────────┐ │ 名称 │ 意味 │ ├────────────┼─────────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├────────────┼─────────────────────┤ │テキストボックス生成情報│テキストボックス状態・領域等を指定する情報│ ├────────────┼─────────────────────┤ │ テキストボックスID │ テキストボックスを区別するためのID │ ├────────────┼─────────────────────┤ │テキストボックス状態指定│ テキストボックス状態を変更するための指定 │ ├────────────┼─────────────────────┤ │ テキストボックス文字列 │ テキストボックスに登録されている文字列 │ ├────────────┼─────────────────────┤ │ テキストボックス現在値 │ テキストボックスのカレット位置 │ ├────────────┼─────────────────────┤ │ 文字列領域 │ 文字列取り出しのための領域 │ ├────────────┼─────────────────────┤ │ 文字列サイズ │ 文字列領域の長さ(単位はTC) │ ├────────────┼─────────────────────┤ │ イベント │ イベントが格納されている領域 │ └────────────┴─────────────────────┘ ※カレットは、文字を入力する位置を示すための縦棒である。カレット 位置が0の場合、カレットは左端にある。 (E)データボックス管理機能の場合 ┌───────┬──────────────────┐ │ 名称 │ 意味 │ ├───────┼──────────────────┤ │データボックス│データボックス定義データへのポインタ│ ├───────┼──────────────────┤ │ ID配列 │ 登録したIDを格納するための配列 │ ├───────┼──────────────────┤ │ 配列サイズ │ ID配列のサイズ │ ├───────┼──────────────────┤ │ ファイル名 │ データボックスファイルのファイル名 │ └───────┴──────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 (A)イベント管理機能の場合 ┌──────┬─────┐ │ 名称 │ニモニック│ ├──────┼─────┤ │エラーコード│ err │ └──────┴─────┘ (B)パネル管理機能の場合 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ エラーコード │ err │ W │ ├───────┼─────┼──┤ │ 描画環境ID │ gid │ W │ ├───────┼─────┼──┤ │ 長方形数 │ cnt │ W │ ├───────┼─────┼──┤ │ パターンID │ pid │ W │ ├───────┼─────┼──┤ │ピッキング結果│ sts │ W │ ├───────┼─────┼──┤ │ パネルID │ wid │ W │ ├───────┼─────┼──┤ │ シーンID │ wid │ W │ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │ 動作結果 │ sts │ W │ └───────┴─────┴──┘ (C)パーツ管理機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ (D)文字入力管理機能の場合 ┌───────────┬─────┐ │ 名称 │ニモニック│ ├───────────┼─────┤ │ エラーコード │ err │ ├───────────┼─────┤ │ テキストボックスID │ cid │ ├───────────┼─────┤ │テキストボックス現在値│ val │ └───────────┴─────┘ (E)データボックス管理機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ ├──────┼─────┼──┤ │エラーコード│ cnt │ W │ ├──────┼─────┼──┤ │ 登録数 │ cnt │ W │ └──────┴─────┴──┘ ※cntは、値が負の場合にはエラーコードを示し、値が0または正の場合 には登録数を示す。 (4)例外条件及び制約条件 対応する中機能を参照。 (5)特記事項 対応する中機能を参照。 (6)機能ブロックの構成及び関連 GUIミドルウェア機能は、 「イベント管理機能」 「パネル管理機能」 「パーツ管理機能」「文字入力管理機能」「データボックス管理機能」 から構成される。 ┌────┐ ┌───────┐ │データ │───────→│パネル管理機能│ │ボックス│ └───────┘ │管理機能│ ↑ ↑ ↑ │ │ ┌───────┐│ │ │ │──→│パーツ管理機能││ │ │ │ └───────┘│ │ │ │ ↑ │ ┌────────┐ │ │────────────│→│文字入力管理機能│ └────┘ │ │ └────────┘ │ │ ↑ ┌────────────────┐ │ イベント管理機能 │ └────────────────┘ 図 GUIミドルウェア機能の機能ブロック相互関係 パネル管理機能は、イベント管理機能・パーツ管理機能・文字入力管理 機能・データボックス管理機能を使用する。 パーツ管理機能は、イベント管理機能・データボックス管理機能を使用 する。 文字入力管理機能は、イベント管理機能・データボックス管理機能を使 用する。 ━ 付録1.1 イベント管理機能 ━━━━━━━━━━━━━━━━━━━━━━ (1)機能説明 GUIミドルウェア機能のうち、 入力機器からの入力を「イベント」とし て蓄え、順に取り出す機能を提供する。 (A)イベントキュー管理機能 イベントキュー管理機能は、イベントを順に蓄え、また順に取り出す機 能を提供する。また、イベントを消去する機能を提供する。 (B)入力機器管理機能 入力機器管理機能は、PD・キーボードといった入力機器からの入力を加 工し、イベントとして発生させる機能を提供する。また、イベントの加 工に関する設定をおこなう機能を提供する。 (2)入力データ ┌─────────┬─────────────────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────────────────┤ │ イベント │ 発生させる生イベントへのポインタ │ ├─────────┼─────────────────────────────┤ │ 生イベント │ 加工・発生させるイベントへのポインタ │ ├─────────┼─────────────────────────────┤ │ PD属性 │ PDイベントの加工設定 │ ├─────────┼─────────────────────────────┤ │ キー属性 │ キーイベントの加工設定 │ ├─────────┼─────────────────────────────┤ │キーテーブルサイズ│ キーテーブルのサイズ(TC単位) │ ├─────────┼─────────────────────────────┤ │ キーテーブル │キーの番号と、そのキーを押した時に入力される文字との対応表│ └─────────┴─────────────────────────────┘ 詳細は小機能の該当する項目を参照。 (3)出力データ ┌──────┬─────┐ │ 名称 │ニモニック│ ├──────┼─────┤ │エラーコード│ err │ └──────┴─────┘ エラーコードの内容: ┌────┬───────┐ │ 名称 │ 意味 │ ├────┼───────┤ │ ER_OK │ 正常終了 │ ├────┼───────┤ │ ER_ADR │ 不正アドレス │ ├────┼───────┤ │ ER_PAR │不正パラメータ│ ├────┼───────┤ │ER_LIMIT│ キューあふれ │ ├────┼───────┤ │ER_NONE │ データ無し │ ├────┼───────┤ │ER_BUSY │ 使用中 │ └────┴───────┘ 詳細は小機能の該当する項目を参照。 (4)例外条件及び制約条件 同時に存在できる最大イベント数は、システム全体で16である。 イベントはタスクを指定して受信させることができないため、複数のタ スクが同時にイベントを受信することはできない。 イベントの発生をおこなうプログラムであっても、割り込みハンドラか ら使用することはできない。 詳細は小機能の該当する項目を参照。 (5)特記事項 なし (6)機能ブロックの構成及び関連 イベント管理機能は、小機能であるイベントキュー管理機能と、小機能 である入力機器管理機能から構成される。 ┌──────────────────────────┐ │イベント管理機能 │ │ ┌────────┐ ┌────────┐ │ │ │イベントキュー │イベント│入力機器管理機能│ │ │ │ 管理機能│←───│ │ │ │ └────────┘ └────────┘ │ └──────────────────────────┘ 図 イベント管理機能の機能ブロック相互関係 入力機器管理機能は、イベントキュー管理機能にイベントをわたす。 付録1.1.1 イベントキュー管理機能 (1)機能説明 イベント管理機能のうち、イベントの発生・取得・消去に関する機能を 提供する。 以下の機能がシステムコールの形で提供される。 (A)イベント発生機能 入力データで指定された「イベント」を、イベントキューに格納する。 入力データで指定された「イベント」が「NULLイベント」または「キー リピートイベント」である場合には、それらをイベントキュー管理機能 内部に記憶する。 (B)イベント取得機能 イベントキューから「イベント」を取得し、出力データとする。このと き、入力データで指定された「タイムアウト」の時間が経過しても「イ ベント」が取得できない場合は、「イベント」を取得せずに処理を中断 する。「イベント」が取得できた場合で、入力データで指定された「ク リア指定」が有効な場合には、取得した「イベント」をイベントキュー から削除する。 (C)イベント消去機能 入力データで指定された「クリア方法」にもとづき、イベントキューか らイベントを削除する。 (2)入力データ イベントキュー管理機能には、アプリケーションから以下の入力データ が渡される。 (A)イベント発生機能の場合 W err = ge_put_evt(EVENT *evt); typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬───────────────┐ │ 名称 │ 意味 │ ├────┼───────────────┤ │イベント│発生させるイベントへのポインタ│ └────┴───────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼──────────┤ │ GE_NULL │0 │ ヌルイベント │ ├─────┼─┼──────────┤ │GE_BUTDWN │1 │ プレスイベント │ ├─────┼─┼──────────┤ │ GE_BUTUP │2 │ リリースイベント │ ├─────┼─┼──────────┤ │GE_KEYDWN │3 │ キーダウンイベント │ ├─────┼─┼──────────┤ │ GE_KEYUP │4 │ キーアップイベント │ ├─────┼─┼──────────┤ │GE_AUTKEY │5 │キーリピートイベント│ └─────┴─┴──────────┘ (B)イベント取得機能の場合 W err = ge_get_evt(EVENT *evt, W tmout, W clr); ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │タイムアウト│ tmout │ W │ ├──────┼─────┼──┤ │ クリア指定 │ clr │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │タイムアウト│ イベントの発生を待つ時間 │ ├──────┼──────────────┤ │ クリア指定 │取り出したイベントを削除する│ └──────┴──────────────┘ (C)イベント消去機能の場合 W err = ge_clr_evt(W all); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │クリア方法│ all │ W │ └─────┴─────┴──┘ ┌─────┬─────────────────────┐ │ 名称 │ 意味 │ ├─────┼─────────────────────┤ │クリア方法│1で全イベントの削除、0で先頭イベントの削除│ └─────┴─────────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 (A)イベント発生機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌────┬───────┬─────┬─────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼───────┼─────┼─────────────┤ │ ER_OK │ 正常終了 │ 0 │ − │ ├────┼───────┼─────┼─────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ evtがNULL │ ├────┼───────┼─────┼─────────────┤ │ ER_PAR │不正パラメータ│0xfffe0000│ evt->typeが不正 │ ├────┼───────┼─────┼─────────────┤ │ER_LIMIT│ キューあふれ │0xffdc0000│イベントキューに空きがない│ └────┴───────┴─────┴─────────────┘ (B)イベント取得機能の場合 typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌──────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼───┤ │エラーコード│ err │ W │ ├──────┼─────┼───┤ │ イベント │ evt │EVENT*│ └──────┴─────┴───┘ エラーコードの内容: ┌────┬──────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼──────┼─────┼───────────────────────┤ │ ER_OK │ 正常終了 │ 0 │ − │ ├────┼──────┼─────┼───────────────────────┤ │ ER_ADR │不正アドレス│0xffff0000│ evtがNULL │ ├────┼──────┼─────┼───────────────────────┤ │ER_NONE │ データ無し │0xffe80000│ 受信タイムアウト │ ├────┼──────┼─────┼───────────────────────┤ │ER_BUSY │ 使用中 │0xffd50000│複数のタスクが同時にイベントを受信しようとした│ └────┴──────┴─────┴───────────────────────┘ ┌────┬────────┐ │ 名称 │ 意味 │ ├────┼────────┤ │イベント│取得したイベント│ └────┴────────┘ (C)イベント消去機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─┬─────────┐ │ 名称 │ 意味 │値│具体的なエラー内容│ ├───┼────┼─┼─────────┤ │ER_OK │正常終了│0 │ − │ └───┴────┴─┴─────────┘ (4)例外条件及び制約条件 イベントキューには、最大で16のイベントを蓄積することができる。 イベントはタスクを指定して受信させることができないため、複数のタ スクが同時にイベントを受信することはできない。 イベントの発生をおこなうプログラムであっても、割り込みハンドラか ら使用することはできない。 (5)特記事項 なし 付録1.1.2 入力機器管理機能 (1)機能説明 イベント管理機能のうち、入力機器からの入力を加工し、イベントを発 生させる機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)イベント生成機能 入力データで指定された「生イベント」を、あらかじめ設定されている 「PD属性」「キー属性」「キーテーブル」にもとづいて加工し、「イベ ントキュー管理機能」を呼び出すことでイベントを発生させる。 (B)PD属性設定機能 入力データで指定された「PD属性」を、入力機器管理機能内に設定する。 (C)PD属性取得機能 入力機器管理機能内に設定されている「PD属性」を取りだし、出力デー タとする。 (D)キー属性設定機能 入力データで指定された「キー属性」を、入力機器管理機能内に設定す る。 (E)キー属性取得機能 入力機器管理機能内に設定されている「キー属性」を取りだし、出力デ ータとする。 (F)キーテーブル設定機能 入力データで指定された「キーテーブル」を、入力機器管理機能内に設 定する。 (G)キーテーブル取得機能 入力機器管理機能内に設定されている「キーテーブル」を取りだし、出 力データとする。 (2)入力データ 入力機器管理機能には、アプリケーションから以下の入力データが渡さ れる。 (A)イベント生成機能の場合 W err = ge_gen_evt(RAWEVT *evt); typedef struct { W type; W x, y; } RAWEVT; ┌──────┬─────┬────┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼────┤ │生イベント§│ evt │RAWEVT* │ └──────┴─────┴────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌─────┬───────────────────┐ │ 名称 │ 意味 │ ├─────┼───────────────────┤ │生イベント│加工・発生させる生イベントへのポインタ│ └─────┴───────────────────┘ RAWEVT構造体の内容: ┌────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────────┼─────┼──┤ │生イベントタイプ│ type │ W │ ├────────┼─────┼──┤ │ パラメータX │ x │ W │ ├────────┼─────┼──┤ │ パラメータY │ y │ W │ └────────┴─────┴──┘ RAWEVT構造体のtypeに指定できる値: ┌─────┬─┬──────┬─────────┬─────────┐ │ 名称 │値│具体的な内容│パラメータXの意味 │パラメータYの意味 │ ├─────┼─┼──────┼─────────┼─────────┤ │ GE_RMOVE │0 │ 相対移動 │ 横方向の移動量 │ 縦方向の移動量 │ ├─────┼─┼──────┼─────────┼─────────┤ │ GE_AMOVE │1 │ 絶対移動 │ 横方向の座標 │ 縦方向の座標 │ ├─────┼─┼──────┼─────────┼─────────┤ │ GE_PDBUT │2 │ ボタン操作 │ ボタン状態 │ (未使用) │ ├─────┼─┼──────┼─────────┼─────────┤ │ GE_KEYON │3 │ キー押下 │ キー番号 │ (未使用) │ ├─────┼─┼──────┼─────────┼─────────┤ │GE_KEYOFF │4 │ キー解放 │ キー番号 │ (未使用) │ └─────┴─┴──────┴─────────┴─────────┘ (B)PD属性設定機能の場合 W err = ge_set_pda(PD_ATTR *attr); typedef struct { W sense_x, sense_y; } PD_ATTR; ┌────┬─────┬────┐ │ 名称 │ニモニック│ 型名 │ ├────┼─────┼────┤ │PD属性§│ attr │PD_ATTR*│ └────┴─────┴────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───┬──────────┐ │ 名称 │ 意味 │ ├───┼──────────┤ │PD属性│PDイベントの加工設定│ └───┴──────────┘ PD_ATTR構造体の内容: ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │横方向感度│ sense_x │ W │ ├─────┼─────┼──┤ │縦方向感度│ sense_y │ W │ └─────┴─────┴──┘ (C)PD属性取得機能の場合 W err = ge_get_pda(PD_ATTR *attr); typedef struct { W sense_x, sense_y; } PD_ATTR; ┌────┬─────┬────┐ │ 名称 │ニモニック│ 型名 │ ├────┼─────┼────┤ │PD属性§│ attr │PD_ATTR*│ └────┴─────┴────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───┬──────────┐ │ 名称 │ 意味 │ ├───┼──────────┤ │PD属性│PDイベントの加工設定│ └───┴──────────┘ PD_ATTR構造体の内容: ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │横方向感度│ sense_x │ W │ ├─────┼─────┼──┤ │縦方向感度│ sense_y │ W │ └─────┴─────┴──┘ (D)キー属性設定機能の場合 W err = ge_set_kya(KEY_ATTR *attr); typedef struct { W rep_delay, rep_int; } KEY_ATTR; ┌─────┬─────┬─────┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼─────┤ │キー属性§│ attr │KEY_ATTR* │ └─────┴─────┴─────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬───────────┐ │ 名称 │ 意味 │ ├────┼───────────┤ │キー属性│キーイベントの加工設定│ └────┴───────────┘ KEY_ATTR構造体の内容: ┌──────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────────┼─────┼──┤ │キーリピート開始時間│rep_delay │ W │ ├──────────┼─────┼──┤ │ キーリピート間隔 │ rep_int │ W │ └──────────┴─────┴──┘ (E)キー属性取得機能の場合 W err = ge_get_kya(KEY_ATTR *attr); typedef struct { W rep_delay, rep_int; } KEY_ATTR; ┌─────┬─────┬─────┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼─────┤ │キー属性§│ attr │KEY_ATTR* │ └─────┴─────┴─────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬───────────┐ │ 名称 │ 意味 │ ├────┼───────────┤ │キー属性│キーイベントの加工設定│ └────┴───────────┘ KEY_ATTR構造体の内容: ┌──────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────────┼─────┼──┤ │キーリピート開始時間│rep_delay │ W │ ├──────────┼─────┼──┤ │ キーリピート間隔 │ rep_int │ W │ └──────────┴─────┴──┘ (F)キーテーブル設定機能の場合 W err = ge_set_ktb(W size, TC *table); ┌─────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────────┼─────┼──┤ │キーテーブルサイズ│ size │ W │ ├─────────┼─────┼──┤ │ キーテーブル │ table │TC* │ └─────────┴─────┴──┘ ┌─────────┬─────────────────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────────────────┤ │キーテーブルサイズ│ キーテーブルのサイズ(TC単位) │ ├─────────┼─────────────────────────────┤ │ キーテーブル │キーの番号と、そのキーを押した時に入力される文字との対応表│ └─────────┴─────────────────────────────┘ (G)キーテーブル取得機能の場合 W cnt = ge_get_ktb(W size, TC *table); ┌─────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────────┼─────┼──┤ │キーテーブルサイズ│ size │ W │ └─────────┴─────┴──┘ ┌─────────┬──────────────┐ │ 名称 │ 意味 │ ├─────────┼──────────────┤ │キーテーブルサイズ│キーテーブルのサイズ(TC単位)│ └─────────┴──────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 (A)イベント生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌────┬───────┬─────┬─────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼───────┼─────┼─────────────┤l│ ER_OK │ 正常終了 │ 0 │ − │ ├────┼───────┼─────┼─────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ evtがNULL │ ├────┼───────┼─────┼─────────────┤ │ ER_PAR │不正パラメータ│0xfffe0000│ evt->typeが不正 │ ├────┼───────┼─────┼─────────────┤ │ER_LIMIT│ キューあふれ │0xffdc0000│イベントキューに空きがない│ └────┴───────┴─────┴─────────────┘ (B)PD属性設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ attrがNULL │ └───┴──────┴─────┴─────────┘ (C)PD属性取得機能の場合 ┌──────┬─────┬────┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼────┤ │エラーコード│ err │ W │ ├──────┼─────┼────┤ │ PD属性 │ attr │PD_ATTR*│ └──────┴─────┴────┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ attrがNULL │ └───┴──────┴─────┴─────────┘ ┌───┬──────────┐ │ 名称 │ 意味 │ ├───┼──────────┤ │PD属性│PDイベントの加工設定│ └───┴──────────┘ (D)キー属性設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ attrがNULL │ └───┴──────┴─────┴─────────┘ (E)キー属性取得機能の場合 ┌──────┬─────┬─────┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼─────┤ │エラーコード│ err │ W │ ├──────┼─────┼─────┤ │ キー属性 │ attr │KEY_ATTR* │ └──────┴─────┴─────┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ attrがNULL │ └───┴──────┴─────┴─────────┘ ┌────┬───────────┐ │ 名称 │ 意味 │ ├────┼───────────┤ │キー属性│キーイベントの加工設定│ └────┴───────────┘ (F)キーテーブル設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ tableがNULL │ └───┴──────┴─────┴─────────┘ (G)キーテーブル取得機能の場合 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │キーテーブル数│ cnt │ W │ ├───────┼─────┼──┤ │ エラーコード │ cnt │ W │ ├───────┼─────┼──┤ │ キーテーブル │ table │TC* │ └───────┴─────┴──┘ ※cntは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはキーテーブル数を示す。 ┌──────┬─────────────────────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────────────────────┤ │キーテーブル│キーの番号と、そのキーを押した時に入力される文字との対応表│ └──────┴─────────────────────────────┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ tableがNULL │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 イベントキューには、最大で16のイベントを蓄積することができる。 イベントの発生をおこなうプログラムであっても、割り込みハンドラか ら使用することはできない。 (5)特記事項 なし ━ 付録1.2 パネル管理機能 ━━━━━━━━━━━━━━━━━━━━━━━ (1)機能説明 GUIミドルウェア機能のうち、 画面への描画及びパネル・シーンの管理 をおこなう機能を提供する。 (A)描画環境管理機能 複数のタスクからの描画をサポートするための仮想的な画面である「描 画環境」の管理をおこなう機能。 (B)直線描画機能 「描画環境」に直線を描画する機能。また、指定された点が直線と重な るかどうかを調べる機能。 (C)長方形描画機能 「描画環境」に長方形・角丸長方形を描画する機能。また、指定された 点が長方形・角丸長方形と重なるかどうかを調べる機能。 (D)円描画機能 「描画環境」に円・楕円を描画する機能。また、指定された点が円・楕 円と重なるかどうかを調べる機能。 (E)文字描画機能 「描画環境」に文字列を描画する機能。また、文字列の大きさを取得す る機能。 (F)ビットマップ描画機能 「描画環境」に、指定されたビットマップを描画する機能。 (G)パネル表示機能 シーン・パネルを生成・設定・取得・表示・動作させる機能。 (H)パネル消去機能 シーン・パネルを消去・削除する機能。 (2)入力データ パネル管理機能には、アプリケーションから以下の入力データが渡され る。 typedef struct { H x, y; } PNT; typedef struct { H h, v; } SIZE; typedef union { struct { H left, top; H right, bottom; } c; { PNT lefttop; PNT rightbot; } p; } RECT; typedef struct { PNT off; RECT vr; W nfra; RECT fra[0]; } GENVPAR; typedef struct { W type; H h, v; COLOR fgcol, bgcol; UB *mask; } PAT; typedef struct { UW planes; UH pixbits; UH rowbytes; RECT bounds; UB *baseaddr[PLANES]; } BMP; typedef struct { W type; TC start; TC end; SIZE size; UB data[0]; } FONT; typedef struct { W type; RECT r; W val; TC *str; } PARTS; typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────────┬─────┬────┐ │ 名称 │ニモニック│ 型名 │ ├─────────┼─────┼────┤ │描画環境生成情報§│ par │GENVPAR*│ ├─────────┼─────┼────┤ │ 描画環境ID │ gid │ W │ ├─────────┼─────┼────┤ │ 座標§ │ p │ PNT* │ ├─────────┼─────┼────┤ │ 長方形領域§ │ r │ RECT* │ ├─────────┼─────┼────┤ │ 長方形数 │ cnt │ W │ ├─────────┼─────┼────┤ │パターン生成情報§│ pat │ PAT* │ ├─────────┼─────┼────┤ │ パターンID │ pid │ W │ ├─────────┼─────┼────┤ │ 座標§ │ s │ PNT │ ├─────────┼─────┼────┤ │ 座標§ │ e │ PNT │ ├─────────┼─────┼────┤ │ 線属性 │ lattr │ UW │ ├─────────┼─────┼────┤ │ 描画モード │ mode │ W │ ├─────────┼─────┼────┤ │ 座標§ │ pt │ PNT │ ├─────────┼─────┼────┤ │ 線太さ │ width │ W │ ├─────────┼─────┼────┤ │ 長方形領域§ │ r │ RECT │ ├─────────┼─────┼────┤ │ 水平角丸め直径 │ rh │ W │ ├─────────┼─────┼────┤ │ 垂直角丸め直径 │ rv │ W │ ├─────────┼─────┼────┤ │ フォント§ │ font │ FONT* │ ├─────────┼─────┼────┤ │ 座標§ │ p │ PNT │ ├─────────┼─────┼────┤ │ 文字列 │ str │ TC* │ ├─────────┼─────┼────┤ │ 文字列長 │ len │ W │ ├─────────┼─────┼────┤ │ ビットマップ§ │ bmp │ BMP* │ ├─────────┼─────┼────┤ │ パーツ生成情報§ │ parts │ PARTS* │ ├─────────┼─────┼────┤ │ パーツ数 │ nitem │ W │ ├─────────┼─────┼────┤ │ シーンID │ wid │ W │ ├─────────┼─────┼────┤ │ 項目番号 │ item │ W │ ├─────────┼─────┼────┤ │ 先頭シーンID │ wids │ W │ ├─────────┼─────┼────┤ │ 末尾シーンID │ wide │ W │ ├─────────┼─────┼────┤ │ イベント§ │ evt │ EVENT* │ ├─────────┼─────┼────┤ │ シーンID │ wid │ W* │ ├─────────┼─────┼────┤ │ 項目番号 │ item │ W* │ ├─────────┼─────┼────┤ │ タイムアウト │ tmout │ W │ ├─────────┼─────┼────┤ │ パネルID │ wid │ W │ ├─────────┼─────┼────┤ │ 先頭パネルID │ wids │ W │ ├─────────┼─────┼────┤ │ 末尾パネルID │ wide │ W │ ├─────────┼─────┼────┤ │ パネルID │ wid │ W* │ └─────────┴─────┴────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ※長方形領域は、システムコールによって構造体の場合とポインタの場 合とがあるため、両方を記述している。 ┌────────┬───────────────────────────────────────┐ │ 名称 │ 意味 │ ├────────┼───────────────────────────────────────┤ │描画環境生成情報│ 描画環境を生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ 描画環境ID │ 描画環境を識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 座標 │ 水平位置・垂直位置の組み合わせによる、位置の指定 │ ├────────┼───────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせ│ │ │ │ │ │による、領域の指定 │ ├────────┼───────────────────────────────────────┤ │ 長方形数 │ 前置長方形配列の数 │ ├────────┼───────────────────────────────────────┤ │パターン生成情報│ パターンを生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ パターンID │ パターンを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├────────┼───────────────────────────────────────┤ │ 描画モード │ すでに描画されている図形との演算指定 │ ├────────┼───────────────────────────────────────┤ │ 水平角丸め直径 │ 角丸長方形の角丸め部分の水平直径 │ ├────────┼───────────────────────────────────────┤ │ 垂直角丸め直径 │ 角丸長方形の角丸め部分の垂直直径 │ ├────────┼───────────────────────────────────────┤ │ 線太さ │ 線の太さの指定 │ ├────────┼───────────────────────────────────────┤ │ フォント │ 文字のビットマップを文字コード順に並べたもの │ ├────────┼───────────────────────────────────────┤ │ 文字列 │ 描画する文字コードの配列 │ ├────────┼───────────────────────────────────────┤ │ 文字列長 │ 文字コードの配列の長さ │ ├────────┼───────────────────────────────────────┤ │ ビットマップ │ 点の集まりによる図形の表現 │ ├────────┼───────────────────────────────────────┤ │ パーツ生成情報 │ パーツを生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ パーツ数 │ シーン・パネルに含まれるパーツの数 │ ├────────┼───────────────────────────────────────┤ │ シーンID │ シーンを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 項目番号 │ シーン・パネルに登録されたパーツの番号 │ ├────────┼───────────────────────────────────────┤ │ 先頭シーンID │ シーンID範囲の、先頭ID │ ├────────┼───────────────────────────────────────┤ │ 末尾シーンID │ シーンID範囲の、末尾ID │ ├────────┼───────────────────────────────────────┤ │ イベント │ PD・キーボードからの入力データ │ ├────────┼───────────────────────────────────────┤ │ タイムアウト │ イベントを待つまでの時間指定 │ ├────────┼───────────────────────────────────────┤ │ パネルID │ パネルを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 先頭パネルID │ パネルID範囲の、先頭ID │ ├────────┼───────────────────────────────────────┤ │ 末尾パネルID │ パネルID範囲の、末尾ID │ └────────┴───────────────────────────────────────┘ PNT構造体の内容: ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │水平座標│ x │ H │ ├────┼─────┼──┤ │垂直座標│ y │ H │ └────┴─────┴──┘ SIZE構造体の内容: ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │水平サイズ│ h │ H │ ├─────┼─────┼──┤ │垂直サイズ│ v │ H │ └─────┴─────┴──┘ RECT構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │左辺水平座標│ left │ H │ ├──────┼─────┼──┤ │上辺垂直座標│ top │ H │ ├──────┼─────┼──┤ │右辺水平座標│ right │ H │ ├──────┼─────┼──┤ │下辺垂直座標│ bottom │ H │ ├──────┼─────┼──┤ │ 左上座標 │ lefttop │PNT │ ├──────┼─────┼──┤ │ 右下座標 │ rightbot │PNT │ └──────┴─────┴──┘ GENVPAR構造体の内容: ┌───────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├───────┼─────┼───┤ │描画オフセット│ off │ PNT │ ├───────┼─────┼───┤ │ 表示長方形 │ vr │ RECT │ ├───────┼─────┼───┤ │ 前置長方形数 │ nfra │ W │ ├───────┼─────┼───┤ │前置長方形配列│ fra │RECT[]│ └───────┴─────┴───┘ PAT構造体の内容: ┌──────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼───┤ │パターン種別│ type │ W │ ├──────┼─────┼───┤ │ 幅 │ h │ H │ ├──────┼─────┼───┤ │ 高さ │ v │ H │ ├──────┼─────┼───┤ │ 前景色 │ fgcol │COLOR │ ├──────┼─────┼───┤ │ 背景色 │ bgcol │COLOR │ ├──────┼─────┼───┤ │ マスク │ mask │ UB* │ └──────┴─────┴───┘ ※typeは0とすること。 ※maskの内容は、1となっているビットは前景色を、0となっているビッ トは背景色を意味する。 modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ FONT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ フォント種別 │ type │ W │ ├───────┼─────┼──┤ │先頭文字コード│ start │ TC │ ├───────┼─────┼──┤ │末尾文字コード│ end │ TC │ ├───────┼─────┼──┤ │フォントサイズ│ size │SIZE│ ├───────┼─────┼──┤ │フォントデータ│ data │UB[]│ └───────┴─────┴──┘ ※typeは0とすること。 BMP構造体の内容: ┌──────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────────┼─────┼───┤ │ プレーン数 │ planes │ UW │ ├──────────┼─────┼───┤ │ ピクセルビット数 │ pixbits │ UH │ ├──────────┼─────┼───┤ │ 水平バイト数 │ rowbytes │ UH │ ├──────────┼─────┼───┤ │ ビットマップ領域 │ bounds │ RECT │ ├──────────┼─────┼───┤ │ビットマップアドレス│ baseaddr │UB*[] │ └──────────┴─────┴───┘ ※planesは1、pixbitsは0x0101とすること。 PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ PARTS構造体のtypeに指定できる値: ┌────┬───┬─────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├────┼───┼─────────┤ │GC_NULL │ 0 │ NULLパーツ │ ├────┼───┼─────────┤ │GC_TEXT │0x100 │ 文字列パーツ │ ├────┼───┼─────────┤ │GC_RECT │0x101 │ 長方形パーツ │ ├────┼───┼─────────┤ │GC_BMAP │0x102 │ビットマップパーツ│ └────┴───┴─────────┘ ※ほかに、パーツ管理プログラム・文字入力管理プログラムのパーツタ イプも指定することができる。 EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ エラーコード │ err │ W │ ├───────┼─────┼──┤ │ 描画環境ID │ gid │ W │ ├───────┼─────┼──┤ │ 長方形数 │ cnt │ W │ ├───────┼─────┼──┤ │ パターンID │ pid │ W │ ├───────┼─────┼──┤ │ピッキング結果│ sts │ W │ ├───────┼─────┼──┤ │ パネルID │ wid │ W │ ├───────┼─────┼──┤ │ シーンID │ wid │ W │ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │ 動作結果 │ sts │ W │ └───────┴─────┴──┘ エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPT│ 未サポート │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ ├────┼─────────┤ │ER_NONE │ データ無し │ ├────┼─────────┤ │ER_MINTR│ 処理中断 │ └────┴─────────┘ (4)例外条件及び制約条件 描画環境の最大数は、システム全体で100である。 前置長方形配列数は、描画環境あたり、最大で16である。 パターンの最大数は、システム全体で100である。 パターンの最大の大きさは、幅が1〜8、高さが1〜16である。 フォントは設定後も参照されるため、解放してはならない。 パネル・シーンの最大数は、システム全体でシーンとパネルを合わせて 64である。 パネル・シーンに登録できるパーツの数は、パネル・シーン毎に最大64 である。 同時に表示できるパネルの数は、最大で16である。 パネル・シーンの定義データは登録後も参照されるので、解放してはな らない。 同時にイベントを待つタスクの数は、最大で64である。 (5)特記事項 なし。 (6)機能ブロックの構成及び関連 「パネル管理機能」は、描画環境の管理をおこなう小機能「描画環境管 理機能」、描画環境への描画をおこなう小機能「直線描画機能」「長方 形描画機能」 「円描画機能」 「文字描画機能」「ビットマップ描画機 能」、パネル・シーンの管理をおこなう小機能「パネル表示機能」「パ ネル消去機能」から構成される。 ┌────────────────────────────────────────┐ │パネル管理機能 │ │ │ │┌──────────────────────────────────────┐│ ││ 描画環境管理機能 ││ │└──────────────────────────────────────┘│ │┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐│ ││直線 ││長方形 ││円 ││文字 ││ビットマップ││ ││ 描画機能││ 描画機能││ 描画機能││ 描画機能││ 描画機能││ │└──────┘└──────┘└──────┘└──────┘└──────┘│ │ ↑ ↑ ↑ ↑ ↑ │ │ ├───────┴───────┴───────┴───────┘ │ │ │ │ │┌───────────┐┌───────────┐ │ ││ パネル表示機能 ││ パネル消去機能 │ │ │└───────────┘└───────────┘ │ └────────────────────────────────────────┘ 図. パネル管理機能の機能ブロック相互関係 描画環境管理機能・直線描画機能・長方形描画機能・円描画機能・文字 描画機能・ビットマップ描画機能は、直接、他の小機能を呼び出してデ ータのやり取りをおこなうことはない。しかし、それぞれの小機能は、 描画環境の管理に関する情報を共有している。 パネル表示機能は、直線描画機能・長方形描画機能・円描画機能・文字 描画機能・ビットマップ描画機能を使用する。 パネル消去機能は、直接、他の小機能を呼び出してデータのやり取りを おこなうことはない。しかし、パネル表示機能とパネル消去機能は、パ ネルの管理に関する情報を共有している。 付録1.2.1 描画環境管理機能 (1)機能説明 パネル管理機能のうち、描画環境の生成・削除・設定・取得をおこなう 機能を提供する。また、パターンの生成・削除をおこなう機能を提供す る。 以下の機能がシステムコールの形で提供される。 (A)描画環境生成機能 入力データで指定された「描画環境生成情報」にもとづいて新たな描画 環境を生成する。生成した描画環境の「描画環境ID」を、出力データと して返す。 (B)描画環境削除機能 入力データで指定された「描画環境ID」を削除する。 (C)描画オフセット設定機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「描画オフセット」を設定する。 (D)描画オフセット取得機能 入力データで指定された「描画環境ID」の描画オフセットを、入力デー タで指定された「描画オフセット」の領域に格納する。 (E)表示長方形設定機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「表示長方形」を設定する。 (F)表示長方形取得機能 入力データで指定された「描画環境ID」の表示長方形を、入力データで 指定された「表示長方形」の領域に格納する。 (G)前置長方形配列設定機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「前置長方形配列」を設定する。 (H)前置長方形配列取得機能 入力データで指定された「描画環境ID」の前置長方形配列を、入力デー タで指定された「前置長方形配列」の領域に格納する。 (I)パターン生成機能 入力データで指定された「パターン生成情報」にもとづいて新たなパタ ーンを生成する。生成したパターンの「パターンID」を、出力データと して返す。 (J)パターン削除機能 入力データで指定された「パターンID」を削除する。 (2)入力データ 描画環境管理機能には、アプリケーションから以下の入力データが渡さ れる。 (A)描画環境生成機能の場合 W gid = gp_cre_env(GENVPAR *par); typedef struct { PNT off; RECT vr; W nfra; RECT fra[0]; } GENVPAR; ┌─────────┬─────┬────┐ │ 名称 │ニモニック│ 型名 │ ├─────────┼─────┼────┤ │描画環境生成情報§│ par │GENVPAR*│ └─────────┴─────┴────┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────────┬──────────────┐ │ 名称 │ 意味 │ ├────────┼──────────────┤ │描画環境生成情報│描画環境を生成するための情報│ └────────┴──────────────┘ GENVPAR構造体の内容: ┌───────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├───────┼─────┼───┤ │描画オフセット│ off │ PNT │ ├───────┼─────┼───┤ │ 表示長方形 │ vr │ RECT │ ├───────┼─────┼───┤ │ 前置長方形数 │ nfra │ W │ ├───────┼─────┼───┤ │前置長方形配列│ fra │RECT[]│ └───────┴─────┴───┘ (B)描画環境削除機能の場合 W err = gp_del_env(W gid); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ └─────┴─────┴──┘ ┌─────┬─────────────┐ │ 名称 │ 意味 │ ├─────┼─────────────┤ │描画環境ID│描画環境を識別するためのID│ └─────┴─────────────┘ (C)描画オフセット設定機能の場合 W err = gp_set_off(W gid, PNT *p); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │ 座標 │ p │PNT*│ └─────┴─────┴──┘ ┌─────┬────────────────────────┐ │ 名称 │ 意味 │ ├─────┼────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ └─────┴────────────────────────┘ (D)描画オフセット取得機能の場合 W err = gp_get_off(W gid, PNT *p); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │ 座標 │ p │PNT*│ └─────┴─────┴──┘ ┌─────┬────────────────────────┐ │ 名称 │ 意味 │ ├─────┼────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ └─────┴────────────────────────┘ (E)表示長方形設定機能の場合 W err = gp_set_vis(W gid, RECT *r); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │描画環境ID│ gid │ W │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ └─────┴──────────────────────────────────────────┘ (F)表示長方形取得機能の場合 W err = gp_get_vis(W gid, RECT *r); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │描画環境ID│ gid │ W │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ └─────┴──────────────────────────────────────────┘ (G)前置長方形配列設定機能の場合 W err = gp_set_fra(W gid, RECT *r, W cnt); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │描画環境ID│ gid │ W │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ ├─────┼─────┼───┤ │ 長方形数 │ cnt │ W │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ 長方形数 │ 前置長方形配列の数 │ └─────┴──────────────────────────────────────────┘ (H)前置長方形配列取得機能の場合 W cnt = gp_get_fra(W gid, RECT *r, W cnt); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │描画環境ID│ gid │ W │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ ├─────┼─────┼───┤ │ 長方形数 │ cnt │ W │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ 長方形数 │ 前置長方形配列の数 │ └─────┴──────────────────────────────────────────┘ (I)パターン生成機能の場合 W pid = gp_cre_pat(PAT *pat); typedef struct { W type; H h, v; COLOR fgcol, bgcol; UB *mask; } PAT; ┌─────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────────┼─────┼──┤ │パターン生成情報§│ pat │PAT*│ └─────────┴─────┴──┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────────┬──────────────┐ │ 名称 │ 意味 │ ├────────┼──────────────┤ │パターン生成情報│パターンを生成するための情報│ └────────┴──────────────┘ PAT構造体の内容: ┌──────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼───┤ │パターン種別│ type │ W │ ├──────┼─────┼───┤ │ 幅 │ h │ H │ ├──────┼─────┼───┤ │ 高さ │ v │ H │ ├──────┼─────┼───┤ │ 前景色 │ fgcol │COLOR │ ├──────┼─────┼───┤ │ 背景色 │ bgcol │COLOR │ ├──────┼─────┼───┤ │ マスク │ mask │ UB* │ └──────┴─────┴───┘ ※typeは0とすること。 ※maskの内容は、1となっているビットは前景色を、0となっているビッ トは背景色を意味する。 (J)パターン削除機能の場合 W err = gp_del_pat(W pid); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │パターンID│ pid │ W │ └─────┴─────┴──┘ ┌─────┬─────────────┐ │ 名称 │ 意味 │ ├─────┼─────────────┤ │パターンID│パターンを識別するためのID│ └─────┴─────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 (A)描画環境生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ gid │ W │ ├──────┼─────┼──┤ │ 描画環境ID │ gid │ W │ └──────┴─────┴──┘ ※gidは、値が負の場合にはエラーコードを示し、値が0または正の場合 には描画環境IDを示す。 エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ER_NOSPT│ 未サポート │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ └────┴─────────┘ (B)描画環境削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┐ │ 名称 │ 意味 │ ├───┼────┤ │ER_OK │正常終了│ ├───┼────┤ │ER_ID │ 不正ID │ └───┴────┘ (C)描画オフセット設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (D)描画オフセット取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (E)表示長方形設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (F)表示長方形取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (G)前置長方形配列設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌────┬──────┐ │ 名称 │ 意味 │ ├────┼──────┤ │ ER_OK │ 正常終了 │ ├────┼──────┤ │ ER_ADR │不正アドレス│ ├────┼──────┤ │ER_NOSPT│ 未サポート │ ├────┼──────┤ │ ER_ID │ 不正ID │ └────┴──────┘ (H)前置長方形配列取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cnt │ W │ ├──────┼─────┼──┤ │ 長方形数 │ cnt │ W │ └──────┴─────┴──┘ ※cntは、値が負の場合にはエラーコードを示し、値が0または正の場合 には長方形数を示す。 エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (I)パターン生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ pid │ W │ ├──────┼─────┼──┤ │ パターンID │ pid │ W │ └──────┴─────┴──┘ ※pidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパターンIDを示す。 エラーコードの内容: ┌────┬───────┐ │ 名称 │ 意味 │ ├────┼───────┤ │ ER_OK │ 正常終了 │ ├────┼───────┤ │ ER_ADR │ 不正アドレス │ ├────┼───────┤ │ ER_PAR │不正パラメータ│ ├────┼───────┤ │ER_NOSPT│ 未サポート │ ├────┼───────┤ │ ER_ID │ 不正ID │ └────┴───────┘ (J)パターン削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┐ │ 名称 │ 意味 │ ├───┼────┤ │ER_OK │正常終了│ ├───┼────┤ │ER_ID │ 不正ID │ └───┴────┘ (4)例外条件及び制約条件 描画環境の最大数は、システム全体で100である。 前置長方形配列数は、描画環境あたり、最大で16である。 パターンの最大数は、システム全体で100である。 パターンの最大の大きさは、幅が1〜8、高さが1〜16である。 (5)特記事項 なし。 付録1.2.2 直線描画機能 (1)機能説明 パネル管理機能のうち、描画環境に直線を描画する機能を提供する。ま た、指定された点が直線と重なっているかどうかを調べる機能を提供す る。 以下の機能がシステムコールの形で提供される。 (A)直線描画機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「座標」「パターンID」「描画モード」にしたがって、直線を描画する。 (B)直線ピッキング機能 入力データで指定された「座標」が、入力データで指定された「座標」 「線太さ」で示される直線上にあるかどうかを、出力データとして返す。 (2)入力データ 直線描画機能には、アプリケーションから以下の入力データが渡される。 (A)直線描画機能の場合 W err = gp_dra_lin(W gid, PNT s, PNT e, UW lattr, W pid, W mode); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │パターンID│ pid │ W │ ├─────┼─────┼──┤ │ 座標 │ s │PNT │ ├─────┼─────┼──┤ │ 座標 │ e │PNT │ ├─────┼─────┼──┤ │ 線属性 │ lattr │ UW │ ├─────┼─────┼──┤ │描画モード│ mode │ W │ └─────┴─────┴──┘ ┌─────┬────────────────────────┐ │ 名称 │ 意味 │ ├─────┼────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ ├─────┼────────────────────────┤ │パターンID│ パターンを識別するためのID │ ├─────┼────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├─────┼────────────────────────┤ │描画モード│ すでに描画されている図形との演算指定 │ └─────┴────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (B)直線ピッキング機能の場合 W sts = gp_pic_lin(PNT pt, PNT s, PNT e, W width); ┌───┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───┼─────┼──┤ │ 座標 │ s │PNT │ ├───┼─────┼──┤ │ 座標 │ e │PNT │ ├───┼─────┼──┤ │ 座標 │ pt │PNT │ ├───┼─────┼──┤ │線太さ│ width │ W │ └───┴─────┴──┘ ※長方形領域は、システムコールによって構造体の場合とポインタの場 合とがあるため、両方を記述している。 ┌────────┬───────────────────────────────────────┐ │ 名称 │ 意味 │ ├────────┼───────────────────────────────────────┤ │ 描画環境ID │ 描画環境を識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 座標 │ 水平位置・垂直位置の組み合わせによる、位置の指定 │ ├────────┼───────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせ│ │ │ │ │ │による、領域の指定 │ ├────────┼───────────────────────────────────────┤ │パターン生成情報│ パターンを生成するための情報 │ ├────────┼───────────────────────────────────────┤ │ パターンID │ パターンを識別するためのID │ ├────────┼───────────────────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├────────┼───────────────────────────────────────┤ │ 描画モード │ すでに描画されている図形との演算指定 │ ├────────┼───────────────────────────────────────┤ │ 水平角丸め直径 │ 角丸長方形の角丸め部分の水平直径 │ ├────────┼───────────────────────────────────────┤ │ 垂直角丸め直径 │ 角丸長方形の角丸め部分の垂直直径 │ ├────────┼───────────────────────────────────────┤ │ 線太さ │ 線の太さの指定 │ └────────┴───────────────────────────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(A)直線 描画機能」の場合、システムコールの副作用として画面への描画がおこ なわれる。 (A)直線描画機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (B)直線ピッキング機能の場合 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ エラーコード │ sts │ W │ ├───────┼─────┼──┤ │ピッキング結果│ sts │ W │ └───────┴─────┴──┘ ※stsは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはピッキング結果を示す。 エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ └───┴───────┘ (4)例外条件及び制約条件 なし (5)特記事項 なし。 付録1.2.3 長方形描画機能 (1)機能説明 パネル管理機能のうち、長方形・角丸長方形の描画をおこなう機能を提 供する。また、指定した点と長方形・角丸長方形が重なっているかどう かを調べる機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)長方形枠描画機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「長方形領域」「線属性」「パターンID」「描画モード」にしたがって、 長方形の枠を描画する。 (B)長方形塗りつぶし機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「長方形領域」「パターンID」「描画モード」にしたがって、長方形の 内部を描画する。 (C)長方形ピッキング機能 入力データで指定された「座標」が、入力データで指定された「長方形 領域」「線太さ」で示される長方形枠上にあるかどうかを、出力データ として返す。「線太さ」が0の場合は、 長方形内部にあるかどうかを返 す。 (D)角丸長方形枠描画機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「長方形領域」「水平角丸め指定」「垂直角丸め指定」「線属性」「パ ターンID」「描画モード」にしたがって、角丸長方形の枠を描画する。 (E)角丸長方形塗りつぶし機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「長方形領域」「水平角丸め指定」「垂直角丸め指定」「パターンID」 「描画モード」にしたがって、角丸長方形の内部を描画する。 (F)角丸長方形ピッキング機能 入力データで指定された「座標」が、入力データで指定された「長方形 領域」「水平角丸め指定」「垂直角丸め指定」「線太さ」で示される角 丸長方形枠上にあるかどうかを、出力データとして返す。「線太さ」が 0の場合は、角丸長方形内部にあるかどうかを返す。 (2)入力データ 長方形描画機能には、アプリケーションから以下の入力データが渡され る。 (A)長方形枠描画機能の場合 W err = gp_fra_rec(W gid, RECT r, UW lattr, W pid, W mode); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │パターンID│ pid │ W │ ├─────┼─────┼──┤ │ 線属性 │ lattr │ UW │ ├─────┼─────┼──┤ │描画モード│ mode │ W │ ├─────┼─────┼──┤ │長方形領域│ r │RECT│ └─────┴─────┴──┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │パターンID│ パターンを識別するためのID │ ├─────┼──────────────────────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├─────┼──────────────────────────────────────────┤ │描画モード│ すでに描画されている図形との演算指定 │ └─────┴──────────────────────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (B)長方形塗りつぶし機能の場合 W err = gp_fil_rec(W gid, RECT r, W pid, W mode); l┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │パターンID│ pid │ W │ ├─────┼─────┼──┤ │描画モード│ mode │ W │ ├─────┼─────┼──┤ │長方形領域│ r │RECT│ └─────┴─────┴──┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │パターンID│ パターンを識別するためのID │ ├─────┼──────────────────────────────────────────┤ │描画モード│ すでに描画されている図形との演算指定 │ └─────┴──────────────────────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (C)長方形ピッキング機能の場合 W sts = gp_pic_rec(PNT pt, RECT r, W width); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │ 座標 │ pt │PNT │ ├─────┼─────┼──┤ │ 線太さ │ width │ W │ ├─────┼─────┼──┤ │長方形領域│ r │RECT│ └─────┴─────┴──┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │ 座標 │ 水平位置・垂直位置の組み合わせによる、位置の指定 │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ 線太さ │ 線の太さの指定 │ └─────┴──────────────────────────────────────────┘ (D)角丸長方形枠描画機能の場合 W err = gp_fra_rrc(W gid, W rh, W rv, RECT r, UW lattr, W pid, W mode); ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ 描画環境ID │ gid │ W │ ├───────┼─────┼──┤ │ パターンID │ pid │ W │ ├───────┼─────┼──┤ │ 線属性 │ lattr │ UW │ ├───────┼─────┼──┤ │ 描画モード │ mode │ W │ ├───────┼─────┼──┤ │ 長方形領域 │ r │RECT│ ├───────┼─────┼──┤ │水平角丸め直径│ rh │ W │ ├───────┼─────┼──┤ │垂直角丸め直径│ rv │ W │ └───────┴─────┴──┘ ┌───────┬────────────────────────────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────────────────────────────┤ │ 描画環境ID │ 描画環境を識別するためのID │ ├───────┼────────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせに│ │ │ │ │ │よる、領域の指定 │ ├───────┼────────────────────────────────────────┤ │ パターンID │ パターンを識別するためのID │ ├───────┼────────────────────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├───────┼────────────────────────────────────────┤ │ 描画モード │ すでに描画されている図形との演算指定 │ ├───────┼────────────────────────────────────────┤ │水平角丸め直径│ 角丸長方形の角丸め部分の水平直径 │ ├───────┼────────────────────────────────────────┤ │垂直角丸め直径│ 角丸長方形の角丸め部分の垂直直径 │ └───────┴────────────────────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (E)角丸長方形塗りつぶし機能の場合 W err = gp_fil_rrc(W gid, W rh, W rv, RECT r, W pid, W mode); ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ 描画環境ID │ gid │ W │ ├───────┼─────┼──┤ │ パターンID │ pid │ W │ ├───────┼─────┼──┤ │ 描画モード │ mode │ W │ ├───────┼─────┼──┤ │ 長方形領域 │ r │RECT│ ├───────┼─────┼──┤ │水平角丸め直径│ rh │ W │ ├───────┼─────┼──┤ │垂直角丸め直径│ rv │ W │ └───────┴─────┴──┘ ┌───────┬────────────────────────────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────────────────────────────┤ │ 描画環境ID │ 描画環境を識別するためのID │ ├───────┼────────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせに│ │ │ │ │ │よる、領域の指定 │ ├───────┼────────────────────────────────────────┤ │ パターンID │ パターンを識別するためのID │ ├───────┼────────────────────────────────────────┤ │ 描画モード │ すでに描画されている図形との演算指定 │ ├───────┼────────────────────────────────────────┤ │水平角丸め直径│ 角丸長方形の角丸め部分の水平直径 │ ├───────┼────────────────────────────────────────┤ │垂直角丸め直径│ 角丸長方形の角丸め部分の垂直直径 │ └───────┴────────────────────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (F)角丸長方形ピッキング機能の場合 W sts = gp_pic_rrc(PNT pt, W rh, W rv, RECT r, W width); ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ 座標 │ pt │PNT │ ├───────┼─────┼──┤ │ 線太さ │ width │ W │ ├───────┼─────┼──┤ │ 長方形領域 │ r │RECT│ ├───────┼─────┼──┤ │水平角丸め直径│ rh │ W │ ├───────┼─────┼──┤ │垂直角丸め直径│ rv │ W │ └───────┴─────┴──┘ ┌───────┬────────────────────────────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────────────────────────────┤ │ 座標 │ 水平位置・垂直位置の組み合わせによる、位置の指定 │ ├───────┼────────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせに│ │ │ │ │ │よる、領域の指定 │ ├───────┼────────────────────────────────────────┤ │水平角丸め直径│ 角丸長方形の角丸め部分の水平直径 │ ├───────┼────────────────────────────────────────┤ │垂直角丸め直径│ 角丸長方形の角丸め部分の垂直直径 │ ├───────┼────────────────────────────────────────┤ │ 線太さ │ 線の太さの指定 │ └───────┴────────────────────────────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(A)長方 形行く描画機能」「(B)長方形塗りつぶし機能」「(D)角丸長方形枠描画 機能」「(E)角丸長方形塗りつぶし機能」の場合、システムコールの副 作用として画面への描画がおこなわれる。 (A)長方形枠描画機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (B)長方形塗りつぶし機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (C)長方形ピッキング機能の場合 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ エラーコード │ sts │ W │ ├───────┼─────┼──┤ │ピッキング結果│ sts │ W │ └───────┴─────┴──┘ ※stsは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはピッキング結果を示す。 エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ └───┴───────┘ (D)角丸長方形枠描画機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (E)角丸長方形塗りつぶし機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (F)角丸長方形ピッキング機能の場合 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ エラーコード │ sts │ W │ ├───────┼─────┼──┤ │ピッキング結果│ sts │ W │ └───────┴─────┴──┘ ※stsは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはピッキング結果を示す。 エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ └───┴───────┘ (4)例外条件及び制約条件 なし (5)特記事項 なし。 付録1.2.4 円描画機能 (1)機能説明 パネル管理機能のうち、円・楕円を描画環境に描画する機能を提供する。 また、指定された点と円・楕円が重なっているかどうかをチェックする 機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)楕円枠描画機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「長方形領域」「線属性」「パターンID」「描画モード」にしたがって、 楕円の枠を描画する。 (B)楕円塗りつぶし機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「長方形領域」「パターンID」「描画モード」にしたがって、楕円の内 部を描画する。 (C)楕円ピッキング機能 入力データで指定された「座標」が、入力データで指定された「長方形 領域」「線太さ」で示される楕円枠上にあるかどうかを、出力データと して返す。「線太さ」が0の場合は、楕円内部にあるかどうかを返す。 (2)入力データ 円描画機能には、アプリケーションから以下の入力データが渡される。 (A)楕円枠描画機能の場合 W err = gp_fra_ovl(W gid, RECT r, UW lattr, W pid, W mode); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │パターンID│ pid │ W │ ├─────┼─────┼──┤ │ 線属性 │ lattr │ UW │ ├─────┼─────┼──┤ │描画モード│ mode │ W │ ├─────┼─────┼──┤ │長方形領域│ r │RECT│ └─────┴─────┴──┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │パターンID│ パターンを識別するためのID │ ├─────┼──────────────────────────────────────────┤ │ 線属性 │ 線の太さの指定 │ ├─────┼──────────────────────────────────────────┤ │描画モード│ すでに描画されている図形との演算指定 │ └─────┴──────────────────────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (B)楕円塗りつぶし機能の場合 W err = gp_fil_ovl(W gid, RECT r, W pid, W mode); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │パターンID│ pid │ W │ ├─────┼─────┼──┤ │描画モード│ mode │ W │ ├─────┼─────┼──┤ │長方形領域│ r │RECT│ └─────┴─────┴──┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │パターンID│ パターンを識別するためのID │ ├─────┼──────────────────────────────────────────┤ │描画モード│ すでに描画されている図形との演算指定 │ └─────┴──────────────────────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (C)楕円ピッキング機能の場合 W sts = gp_pic_ovl(PNT pt, RECT r, W width); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │ 座標 │ pt │PNT │ ├─────┼─────┼──┤ │ 線太さ │ width │ W │ ├─────┼─────┼──┤ │長方形領域│ r │RECT│ └─────┴─────┴──┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │ 座標 │ 水平位置・垂直位置の組み合わせによる、位置の指定 │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ 線太さ │ 線の太さの指定 │ └─────┴──────────────────────────────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(A)楕円 枠描画機能」「(B)楕円塗りつぶし機能」の場合、システムコールの副 作用として画面への描画がおこなわれる。 (A)楕円枠描画機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (B)楕円塗りつぶし機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (C)楕円ピッキング機能の場合 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ エラーコード │ sts │ W │ ├───────┼─────┼──┤ │ピッキング結果│ sts │ W │ └───────┴─────┴──┘ ※stsは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはピッキング結果を示す。 エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ └───┴───────┘ (4)例外条件及び制約条件 なし。 (5)特記事項 なし。 付録1.2.5 文字描画機能 (1)機能説明 パネル管理機能のうち、描画環境に文字列を描画する機能を提供する。 また、文字列のサイズを取得する機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)フォント設定機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「フォント」を設定する。 (B)文字列描画機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「座標」「文字列」「文字列長」「パターンID」「描画モード」にもと づいて文字列を描画する。 (C)文字列サイズ取得機能 入力データで指定された「描画環境ID」 で、 入力データで指定された 「文字列」「文字列長」を描画した場合の長方形領域を、入力データで 指定された「長方形配列」の領域に格納する。 (2)入力データ 文字描画機能には、アプリケーションから以下の入力データが渡される。 (A)フォント設定機能の場合 W err = gp_set_fon(W gid, FONT *font); typedef struct { W type; TC start; TC end; SIZE size; UB data[0]; } FONT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │描画環境ID│ gid │ W │ ├─────┼─────┼───┤ │フォント§│ font │FONT* │ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌─────┬──────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────┤ │ フォント │文字のビットマップを文字コード順に並べたもの│ └─────┴──────────────────────┘ FONT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ フォント種別 │ type │ W │ ├───────┼─────┼──┤ │先頭文字コード│ start │ TC │ ├───────┼─────┼──┤ │末尾文字コード│ end │ TC │ ├───────┼─────┼──┤ │フォントサイズ│ size │SIZE│ ├───────┼─────┼──┤ │フォントデータ│ data │UB[]│ └───────┴─────┴──┘ ※typeは0とすること。 (B)文字列描画機能の場合 W err = gp_dra_stp(W gid, PNT p, TC *str, W len, W pid, W mode); ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │描画環境ID│ gid │ W │ ├─────┼─────┼──┤ │パターンID│ pid │ W │ ├─────┼─────┼──┤ │描画モード│ mode │ W │ ├─────┼─────┼──┤ │ 座標 │ p │PNT │ ├─────┼─────┼──┤ │ 文字列 │ str │TC* │ ├─────┼─────┼──┤ │ 文字列長 │ len │ W │ └─────┴─────┴──┘ ┌─────┬────────────────────────┐ │ 名称 │ 意味 │ ├─────┼────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ ├─────┼────────────────────────┤ │パターンID│ パターンを識別するためのID │ ├─────┼────────────────────────┤ │描画モード│ すでに描画されている図形との演算指定 │ ├─────┼────────────────────────┤ │ 文字列 │ 描画する文字コードの配列 │ ├─────┼────────────────────────┤ │ 文字列長 │ 文字コードの配列の長さ │ └─────┴────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ (C)文字列サイズ取得機能の場合 W err = gp_get_str(W gid, TC *str, W len, RECT *r); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │描画環境ID│ gid │ W │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ ├─────┼─────┼───┤ │ 文字列 │ str │ TC* │ ├─────┼─────┼───┤ │ 文字列長 │ len │ W │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │描画環境ID│ 描画環境を識別するためのID │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ 文字列 │ 描画する文字コードの配列 │ ├─────┼──────────────────────────────────────────┤ │ 文字列長 │ 文字コードの配列の長さ │ └─────┴──────────────────────────────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(B)文字 列描画機能」の場合、システムコールの副作用として画面への描画がお こなわれる。 (A)フォント設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_ADR│ 不正アドレス │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (B)文字列描画機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_ADR│ 不正アドレス │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (C)文字列サイズ取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (4)例外条件及び制約条件 フォントは設定後も参照されるため、解放してはならない。 (5)特記事項 なし。 付録1.2.6 ビットマップ描画機能 (1)機能説明 パネル管理機能のうち、描画環境にビットマップの描画をおこなう機能 を提供する。 以下の機能がシステムコールの形で提供される。 (A)ビットマップ描画機能 入力データで指定された「描画環境ID」 に、 入力データで指定された 「ビットマップ」「座標」「描画モード」にもとづいて、ビットマップ を描画する。 (2)入力データ ビットマップ描画機能には、アプリケーションから以下の入力データが 渡される。 (A)ビットマップ描画機能の場合 W err = gp_dra_bmp(W gid, BMP *bmp, PNT p, W mode); typedef struct { UW planes; UH pixbits; UH rowbytes; RECT bounds; UB *baseaddr[PLANES]; } BMP; ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ 描画環境ID │ gid │ W │ ├───────┼─────┼──┤ │ 描画モード │ mode │ W │ ├───────┼─────┼──┤ │ 座標 │ p │PNT │ ├───────┼─────┼──┤ │ビットマップ§│ bmp │BMP*│ └───────┴─────┴──┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌──────┬────────────────────────┐ │ 名称 │ 意味 │ ├──────┼────────────────────────┤ │ 描画環境ID │ 描画環境を識別するためのID │ ├──────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ ├──────┼────────────────────────┤ │ 描画モード │ すでに描画されている図形との演算指定 │ ├──────┼────────────────────────┤ │ビットマップ│ 点の集まりによる図形の表現 │ └──────┴────────────────────────┘ modeに指定できる値: ┌────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├────┼─┼──────────┤ │G_STORE │0 │ そのまま描画 │ ├────┼─┼──────────┤ │ G_XOR │1 │ XOR演算して描画 │ ├────┼─┼──────────┤ │ G_OR │2 │ OR演算して描画 │ ├────┼─┼──────────┤ │ G_AND │3 │ AND演算して描画 │ ├────┼─┼──────────┤ │ G_CPYN │4 │ 反転描画 │ ├────┼─┼──────────┤ │ G_XORN │5 │反転データでXOR描画 │ ├────┼─┼──────────┤ │ G_ORN │6 │ 反転データでOR描画 │ ├────┼─┼──────────┤ │ G_ANDN │7 │反転データでAND描画 │ └────┴─┴──────────┘ BMP構造体の内容: ┌──────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────────┼─────┼───┤ │ プレーン数 │ planes │ UW │ ├──────────┼─────┼───┤ │ ピクセルビット数 │ pixbits │ UH │ ├──────────┼─────┼───┤ │ 水平バイト数 │ rowbytes │ UH │ ├──────────┼─────┼───┤ │ ビットマップ領域 │ bounds │ RECT │ ├──────────┼─────┼───┤ │ビットマップアドレス│ baseaddr │UB*[] │ └──────────┴─────┴───┘ ※planesは1、pixbitsは0x0101とすること。 (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(A)ビッ トマップ描画機能」の場合、システムコールの副作用として画面への描 画がおこなわれる。 (A)ビットマップ描画機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (4)例外条件及び制約条件 なし。 (5)特記事項 なし。 付録1.2.7 パネル表示機能 (1)機能説明 パネル管理機能のうち、シーン・パネルの生成・表示・設定・取得をお こなう機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)シーン生成機能 入力データで指定された「シーン生成情報」にしたがって、シーンを生 成する。生成したシーンの「シーンID」を、出力データとして返す。 (B)シーン設定機能 入力データで指定された「シーンID」の「項目番号」で指定された項目 を、入力データで指定された「パーツ生成情報」のパーツで置き換える。 生成されたパーツのパーツIDが、出力データとして返る。 (C)シーン表示機能 今まで表示されていたシーンを非表示状態とし、入力データで指定され た「シーンID」を表示状態とする。 (D)シーン表示長方形設定機能 入力データで指定された「シーンID」の表示長方形を、入力データで指 定された「長方形領域」に変更する。 (E)シーンキー座標設定機能 入力データで指定された「シーンID」のキー座標を、入力データで指定 された「座標」に変更する。 (F)シーン動作機能 入力データで指定された「先頭シーンID」「末尾シーンID」の範囲のシ ーンに対するイベントを、「タイムアウト」の時間だけ受け付ける。イ ベントがシーンに登録されているパーツ上でおこなった場合には、パー ツの動作もおこなう。動作の対象となったシーンID・項目番号・イベン トが、入力データで指定された「シーンID」「項目番号」「イベント」 の領域に格納される。 (G)パネル生成機能 入力データで指定された「シーン生成情報」にしたがって、シーンを生 成する。生成したシーンの「シーンID」を、出力データとして返す。 (H)パネル設定機能 入力データで指定された「パネルID」の「項目番号」で指定された項目 を、入力データで指定された「パーツ生成情報」のパーツで置き換える。 生成されたパーツのパーツIDが、出力データとして返る。 (I)パネル表示機能 入力データで指定された「パネルID」を、最前面に表示する。 (J)パネル表示長方形設定機能 入力データで指定された「パネルID」の表示長方形を、入力データで指 定された「長方形領域」に変更する。 (K)パネルキー座標設定機能 入力データで指定された「パネルID」のキー座標を、入力データで指定 された「座標」に変更する。 (L)パネル動作機能 入力データで指定された「先頭パネルID」「末尾パネルID」の範囲のパ ネルに対するイベントを、「タイムアウト」の時間だけ受け付ける。イ ベントがパネルに登録されているパーツ上でおこなった場合には、パー ツの動作もおこなう。動作の対象となったパネルID・項目番号・イベン トが、入力データで指定された「パネルID」「項目番号」「イベント」 の領域に格納される。 (2)入力データ パネル表示機能には、アプリケーションから以下の入力データが渡され る。 (A)シーン生成機能の場合 W wid = gp_cre_scn(PARTS *parts, W nitem); typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ ├────────┼─────┼───┤ │ パーツ数 │ nitem │ W │ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬─────────────┐ │ 名称 │ 意味 │ ├───────┼─────────────┤ │パーツ生成情報│パーツを生成するための情報│ ├───────┼─────────────┤ │ パーツ数 │シーンに含まれるパーツの数│ └───────┴─────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ PARTS構造体のtypeに指定できる値: ┌────┬───┬─────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├────┼───┼─────────┤ │GC_NULL │ 0 │ NULLパーツ │ ├────┼───┼─────────┤ │GC_TEXT │0x100 │ 文字列パーツ │ ├────┼───┼─────────┤ │GC_RECT │0x101 │ 長方形パーツ │ ├────┼───┼─────────┤ │GC_BMAP │0x102 │ビットマップパーツ│ └────┴───┴─────────┘ ※ほかに、パーツ管理プログラム・文字入力管理プログラムのパーツタ イプも指定することができる。 (B)シーン設定機能の場合 W cid = gp_set_scn(W wid, W item, PARTS *parts); ┌───────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├───────┼─────┼───┤ │パーツ生成情報│ parts │PARTS*│ ├───────┼─────┼───┤ │ シーンID │ wid │ W │ ├───────┼─────┼───┤ │ 項目番号 │ item │ W │ └───────┴─────┴───┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │パーツ生成情報│ パーツを生成するための情報 │ ├───────┼───────────────┤ │ シーンID │ シーンを識別するためのID │ ├───────┼───────────────┤ │ 項目番号 │シーンに登録されたパーツの番号│ └───────┴───────────────┘ (C)シーン表示機能の場合 W err = gp_swi_scn(W wid); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │シーンID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │シーンID│シーンを識別するためのID│ └────┴────────────┘ (D)シーン表示長方形設定機能の場合 W err = gp_vis_scn(W wid, RECT *r); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ ├─────┼─────┼───┤ │ シーンID │ wid │ W │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ シーンID │ シーンを識別するためのID │ └─────┴──────────────────────────────────────────┘ (E)シーンキー座標設定機能の場合 W err = gp_kps_scn(W wid, PNT *p); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │ 座標 │ p │PNT*│ ├────┼─────┼──┤ │シーンID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────────────────┐ │ 名称 │ 意味 │ ├────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ ├────┼────────────────────────┤ │シーンID│ シーンを識別するためのID │ └────┴────────────────────────┘ (F)シーン動作機能の場合 W sts = gp_act_scn(W wids, W wide, EVENT *evt, W* wid, W* item, W tmout); typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌──────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼───┤ │先頭シーンID│ wids │ W │ ├──────┼─────┼───┤ │末尾シーンID│ wide │ W │ ├──────┼─────┼───┤ │ イベント§ │ evt │EVENT*│ ├──────┼─────┼───┤ │ シーンID │ wid │ W* │ ├──────┼─────┼───┤ │ 項目番号 │ item │ W* │ ├──────┼─────┼───┤ │タイムアウト│ tmout │ W │ └──────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌──────┬───────────────────┐ │ 名称 │ 意味 │ ├──────┼───────────────────┤ │ シーンID │ シーンを識別するためのID │ ├──────┼───────────────────┤ │ 項目番号 │シーン・パネルに登録されたパーツの番号│ ├──────┼───────────────────┤ │先頭シーンID│ シーンID範囲の、先頭ID │ ├──────┼───────────────────┤ │末尾シーンID│ シーンID範囲の、末尾ID │ ├──────┼───────────────────┤ │ イベント │ PD・キーボードからの入力データ │ ├──────┼───────────────────┤ │タイムアウト│ イベントを待つまでの時間指定 │ └──────┴───────────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ (G)パネル生成機能の場合 W wid = gp_cre_pnl(RECT *r, PARTS *parts, W nitem); typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 長方形領域 │ r │RECT* │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ ├────────┼─────┼───┤ │ パーツ数 │ nitem │ W │ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────────────────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────────────────────────────┤ │ 長方形領域 │左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせに│ │ │ │ │ │よる、領域の指定 │ ├───────┼────────────────────────────────────────┤ │パーツ生成情報│ パーツを生成するための情報 │ ├───────┼────────────────────────────────────────┤ │ パーツ数 │ パネルに含まれるパーツの数 │ └───────┴────────────────────────────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ PARTS構造体のtypeに指定できる値: ┌────┬───┬─────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├────┼───┼─────────┤ │GC_NULL │ 0 │ NULLパーツ │ ├────┼───┼─────────┤ │GC_TEXT │0x100 │ 文字列パーツ │ ├────┼───┼─────────┤ │GC_RECT │0x101 │ 長方形パーツ │ ├────┼───┼─────────┤ │GC_BMAP │0x102 │ビットマップパーツ│ └────┴───┴─────────┘ ※ほかに、パーツ管理プログラム・文字入力管理プログラムのパーツタ イプも指定することができる。 (H)パネル設定機能の場合 W cid = gp_set_pnl(W wid, W item, PARTS *parts); ┌───────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├───────┼─────┼───┤ │パーツ生成情報│ parts │PARTS*│ ├───────┼─────┼───┤ │ 項目番号 │ item │ W │ ├───────┼─────┼───┤ │ パネルID │ wid │ W │ └───────┴─────┴───┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │パーツ生成情報│ パーツを生成するための情報 │ ├───────┼───────────────┤ │ 項目番号 │パネルに登録されたパーツの番号│ ├───────┼───────────────┤ │ パネルID │ パネルを識別するためのID │ └───────┴───────────────┘ (I)パネル表示機能の場合 W err = gp_app_pnl(W wid); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パネルID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パネルID│パネルを識別するためのID│ └────┴────────────┘ (J)パネル表示長方形設定機能の場合 W err = gp_vis_pnl(W wid, RECT *r); ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │長方形領域│ r │RECT* │ ├─────┼─────┼───┤ │ パネルID │ wid │ W │ └─────┴─────┴───┘ ┌─────┬──────────────────────────────────────────┐ │ 名称 │ 意味 │ ├─────┼──────────────────────────────────────────┤ │長方形領域│左辺の水平位置・上辺の垂直位置・右辺の水平位置+1・下辺の垂直位置+1の組み合わせによる│ │ │ │ │ │、領域の指定 │ ├─────┼──────────────────────────────────────────┤ │ パネルID │ パネルを識別するためのID │ └─────┴──────────────────────────────────────────┘ (K)パネルキー座標設定機能の場合 W err = gp_kps_pnl(W wid, PNT *p); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │ 座標 │ p │PNT*│ ├────┼─────┼──┤ │パネルID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────────────────┐ │ 名称 │ 意味 │ ├────┼────────────────────────┤ │ 座標 │水平位置・垂直位置の組み合わせによる、位置の指定│ ├────┼────────────────────────┤ │パネルID│ パネルを識別するためのID │ └────┴────────────────────────┘ (L)パネル動作機能の場合 W sts = gp_act_pnl(W wids, W wide, EVENT *evt, W* wid, W* item, W tmout); typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌──────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├──────┼─────┼───┤ │ イベント§ │ evt │EVENT*│ ├──────┼─────┼───┤ │ 項目番号 │ item │ W* │ ├──────┼─────┼───┤ │タイムアウト│ tmout │ W │ ├──────┼─────┼───┤ │先頭パネルID│ wids │ W │ ├──────┼─────┼───┤ │末尾パネルID│ wide │ W │ ├──────┼─────┼───┤ │ パネルID │ wid │ W* │ └──────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌──────┬───────────────────┐ │ 名称 │ 意味 │ ├──────┼───────────────────┤ │ 項目番号 │シーン・パネルに登録されたパーツの番号│ ├──────┼───────────────────┤ │ イベント │ PD・キーボードからの入力データ │ ├──────┼───────────────────┤ │タイムアウト│ イベントを待つまでの時間指定 │ ├──────┼───────────────────┤ │ パネルID │ パネルを識別するためのID │ ├──────┼───────────────────┤ │先頭パネルID│ パネルID範囲の、先頭ID │ ├──────┼───────────────────┤ │末尾パネルID│ パネルID範囲の、末尾ID │ └──────┴───────────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 (A)シーン生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ wid │ W │ ├──────┼─────┼──┤ │ シーンID │ wid │ W │ └──────┴─────┴──┘ ※widは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはシーンIDを示す。 エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ └────┴─────────┘ (B)シーン設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ └────┴─────────┘ (C)シーン表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┐ │ 名称 │ 意味 │ ├───┼────┤ │ER_OK │正常終了│ ├───┼────┤ │ER_ID │ 不正ID │ └───┴────┘ (D)シーン表示長方形設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (E)シーンキー座標設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (F)シーン動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ sts │ W │ ├──────┼─────┼──┤ │ 動作結果 │ sts │ W │ └──────┴─────┴──┘ ※stsは、値が負の場合にはエラーコードを示し、値が0または正の場合 には動作結果を示す。 エラーコードの内容: ┌────┬──────┐ │ 名称 │ 意味 │ ├────┼──────┤ │ ER_OK │ 正常終了 │ ├────┼──────┤ │ ER_ADR │不正アドレス│ ├────┼──────┤ │ER_NONE │ データ無し │ ├────┼──────┤ │ER_MINTR│ 処理中断 │ └────┴──────┘ (G)パネル生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ wid │ W │ ├──────┼─────┼──┤ │ パネルID │ wid │ W │ └──────┴─────┴──┘ ※widは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパネルIDを示す。 エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ └────┴─────────┘ (H)パネル設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ └────┴─────────┘ (I)パネル表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ └────┴─────────┘ (J)パネル表示長方形設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (K)パネルキー座標設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┐ │ 名称 │ 意味 │ ├───┼──────┤ │ER_OK │ 正常終了 │ ├───┼──────┤ │ER_ADR│不正アドレス│ ├───┼──────┤ │ER_ID │ 不正ID │ └───┴──────┘ (L)パネル動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ sts │ W │ ├──────┼─────┼──┤ │ 動作結果 │ sts │ W │ └──────┴─────┴──┘ ※stsは、値が負の場合にはエラーコードを示し、値が0または正の場合 には動作結果を示す。 エラーコードの内容: ┌────┬──────┐ │ 名称 │ 意味 │ ├────┼──────┤ │ ER_OK │ 正常終了 │ ├────┼──────┤ │ ER_ADR │不正アドレス│ ├────┼──────┤ │ER_NONE │ データ無し │ ├────┼──────┤ │ER_MINTR│ 処理中断 │ └────┴──────┘ (4)例外条件及び制約条件 パネル・シーンの最大数は、システム全体でシーンとパネルを合わせて 64である。 パネル・シーンに登録できるパーツの数は、パネル・シーン毎に最大64 である。 同時に表示できるパネルの数は、最大で16である。 パネル・シーンの定義データは登録後も参照されるので、解放してはな らない。 同時にイベントを待つタスクの数は、最大で64である。 (5)特記事項 なし。 付録1.2.8 パネル消去機能 (1)機能説明 パネル管理機能のうち、シーン・パネルの消去・削除をおこなう機能を 提供する。 以下の機能がシステムコールの形で提供される。 (A)シーン削除機能 入力データで指定された「シーンID」を削除する。 (B)パネル消去機能 入力データで指定された「パネルID」を消去状態とする。 (C)パネル削除機能 入力データで指定された「パネルID」を削除する。 (2)入力データ パネル消去機能には、アプリケーションから以下の入力データが渡され る。 (A)シーン削除機能の場合 W err = gp_del_scn(W wid); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │シーンID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │シーンID│シーンを識別するためのID│ └────┴────────────┘ (B)パネル消去機能の場合 W err = gp_del_pnl(W wid); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パネルID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パネルID│パネルを識別するためのID│ └────┴────────────┘ (C)パネル削除機能の場合 W err = gp_dis_pnl(W wid); ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パネルID│ wid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パネルID│パネルを識別するためのID│ └────┴────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 (A)シーン削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┐ │ 名称 │ 意味 │ ├───┼────┤ │ER_OK │正常終了│ ├───┼────┤ │ER_ID │ 不正ID │ └───┴────┘ (B)パネル消去機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┐ │ 名称 │ 意味 │ ├───┼───────┤ │ER_OK │ 正常終了 │ ├───┼───────┤ │ER_PAR│不正パラメータ│ ├───┼───────┤ │ER_ID │ 不正ID │ └───┴───────┘ (C)パネル削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┐ │ 名称 │ 意味 │ ├───┼────┤ │ER_OK │正常終了│ ├───┼────┤ │ER_ID │ 不正ID │ └───┴────┘ (4)例外条件及び制約条件 なし。 (5)特記事項 なし。 ━ 付録1.3 パーツ管理機能 ━━━━━━━━━━━━━━━━━━━━━━━ (1)機能説明 GUIミドルウェア機能のうち、パーツの管理をおこなう機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)モーメンタリスイッチ管理機能 モーメンタリスイッチの生成・削除・表示・設定・取得・動作をおこな う。モーメンタリスイッチは、スイッチ上でクリック動作がおこなわれ たことを検出するパーツである。 (B)オルタネートスイッチ管理機能 オルタネートスイッチの生成・削除・表示・設定・取得・動作をおこな う。オルタネートスイッチは、スイッチ上でクリックすることでオン・ オフが反転するスイッチである。 (C)スイッチセレクタ管理機能 スイッチセレクタの生成・削除・表示・設定・取得・動作をおこなう。 スイッチセレクタは、いくつかの選択肢を表示し、選択することができ るパーツである。 (D)スクロールセレクタ管理機能 スクロールセレクタの生成・削除・表示・設定・取得・動作をおこなう。 スクロールセレクタは、いくつかの選択肢を、スクロール可能な領域に 表示し、選択することができるパーツである。 (E)シリアルセレクタ管理機能 シリアルの生成・削除・表示・設定・取得・動作をおこなう。シリアル セレクタは、 いくつかの選択肢のうちの1つを表示し、スイッチによっ て前後の選択肢を選択することができるパーツである。 (F)ボリューム管理機能 ボリュームの生成・削除・表示・設定・取得・動作をおこなう。ボリュ ームは、連続したある範囲の値を表示・設定するパーツである。 (2)入力データ パーツ管理機能には、アプリケーションから以下の入力データが渡され る。 typedef struct { W type; RECT r; W val; TC *str; } PARTS; typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ ├────────┼─────┼───┤ │ パーツID │ cid │ W │ ├────────┼─────┼───┤ │ パーツ状態指定 │ mode │ W │ ├────────┼─────┼───┤ │ パーツ文字列 │ str │ TC* │ ├────────┼─────┼───┤ │ パーツ現在値 │ val │ W │ ├────────┼─────┼───┤ │ 文字列領域 │ str │ TC* │ ├────────┼─────┼───┤ │ 文字列サイズ │ size │ W │ ├────────┼─────┼───┤ │ イベント§ │ evt │EVENT*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ ├───────┼────────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼────────────────┤ │パーツ状態指定│ パーツ状態を変更するための指定 │ ├───────┼────────────────┤ │ パーツ文字列 │ パーツに登録されている文字列 │ ├───────┼────────────────┤ │ パーツ現在値 │ パーツに登録されている値 │ ├───────┼────────────────┤ │ 文字列領域 │ 文字列取り出しのための領域 │ ├───────┼────────────────┤ │ 文字列サイズ │ 文字列領域の長さ(単位はTC) │ ├───────┼────────────────┤ │ イベント │ イベントが格納されている領域 │ └───────┴────────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。複数の項目がある場合 は、項目の間をMC_STRで区切る。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬──────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼──────────┤ │GC_MSPARTS│ 2 │モーメンタリスイッチ│ ├─────┼───┼──────────┤ │GC_ASPARTS│ 3 │オルタネートスイッチ│ ├─────┼───┼──────────┤ │GC_WSPARTS│ 4 │ スイッチセレクタ │ ├─────┼───┼──────────┤ │GC_SSPARTS│ 5 │ スクロールセレクタ │ ├─────┼───┼──────────┤ │GC_ESPARTS│ 6 │ シリアルセレクタ │ ├─────┼───┼──────────┤ │GC_VLPARTS│ 7 │ ボリューム │ ├─────┼───┼──────────┤ │GC_HALIGN │ 0x20 │ 水平配置 │ ├─────┼───┼──────────┤ │GC_DOUBLE │ 0x40 │ 2段組み │ ├─────┼───┼──────────┤ │ GC_NONOB │ 0x80 │ トンボ表示なし │ ├─────┼───┼──────────┤ │ GC_NOSEL │ 0x80 │ 無選択を許可 │ ├─────┼───┼──────────┤ │GC_EMPHAS │0x200 │ 強調枠 │ ├─────┼───┼──────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴──────────┘ ※GC_NONOBはボリュームのみ、GC_NOSELはスイッチセレクタ・スクロー ルセレクタのみに使用されるため、同じ数値を割り当てていても問題 は発生しない。 modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_EMPHAS │0x200 │ 強調枠 │ ├─────┼───┼──────┤ │GC_NORMAL │ 0x2 │ 通常枠 │ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ └────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 指定された領域内に文字列が表示しきれない場合は、動作は保証されな い。 モーメンタリスイッチ・オルタネートスイッチ・スイッチセレクタ・ス クロールセレクタ・シリアルセレクタの場合、 strで示される領域は、 表示の際に参照されるので、パーツを削除するまで解放してはならない。 (5)特記事項 なし。 (6)機能ブロックの構成及び関連 パーツ管理機能は、 小機能である「モーメンタリスイッチ管理機能」 「オルタネートスイッチ管理機能」「スイッチセレクタ管理機能」「ス クロールセレクタ管理機能」「シリアルセレクタ管理機能」「ボリュー ム管理機能」から構成される。 ┌────────────────────────┐ │パーツ管理機能 │ │ │ │┌──────────┐┌──────────┐│ ││モーメンタリスイッチ││オルタネートスイッチ││ ││ 管理機能││ 管理機能││ │└──────────┘└──────────┘│ │┌──────────┐┌──────────┐│ ││スイッチセレクタ ││スクロールセレクタ ││ ││ 管理機能││ 管理機能││ │└──────────┘└──────────┘│ │┌──────────┐┌──────────┐│ ││シリアルセレクタ ││ボリューム ││ ││ 管理機能││ 管理機能││ │└──────────┘└──────────┘│ └────────────────────────┘ 図 パーツ管理機能の機能ブロック相互関係 モーメンタリスイッチ管理機能・オルタネートスイッチ管理機能・スイ ッチセレクタ管理機能・スクロールセレクタ管理機能・シリアルセレク タ管理機能・ボリューム管理機能は、直接、他の小機能を呼び出してデ ータのやり取りをおこなうことはない。しかし、それぞれの小機能は、 パーツの管理に関する情報を共有している。 付録1.3.1 モーメンタリスイッチ管理機能 (1)機能説明 パーツ管理機能のうち、モーメンタリスイッチの管理をおこなう機能を 提供する。 以下の機能がシステムコールの形で提供される。 (A)モーメンタリスイッチ生成機能 入力データで指定された「パーツ生成情報」にしたがって、入力デー タで指定された「描画環境ID」上に、パーツを生成する。生成したパー ツのパーツIDを、出力データとして返す。 (B)モーメンタリスイッチ削除機能 入力データで指定された「パーツID」で示されるパーツを削除する。 (C)モーメンタリスイッチ表示機能 入力データで指定された「パーツID」で示されるパーツの状態を、入 力データで指定された「パーツ状態指定」にしたがって変更し、画面へ の表示をおこなう。 (D)モーメンタリスイッチ設定機能 入力データで指定された「パーツID」で示されるパーツの内容を、入 力データで指定された「パーツ文字列」「パーツ現在値」の内容で置き 換える。 (E)モーメンタリスイッチ取得機能 入力データで指定された「パーツID」で示されるパーツの内容を、出 力データとして返す。 (F)モーメンタリスイッチ動作機能 入力データで指定された「パーツID」で示されるパーツに対し、入力 データで指定された「イベント」にもとづいた動作をおこなわせる。動 作の結果を、出力データとして返す。 (2)入力データ モーメンタリスイッチ管理機能には、アプリケーションから以下の入力 データが渡される。 (A)モーメンタリスイッチ生成機能の場合 W cid = gc_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ └───────┴────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬──────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼──────────┤ │GC_MSPARTS│ 2 │モーメンタリスイッチ│ ├─────┼───┼──────────┤ │GC_EMPHAS │0x200 │ 強調枠 │ ├─────┼───┼──────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴──────────┘ (B)モーメンタリスイッチ削除機能の場合 W err = gc_del_par(W cid) ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パーツID│ cid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パーツID│パーツを区別するためのID│ └────┴────────────┘ (C)モーメンタリスイッチ表示機能の場合 W err = gc_dsp_par(W cid, W mode) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │パーツ状態指定│ mode │ W │ └───────┴─────┴──┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼───────────────┤ │パーツ状態指定│パーツ状態を変更するための指定│ └───────┴───────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_EMPHAS │0x200 │ 強調枠 │ ├─────┼───┼──────┤ │GC_NORMAL │ 0x2 │ 通常枠 │ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)モーメンタリスイッチ設定機能の場合 W err = gc_set_par(W cid, TC *str, W val) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼──────────────┤ │パーツ文字列│パーツに登録されている文字列│ ├──────┼──────────────┤ │パーツ現在値│ パーツに登録されている値 │ └──────┴──────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 (E)モーメンタリスイッチ取得機能の場合 W val = gc_get_par(W cid, TC *str, W size) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ ※パーツ文字列の終端には、TNULLが格納される。 (F)モーメンタリスイッチ動作機能の場合 W val = gc_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │ パーツID │ cid │ W │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬──────────────┐ │ 名称 │ 意味 │ ├────┼──────────────┤ │パーツID│ パーツを区別するためのID │ ├────┼──────────────┤ │イベント│イベントが格納されている領域│ └────┴──────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)モー メンタリスイッチ表示機能」の場合、システムコールの副作用として画 面への表示がおこなわれる。 (A)モーメンタリスイッチ生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ パーツ管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)モーメンタリスイッチ削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)モーメンタリスイッチ表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)モーメンタリスイッチ設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)モーメンタリスイッチ取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ (F)モーメンタリスイッチ動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 指定された領域内に文字列が表示しきれない場合は、動作は保証されな い。 strで示される領域は、表示の際に参照されるので、 パーツを削除する まで解放してはならない。 (5)特記事項 なし 付録1.3.2 オルタネートスイッチ管理機能 (1)機能説明 パーツ管理機能のうち、オルタネートスイッチの管理をおこなう機能を 提供する。 以下の機能がシステムコールの形で提供される。 (A)オルタネートスイッチ生成機能 入力データで指定された「パーツ生成情報」にしたがって、入力デー タで指定された「描画環境ID」上に、パーツを生成する。生成したパー ツのパーツIDを、出力データとして返す。 (B)オルタネートスイッチ削除機能 入力データで指定された「パーツID」で示されるパーツを削除する。 (C)オルタネートスイッチ表示機能 入力データで指定された「パーツID」で示されるパーツの状態を、入 力データで指定された「パーツ状態指定」にしたがって変更し、画面へ の表示をおこなう。 (D)オルタネートスイッチ設定機能 入力データで指定された「パーツID」で示されるパーツの内容を、入 力データで指定された「パーツ文字列」「パーツ現在値」の内容で置き 換える。 (E)オルタネートスイッチ取得機能 入力データで指定された「パーツID」で示されるパーツの内容を、出 力データとして返す。 (F)オルタネートスイッチ動作機能 入力データで指定された「パーツID」で示されるパーツに対し、入力 データで指定された「イベント」にもとづいた動作をおこなわせる。動 作の結果を、出力データとして返す。 (2)入力データ オルタネートスイッチ管理機能には、アプリケーションから以下の入力 データが渡される。 (A)オルタネートスイッチ生成機能の場合 W cid = gc_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ └───────┴────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬──────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼──────────┤ │GC_ASPARTS│ 3 │オルタネートスイッチ│ ├─────┼───┼──────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴──────────┘ (B)オルタネートスイッチ削除機能の場合 W err = gc_del_par(W cid) ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パーツID│ cid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パーツID│パーツを区別するためのID│ └────┴────────────┘ (C)オルタネートスイッチ表示機能の場合 W err = gc_dsp_par(W cid, W mode) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │パーツ状態指定│ mode │ W │ └───────┴─────┴──┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼───────────────┤ │パーツ状態指定│パーツ状態を変更するための指定│ └───────┴───────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)オルタネートスイッチ設定機能の場合 W err = gc_set_par(W cid, TC *str, W val) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼──────────────┤ │パーツ文字列│パーツに登録されている文字列│ ├──────┼──────────────┤ │パーツ現在値│ パーツに登録されている値 │ └──────┴──────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 (E)オルタネートスイッチ取得機能の場合 W val = gc_get_par(W cid, TC *str, W size) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ ※パーツ文字列の終端には、TNULLが格納される。 (F)オルタネートスイッチ動作機能の場合 W val = gc_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │ パーツID │ cid │ W │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬──────────────┐ │ 名称 │ 意味 │ ├────┼──────────────┤ │パーツID│ パーツを区別するためのID │ ├────┼──────────────┤ │イベント│イベントが格納されている領域│ └────┴──────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)オル タネートスイッチ表示機能」の場合、システムコールの副作用として画 面への表示がおこなわれる。 (A)オルタネートスイッチ生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ パーツ管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)オルタネートスイッチ削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)オルタネートスイッチ表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)オルタネートスイッチ設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)オルタネートスイッチ取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ (F)オルタネートスイッチ動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 指定された領域内に文字列が表示しきれない場合は、動作は保証されな い。 strで示される領域は、 表示の際に参照されるので、パーツを削除する まで解放してはならない。 (5)特記事項 なし 付録1.3.3 スイッチセレクタ管理機能 (1)機能説明 パーツ管理機能のうち、スイッチセレクタの管理をおこなう機能を提供 する。 以下の機能がシステムコールの形で提供される。 (A)スイッチセレクタ生成機能 入力データで指定された「パーツ生成情報」にしたがって、入力デー タで指定された「描画環境ID」上に、パーツを生成する。生成したパー ツのパーツIDを、出力データとして返す。 (B)スイッチセレクタ削除機能 入力データで指定された「パーツID」で示されるパーツを削除する。 (C)スイッチセレクタ表示機能 入力データで指定された「パーツID」で示されるパーツの状態を、入 力データで指定された「パーツ状態指定」にしたがって変更し、画面へ の表示をおこなう。 (D)スイッチセレクタ設定機能 入力データで指定された「パーツID」で示されるパーツの内容を、入 力データで指定された「パーツ文字列」「パーツ現在値」の内容で置き 換える。 (E)スイッチセレクタ取得機能 入力データで指定された「パーツID」で示されるパーツの内容を、出 力データとして返す。 (F)スイッチセレクタ動作機能 入力データで指定された「パーツID」で示されるパーツに対し、入力 データで指定された「イベント」にもとづいた動作をおこなわせる。動 作の結果を、出力データとして返す。 (2)入力データ スイッチセレクタ管理機能には、アプリケーションから以下の入力デー タが渡される。 (A)スイッチセレクタ生成機能の場合 W cid = gc_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ └───────┴────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬─────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼─────────┤ │GC_SSPARTS│ 5 │スクロールセレクタ│ ├─────┼───┼─────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴─────────┘ (B)スイッチセレクタ削除機能の場合 W err = gc_del_par(W cid) ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パーツID│ cid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パーツID│パーツを区別するためのID│ └────┴────────────┘ (C)スイッチセレクタ表示機能の場合 W err = gc_dsp_par(W cid, W mode) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │パーツ状態指定│ mode │ W │ └───────┴─────┴──┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼───────────────┤ │パーツ状態指定│パーツ状態を変更するための指定│ └───────┴───────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)スイッチセレクタ設定機能の場合 W err = gc_set_par(W cid, TC *str, W val) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼──────────────┤ │パーツ文字列│パーツに登録されている文字列│ ├──────┼──────────────┤ │パーツ現在値│ パーツに登録されている値 │ └──────┴──────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 (E)スイッチセレクタ取得機能の場合 W val = gc_get_par(W cid, TC *str, W size) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ ※パーツ文字列の終端には、TNULLが格納される。 (F)スイッチセレクタ動作機能の場合 W val = gc_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │ パーツID │ cid │ W │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬──────────────┐ │ 名称 │ 意味 │ ├────┼──────────────┤ │パーツID│ パーツを区別するためのID │ ├────┼──────────────┤ │イベント│イベントが格納されている領域│ └────┴──────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)スイ ッチセレクタ表示機能」の場合、システムコールの副作用として画面へ の表示がおこなわれる。 (A)スイッチセレクタ生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ パーツ管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)スイッチセレクタ削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)スイッチセレクタ表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)スイッチセレクタ設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)スイッチセレクタ取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ (F)スイッチセレクタ動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 指定された領域内に文字列が表示しきれない場合は、動作は保証されな い。 strで示される領域は、表示の際に参照されるので、 パーツを削除する まで解放してはならない。 (5)特記事項 なし 付録1.3.4 スクロールセレクタ管理機能 (1)機能説明 パーツ管理機能のうち、スクロールセレクタの管理をおこなう機能を提 供する。 以下の機能がシステムコールの形で提供される。 (A)スクロールセレクタ生成機能 入力データで指定された「パーツ生成情報」にしたがって、入力デー タで指定された「描画環境ID」上に、パーツを生成する。生成したパー ツのパーツIDを、出力データとして返す。 (B)スクロールセレクタ削除機能 入力データで指定された「パーツID」で示されるパーツを削除する。 (C)スクロールセレクタ表示機能 入力データで指定された「パーツID」で示されるパーツの状態を、入 力データで指定された「パーツ状態指定」にしたがって変更し、画面へ の表示をおこなう。 (D)スクロールセレクタ設定機能 入力データで指定された「パーツID」で示されるパーツの内容を、入 力データで指定された「パーツ文字列」「パーツ現在値」の内容で置き 換える。 (E)スクロールセレクタ取得機能 入力データで指定された「パーツID」で示されるパーツの内容を、出 力データとして返す。 (F)スクロールセレクタ動作機能 入力データで指定された「パーツID」で示されるパーツに対し、入力 データで指定された「イベント」にもとづいた動作をおこなわせる。動 作の結果を、出力データとして返す。 (2)入力データ スクロールセレクタ管理機能には、アプリケーションから以下の入力デ ータが渡される。 (A)スクロールセレクタ生成機能の場合 W cid = gc_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ └───────┴────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬─────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼─────────┤ │GC_SSPARTS│ 5 │スクロールセレクタ│ ├─────┼───┼─────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴─────────┘ (B)スクロールセレクタ削除機能の場合 W err = gc_del_par(W cid) ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パーツID│ cid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パーツID│パーツを区別するためのID│ └────┴────────────┘ (C)スクロールセレクタ表示機能の場合 W err = gc_dsp_par(W cid, W mode) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │パーツ状態指定│ mode │ W │ └───────┴─────┴──┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼───────────────┤ │パーツ状態指定│パーツ状態を変更するための指定│ └───────┴───────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)スクロールセレクタ設定機能の場合 W err = gc_set_par(W cid, TC *str, W val) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼──────────────┤ │パーツ文字列│パーツに登録されている文字列│ ├──────┼──────────────┤ │パーツ現在値│ パーツに登録されている値 │ └──────┴──────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 (E)スクロールセレクタ取得機能の場合 W val = gc_get_par(W cid, TC *str, W size) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ ※パーツ文字列の終端には、TNULLが格納される。 (F)スクロールセレクタ動作機能の場合 W val = gc_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │ パーツID │ cid │ W │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬──────────────┐ │ 名称 │ 意味 │ ├────┼──────────────┤ │パーツID│ パーツを区別するためのID │ ├────┼──────────────┤ │イベント│イベントが格納されている領域│ └────┴──────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)スク ロールセレクタ表示機能」の場合、システムコールの副作用として画面 への表示がおこなわれる。 (A)スクロールセレクタ生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ パーツ管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)スクロールセレクタ削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)スクロールセレクタ表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)スクロールセレクタ設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)スクロールセレクタ取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ (F)スクロールセレクタ動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 指定された領域内に文字列が表示しきれない場合は、動作は保証されな い。 strで示される領域は、 表示の際に参照されるので、パーツを削除する まで解放してはならない。 (5)特記事項 なし 付録1.3.5 シリアルセレクタ管理機能 (1)機能説明 パーツ管理機能のうち、シリアルセレクタの管理をおこなう機能を提供 する。 以下の機能がシステムコールの形で提供される。 (A)シリアルセレクタ生成機能 入力データで指定された「パーツ生成情報」にしたがって、入力デー タで指定された「描画環境ID」上に、パーツを生成する。生成したパー ツのパーツIDを、出力データとして返す。 (B)シリアルセレクタ削除機能 入力データで指定された「パーツID」で示されるパーツを削除する。 (C)シリアルセレクタ表示機能 入力データで指定された「パーツID」で示されるパーツの状態を、入 力データで指定された「パーツ状態指定」にしたがって変更し、画面へ の表示をおこなう。 (D)シリアルセレクタ設定機能 入力データで指定された「パーツID」で示されるパーツの内容を、入 力データで指定された「パーツ文字列」「パーツ現在値」の内容で置き 換える。 (E)シリアルセレクタ取得機能 入力データで指定された「パーツID」で示されるパーツの内容を、出 力データとして返す。 (F)シリアルセレクタ動作機能 入力データで指定された「パーツID」で示されるパーツに対し、入力 データで指定された「イベント」にもとづいた動作をおこなわせる。動 作の結果を、出力データとして返す。 (2)入力データ シリアルセレクタ管理機能には、アプリケーションから以下の入力デー タが渡される。 (A)シリアルセレクタ生成機能の場合 W cid = gc_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ └───────┴────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼────────┤ │GC_ESPARTS│ 6 │シリアルセレクタ│ ├─────┼───┼────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴────────┘ (B)シリアルセレクタ削除機能の場合 W err = gc_del_par(W cid) ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パーツID│ cid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パーツID│パーツを区別するためのID│ └────┴────────────┘ (C)シリアルセレクタ表示機能の場合 W err = gc_dsp_par(W cid, W mode) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │パーツ状態指定│ mode │ W │ └───────┴─────┴──┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼───────────────┤ │パーツ状態指定│パーツ状態を変更するための指定│ └───────┴───────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)シリアルセレクタ設定機能の場合 W err = gc_set_par(W cid, TC *str, W val) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼──────────────┤ │パーツ文字列│パーツに登録されている文字列│ ├──────┼──────────────┤ │パーツ現在値│ パーツに登録されている値 │ └──────┴──────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 (E)シリアルセレクタ取得機能の場合 W val = gc_get_par(W cid, TC *str, W size) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ ※パーツ文字列の終端には、TNULLが格納される。 (F)シリアルセレクタ動作機能の場合 W val = gc_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │ パーツID │ cid │ W │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬──────────────┐ │ 名称 │ 意味 │ ├────┼──────────────┤ │パーツID│ パーツを区別するためのID │ ├────┼──────────────┤ │イベント│イベントが格納されている領域│ └────┴──────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)シリ アルセレクタ表示機能」の場合、システムコールの副作用として画面へ の表示がおこなわれる。 (A)シリアルセレクタ生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ パーツ管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)シリアルセレクタ削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)シリアルセレクタ表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)シリアルセレクタ設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)シリアルセレクタ取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ (F)シリアルセレクタ動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 指定された領域内に文字列が表示しきれない場合は、動作は保証されな い。 strで示される領域は、表示の際に参照されるので、 パーツを削除する まで解放してはならない。 (5)特記事項 なし 付録1.3.6 ボリューム管理機能 (1)機能説明 パーツ管理機能のうち、ボリュームの管理をおこなう機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)ボリューム生成機能 入力データで指定された「パーツ生成情報」にしたがって、入力デー タで指定された「描画環境ID」上に、パーツを生成する。生成したパー ツのパーツIDを、出力データとして返す。 (B)ボリューム削除機能 入力データで指定された「パーツID」で示されるパーツを削除する。 (C)ボリューム表示機能 入力データで指定された「パーツID」で示されるパーツの状態を、入 力データで指定された「パーツ状態指定」にしたがって変更し、画面へ の表示をおこなう。 (D)ボリューム設定機能 入力データで指定された「パーツID」で示されるパーツの内容を、入 力データで指定された「パーツ文字列」「パーツ現在値」の内容で置き 換える。 (E)ボリューム取得機能 入力データで指定された「パーツID」で示されるパーツの内容を、出 力データとして返す。 (F)ボリューム動作機能 入力データで指定された「パーツID」で示されるパーツに対し、入力 データで指定された「イベント」にもとづいた動作をおこなわせる。動 作の結果を、出力データとして返す。 (2)入力データ ボリューム管理機能には、アプリケーションから以下の入力データが渡 される。 (A)ボリューム生成機能の場合 W cid = gc_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├────────┼─────┼───┤ │パーツ生成情報§│ parts │PARTS*│ └────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌───────┬────────────────┐ │ 名称 │ 意味 │ ├───────┼────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├───────┼────────────────┤ │パーツ生成情報│パーツ状態・領域等を指定する情報│ └───────┴────────────────┘ PARTS構造体の内容: ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │パーツタイプ│ type │ W │ ├──────┼─────┼──┤ │ パーツ領域 │ r │RECT│ ├──────┼─────┼──┤ │パーツ初期値│ val │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ └──────┴─────┴──┘ ※パーツ文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_VLPARTS│ 7 │ ボリューム │ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴──────┘ (B)ボリューム削除機能の場合 W err = gc_del_par(W cid) ┌────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────┼─────┼──┤ │パーツID│ cid │ W │ └────┴─────┴──┘ ┌────┬────────────┐ │ 名称 │ 意味 │ ├────┼────────────┤ │パーツID│パーツを区別するためのID│ └────┴────────────┘ (C)ボリューム表示機能の場合 W err = gc_dsp_par(W cid, W mode) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │ パーツID │ cid │ W │ ├───────┼─────┼──┤ │パーツ状態指定│ mode │ W │ └───────┴─────┴──┘ ┌───────┬───────────────┐ │ 名称 │ 意味 │ ├───────┼───────────────┤ │ パーツID │ パーツを区別するためのID │ ├───────┼───────────────┤ │パーツ状態指定│パーツ状態を変更するための指定│ └───────┴───────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)ボリューム設定機能の場合 W err = gc_set_par(W cid, TC *str, W val) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │パーツ文字列│ str │TC* │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ┌──────┬──────────────┐ │ 名称 │ 意味 │ ├──────┼──────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼──────────────┤ │パーツ文字列│パーツに登録されている文字列│ ├──────┼──────────────┤ │パーツ現在値│ パーツに登録されている値 │ └──────┴──────────────┘ ※パーツ文字列の終端には、TNULLを指定する。 (E)ボリューム取得機能の場合 W val = gc_get_par(W cid, TC *str, W size) ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ ※パーツ文字列の終端には、TNULLが格納される。 (F)ボリューム動作機能の場合 W val = gc_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────┼─────┼───┤ │ パーツID │ cid │ W │ ├─────┼─────┼───┤ │イベント§│ evt │EVENT*│ └─────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────┬──────────────┐ │ 名称 │ 意味 │ ├────┼──────────────┤ │パーツID│ パーツを区別するためのID │ ├────┼──────────────┤ │イベント│イベントが格納されている領域│ └────┴──────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬───────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼───────┤ │GE_BUTDWN │1 │プレスイベント│ └─────┴─┴───────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)ボリ ューム表示機能」の場合、システムコールの副作用として画面への表示 がおこなわれる。 (A)ボリューム生成機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cid │ W │ ├──────┼─────┼──┤ │ パーツID │ cid │ W │ └──────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ パーツ管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)ボリューム削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)ボリューム表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)ボリューム設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)ボリューム取得機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ ├──────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├──────┼─────┼──┤ │文字列サイズ│ size │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌──────┬─────────────┐ │ 名称 │ 意味 │ ├──────┼─────────────┤ │ パーツID │ パーツを区別するためのID │ ├──────┼─────────────┤ │ 文字列領域 │文字列取り出しのための領域│ ├──────┼─────────────┤ │文字列サイズ│文字列領域の長さ(単位はTC)│ └──────┴─────────────┘ (F)ボリューム動作機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ val │ W │ ├──────┼─────┼──┤ │パーツ現在値│ val │ W │ └──────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはパーツ現在値を示す。 ※パーツが有効動作をした場合には、valにGC_ACT(0x1000)がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大パーツ数は、システム全体で256個である。 (5)特記事項 なし ━ 付録1.4 文字入力管理機能 ━━━━━━━━━━━━━━━━━━━━━━ (1)機能説明 GUIミドルウェア機能のうち、文字の入力に関する機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)テキストボックス管理機能 文字の入力・編集をおこなうパーツとして、テキストボックスの機能を 提供する。 (2)入力データ 文字入力管理機能には、アプリケーションから以下の入力データが渡さ れる。 ┌────────────┬─────────────────────┐ │ 名称 │ 意味 │ ├────────────┼─────────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├────────────┼─────────────────────┤ │テキストボックス生成情報│テキストボックス状態・領域等を指定する情報│ ├────────────┼─────────────────────┤ │ テキストボックスID │ テキストボックスを区別するためのID │ ├────────────┼─────────────────────┤ │テキストボックス状態指定│ テキストボックス状態を変更するための指定 │ ├────────────┼─────────────────────┤ │ テキストボックス文字列 │ テキストボックスに登録されている文字列 │ ├────────────┼─────────────────────┤ │ テキストボックス現在値 │ テキストボックスのカレット位置 │ ├────────────┼─────────────────────┤ │ 文字列領域 │ 文字列取り出しのための領域 │ ├────────────┼─────────────────────┤ │ 文字列サイズ │ 文字列領域の長さ(単位はTC) │ ├────────────┼─────────────────────┤ │ イベント │ イベントが格納されている領域 │ └────────────┴─────────────────────┘ 詳細については、該当する小機能の項目を参照。 (3)出力データ アプリケーションへは以下の出力データが渡される。 ┌───────────┬─────┐ │ 名称 │ニモニック│ ├───────────┼─────┤ │ エラーコード │ err │ ├───────────┼─────┤ │ テキストボックスID │ cid │ ├───────────┼─────┤ │テキストボックス現在値│ val │ └───────────┴─────┘ エラーコードの内容: ┌────┬─────────┐ │ 名称 │ 意味 │ ├────┼─────────┤ │ ER_OK │ 正常終了 │ ├────┼─────────┤ │ ER_ADR │ 不正アドレス │ ├────┼─────────┤ │ ER_PAR │ 不正パラメータ │ ├────┼─────────┤ │ER_NOSPC│システムメモリ不足│ ├────┼─────────┤ │ ER_ID │ 不正ID │ └────┴─────────┘ 詳細については、該当する小機能の項目を参照。 (4)例外条件及び制約条件 生成可能な最大テキストボックス数は、パーツ管理プログラムのパーツ 数と合計して、システム全体で256個である。 テキストボックス文字列が長すぎて表示しきれない場合、はみ出した部 分は表示されない。 テキストボックス文字列の長さは、最大で20文字である。 (5)特記事項 なし (6)機能ブロックの構成及び関連 文字入力管理機能は、小機能であるテキストボックス管理機能から構成 される。 ┌────────────────┐ │文字入力管理機能 │ │ │ │ ┌────────────┐ │ │ │テキストボックス管理機能│ │ │ └────────────┘ │ └────────────────┘ 図 文字入力管理機能の機能ブロック相互関係 付録1.4.1 テキストボックス管理機能 (1)機能説明 文字入力管理機能のうち、文字の入力に関する機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)テキストボックス生成機能 入力データで指定された「テキストボックス生成情報」にしたがって、 入力データで指定された「描画環境ID」上に、テキストボックスを生成 する。生成したテキストボックスのテキストボックスIDを、出力データ として返す。 (B)テキストボックス削除機能 入力データで指定された「テキストボックスID」で示されるテキスト ボックスを削除する。 (C)テキストボックス表示機能 入力データで指定された「テキストボックスID」で示されるテキスト ボックスの状態を、入力データで指定された「テキストボックス状態指 定」にしたがって変更し、画面への表示をおこなう。 (D)テキストボックス設定機能 入力データで指定された「テキストボックスID」で示されるテキスト ボックスの内容を、入力データで指定された「テキストボックス文字列」 「テキストボックス現在値」の内容で置き換える。 (E)テキストボックス取得機能 入力データで指定された「テキストボックスID」で示されるテキスト ボックスの内容を、出力データとして返す。 (F)テキストボックス動作機能 入力データで指定された「テキストボックスID」で示されるテキスト ボックスに対し、入力データで指定された「イベント」にもとづいた動 作をおこなわせる。動作の結果を、出力データとして返す。 (2)入力データ テキストボックス管理機能には、アプリケーションから以下の入力デー タが渡される。 (A)テキストボックス生成機能の場合 W cid = gt_cre_par(W gid, PARTS *parts) typedef struct { W type; RECT r; W val; TC *str; } PARTS; ┌─────────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────────────┼─────┼───┤ │ 描画環境ID │ gid │ W │ ├─────────────┼─────┼───┤ │テキストボックス生成情報§│ parts │PARTS*│ └─────────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌────────────┬─────────────────────┐ │ 名称 │ 意味 │ ├────────────┼─────────────────────┤ │ 描画環境ID │ 描画環境を区別するためのID │ ├────────────┼─────────────────────┤ │テキストボックス生成情報│テキストボックス状態・領域等を指定する情報│ └────────────┴─────────────────────┘ PARTS構造体の内容: ┌───────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────────┼─────┼──┤ │テキストボックスタイプ│ type │ W │ ├───────────┼─────┼──┤ │ テキストボックス領域 │ r │RECT│ ├───────────┼─────┼──┤ │テキストボックス初期値│ val │ W │ ├───────────┼─────┼──┤ │テキストボックス文字列│ str │TC* │ └───────────┴─────┴──┘ ※テキストボックス文字列の終端には、TNULLを指定する。 PARTS構造体のtypeに指定できる値: ┌─────┬───┬────────┐ │ 名称 │ 値 │ 具体的な内容 │ ├─────┼───┼────────┤ │GC_TBPARTS│ 1 │テキストボックス│ ├─────┼───┼────────┤ │GC_DISABLE│0x800 │ 禁止状態 │ └─────┴───┴────────┘ (B)テキストボックス削除機能の場合 W err = gt_del_par(W cid) ┌─────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────────┼─────┼──┤ │テキストボックスID│ cid │ W │ └─────────┴─────┴──┘ ┌─────────┬─────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────┤ │テキストボックスID│テキストボックスを区別するためのID│ └─────────┴─────────────────┘ (C)テキストボックス表示機能の場合 W err = gt_dsp_par(W cid, W mode) ┌────────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├────────────┼─────┼──┤ │ テキストボックスID │ cid │ W │ ├────────────┼─────┼──┤ │テキストボックス状態指定│ mode │ W │ └────────────┴─────┴──┘ ┌────────────┬────────────────────┐ │ 名称 │ 意味 │ ├────────────┼────────────────────┤ │ テキストボックスID │ テキストボックスを区別するためのID │ ├────────────┼────────────────────┤ │テキストボックス状態指定│テキストボックス状態を変更するための指定│ └────────────┴────────────────────┘ modeに指定できる値: ┌─────┬───┬──────┐ │ 名称 │ 値 │具体的な内容│ ├─────┼───┼──────┤ │GC_DISABLE│0x800 │ 禁止状態 │ ├─────┼───┼──────┤ │GC_ENABLE │ 0x8 │ 許可状態 │ └─────┴───┴──────┘ (D)テキストボックス設定機能の場合 W err = gt_set_par(W cid, TC *str, W val) ┌───────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────────┼─────┼──┤ │ テキストボックスID │ cid │ W │ ├───────────┼─────┼──┤ │テキストボックス文字列│ str │TC* │ ├───────────┼─────┼──┤ │テキストボックス現在値│ val │ W │ └───────────┴─────┴──┘ ┌───────────┬───────────────────┐ │ 名称 │ 意味 │ ├───────────┼───────────────────┤ │ テキストボックスID │ テキストボックスを区別するためのID │ ├───────────┼───────────────────┤ │テキストボックス文字列│テキストボックスに登録されている文字列│ ├───────────┼───────────────────┤ │テキストボックス現在値│ テキストボックスのカレット位置 │ └───────────┴───────────────────┘ ※テキストボックス文字列の終端には、TNULLを指定する。 (E)テキストボックス取得機能の場合 W val = gt_get_par(W cid, TC *str, W size) ┌─────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────────┼─────┼──┤ │テキストボックスID│ cid │ W │ ├─────────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├─────────┼─────┼──┤ │ 文字列サイズ │ size │ W │ └─────────┴─────┴──┘ ┌─────────┬─────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────┤ │テキストボックスID│テキストボックスを区別するためのID│ ├─────────┼─────────────────┤ │ 文字列領域 │ 文字列取り出しのための領域 │ ├─────────┼─────────────────┤ │ 文字列サイズ │ 文字列領域の長さ(単位はTC) │ └─────────┴─────────────────┘ ※テキストボックス文字列の終端には、TNULLが格納される。 EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼──────────┤ │GE_BUTDWN │1 │ プレスイベント │ ├─────┼─┼──────────┤ │GE_KEYDWN │3 │ キーダウンイベント │ ├─────┼─┼──────────┤ │GE_AUTKEY │5 │キーリピートイベント│ └─────┴─┴──────────┘ (F)テキストボックス動作機能の場合 W val = gt_act_par(W cid, EVENT *evt) typedef struct { W type; PNT pos; TC key; UW stat; } EVENT; ┌─────────┬─────┬───┐ │ 名称 │ニモニック│ 型名 │ ├─────────┼─────┼───┤ │テキストボックスID│ cid │ W │ ├─────────┼─────┼───┤ │ イベント§ │ evt │EVENT*│ └─────────┴─────┴───┘ ※名称の欄に「§」をつけた項目については、このあとにその内容の説 明がある。 ┌─────────┬─────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────┤ │テキストボックスID│テキストボックスを区別するためのID│ ├─────────┼─────────────────┤ │ イベント │ イベントが格納されている領域 │ └─────────┴─────────────────┘ EVENT構造体の内容: ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │イベントタイプ│ type │ W │ ├───────┼─────┼──┤ │ イベント座標 │ pos │PNT │ ├───────┼─────┼──┤ │ イベント文字 │ key │ TC │ ├───────┼─────┼──┤ │ イベント状態 │ stat │ UW │ └───────┴─────┴──┘ ※statには、イベント時刻情報が含まれる。 EVENT構造体のtypeに指定できる値: ┌─────┬─┬──────────┐ │ 名称 │値│ 具体的な内容 │ ├─────┼─┼──────────┤ │GE_BUTDWN │1 │ プレスイベント │ ├─────┼─┼──────────┤ │GE_KEYDWN │3 │ キーダウンイベント │ ├─────┼─┼──────────┤ │GE_AUTKEY │5 │キーリピートイベント│ └─────┴─┴──────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(C)テキ ストボックス表示機能」の場合、システムコールの副作用として画面へ の表示がおこなわれる。 (A)テキストボックス生成機能の場合 ┌─────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────────┼─────┼──┤ │ エラーコード │ cid │ W │ ├─────────┼─────┼──┤ │テキストボックスID│ cid │ W │ └─────────┴─────┴──┘ ※cidは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはテキストボックスIDを示す。 エラーコードの内容: ┌────┬─────────┬─────┬───────────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ partsがNULL │ ├────┼─────────┼─────┼───────────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│parts->typeに、GC_DISABLE以外が指定されている │ ├────┼─────────┼─────┼───────────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ テキストボックス管理テーブルに空きがない │ └────┴─────────┴─────┴───────────────────────┘ (B)テキストボックス削除機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (C)テキストボックス表示機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬───────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼───────┼─────┼─────────┤ │ER_PAR│不正パラメータ│0xfffe0000│ modeが不正 │ ├───┼───────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴───────┴─────┴─────────┘ (D)テキストボックス設定機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼────┼─────┼─────────┤ │ER_OK │正常終了│ 0 │ − │ ├───┼────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴────┴─────┴─────────┘ (E)テキストボックス取得機能の場合 ┌───────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────────┼─────┼──┤ │ エラーコード │ val │ W │ ├───────────┼─────┼──┤ │テキストボックス現在値│ val │ W │ ├───────────┼─────┼──┤ │ 文字列領域 │ str │TC* │ ├───────────┼─────┼──┤ │ 文字列サイズ │ size │ W │ └───────────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはテキストボックス現在値を示す。 エラーコードの内容: ┌───┬───┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼───┼─────┼─────────┤ │ER_ID │不正ID│0xfffb0000│ cidが不正 │ └───┴───┴─────┴─────────┘ ┌─────────┬─────────────────┐ │ 名称 │ 意味 │ ├─────────┼─────────────────┤ │テキストボックスID│テキストボックスを区別するためのID│ ├─────────┼─────────────────┤ │ 文字列領域 │ 文字列取り出しのための領域 │ ├─────────┼─────────────────┤ │ 文字列サイズ │ 文字列領域の長さ(単位はTC) │ └─────────┴─────────────────┘ (F)テキストボックス動作機能の場合 ┌───────────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────────┼─────┼──┤ │ エラーコード │ val │ W │ ├───────────┼─────┼──┤ │テキストボックス現在値│ val │ W │ └───────────┴─────┴──┘ ※valは、値が負の場合にはエラーコードを示し、値が0または正の場合 にはテキストボックス現在値を示す。 ※テキストボックスが有効動作をした場合には、valにGC_ACT(0x1000) がorされる。 エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ evtがNULL │ ├───┼──────┼─────┼─────────┤ │ER_ID │ 不正ID │0xfffb0000│ cidが不正 │ └───┴──────┴─────┴─────────┘ (4)例外条件及び制約条件 生成可能な最大テキストボックス数は、パーツ管理プログラムのパーツ 数と合計して、システム全体で256個である。 テキストボックス文字列が長すぎて表示しきれない場合、はみ出した部 分は表示されない。 テキストボックス文字列の長さは、最大で20文字である。 (5)特記事項 なし ━ 付録1.5 データボックス管理機能 ━━━━━━━━━━━━━━━━━━━ (1)機能説明 GUIミドルウェア機能のうち、 データボックスの管理に関する機能を提 供する。 以下の機能がシステムコールの形で提供される。 (2)入力データ データボックス管理機能には、アプリケーションから以下の入力データ が渡される。 ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │データボックス│ data │TC* │ ├───────┼─────┼──┤ │ ID配列 │ id │ W* │ ├───────┼─────┼──┤ │ 配列サイズ │ size │ W │ ├───────┼─────┼──┤ │ ファイル名 │ filename │TC* │ └───────┴─────┴──┘ ┌───────┬──────────────────┐ │ 名称 │ 意味 │ ├───────┼──────────────────┤ │データボックス│データボックス定義データへのポインタ│ ├───────┼──────────────────┤ │ ID配列 │ 登録したIDを格納するための配列 │ ├───────┼──────────────────┤ │ 配列サイズ │ ID配列のサイズ │ ├───────┼──────────────────┤ │ ファイル名 │ データボックスファイルのファイル名 │ └───────┴──────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ ├──────┼─────┼──┤ │エラーコード│ cnt │ W │ ├──────┼─────┼──┤ │ 登録数 │ cnt │ W │ └──────┴─────┴──┘ ※cntは、値が負の場合にはエラーコードを示し、値が0または正の場合 には登録数を示す。 エラーコードの内容: ┌────┬─────────┬─────┬──────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼──────────────────┤ │ ER_OK │ 正常終了 │ 0 │ − │ ├────┼─────────┼─────┼──────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ dataがNULL │ ├────┼─────────┼─────┼──────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│size・データボックス定義データが不正│ ├────┼─────────┼─────┼──────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ 最大数を超えた │ └────┴─────────┴─────┴──────────────────┘ (4)例外条件及び制約条件 1つのシーン・パネルあたりのパーツ数は、最大で32である。 データボックス定義データは登録後も参照されるので、解放してはなら ない。 (5)特記事項 なし。 (6)機能ブロックの構成及び関連 データボックス管理機能は、データボックス登録機能から構成される。 ┌────────────────┐ │データボックス管理機能 │ │ │ │ ┌────────────┐ │ │ │データボックス登録機能 │ │ │ └────────────┘ │ └────────────────┘ 図 データボックス管理機能の機能ブロック相互関係 付録1.5.1 データボックス登録機能 (1)機能説明 データボックス管理機能のうち、機能を提供する。 以下の機能がシステムコールの形で提供される。 (A)データボックス登録機能 メモリ上に用意したデータボックスを、パネル管理機能を呼び出して登 録する機能。 (B)データボックスファイル出力機能 メモリ上に用意したデータボックスを、ワークファイルに出力する機能。 (C)データボックスファイル入力機能 ファイルとして用意したデータボックスを、パネル管理機能を呼び出し て登録する機能。 (2)入力データ 機能には、アプリケーションから以下の入力データが渡される。 (A)データボックス登録機能の場合 W cnt = gd_reg_dat(TC *data, W *id, W size) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │データボックス│ data │TC* │ ├───────┼─────┼──┤ │ ID配列 │ id │ W* │ ├───────┼─────┼──┤ │ 配列サイズ │ size │ W │ └───────┴─────┴──┘ ┌───────┬──────────────────┐ │ 名称 │ 意味 │ ├───────┼──────────────────┤ │データボックス│データボックス定義データへのポインタ│ ├───────┼──────────────────┤ │ ID配列 │ 登録したIDを格納するための配列 │ ├───────┼──────────────────┤ │ 配列サイズ │ ID配列のサイズ │ └───────┴──────────────────┘ データボックス定義データの形式: シーン定義 ┌───┬────┬────────────────┐ │ 名称 │ 型 │ 具体的な内容 │ ├───┼────┼────────────────┤ │ head │ TC │GD_SCENEとする(シーン定義を示す)│ ├───┼────┼────────────────┤ │ type │ TC │ パーツの種類(1番目) │ ├───┼────┼────────────────┤ │ left │ TC │ パーツ領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パーツ領域top │ ├───┼────┼────────────────┤ │right │ TC │ パーツ領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パーツ領域bottom │ ├───┼────┼────────────────┤ │ val │ TC │ パーツ現在値 │ ├───┼────┼────────────────┤ │ len │ TC │ パーツ文字列長 │ ├───┼────┼────────────────┤ │ str │TC[len] │ パーツ文字列 │ ├───┼────┼────────────────┤ │ head │ TC │ GD_NEXT │ ├───┼────┼────────────────┤ │ type │ TC │ パーツの種類(2番目) │ ├───┼────┼────────────────┤ │ left │ TC │ パーツ領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パーツ領域top │ ├───┼────┼────────────────┤ │right │ TC │ パーツ領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パーツ領域bottom │ ├───┼────┼────────────────┤ │ val │ TC │ パーツ現在値 │ ├───┼────┼────────────────┤ │ len │ TC │ パーツ文字列長 │ ├───┼────┼────────────────┤ │ str │TC[len] │ パーツ文字列 │ ├───┼────┼────────────────┤ │ head │ TC │ GD_NEXT │ ├───┼────┼────────────────┤ │ type │ TC │ パーツの種類(1番目) │ ├───┼────┼────────────────┤ │ left │ TC │ パーツ領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パーツ領域top │ ├───┼────┼────────────────┤ │right │ TC │ パーツ領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パーツ領域bottom │ ├───┼────┼────────────────┤ │ val │ TC │ パーツ現在値 │ ├───┼────┼────────────────┤ │ len │ TC │ パーツ文字列長 │ ├───┼────┼────────────────┤ │ str │TC[len] │ パーツ文字列 │ └───┴────┴────────────────┘ (必要なパーツの数だけ、GD_NEXT以下を繰り返す) パネル定義 ┌───┬────┬────────────────┐ │ 名称 │ 型 │ 具体的な内容 │ ├───┼────┼────────────────┤ │ head │ TC │GD_PANELとする(パネル定義を示す)│ ├───┼────┼────────────────┤ │ left │ TC │ パネル領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パネル領域top │ ├───┼────┼────────────────┤ │right │ TC │ パネル領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パネル領域bottom │ ├───┼────┼────────────────┤ │ type │ TC │ パーツの種類(1番目) │ ├───┼────┼────────────────┤ │ left │ TC │ パーツ領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パーツ領域top │ ├───┼────┼────────────────┤ │right │ TC │ パーツ領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パーツ領域bottom │ ├───┼────┼────────────────┤ │ val │ TC │ パーツ現在値 │ ├───┼────┼────────────────┤ │ len │ TC │ パーツ文字列長 │ ├───┼────┼────────────────┤ │ str │TC[len] │ パーツ文字列 │ ├───┼────┼────────────────┤ │ head │ TC │ GD_NEXT │ ├───┼────┼────────────────┤ │ type │ TC │ パーツの種類(2番目) │ ├───┼────┼────────────────┤ │ left │ TC │ パーツ領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パーツ領域top │ ├───┼────┼────────────────┤ │right │ TC │ パーツ領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パーツ領域bottom │ ├───┼────┼────────────────┤ │ val │ TC │ パーツ現在値 │ ├───┼────┼────────────────┤ │ len │ TC │ パーツ文字列長 │ ├───┼────┼────────────────┤ │ str │TC[len] │ パーツ文字列 │ ├───┼────┼────────────────┤ │ head │ TC │ GD_NEXT │ ├───┼────┼────────────────┤ │ type │ TC │ パーツの種類(1番目) │ ├───┼────┼────────────────┤ │ left │ TC │ パーツ領域left │ ├───┼────┼────────────────┤ │ top │ TC │ パーツ領域top │ ├───┼────┼────────────────┤ │right │ TC │ パーツ領域right │ ├───┼────┼────────────────┤ │bottom│ TC │ パーツ領域bottom │ ├───┼────┼────────────────┤ │ val │ TC │ パーツ現在値 │ ├───┼────┼────────────────┤ │ len │ TC │ パーツ文字列長 │ ├───┼────┼────────────────┤ │ str │TC[len] │ パーツ文字列 │ └───┴────┴────────────────┘ (必要なパーツの数だけ、GD_NEXT以下を繰り返す) 終端定義 ┌──┬─┬──────┐ │名称│型│具体的な内容│ ├──┼─┼──────┤ │head│TC│GD_ENDとする│ └──┴─┴──────┘ (B)データボックスファイル出力機能の場合 W err = gd_wri_dat(TC *filename, TC *data) ┌───────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├───────┼─────┼──┤ │データボックス│ data │TC* │ ├───────┼─────┼──┤ │ ファイル名 │ filename │TC* │ └───────┴─────┴──┘ ┌───────┬──────────────────┐ │ 名称 │ 意味 │ ├───────┼──────────────────┤ │データボックス│データボックス定義データへのポインタ│ ├───────┼──────────────────┤ │ ファイル名 │ データボックスファイルのファイル名 │ └───────┴──────────────────┘ (C)データボックスファイル入力機能の場合 W cnt = gd_rea_dat(TC *filename, W *id, W size) ┌─────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├─────┼─────┼──┤ │ ID配列 │ id │ W* │ ├─────┼─────┼──┤ │配列サイズ│ size │ W │ ├─────┼─────┼──┤ │ファイル名│ filename │TC* │ └─────┴─────┴──┘ ┌─────┬─────────────────┐ │ 名称 │ 意味 │ ├─────┼─────────────────┤ │ ID配列 │ 登録したIDを格納するための配列 │ ├─────┼─────────────────┤ │配列サイズ│ ID配列のサイズ │ ├─────┼─────────────────┤ │ファイル名│データボックスファイルのファイル名│ └─────┴─────────────────┘ (3)出力データ アプリケーションへは以下の出力データが渡される。また、「(B)デー タボックスファイル出力機能」の場合、システムコールの副作用として ワークファイルが生成される。 (A)データボックス登録機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cnt │ W │ ├──────┼─────┼──┤ │ 登録数 │ cnt │ W │ └──────┴─────┴──┘ ※cntは、値が負の場合にはエラーコードを示し、値が0または正の場合 には登録数を示す。 エラーコードの内容: ┌────┬─────────┬─────┬──────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼──────────────────┤ │ ER_OK │ 正常終了 │ 0 │ − │ ├────┼─────────┼─────┼──────────────────┤ │ ER_ADR │ 不正アドレス │0xffff0000│ dataがNULL │ ├────┼─────────┼─────┼──────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│size・データボックス定義データが不正│ ├────┼─────────┼─────┼──────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ 最大数を超えた │ └────┴─────────┴─────┴──────────────────┘ (B)データボックスファイル出力機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ err │ W │ └──────┴─────┴──┘ エラーコードの内容: ┌───┬──────┬─────┬─────────┐ │ 名称 │ 意味 │ 値 │具体的なエラー内容│ ├───┼──────┼─────┼─────────┤ │ER_OK │ 正常終了 │ 0 │ − │ ├───┼──────┼─────┼─────────┤ │ER_ADR│不正アドレス│0xffff0000│ dataがNULL │ └───┴──────┴─────┴─────────┘ (C)データボックスファイル入力機能の場合 ┌──────┬─────┬──┐ │ 名称 │ニモニック│型名│ ├──────┼─────┼──┤ │エラーコード│ cnt │ W │ ├──────┼─────┼──┤ │ 登録数 │ cnt │ W │ └──────┴─────┴──┘ ※cntは、値が負の場合にはエラーコードを示し、値が0または正の場合 には登録数を示す。 エラーコードの内容: ┌────┬─────────┬─────┬──────────────────┐ │ 名称 │ 意味 │ 値 │ 具体的なエラー内容 │ ├────┼─────────┼─────┼──────────────────┤ │ ER_OK │ 正常終了 │ 0 │ − │ ├────┼─────────┼─────┼──────────────────┤ │ ER_PAR │ 不正パラメータ │0xfffe0000│size・データボックス定義データが不正│ ├────┼─────────┼─────┼──────────────────┤ │ER_NOSPC│システムメモリ不足│0xfffc0000│ 最大数を超えた │ └────┴─────────┴─────┴──────────────────┘ (4)例外条件及び制約条件 1つのシーン・パネルあたりのパーツ数は、最大で32である。 データボックス定義データは登録後も参照されるので、解放してはなら ない。 (5)特記事項 なし ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■