OSDN Git Service

git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@69 47198e57-cb75-475f-84c4-a814cd6...
[mimic/MiMicSDK.git] / misc / MiMicVM / api.js / LPCXPresso1769.Pin.js
1 (function(){\r
2 var DEV=LPCXpresso1769;\r
3 var BCF=DEV._BCF;\r
4 var EE=DEV._EE;\r
5 var isUndef=MiMicLib.isUndef;\r
6 \r
7 /**\r
8  * pinインスタンスを生成します。\r
9  @param i_opt\r
10  省略可能です。setOpt関数でピンコンフィギュレーションの初期設定をします。\r
11  引数値はsetOpt関数を参照して下さい。\r
12  省略した場合、ピンコンフィギュレーションの初期設定は行われません。\r
13  */\r
14 DEV.Pin=function Pin(i_mcu,i_pin,i_opt)\r
15 {\r
16         try{\r
17                 if(isUndef(i_pin)){\r
18                         throw new MiMicException(EE.INVALID_PIN);\r
19                 }\r
20                 this._mcu=i_mcu;\r
21                 this._pininfo=DEV.getPinRegInfo(i_pin);\r
22                 //オプション設定するならする。\r
23                 if(!isUndef(i_opt)){\r
24                         this.setOpt(i_opt);\r
25                 }\r
26         }catch(e){\r
27                 throw new MiMicException(e);\r
28         }\r
29 }\r
30 DEV.Pin.prototype=\r
31 {       \r
32         _PINSEL:[0x4002C000,0x4002C004,0x4002C008,0x4002C00C,0x4002C010,null,null,0x4002C0C0,null,0x4002C024,0x4002C028],\r
33         _PINMODE:[0x4002C040,0x4002C044,0x4002C048,0x4002C04C,0x4002C050,0x4002C054,0x4002C058,0x4002C05C,null,0x4002C064],\r
34         _PINMODE_OD:[0x4002C068,0x4002C06C,0x4002C070,0x4002C074,0x4002C078],\r
35         _pininfo:null,\r
36         _mcu:null,\r
37 \r
38         /**\r
39          * ポート単位でコンフィギュレーションを実行します。\r
40          */\r
41         setPort:function setPort(i_opt)\r
42         {\r
43                 throw new MiMicException("not implemented.");\r
44         },\r
45         /**\r
46          * setPinのBCを生成します。\r
47          @param i_opt\r
48          setOptBcを参照してください。\r
49          @return\r
50          BCフラグメントを返します。\r
51          */\r
52         BCF_setOpt:function BCF_setOpt(i_opt,i_db)\r
53         {\r
54                 try{\r
55                         var bc="";\r
56                         //PINFUNC,PINMODEのbit位置\r
57                         //pinsel\r
58                         if(!isUndef(i_opt.sel)){\r
59                                 \r
60                                 //pinselAddrを得る\r
61                                 bc+=BCF.setBit(this._PINSEL[this._pininfo.s],0x00000003,i_opt.sel,this._pininfo.smb,i_db);\r
62                         }\r
63                         //pinmode\r
64                         if(!isUndef(i_opt.mode)){\r
65                                 if(this._pininfo.m==null){\r
66                                         throw new MiMicException(EE.INVALID_CFG,"The pin does not support PINMODE. pininfo.");\r
67                                 }\r
68                                 bc+=BCF.setBit(this._PINMODE[this._pininfo.m],0x00000003,i_opt.mode,this._pininfo.smb,i_db);\r
69                         }\r
70                         //pinmode_od\r
71                         if(!isUndef(i_opt.od)){\r
72                                 if(this._pininfo.o==null){\r
73                                         throw new MiMicException(EE.INVALID_CFG,"The pin does not support PINMODE_OD. pininfo.");\r
74                                 }\r
75                                 bc+=BCF.setBit(this._PINMODE_OD[this._pininfo.o],0x00000001,i_opt.od,this._pininfo.ob,i_db);\r
76                         }\r
77                         return bc;\r
78                 }catch(e){\r
79                         throw new MiMicException(e);\r
80                 }\r
81         },\r
82         /**\r
83          * ピン1個のコンフィギュレーション実行します。\r
84          @param i_opt\r
85          コンフィギュレーションレジスタにセットする連想配列を指定します。不要なパラメタは省略してください。\r
86          {sel:PIN_SELレジスタの値(2bit),mode:PIN_MODEレジスタの値(2bit),od:PIN_MODE_ODレジスタの値(1bit}\r
87          @throws\r
88          ピンコンフィギュレーションに失敗した時\r
89          */\r
90         setOpt:function setOpt(i_opt)\r
91         {\r
92                 try{\r
93                         var db=new Array();\r
94                         var bc=this.BCF_setOpt(i_opt,db);\r
95                         if(bc.length==0){\r
96                                 throw new MiMicException("i_opt is empty or invalid.");\r
97                         }\r
98                         //MiMicBCを生成して実行\r
99                         this._mcu.callMiMicWithCheck(bc+BCF.END,db);\r
100                 }catch(e){\r
101                         throw new MiMicException(e);\r
102                 }\r
103                 return;\r
104         }\r
105 }\r
106 \r
107 }());