+++ /dev/null
-/**\r
- * @fileOverview SPIクラスを定義します。\r
- */\r
-(function(){\r
-var NS=mbedJS;\r
-var MI=MiMicJS;\r
-\r
-/**\r
- * SPIクラスです。\r
- * <a href="https://mbed.org/handbook/SPI">mbed::SPI</a>と同等の機能を持ちます。\r
- * @name mbedJS.SPI\r
- * @constructor\r
- * @param {mbedJS.Mcu} i_mcu\r
- * インスタンスをバインドするMCUオブジェクトです。\r
- * @param {[PinName,PinName,PinName]} i_params\r
- * SPIを構成する3つのPinNameを格納する配列です。mosi,miso,sclkの順番です。\r
- * @param {HashMap|Generator|function} i_handler\r
- * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。\r
- * <p>\r
- * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。\r
- * <ul>\r
- * <li>{function()} onNew -\r
- * インスタンスが使用可能になった時に呼び出されます。\r
- * </li>\r
- * <li>{function(v)} onWrite -\r
- * write関数のコールバック関数です。\r
- * <ul>\r
- * <li>{int} v - 受信した8BIT値です。</li>\r
- * </ul>\r
- * </li>\r
- * <li>{function(v)} onFrequency -\r
- * frequency関数のコールバック関数です。\r
- * </li>\r
- * <li>{function(v)} onFormat -\r
- * format関数のコールバック関数です。\r
- * </li>\r
- * </ul>\r
- * <p>\r
- * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。\r
- * </p>\r
- * <p>\r
- * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。\r
- * </p>\r
- * @return {mbedJS.SPI}\r
- * @example //Callback\r
- * var mcu=new mbedJS.Mcu("192.168.128.39",\r
- * {\r
- * onNew:function(){\r
- * var pin=new mbedJS.SPI(mcu,[mbedJS.PinName.p5,mbedJS.PinName.p6,mbedJS.PinName.p7],{\r
- * onNew:function(){\r
- * pin.frequency(1000000);\r
- * },\r
- * onFrequency:function()\r
- * {\r
- * pin.format(8,3);\r
- * },\r
- * onFormat:function()\r
- * {\r
- * pin.write(39);\r
- * },\r
- * onWrite:function(v){\r
- * mcu.close();\r
- * }});\r
- * },\r
- * onClose:function(){\r
- * },\r
- * onError:function(){\r
- * }\r
- * });\r
- * @example //Generator\r
- * var g=function*(){\r
- * try{\r
- * var mcu=new mbedJS.Mcu("192.168.128.39",g);\r
- * yield mcu.waitForNew();\r
- * var pin=new mbedJS.SPI(mcu,[mbedJS.PinName.p5,mbedJS.PinName.p6,mbedJS.PinName.p7],g);\r
- * yield pin.waitForNew();\r
- * yield pin.frequency(1000000);\r
- * yield pin.format(8,3);\r
- * v=yield pin.write(39);\r
- * yield mcu.close();\r
- * }catch(e){\r
- * mcu.shutdown();\r
- * }\r
- * }();\r
- * g.next();\r
- */\r
-var CLASS=function SPI(i_mcu,i_params,i_handler)\r
-{\r
- try{\r
- var _t=this;\r
- _t._mcu=i_mcu;\r
- _t._lc=CLASS;\r
- var cb=MI._initHandler.call(_t,i_handler);\r
- MI.assertInt(i_params);\r
- _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1]+","+i_params[2]+","+NS.PinName.NC,\r
- function(j)\r
- {\r
- _t._oid=j.result[0];\r
- if(cb){cb();}\r
- if(_t._gen){_t._gen.next(_t);}\r
- _t._lc=null;\r
- } \r
- );\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- \r
-}\r
-CLASS.prototype=\r
-{\r
- /** @private */\r
- RPC_NS:"mbedJS:SPI",\r
- /** @private 最後にコールしたAPIです。*/\r
- _lc:null,\r
- /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/\r
- _gen:null,\r
- /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/\r
- _event:{},\r
- /** @private リモートインスタンスのオブジェクトIDです。*/\r
- _oid:null,\r
- /**\r
- * Generatorモードのときに使用する関数です。\r
- * Generatorモードの時は、yieldと併用してnew SPI()の完了を待ちます。\r
- * @name mbedJS.SPI#waitForNew\r
- * @function\r
- */\r
- waitForNew:function SPI_waitForNew()\r
- {\r
- try{\r
- if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}\r
- this._lc=CLASS.waitForNew;\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- } \r
- }, \r
- /**\r
- * SPI Slaveに値を書き込み、戻り値を返します。\r
- * 関数の完了時にonWriteイベントが発生します。\r
- * Generatorモードの時は、yieldと併用して完了を待機できます。\r
- * @name mbedJS.SPI#write\r
- * @function\r
- * @param {int} i_value\r
- * @return {int}\r
- * Callbackモードの時はRPCメソッドのインデクスを返します。\r
- */\r
- write:function SPI_write(i_value)\r
- {\r
- try{\r
- var _t=this;\r
- MI._assertYield.call(_t);\r
- var cb=MI._getCb(arguments,_t._event.onWrite);\r
- _t._lc=CLASS.write;\r
- MI.assertInt(i_value);\r
- return _t._mcu.rpc(_t.RPC_NS+":write",_t._oid+","+i_value,\r
- function(j){\r
- var v=j.result[0];\r
- if(cb){cb(v);}\r
- if(_t._gen){_t._gen.next(v);}\r
- _t._lc=null;\r
- }\r
- );\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- },\r
- /**\r
- * frequencyに値を設定します。\r
- * 関数の完了時にonFrequencyイベントが発生します。\r
- * Generatorモードの時は、yieldと併用して完了を待機できます。\r
- * @name mbedJS.SPI#frequency\r
- * @function\r
- * @param {int} i_value\r
- * frequencyに設定する値です。\r
- * @return {int}\r
- * Callbackモードの時はRPCメソッドのインデクスを返します。\r
- */\r
- frequency:function SPI_frequency(i_value)\r
- {\r
- try{\r
- var _t=this;\r
- MI._assertYield.call(_t);\r
- var cb=MI._getCb(arguments,_t._event.onFrequency);\r
- _t._lc=CLASS.frequency;\r
- MI.assertInt(i_value);\r
- return _t._mcu.rpc(_t.RPC_NS+":frequency",_t._oid+","+i_value,\r
- function(j){\r
- if(cb){cb();}\r
- if(_t._gen){_t._gen.next();}\r
- _t._lc=null;\r
- }\r
- );\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- }, \r
- /**\r
- * formatに値を設定します。\r
- * 関数の完了時にonFormatイベントが発生します。\r
- * Generatorモードの時は、yieldと併用して完了を待機できます。\r
- * @name mbedJS.SPI#format\r
- * @function\r
- * @param {int} i_bits\r
- * @param {int} i_mode\r
- * 省略可能です。省略時は0になります。\r
- * @return {int}\r
- * Callbackモードの時はRPCメソッドのインデクスを返します。\r
- */\r
- format:function SPI_format(i_bits,i_mode)\r
- {\r
- try{\r
- var _t=this;\r
- MI._assertYield.call(_t);\r
- var cb=MI._getCb(arguments,_t._event.onFormat);\r
- _t._lc=CLASS.format;\r
- var mode=i_mode?i_mode:0;\r
- MI.assertInt([i_bits,mode]);\r
- return _t._mcu.rpc(_t.RPC_NS+":format",_t._oid+","+i_bits+","+mode,\r
- function(j){\r
- if(cb){cb();}\r
- if(_t._gen){_t._gen.next();}\r
- _t._lc=null;\r
- }\r
- );\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- },\r
- /**\r
- * MCUに生成されているオブジェクトを破棄します。\r
- * @name mbedJS.SPI#dispose\r
- * @function\r
- */\r
- dispose:function SPI_dispose()\r
- {\r
- return this._mcu._dispose.apply(this,arguments);\r
- }\r
-}\r
-NS.SPI=CLASS;\r
-}());
\ No newline at end of file