Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
クラス
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
関数
システム関数
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
改版履歴
軽微な修正にあたるものは、本改版履歴には記載を行わずGitHub上の改版のみとなります。必要に応じて修正を引用ください。
TWELITE STAGE の配布パッケージリリース後の修正・追加分などはGitHubレポジトリに格納しております。必要に応じて配布パッケージの位置を差し替えて利用いただくようお願いいたします。
MWSDKの他の更新が必要になる場合があります。更新時のリリース記述を参照してください。MWSDKの更新についてはこちらを参照ください。
ライブラリのソースコードは GitHub (https://github.com/monowireless/mwx)にて公開しています。ライブラリのソースコードの差し替えは、以下の手順で行ってください。
各リリースのリンクよりGitのクローンを行うか zip 形式でソースコードをダウンロードします。
以下のフォルダの内容を差し替えます。
リリース前の更新については上記に掲載する場合があります。
ヒープ領域へのメモリ確保を行う Wire オブジェクトを変更した。
utils.h
での名前の衝突を避けるため、関数名をG_OCTET()
からG_BYTE()
に変更した。
attachIntDio()
において、vAHI_DioInterruptEnable()
の順番を変更した。
ユニバーサルレシーバ (NWK_LAYERED, NWK_SIMPLE またはネットワークレスパケットを同一実行コードで受信する) をサポートするために the_twelite.network2
を追加した。
NWK_LAYERED を追加 (現時点では親機受信のみ対応)
MWXの初期化時にアプリケーションのバージョンを設定する MWX_Set_Usder_App_Ver()
関数を導入した。
mwx::pnew() を追加し配置newの記述を簡素化した。
EASTLのサポート追加
EASTL用のnew[]
演算子の追加
MWXのソースコードのほとんどをプリコンパイルし、コンパイルの高速化を図った。
修正されました。DIOイベントが無関係なポートに引き渡されていたのを修正。
インタラクティブモード中で Serialクラスオブジェクトを用いた出力を可能とする内部手続きを追加 (Serial._force_Serial_out_during_intaractive_mode()
)
Serial1
のポート、代替ポートの定義が適切でなかった
Serial
(UART0)のボーレートを変更できるようにした
受信パケット(on_rx_packet()
)、送信完了(on_tx_comp()
)を知らせるイベントコールバックを追加
コールバック関数の定義をしなければ従前の手続きも利用可能
<STG_STD>
インタラクティブモード設定の定義ID間違いや一部デフォルト値の変更など
<STG_STD>
インタラクティブモード設定でAppIDに加えて、チャネルと論理デバイスIDのデフォルト値を変更できるようにした
the_twelite
と <NWK_SIMPLE>
オブジェクトの設定を、一部の設定についてインタラクティブモード<STG_STD>
オブジェクトで行えるようにした
<NWK_SIMPLE>
で再送回数のデフォルト値を設定できるようにした
<STG_STD>
インタラクティブモードの画面が出ている間はアプリケーションからのSerial
(UART0)の入出力を行わないようにした
CUE::PIN_SET
, PAL???"":PIN_SET
を追加 (PIN_BTN
はボタンのないCUEでPIN_BTN
を用いるのは不自然であるため)
random()
の名前空間をmwx::
に移動 (グローバル名にエリアス)
MONOSTICKのウォッチドッグ設定を32ms単位で行うようにした
BRD_TWELITE
を用いスリープを行うと、復帰時にピンが正しく初期化されなかった
TWELITE CUE のボードビヘイビア(https://mwx.twelite.info/v/v0.1.7/boards/cue)を追加。
NWK_SIMPLE 利用時に NWK_SIMPLE 形式でない他のパケット(ネットワーク利用無し)を受信する方法を追加。NWK_SIMPLE::receive_nwkless_pkt()
を追加してNWK_SIMPLEを初期化する。 このパケット情報を用いる場合は .get_psRxDataApp()
による TWENET C ライブラリ層の構造体、および .get_payload()
により得られるデータ配列のみを利用してください。受信パケット(auto&& rx = the_twelite.receiver.read()
)の他のメソッドから得られる情報は不定です。
get_stream_helper()
コードのリファインと読み書き位置のAPIの整備。
smplbuf::get_stream_helper()
の不具合修正
serparser/pktparser
を他のプラットフォームでビルドできるようサンプルを用意しました (https://github.com/monowireless/mwx/tree/master/stdio)
商・余を計算する div100()
をSerial等へ出力できるようにした
smplbuf<>
配列クラスの実装変更。消費メモリの削減などを目的としてmwx::stream
の継承をやめ、別途継承クラスとヘルパークラス定義した
mwx_printf()
mwx_snprintf()
の関数を追加した
the_twelite.stop_watchdog()
, the_twelite.restart_watchdog()
を追加した
mwx::stream
のメンテナンス: operator bool()
の廃止。読み出しタイムアウトの設定で 0xff を指定した場合(.set_timeout(0xff)
)タイムアウトを無効に。その他 <<
演算子の定義を追加。
NOTICE PAL / PCA9632 のサポートを追加 (解説 https://mwx.twelite.info/v/latest/boards/pal/pal_notice, サンプル https://github.com/monowireless/Act_samples/tree/master/Unit_using_PAL_NOTICE)
除算を行わない 8bit と 0..1000 間のスケール関数を追加。
10,100,1000による除算(商と余を同時に計算) div10()
, div100()
, div1000()
を追加。値域を制限し乗算とビットシフトを中心に構成。
暗号化パケットの対応メソッドを追加
packet_rx::is_secure_pkt()
: 受信パケットが暗号化されているかどうかの判定
STG_STD::u8encmode()
: インタラクティブモードでの暗号化設定を取得
STG_STD::pu8enckeystr()
: インタラクティブモードでの暗号化鍵バイト列の取得
Serial1: デフォルトのポートは半導体の仕様では I2C と重複する DIO14,15 だが、通常 I2C に割り当てられるため DIO11(TxD), DIO9(RxD) とした。
Serial: ボーレートの指定で /100 が発生するが、主要なボーレートについてこの計算を省略するようにした。
Serial: available()
, read()
を外部で実施するための代理関数の保持を void*
のみとし、仕様メモリを 8bytes 削減。
typedef boolean
の追加
ネットワーク: 暗号化の対応を追加。
暗号化を有効にするには NWK_SIMPLE::secure_pkt(const uint8_t*, bool = false)
を設定追加する。1番目のパラメータは暗号キー、2番目を true
にすると、平文のパケットも受信する。
SHT3xとBME280のセンサーサポート追加
センサー: レガシーコード(Cライブラリのラッパクラス)で、設定パラメータや状態をやり取りするための仕掛けを追加した。
センサー: SHT3x, BME280では I2C アドレスを指定可能とした。
設定: hide_items()
を追加。不要な設定項目を削除可能。
設定: H/W UTIL メニューを追加。DIの状態表示、I2Cのプローブ、PAL EEPROM内容の表示。
設定: 暗号化関連のメニューの追加
I2C関連の修正(TwoWireクラスを用いて実装されたコードとの親和性を向上するための修正)
requestFrom(false)
の処理時に NO_STOP メッセージの送信コードが無かったため処理が正常に行われなかった。
TwoWire
のクラス名エリアスを追加した。
begin()
処理で、多重初期化しないようにした。
setClock()
メソッドを追加(ただしダミー関数で何もしない)
WIRE_CONF::WIRE_???KHZ
を追加。バスクロックの主要な設定値を追加した。
チャネルマネージャ chmgr
の実装
delayMilliseconds()
の追加
digitalReadBitmap()
の追加
delay()
の精度向上
Serial1
インスタンスが定義されていない問題を修正
Analogue
の割り込みハンドラが呼び出されない問題を修正
MWSDK2020_05 に対応
重複チェッカ duplicate_checker の初期化等に不備があり期待通りの除去を行っていなかった
format() の実装を機種依存の少ないものとした。また、引数を最大8までとした。64bit引数が含まれる場合は引数の数は制限される。
修正は MWSDK2020_05 を前提としています。
本修正については、更新を推奨します。
MWSDK2020_04 に対応
Timer0..4の初期化の問題を修正
mwx::format() の内部処理を変更
インタラクティブモード対応のための実験的なコードの追加
本修正は MWSDK2020_04 を前提としています。
本修正については、更新を推奨します。
パケット内の中継フラグの扱いについての問題を修正
本修正については、更新を推奨します。
初版リリース (SDL 2019/12月号収録)
ライブラリ名 | 依存バージョン |
---|---|
ライブラリ名 | 依存バージョン |
---|---|
ライブラリ名 | 依存バージョン |
---|---|
ライブラリ名 | 依存バージョン |
---|---|
ライブラリ名 | 依存バージョン |
---|---|
ライブラリ名 | 依存バージョン |
---|---|
ライブラリ名 | 依存バージョン |
---|---|
mwx
twesettings
TWENET C
1.3.5
mwx
twesettings
TWENET C
1.3.5
mwx
twesettings
TWENET C
1.3.5
mwx
twesettings
TWENET C
1.3.4
mwx
twesettings
TWENET C
1.3.4
mwx
twesettings
TWENET C
1.3.4
mwx
twesettings
TWENET C
1.3.3
保証・ライセンス
本パッケージ内で、ライセンス上特別な記述のないものは、モノワイヤレスソフトウェア使用許諾契約書(MW-SLA)を適用します。
本ドキュメントについても、本ライブラリパッケージ部の一部としてMW-SLA下の取り扱いとします。
本ソフトウェアについては、モノワイヤレス株式会社が正式にサポートを行うものではありません。お問い合わせにはご回答できない場合もございます。予めご了承ください。
不具合などのご報告に対してモノワイヤレス株式会社は、修正や改善をお約束するものではありません。
また導入パッケージなどお客様の環境に依存して動作しない場合もございます。
MWXライブラリについて
MWX ライブラリは、TWELITE モジュールのプログラムをより容易にかつ拡張性を高めるために設計されています。これまでMWSDKで利用していた TWENET C ライブラリを基本とし、MWXライブラリはアプリケーション開発層のライブラリとして開発しております。
MWX ライブラリの名称は Mono Wireless C++ Library for TWELITE です。MW は MonoWireless から、また C++ -> CXX -> double X -> WX。この MW と WX を重ねて MWX になりました。
このライブラリを用いて記述したコードを「アクト(act)」と呼びます。
本解説での表記について記載します。
ユニバーサル参照と呼ばれ、標準ライブラリなどで良く用いられます。当ライブラリでもほとんどの場合auto&&
と記載します。
auto
はC言語ではローカル変数(自動変数)を宣言する際のキーワードとなっていますが、ここでは型推論により宣言を行う意味です。C++のテンプレート構文では非常に煩雑な型名になることが多く、同時に型名を明示的に記述しなくても実装できる場面で便利な記法です。
下記の例では、v
の型に対する最大値最小値を発見する標準ライブラリのアルゴリズム std::minmax_element
を用いた例で、結果の戻り値を auto
により宣言しています。この場合、autoで推論された型はstd::pair<int, int>
になります。
auto &&
の&&
ついては、厳格な意味合いは専門書籍などを紐解いていただく必要がありますが、ここでは「戻りが参照型(C言語でいうポインタ渡しに近い)であっても値であっても、気にせず宣言できる」とお考え下さい。
namespace, inline namespace, using
を用いて、名前の再定義などを行っています。解説中でも一部省略して記載しています。
MWXライブラリは、下層に位置する各ライブラリ・機能(TWNET Cライブラリでの機能、また半導体ベンダが提供するマイコン・ペリフェラル機能、IEEE802.15.4の機能)について、その全てに対応する目的では開発しておりません。
MWXライブラリはC++言語で記述されておりアクトの記述においても C++ での記述を行うことになります。しかしながらC++言語であってもすべての機能が使えるわけではありません。特に以下の点に注意してください。
new, new[]
演算子でのメモリ確保は行えますが、確保したメモリを破棄することはできません。C++ライブラリで動的メモリ確保をするものは殆どが事実上利用不可能です。
グローバルオブジェクトのコンストラクタが呼び出されません。
参考:必要な場合は、初期化関数(setup()
) で new ((void*)&obj_global) class_foo();
のように初期化することでコンストラクタの呼び出しを含めた初期化を行えます。
例外 exception
が使用できません。
仮想関数 virtual
が使用できません。
上記の制約があるためSTLなどC++標準ライブラリの一部のみの利用となります。
※ 当社で把握しているものについての記載です。
標準ライブラリについては利用可否、また利用できそうなものについての包括的な検証は行っておりません。動作の不都合が確認できた場合は、別の方法で実装するようにしてください。
ソースコードは以下から参照できます。
{MWSDKインストールフォルダ}/TWENET/current/src/mwx
用語
本資料で利用する用語について補足します。
用語の解説は、規格などで定められる定義に沿っていない場合があります。
ソフトウェア開発環境
TWELITE無線マイコンのソフトウェア開発用のSDKをTWELITE SDK (またはMWSDK)と呼称します。
TWELITE無線モジュールが利用する無線規格です。MWXライブラリを使用する限り、無線規格の詳細を意識する必要はありません。
無線通信における最小の通信単位です。
最大量は通信方式や通信時の設定によって変わりますが、MWXライブラリ標準の通信<NWK_SIMPLE>では、ユーザが1パケットで送信できるデータ量は90バイトです。
「貨物」といった意味合いですが、無線パケットに含まれるデータ本体のことをいいます。
「点・節」といった意味合いですが、無線ネットワーク内の無線局のことを言います。
本ライブラリを用いて作成したプログラム。そのソースコードまたは動作するプログラムのことを言います。
アクトの中でも特にイベント形式のプログラム。そのソースコードまたは動作するプログラムのことを言います。
ビヘイビアは1つのクラス定義による記述で、TWENETからのコールバック関数やイベントや割り込み処理を記述しひとまとめにしています。MWXライブラリでは以下の3種類のビヘイビアがあります。
アプリケーションビヘイビア:イベントドリブンでのアプリケーション記述を行い、ユーザが定義するクラス。
ボードビヘイビア:TWELITE無線モジュールを実装するボードの機能利用を簡素化するためのクラス。
ネットワークビヘイビア:無線ネットワークの手続きを簡素化するためのクラス。
ビヘイビア名は < >
で括って表記します。例えばシンプル中継ネットワークのビヘイビア名は <NWK_SIMPLE>
です。
本ライブラリの解説では、ライブラリで最初からグローバル宣言されたオブジェクトをクラスオブジェクトと呼称します。Serial
, Wire
などです。これらクラスオブジェクトは手続きなしまたは開始手続きを行うことで利用できます。
メモリを比較的多く消費するクラスオブジェクトは、初期化手続きの際(.setup()
または.begin()
メソッド)に初期化パラメータに沿ったメモリを確保します。
一般の用語です。C言語の知識を前提に解説します。
C++言語のこと。
MWXライブラリはC++とC言語によって記述されています。
C++規格のバージョンの一つ。2011年式のC++といった意味合いで、2011年にISOで規格化されています。直前のC++03から大きく機能拡張されています。C++14, C++17といったより新しいバージョンがあります。
MWXライブラリはC++11で追加された機能や構文を用いて実装されています。MWSDKのコンパイラ対応はC++11までとなります。
あるデータに注目して、その手続きをひとまとめにしたもの。構造体に、その構造体を取り扱うための手続きが含まれています。実際にはもっと深い話題に発展しますが、専門書を参考にしてください。
C++においては、キーワードの struct
と class
は本質的には同じもので、いずれのキーワードで宣言してもクラスとなります。
上記のクラス定義をC言語でも行った場合、例えば以下のようになります。
既存のC言語のライブラリやその内部の構造体などをクラスに包含し、C++特有の機能性を追加するなどして、利用の便を図ったものです。解説中でも「~構造体をラップした」といった記述をする場合があります。
MWXライブラリは、TWENETのCライブラリのラッパークラスと、新たに実装したクラス群との組み合わせになっています。
クラスに定義される関数で、クラスに紐付いています。
クラスを実体化(メモリ確保)したもの。
本解説ではオブジェクトとインスタンスは同じ意味合いとして取り扱っています。
オブジェクト生成時の初期化手続き。
コンストラクタと対になってオブジェクトが破棄されるときの手続きです。
C++では仮想クラスによりポリモーフィズム(多態性)を実現します。具体的にはvirtual
キーワードで指定た純粋仮想関数を定義したクラスです。
MWXライブラリでは、コンパイラの制限や性能上の理由で仮想関数を使用しません。ポリモーフィズムを実現するのに別の手法を用いています。
C/C++言語では { }
で括った範囲と考えてください。この中で生成したオブジェクトは、スコープから出るときに破棄されます。この時デストラクタが呼び出されます。
以下は、明示的にスコープを設定したものです。helo2
は8行目まで実行された時点で破棄され、デストラクタが呼び出されます。
MWXライブラリでは以下のような記法を用いています。ここではif文の条件判定式内で宣言(C89といった旧いC言語ではこういった場所での宣言はできません)されたオブジェクトの有効期間は、if文の{}
内になります。
例えば二線シリアルバスなど、開始と終了の手続きがあって、その間だけオブジェクトによってバスを操作するような手続きです。オブジェクトの生成後、バスの接続が適切であればif文のtrue節が実行され、生成したオブジェクトによってバスの書き込みまたは読み出しを行います。バスの読み書き操作が終了したらif文を脱出し、この時デストラクタが呼び出され、バスの利用終了手続きが行われます。
定義名の重複を避けるためC++では名前空間が積極的に用いられます。名前空間にある定義にアクセスするには::
を用います。
テンプレートはC言語のマクロを拡張したものと考えてください。
この例では、簡単な配列を定義しています。T
とN
はテンプレートのパラメータで、T
は型名をN
は数値を指定し、T
型で要素数N
の配列クラスを定義しています。
C++11ではNULLポインタをnullptr
と記述するようになりました。
C++では、参照型を利用できます。これはポインタによるアクセスに似ていますが、必ずオブジェクトを参照しなければならないという制約があります。
以下のような参照渡しのパラメータを持つ関数ではi
の値をincr()
内で書き換えることが出来ます。
テンプレートの解説例ですがoperator[]
の戻り型をT&
に変更しています。こうすることでa[0]=1
のように配列内部のデータに対して直接代入操作ができるようになります。
MWXライブラリのプログラミングインタフェースは、原則といてポインタ型の利用をせず、参照型を用いています。
C++11 では型推論のauto
キーワードが導入されています。これはコンパイラが初期化の記述からそのオブジェクトの型を推論するため、具体的な型名の記述を省略できます。これはtemplateを用いたクラス名が非常に長くなるような場合に効果的です。
解説中では多くの場合ユニバーサル参照と呼ばれるauto&&
を用いています。ユニバーサル参照については、ここでは参照渡しの場合も意識せずに記述できるものと考えてください。
配列など特定のデータ型のオブジェクトを複数個格納するためのクラスをコンテナと呼びます。テンプレートの例で挙げたmyary
のような配列クラスもコンテナと呼んでいます。
MWXライブラリでは、配列クラスsmplbuf
とFIFOキュークラスsmplque
を用意しています。
C言語で言うところのポインタ(もちろんC++でも同じようにポインタは使えます)を拡張した概念です。C言語のポインタは、メモリが連続した要素を先頭から末尾まで連続的にアクセスする手段と考えることが出来ます。FIFOキューを考えてみます。もっとも単純なキューの実装はリングバッファによるものですが、メモリーの連続性はありません。こういったデータ構造であっても、イテレータを用いるとポインタと同じように記述できます。
イテレータを取得するため.begin()
,.end()
のメソッドが用いられます。コンテナの先頭を指すイテレータを.begin()
で取得します。末尾の次を指すイテレータを.end()
で取得します。末尾ではなく、末尾の次である理由にはforやwhile文のループ記述の明快さ、コンテナに格納される要素数が0の場合の取り扱いが挙げられます。
上記では、que
の各要素について、イテレータp
を用いて各要素にsome_process()
を適用しています。p
は++
演算子によって次の要素を指すイテレータとしてインクリメントしています。本来ポインタでは記述できないデータ構造を持つコンテナであっても、このようにポインタを用いた処理と同じような処理が出来ます。
.end()
が末尾の次を示すため、while文の終了判定は(p != e)
のように簡潔です。キューに要素がない場合は.begin()
は.end()
と同じイテレータを返します。(何も格納されていない要素のイテレータの次ですから、最初に格納すべき領域を示すイテレータと考えればよいでしょう)
メモリ上で連続したコンテナの場合、通常、そのイテレータは通常のポインタとなります。その操作時に大きなオーバーヘッドにはならないことが期待できます。
C++の標準ライブラリにはSTL(Standard Template Library)が含まれます。MWXライブラリでの一部を利用しています。
TWELITE向けのC/C++コンパイラの制約から、利用できる機能はごく一部です。
例えば最大や最小値を求めるといった処理をC言語では型に応じて別々に記述していました。こういったコードは型の部分だけ違って他は同じといったものも少なくありません。C++ではtemplateやイテレータなどを用いて、こういった処理を型に依存せず記述することができます。これをアルゴリズムと呼んでいます。
例えば上記のように最大値を求めるアルゴリズムです。このアルゴリズムは型に依存しません。(ジェネリックプログラミングと呼ばれます)
ここではque
のイテレータを指定し、その最大と最小を得るアルゴリズムstd::minmax_elenet
を適用しています。std::minmax_elemet
はC++標準ライブラリ内に定義されています。その戻り値は任意の2つの値を組み合わせるstd::pair
です。このアルゴリズムは、イテレータの示す要素同士で<,>,==
といった演算子での比較が出来れば最大と最小を計算してくれます。戻り型もイテレータの型から導かれます。
環境 (OSなど)
開発環境を構築するためには、ソフトウェア群のインストール、またこれらの利用許諾に同意する必要があります。また、PC、ワークステーション上でセキュリティ設定等が必要になる場合があります。
配布時には十分注意しておりますが、ウィルスなどの確認はお客様のほうでも留意いただくようお願いいたします。
お客様のセキュリティの考え方や運用(例:外部アプリケーションのインストールの可否)については、お客様の環境の管理者にご確認ください。
また、開発環境をインストールまた動作するにあたり、OSが介在し設定等必要になる場合があります(例:開発元が不明なアプリケーションの実行。開発環境または紹介するツール群の多くは、アプリケーションは開発元を証明する仕組みが組み込まれせん)。設定方法については、一般の情報を参考いただくようお願いいたします。
MWXライブラリを用いてアプリケーションを記述するには以下が必要です。
MWSDK(ソフトウェア開発環境)
開発用エディタ(Microsoft社のVisualStudio Codeを紹介します)
コンパイラのツールチェインなどは比較的環境への依存度が低いため、多くの環境で動作することが期待できますが、現在サポート中のWindows10,11バージョンを推奨します。動作環境の差異により動作しないような場合は、当社で確認している環境を参考に別途環境を用意してください。
以下、開発で使用しているバージョンを挙げます。
Windows11 21H2 (Visual Studio 2019)
FTDI社のドライバが動作していること (MONOSTICK, TWELITE Rを動作させるため)
WSL (Windows Subsystem Linux) 環境下でもコンパイラを動作させることが出来ます。ただしコンパイルのみでファームウェアの書き換え等はWindows10上のユーティリティから実施してください。
WSL環境は必須ではありません。
コンパイラのツールチェインなどは比較的環境への依存度が低いため、多くの環境で動作することが期待できますが、現在サポート中のディストリビューションを推奨します。動作環境の差異により動作しないような場合は、当社で確認している環境を参考に別途環境を用意してください。
以下、開発で使用しているバージョンを挙げます。
Ubuntu 18.04 LTS 64bit
Ubuntu 20.04 LTS 64bit
*32bitのシステムはサポートしません。
コンパイラのツールチェインなどは比較的環境への依存度が低いため、多くの環境で動作することが期待できますが、現在サポート中のディストリビューションを推奨します。動作環境の差異により動作しないような場合は、当社で確認している環境を参考に別途環境を用意してください。
以下、開発で使用しているバージョンを挙げます。
macOS 10.14.6 (Mojave Intel)
macOS 12.4 (Monterey Apple Silicon)
開発環境を動作させるための環境や使用方法については、その開発元やコミュニティの情報を参照ください。
コード記述作業の効率面で Visual Studio Code (VSCode) の利用を推奨します。
MWXライブラリでは、C言語の開発に比べ、読み込むヘッダファイルが多くなるため、VSCode上でのコード解釈等にはより多くのPCのリソースを要求します。
Linux/WSL環境下/macOSのビルド結果はWindows10の結果と異なります。通常系の動作で差異が見られることは当社が把握する限りありませんが、特にgccのLTOを無効にしているためバイナリサイズが数%程度大きくなる傾向にあります。
動作等に疑問を感じた際は、必ず Windows10,11 上のビルドを実施し再現することを確認してから、お問い合わせください。
TWELITE SDK のインストール
TWELITE STAGE SDK 配布アーカイブ(ZIPなど)をダウンロードし、適切なフォルダに展開します。
展開先の各階層のフォルダ名には、半角数字 0..9
, 半角アルファベットa..zA..Z
,一部の記号 -_.
以外は含まれないようにしてください。空白や漢字・ひらがななどが含まれてはいけません
通常のインストール作業はここまでです。続く「環境変数の設定」以下は必要に応じて参照してください。
TWELITE STAGE アプリを用いる場合は、環境変数の設定は不要です。コマンドラインでビルドを行う場合は設定してください。
MWSDK_ROOT
, MWSDK_ROOT_WINNAME
(Windows10のみ) の設定が必要です。
ここでは展開後のフォルダ名を C:\MWSTAGE
とします。別のフォルダにインストールした場合は、読み替えてください。
C:\MWSTAGE\Tools\SET_ENV.CMD
を実行してください。以下の環境変数を設定します。
MWSDK_ROOT
MWSDK_ROOT_WINNAME
例えば以下のような設定になります。
インストールしたPC上からTWELITE STAGE SDKをアンインストールするには以下を行ってください。
UNSET_ENV.cmd
を実行してください。環境変数の設定を解除します。
MWSTAGEフォルダを削除してください。
開発環境やシェルに MWX_ROOT
環境変数を反映されるように設定してください。
方法はいくつかありますが、ホームフォルダの.profile
(ファイルがなければ新しく作成してください)に以下の設定を追加します。この設定でVSCodeのビルドまで可能です。
MWSDK_ROOT=/foo/bar/MWSTAGE/MWSDK/
export MWSDK_ROOT
エディタを使用せずに追加するには以下のようにコマンド入力します。$
はプロンプトで環境によって表示が違います。/foo/bar/MSWSDK
の部分はインストールしたフォルダに応じて書き換えてください。
開発環境やシェルに MWX_ROOT
環境変数を反映されるように設定してください。
方法はいくつかありますが、ホームフォルダの.profile
(ファイルがなければ新しく作成してください)に以下の設定を追加します。この設定でVSCodeのビルドまで可能です。
MWSDK_ROOT=/foo/bar/MWSTAGE/MWSDK/
export MWSDK_ROOT
エディタを使用せずに追加するには以下のようにコマンド入力します。$
はプロンプトで環境によって表示が違います。/foo/bar/MSWSDK
の部分はインストールしたフォルダに応じて書き換えてください。
環境全体にMWSDK_ROOT
を適用にするにはLaunchDを用います。
VSCodeの一部の設定で環境変数を参照していますが、ビルドには必須ではありません。
TWELITE STAGE SDK アーカイブ展開後のフォルダ例です (windows, c:\work\MWSTAGE\...
)
詳しくはを参照してください。