OSDN Git Service

git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@126 47198e57-cb75-475f-84c4-a814cd...
authornyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Sat, 10 Dec 2011 08:44:57 +0000 (08:44 +0000)
committernyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Sat, 10 Dec 2011 08:44:57 +0000 (08:44 +0000)
misc/MiMicVM/api.js/LPC1769.Pwm.js [moved from misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js with 97% similarity]
misc/MiMicVM/api.js/LPC1769.js [new file with mode: 0644]
misc/MiMicVM/api.js/LPCXpresso1769.js
misc/MiMicVM/api.js/mbedM3.js [new file with mode: 0644]

similarity index 97%
rename from misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js
rename to misc/MiMicVM/api.js/LPC1769.Pwm.js
index baa78a5..2d3e495 100644 (file)
@@ -85,7 +85,7 @@ DEV.Pwm.prototype=
        _mcu:null,\r
 \r
        /**\r
-        * @private
+        * @private\r
         */\r
        BCF_setOpt:function BCF_setOpt(i_opt,i_db)\r
        {\r
diff --git a/misc/MiMicVM/api.js/LPC1769.js b/misc/MiMicVM/api.js/LPC1769.js
new file mode 100644 (file)
index 0000000..cca798c
--- /dev/null
@@ -0,0 +1,445 @@
+/**\r
+ * @fileOverview LPC1769ネームスペース、定数値を定義する。\r
+ */\r
+\r
+/**\r
+ * LPC1769用の高レベルAPIのネームスペースである。\r
+ * MCU,Pin,peripheralのクラスと、識別子を定義する。\r
+ * このネームスペースのにある宣言は、LPC1769プロセッサに依存する。\r
+ * @namespace\r
+ */\r
+var LPC1769;\r
+\r
+(function(){\r
+       var isUndef=MiMicLib.isUndef;\r
+       var DEV=\r
+       {\r
+               /**\r
+                * エラーIDテーブルの拡張\r
+                * @private\r
+                */\r
+               _EE:function(i_base){\r
+               return{\r
+                       NG:[i_base|0x00,"Unknown exception in LPC1769"],\r
+                       INVALID_ARG :[i_base|0x01,"Invalid argument"],\r
+                       INVALID_PIN :[i_base|0x02,"Invalid pin"],\r
+                       INVALID_CFG :[i_base|0x03,"Invalid configulation"],\r
+                       VM_RUNTIME  :[i_base|0x04,"MVM runtime error"],\r
+               };}(MiMicError.NG[0]|MiMicError.MID_MiMic|MiMicError.CAID_LPCXPresso1769),\r
+               /**\r
+                * BCフラグメント・ライブラリ\r
+                * @private
+                */\r
+               _BCF:{\r
+                       /**\r
+                        * ([i_addr]&(~(i_mask<<i_shl))|((i_mask & i_val)<<i_shl)を実行するMimicBCを生成する。\r
+                        * [S0]のアドレスのメモリ値に[S1]の値でマスクして,[S2]の値とORして[S0]に書き戻す。\r
+                        * <pre>\r
+                        * SGET #0;\r
+                        * SGET #1;\r
+                        * SGET #2;\r
+                        * MGET #7,#0;\r
+                        * AND #7,#1;\r
+                        * OR #7,#2;\r
+                        * MPUT #7,#0;\r
+                        * </pre>\r
+                        * @private\r
+                        * @param i_mask\r
+                        * ビットマスク\r
+                        * @param i_val\r
+                        * ビット値\r
+                        */\r
+                       setBit:function setBit(i_addr,i_mask,i_val,i_shl,i_db)\r
+                       {\r
+                               try{\r
+                                       i_db.push(i_addr);\r
+                                       i_db.push(~(i_mask<<i_shl));\r
+                                       i_db.push((i_mask & i_val) << i_shl);\r
+                                       return "EA00EA01EA02DB0700AA0701AE0702DF0700";\r
+                               }catch(e){\r
+                                       throw new MiMicException(e);\r
+                               }                       \r
+                       },\r
+                       /**\r
+                        * 値をメモリに設定する。\r
+                        * <pre>\r
+                        * SGET #0\r
+                        * SGET #1\r
+                        * MPUT #1,#0\r
+                        * </pre>\r
+                        * @private\r
+                        */\r
+                       setMem:function setMem(i_addr,i_val,i_db)\r
+                       {\r
+                               try{\r
+                                       i_db.push(i_addr);\r
+                                       i_db.push(i_val);\r
+                                       return "EA00EA01DF0100";\r
+                               }catch(e){\r
+                                       throw new MiMicException(e);\r
+                               }                       \r
+                       },\r
+                       /**\r
+                        * メモリを32bit読む\r
+                        * <pre>\r
+                        * SGET #0\r
+                        * MGET #0,#0\r
+                        * SPUT #0\r
+                        * </pre>\r
+                        * @private\r
+                        */                     \r
+                       getMem:function getMem(i_addr,i_db)\r
+                       {\r
+                               try{\r
+                                       i_db.push(i_addr);\r
+                                       return "EA00DB0000EE00";\r
+                               }catch(e){\r
+                                       throw new MiMicException(e);\r
+                               }                       \r
+                       },\r
+                       /**\r
+                        * メモリを32bit読む\r
+                        * <pre>\r
+                        * SGET #0\r
+                        * MGET #0,#0\r
+                        * SPUT #0\r
+                        * </pre>\r
+                        @private\r
+                        */\r
+                       READMEM:"EA00DB0000EE00",\r
+                       \r
+                       /**\r
+                        * BCフラグメントを終了する。\r
+                        * <pre>\r
+                        * EXIT;\r
+                        * .END\r
+                        * </pre>\r
+                        @private\r
+                        */\r
+                       END:"ZZ.E"      \r
+               },\r
+               /**\r
+                * 機能名のテーブル。\r
+                * 機能名として使用できる文字列の一覧表である。機能名は、機能を識別する目的で定義する。\r
+                * この値は一覧の定義のみであるので、使用することは無い。\r
+                * <ul>\r
+                *      <li>GPIO - GPIO機能を表す。</li>\r
+                *      <li>AD - AD convert機能を表す。</li>\r
+                *      <li>DA - DA convert機能を表す。</li>\r
+                *      <li>PWM - PWM機能を表す。</li>\r
+                * </ul>\r
+                * @name LPC1769#FUNC_NAME\r
+                * @constant\r
+                * @field\r
+                */\r
+               FUNC_NAME:[\r
+                       "GPIO","AD","DA","PWM"\r
+               ],\r
+               /**\r
+                * ペリフェラル名のテーブル。\r
+                * ペリフェラル名として使用できる文字列の一覧表である。ペリフェラル名は、ペリフェラルを識別する目的で定義する。\r
+                * この値は一覧の定義のみであるので、使用することは無い。
+                * <ul>\r
+                *      <li>GPIO - GPIO peripheral</li>\r
+                *      <li>ADC - AD peripheral</li>\r
+                *      <li>DAC - DA peripheral</li>\r
+                *      <li>PWM - PWM peripheral</li>\r
+                * </ul>\r
+                * @name LPC1769#PHL_NAME\r
+                * @constant\r
+                * @field\r
+                */\r
+               PHL_NAME:[\r
+                       "GPIO","ADC","DAC","PWM"\r
+               ],\r
+               /**\r
+                * LPCXpressoのPeripheralパラメタを格納したテーブルである。要素はペリフェラル識別子である。\r
+                * UM10360のChapter 4: LPC17xx Clocking and power controlを元に定義している。\r
+                * ペリフェラル識別子はペリフェラルのレジスタ番号とビット番号を格納した配列である。\r
+                * <pre>\r
+                * PHL:{PHL_NAME:[PCLKSELreg#,PCLKSELbit#,PCONPbit#]}\r
+                * </pre>\r
+                * nullはそのビットが無効であることを示す。\r
+                * @name LPC1769#PHL\r
+                * @constant\r
+                * @field\r
+                * @example\r
+                * LPC1769.PHLADC //ADC peripheral\r
+                */\r
+               PHL:{\r
+                       WDT:    [0,0,null],\r
+                       TIMER0: [0,2,1],\r
+                       TIMER1: [0,4,2],\r
+                       UART0:  [0,6,3],\r
+                       UART1:  [0,8,4],\r
+                       PWM1:   [0,12,6],\r
+                       I2C0:   [0,14,7],\r
+                       SPI:    [0,16,8],\r
+                       RTC:    [null,null,9],\r
+                       SSPI1:  [0,20,10],\r
+                       DAC:    [0,22,null],\r
+                       ADC:    [0,24,12],\r
+                       CAN1:   [0,26,13],\r
+                       CAN2:   [0,28,14],\r
+                       ACF:    [0,30,null],\r
+                       QEI:    [1,0,18],\r
+                       GPIOINT:[1,2,15],\r
+                       PCB:    [1,4,null],\r
+                       I2C1:   [1,6,19],\r
+                       SSP0:   [1,10,21],\r
+                       TIMER2: [1,12,22],\r
+                       TIMER3: [1,14,23],\r
+                       UART2:  [1,16,24],\r
+                       UART3:  [1,18,25],\r
+                       I2C2:   [1,20,26],\r
+                       I2S:    [1,22,27],\r
+                       RIT:    [1,26,16],\r
+                       SYSCON: [1,28,null],\r
+                       PWM_MC:[1,30,17],//MC?\r
+                       GPDMA:[null,null,29],\r
+                       ENET:[null,null,30],\r
+                       USB:[null,null,31]\r
+               },\r
+               /**\r
+                * PCXpressoのPINに対応する識別子のテーブルである。要素はPIN識別子である。テーブルは、P0[n]~p4[m]まで存在する。\r
+                * ピン識別子は、ピンP?[?]を、P0[0]のように表現する。これは、UM10360のTable 73. Pin descriptionのSymbol P?[?]に対応している。\r
+                * Pn[m]のn,mの使用できる値は、Table 73. Pin descriptionに一致する。\r
+                * PIN識別子から値を取り出すときは、専用の関数を使用するべきである。\r
+                * ピン識別子は、ピンを制御するレジスタ番号とビット番号を格納した配列である。\r
+                * <pre>\r
+                * Pn:[[PINSELreg#,PINMODEreg#,PINMODEODreg#,bitidx,[ピン機能名]]]\r
+                * </pre>\r
+                * <ul>\r
+                * <li>PINFUNC,PINMODEのビット位置は、(bitidx%16)*2で計算する。ODRegについては、そのままの数値を使う。</li>\r
+                * <li>[ピン機能名]は、PINSEL設定値に対応するテーブルである。配列のインデクス値が、そのままPINSELの値に対応する。</li>\r
+                * <li>設定できない値のフィールドはnullである。ピン機能名はPin Function Select registerのテーブルの定義値そのもである。ただし、GPIOについては"GPIO Port "を"GPIO"に省略していることに注意。</li>\r
+                * <li>nullはそのビットが無効であることを示す。</li>\r
+                * </ul>\r
+                * @name LPC1769#P0\r
+                * @constant\r
+                * @field\r
+                * @example\r
+                * //1\r
+                * LPC1769.P0[0]; //P0[0]\r
+                * LPC1769.P1[1]; //P0[01]\r
+                * //2\r
+                * var mcu=new LPC1769.Mcu(“192.168.0.39”);\r
+                * var gpiopin=mcu.getPin(LPC1769.P0[0],"GPIO");//bind P0[0] with GPIO function
+                */\r
+               P0:[\r
+                       [0,0,0,0,["GPIO0.0","RD1","TXD3","SDA1"]],//0\r
+                       [0,0,0,1,["GPIO0.1","TD1","RXD3","SCL1"]],//1\r
+                       [0,0,0,2,["GPIO0.2","TXD0","AD0.7",null]],//2\r
+                       [0,0,0,3,["GPIO0.3","RXD0","AD0.6",null]],//3\r
+                       [0,0,0,4,["GPIO0.4","I2SRX_CLK","RD2","CAP2.0"]],//4\r
+                       [0,0,0,5,["GPIO0.5","I2SRX_WS","TD2","CAP2.1"]],//5\r
+                       [0,0,0,6,["GPIO0.6","I2SRX_SDA","SSEL1","MAT2.0"]],//6\r
+                       [0,0,0,7,["GPIO0.7","I2STX_CLK","SCK1", "MAT2.1"]],//7\r
+                       [0,0,0,8,["GPIO0.8","I2STX_WS","MISO1","MAT2.2"]],//8\r
+                       [0,0,0,9,["GPIO0.9","I2STX_SDA","MOSI1","MAT2.3"]],//9\r
+                       [0,0,0,10,["GPIO0.10","TXD2","SDA2","MAT3.0"]],//10\r
+                       [0,0,0,11,["GPIO0.11","RXD2","SCL2","MAT3.1"]],//11\r
+                       null,null,null,//12,13,14\r
+                       [0,0,0,15,["GPIO0.15","TXD1","SCK0","SCK"]],//15\r
+                       [1,1,0,16,["GPIO0.16","RXD1","SSEL0","SSEL"]],//16\r
+                       [1,1,0,17,["GPIO0.17","CTS1","MISO0","MISO"]],//17\r
+                       [1,1,0,18,["GPIO0.18","DCD1","MOSI0","MOSI"]],//18\r
+                       [1,1,0,19,["GPIO0.19","DSR1",null,"SDA1"]],//19\r
+                       [1,1,0,20,["GPIO0.20","DTR1",null,"SCL1"]],//20\r
+                       [1,1,0,21,["GPIO0.21","RI1",null,"RD1"]],//21\r
+                       [1,1,0,22,["GPIO0.22","RTS1",null,"TD1"]],//22\r
+                       [1,1,0,23,["GPIO0.23","AD0.0","I2SRX_CLK","CAP3.0"]],//23\r
+                       [1,1,0,24,["GPIO0.24","AD0.1","I2SRX_WS","CAP3.1"]],//24\r
+                       [1,1,0,25,["GPIO0.25","AD0.2","I2SRX_SDA","TXD3"]],//25\r
+                       [1,1,0,26,["GPIO0.26","AD0.3","AOUT","RXD3"]],//26\r
+                       [1,null,null,22,["GPIO0.27","SDA0",     "USB_SDA",null]],//27\r
+                       [1,null,null,24,["GPIO0.28","SCL0",     "USB_SCL",null]],//28\r
+                       [1,null,0,29,["GPIO0.29","USB_D+",null,null]],//29\r
+                       [1,null,0,30,["GPIO0.30","USB_D-",null,null]],//30\r
+                       ],\r
+               /**\r
+                * P1に対する定義である。詳細はP0のドキュメントを参照。
+                * @name LPC1769#P1\r
+                * @constant\r
+                * @field\r
+                * @see LPC1769#P0
+                */\r
+               P1:[    //P1[x]\r
+                       [2,2,1,0,["GPIO1.0","ENET_TXD0",null,null]],//0\r
+                       [2,2,1,1,["GPIO1.1","ENET_TXD1",null,null]],//1\r
+                       null,null,//2,3\r
+                       [2,2,1,4,["GPIO1.4","ENET_TX_EN",null,null]],//4\r
+                       null,null,null,//5,6,7\r
+                       [2,2,1,8,["GPIO1.8","ENET_CRS",null,null]],//8\r
+                       [2,2,1,9,["GPIO1.9","ENET_RXD0",null,null]],//9\r
+                       [2,2,1,10,["GPIO1.10","ENET_RXD1",null,null]],//10\r
+                       null,null,null,//11,12,13\r
+                       [2,2,1,14,["GPIO1.14","ENET_RX_ER",null,null]],//14\r
+                       [2,2,1,15,["GPIO1.15","ENET_REF_CLK",null,null]],//15\r
+                       [3,3,1,16,["GPIO1.16","ENET_MDC",null,null]],//16\r
+                       [3,3,1,17,["GPIO1.17","ENET_MDIO",null,null]],//17\r
+                       [3,3,1,18,["GPIO1.18","USB_UP_LED","PWM1.1","CAP1.0"]],//18\r
+                       [3,3,1,19,["GPIO1.19","MCOA0","USB_PPWR","CAP1.1"]],//19\r
+                       [3,3,1,20,["GPIO1.20","MCI0","PWM1.2","SCK0"]],//20\r
+                       [3,3,1,21,["GPIO1.21","MCABORT","PWM1.3","SSEL0"]],//21\r
+                       [3,3,1,22,["GPIO1.22","MCOB0","USB_PWRD","MAT1.0"]],//22\r
+                       [3,3,1,23,["GPIO1.23","MCI1","PWM1.4","MISO0"]],//23\r
+                       [3,3,1,24,["GPIO1.24","MCI2","PWM1.5","MOSI0"]],//24\r
+                       [3,3,1,25,["GPIO1.25","MCOA1",null,"MAT1.1"]],//25\r
+                       [3,3,1,26,["GPIO1.26","MCOB1","PWM1.6","CAP0.0"]],//26\r
+                       [3,3,1,27,["GPIO1.27","CLKOUT","USB_OVRCR","CAP0.1"]],//27\r
+                       [3,3,1,28,["GPIO1.28","MCOA2","PCAP1.0","MAT0.0"]],//28\r
+                       [3,3,1,29,["GPIO1.29","MCOB2","PCAP1.1","MAT0.1"]],//29\r
+                       [3,3,1,30,["GPIO1.30",null,"VBUS","AD0.4"]],//30\r
+                       [3,3,1,31,["GPIO1.31",null,"SCK1","AD0.5"]],//31\r
+                       ],\r
+               /**\r
+                * P2に対する定義である。詳細はP0のドキュメントを参照。\r
+                * @name LPC1769#P2\r
+                * @constant\r
+                * @field\r
+                * @see LPC1769#P0\r
+                */\r
+               P2:[    //P2[x]\r
+                       [4,4,2,0,["GPIO2.0","PWM1.1","TXD1",null]],//0\r
+                       [4,4,2,1,["GPIO2.1","PWM1.2","RXD1",null]],//1\r
+                       [4,4,2,2,["GPIO2.2","PWM1.3","CTS1",null]],//2\r
+                       [4,4,2,3,["GPIO2.3","PWM1.4","DCD1",null]],//3\r
+                       [4,4,2,4,["GPIO2.4","PWM1.5","DSR1",null]],//4\r
+                       [4,4,2,5,["GPIO2.5","PWM1.6","DTR1",null]],//5\r
+                       [4,4,2,6,["GPIO2.6","PCAP1.0","RI1",null]],//6\r
+                       [4,4,2,7,["GPIO2.7","RD2","RTS1",null]],//7\r
+                       [4,4,2,8,["GPIO2.8","TD2","TXD2","ENET_MDC"]],//8\r
+                       [4,4,2,9,["GPIO2.9","USB_CONNECT","RXD2","ENET_MDIO"]],//9\r
+                       [4,4,2,10,["GPIO2.10","EINT0","NMI",null]],//10\r
+                       [4,4,2,11,["GPIO2.11","EINT1",null,"I2STX_CLK"]],//11\r
+                       [4,4,2,12,["GPIO2.12","EINT2",null,"I2STX_WS"]],//12\r
+                       [4,4,2,13,["GPIO2.13","EINT3",null,"I2STX_SDA"]],//13\r
+                       ],\r
+               /**\r
+                * P3に対する定義である。詳細はP0のドキュメントを参照。\r
+                * @name LPC1769#P3\r
+                * @constant\r
+                * @field\r
+                * @see LPC1769#P0\r
+                */\r
+               P3:[    //P3[x]\r
+                       null/* 0*/,null/* 1*/,null/* 2*/,null/* 3*/,null/* 4*/,null/* 5*/,null/* 6*/,null/* 7*/,null/* 8*/,null/* 9*/,\r
+                       null/*10*/,null/*11*/,null/*12*/,null/*13*/,null/*14*/,null/*15*/,null/*16*/,null/*17*/,null/*18*/,null/*19*/,\r
+                       null/*20*/,null/*21*/,null/*22*/,null/*23*/,null/*24*/,\r
+                       [7,7,3,25,["GPIO3.25",null,"MAT0.0","PWM1.2"]],//25\r
+                       [7,7,3,26,["GPIO3.26","STCLK","MAT0.1","PWM1.3"]],//26\r
+               ],\r
+               /**\r
+                * P4に対する定義である。詳細はP0のドキュメントを参照。\r
+                * @name LPC1769#P4\r
+                * @constant\r
+                * @field\r
+                * @see LPC1769#P0\r
+                */\r
+               P4:[    //P4[x]\r
+                       null/* 0*/,null/* 1*/,null/* 2*/,null/* 3*/,null/* 4*/,null/* 5*/,null/* 6*/,null/* 7*/,null/* 8*/,null/* 9*/,\r
+                       null/*10*/,null/*11*/,null/*12*/,null/*13*/,null/*14*/,null/*15*/,null/*16*/,null/*17*/,null/*18*/,null/*19*/,\r
+                       null/*20*/,null/*21*/,null/*22*/,null/*23*/,null/*24*/,null/*25*/,null/*26*/,null/*27*/,\r
+                       [9,9,4,28,["GPIO4.28","RX_MCLK","MAT2.0","TXD3"]],//28\r
+                       [9,9,4,29,["GPIO4.29","TX_MCLK","MAT2.1","RXD3"]]//29\r
+               ],\r
+               /**\r
+                * [forSystem]ピン識別子のアクセス関数である。\r
+                * ピン機能シンボルのプレフィクス(機能シンボル)を、 ピン識別子を元に、完全な名称に変換する。\r
+                * ピンにFunctionが含まれているか調べることが出来る。\r
+                * @private\r
+                */\r
+               completePinFunctionName:function completePinFunctionName(i_pin,i_prefix)\r
+               {\r
+                       try{\r
+                               //配列探索\r
+                               for(var i=0;i<i_pin[4].length;i++){\r
+                                       if(i_pin[4][i].indexOf(i_prefix)==0){\r
+                                               //ピン情報の構成\r
+                                               return i_pin[4][i];\r
+                                       }\r
+                               }\r
+                               throw new MiMicException("The function name '"+i_prefix+"' is not unknown.");\r
+                       }catch(e){\r
+                               throw new MiMicException(e);\r
+                       }\r
+               },\r
+               /**\r
+                * [forSystem]ピン識別子のアクセス関数。\r
+                * ピン識別値から、Pinレジスタの番号と、ビット位置を取り出す。\r
+                * @private\r
+                * @return\r
+                * {s:pinselのレジスタ番号、m:modeのレジスタ番号、,o:odのレジスタ番号,sbm:mode,selのビット位置,ob:odのビット位置}
+                */\r
+               getPinRegInfo:function getPinRegInfo(i_pin)\r
+               {\r
+                       try{\r
+                               return {s:i_pin[0],m:i_pin[1],o:i_pin[2],smb:(i_pin[3]%16)*2,ob:i_pin[3]};\r
+                       }catch(e){\r
+                               throw new MiMicException(e);\r
+                       }\r
+               },\r
+               /**\r
+                * [forSystem]ピン識別子のアクセス関数。\r
+                * PIN機能名に一致するPinsel値を取り出す。\r
+                * @private\r
+                */\r
+               getPinSelByFunctionName:function getPinSelByFunctionName(i_pin,i_name)\r
+               {\r
+                       try{\r
+                               for(var i=0;i<i_pin[4].length;i++){\r
+                                       if(i_pin[4][i]==i_name){\r
+                                               //ピン情報の構成\r
+                                               return i;\r
+                                       }\r
+                               }\r
+                               throw new MiMicException("The function name '"+i_name+"' has not function.");\r
+                       }catch(e){\r
+                               throw new MiMicException(e);\r
+                       }\r
+               },\r
+               /**\r
+                * [forSystem]ピンが、ピン機能シンボルを持つか返す。\r
+                * @private\r
+                */\r
+               hasPinFunctionName:function hasPinFunctionName(i_pin,i_name)\r
+               {\r
+                       return i_pin[4].indexOf(i_name)>=0;\r
+               }\r
+       }\r
+\r
+/**\r
+ * @private
+ */\r
+DEV.I2c=function I2c()\r
+{\r
+       throw new MiMicException("Not imprement.");\r
+}\r
+\r
+/**\r
+ * @private\r
+ */\r
+DEV.Dma=function Dma()\r
+{\r
+       throw new MiMicException("Not imprement.");\r
+}\r
+/**\r
+ * @private\r
+ */\r
+DEV.Uart=function Uart()\r
+{\r
+       throw new MiMicException("Not imprement.");\r
+}\r
+/**\r
+ * @private\r
+ */\r
+DEV.Usb=function Usb()\r
+{\r
+       throw new MiMicException("Not imprement.");\r
+}\r
+\r
+\r
+LPC1769=DEV;\r
+}());\r
+\r
index 72b0f1f..cdca97b 100644 (file)
  */\r
 \r
 /**\r
- * LPCXPresso1769用の高レベルAPIのネームスペースである。\r
- * MCU,Pin,peripheralのクラスと、識別子を定義する。\r
- * このネームスペースのにある宣言は、LPC1769プロセッサに依存する。\r
+ * LPCXpresso1769用の高レベルAPIのネームスペースである。LPC1769ネームスペースを継承して、LPCXpresso1769独自の拡張要素を追加する。\r
+ * このネームスペースは、LPC1769ネームスペースの全てのクラス、関数、宣言を継承する。\r
  * @namespace\r
+ * <p>\r
+ * 実装メモ\r
+ * このネームスペースは、LPC1769を継承する。LPC1769の構築を完了させてから読み込むこと。\r
+ * </p>\r
  */\r
 var LPCXpresso1769;\r
 \r
 (function(){\r
        var isUndef=MiMicLib.isUndef;\r
-       var DEV=\r
-       {\r
-               /**\r
-                * エラーIDテーブルの拡張\r
-                * @private\r
-                */\r
-               _EE:function(i_base){\r
-               return{\r
-                       NG:[i_base|0x00,"Unknown exception in LPCXpresso1769"],\r
-                       INVALID_ARG :[i_base|0x01,"Invalid argument"],\r
-                       INVALID_PIN :[i_base|0x02,"Invalid pin"],\r
-                       INVALID_CFG :[i_base|0x03,"Invalid configulation"],\r
-                       VM_RUNTIME  :[i_base|0x04,"MVM runtime error"],\r
-               };}(MiMicError.NG[0]|MiMicError.MID_MiMic|MiMicError.CAID_LPCXPresso1769),\r
-               /**\r
-                * BCフラグメント・ライブラリ\r
-                * @private
-                */\r
-               _BCF:{\r
-                       /**\r
-                        * ([i_addr]&(~(i_mask<<i_shl))|((i_mask & i_val)<<i_shl)を実行するMimicBCを生成する。\r
-                        * [S0]のアドレスのメモリ値に[S1]の値でマスクして,[S2]の値とORして[S0]に書き戻す。\r
-                        * <pre>\r
-                        * SGET #0;\r
-                        * SGET #1;\r
-                        * SGET #2;\r
-                        * MGET #7,#0;\r
-                        * AND #7,#1;\r
-                        * OR #7,#2;\r
-                        * MPUT #7,#0;\r
-                        * </pre>\r
-                        * @private\r
-                        * @param i_mask\r
-                        * ビットマスク\r
-                        * @param i_val\r
-                        * ビット値\r
-                        */\r
-                       setBit:function setBit(i_addr,i_mask,i_val,i_shl,i_db)\r
-                       {\r
-                               try{\r
-                                       i_db.push(i_addr);\r
-                                       i_db.push(~(i_mask<<i_shl));\r
-                                       i_db.push((i_mask & i_val) << i_shl);\r
-                                       return "EA00EA01EA02DB0700AA0701AE0702DF0700";\r
-                               }catch(e){\r
-                                       throw new MiMicException(e);\r
-                               }                       \r
-                       },\r
-                       /**\r
-                        * 値をメモリに設定する。\r
-                        * <pre>\r
-                        * SGET #0\r
-                        * SGET #1\r
-                        * MPUT #1,#0\r
-                        * </pre>\r
-                        * @private\r
-                        */\r
-                       setMem:function setMem(i_addr,i_val,i_db)\r
-                       {\r
-                               try{\r
-                                       i_db.push(i_addr);\r
-                                       i_db.push(i_val);\r
-                                       return "EA00EA01DF0100";\r
-                               }catch(e){\r
-                                       throw new MiMicException(e);\r
-                               }                       \r
-                       },\r
-                       /**\r
-                        * メモリを32bit読む\r
-                        * <pre>\r
-                        * SGET #0\r
-                        * MGET #0,#0\r
-                        * SPUT #0\r
-                        * </pre>\r
-                        * @private\r
-                        */                     \r
-                       getMem:function getMem(i_addr,i_db)\r
-                       {\r
-                               try{\r
-                                       i_db.push(i_addr);\r
-                                       return "EA00DB0000EE00";\r
-                               }catch(e){\r
-                                       throw new MiMicException(e);\r
-                               }                       \r
-                       },\r
-                       /**\r
-                        * メモリを32bit読む\r
-                        * <pre>\r
-                        * SGET #0\r
-                        * MGET #0,#0\r
-                        * SPUT #0\r
-                        * </pre>\r
-                        @private\r
-                        */\r
-                       READMEM:"EA00DB0000EE00",\r
-                       \r
-                       /**\r
-                        * BCフラグメントを終了する。\r
-                        * <pre>\r
-                        * EXIT;\r
-                        * .END\r
-                        * </pre>\r
-                        @private\r
-                        */\r
-                       END:"ZZ.E"      \r
-               },\r
-               /**\r
-                * 機能名のテーブル。\r
-                * 機能名として使用できる文字列の一覧表である。機能名は、機能を識別する目的で定義する。\r
-                * この値は一覧の定義のみであるので、使用することは無い。\r
-                * <ul>\r
-                *      <li>GPIO - GPIO機能を表す。</li>\r
-                *      <li>AD - AD convert機能を表す。</li>\r
-                *      <li>DA - DA convert機能を表す。</li>\r
-                *      <li>PWM - PWM機能を表す。</li>\r
-                * </ul>\r
-                * @name LPCXpresso1769#FUNC_NAME\r
-                * @constant\r
-                * @field\r
-                */\r
-               FUNC_NAME:[\r
-                       "GPIO","AD","DA","PWM"\r
-               ],\r
-               /**\r
-                * ペリフェラル名のテーブル。\r
-                * ペリフェラル名として使用できる文字列の一覧表である。ペリフェラル名は、ペリフェラルを識別する目的で定義する。\r
-                * この値は一覧の定義のみであるので、使用することは無い。
-                * <ul>\r
-                *      <li>GPIO - GPIO peripheral</li>\r
-                *      <li>ADC - AD peripheral</li>\r
-                *      <li>DAC - DA peripheral</li>\r
-                *      <li>PWM - PWM peripheral</li>\r
-                * </ul>\r
-                * @name LPCXpresso1769#PHL_NAME\r
-                * @constant\r
-                * @field\r
-                */\r
-               PHL_NAME:[\r
-                       "GPIO","ADC","DAC","PWM"\r
-               ],\r
-               /**\r
-                * LPCXpressoのPeripheralパラメタを格納したテーブルである。要素はペリフェラル識別子である。\r
-                * UM10360のChapter 4: LPC17xx Clocking and power controlを元に定義している。\r
-                * ペリフェラル識別子はペリフェラルのレジスタ番号とビット番号を格納した配列である。\r
-                * <pre>\r
-                * PHL:{PHL_NAME:[PCLKSELreg#,PCLKSELbit#,PCONPbit#]}\r
-                * </pre>\r
-                * nullはそのビットが無効であることを示す。\r
-                * @name LPCXpresso1769#PHL\r
-                * @constant\r
-                * @field\r
-                * @example\r
-                * LPCXpresso1796.PHLADC //ADC peripheral\r
-                */\r
-               PHL:{\r
-                       WDT:    [0,0,null],\r
-                       TIMER0: [0,2,1],\r
-                       TIMER1: [0,4,2],\r
-                       UART0:  [0,6,3],\r
-                       UART1:  [0,8,4],\r
-                       PWM1:   [0,12,6],\r
-                       I2C0:   [0,14,7],\r
-                       SPI:    [0,16,8],\r
-                       RTC:    [null,null,9],\r
-                       SSPI1:  [0,20,10],\r
-                       DAC:    [0,22,null],\r
-                       ADC:    [0,24,12],\r
-                       CAN1:   [0,26,13],\r
-                       CAN2:   [0,28,14],\r
-                       ACF:    [0,30,null],\r
-                       QEI:    [1,0,18],\r
-                       GPIOINT:[1,2,15],\r
-                       PCB:    [1,4,null],\r
-                       I2C1:   [1,6,19],\r
-                       SSP0:   [1,10,21],\r
-                       TIMER2: [1,12,22],\r
-                       TIMER3: [1,14,23],\r
-                       UART2:  [1,16,24],\r
-                       UART3:  [1,18,25],\r
-                       I2C2:   [1,20,26],\r
-                       I2S:    [1,22,27],\r
-                       RIT:    [1,26,16],\r
-                       SYSCON: [1,28,null],\r
-                       PWM_MC:[1,30,17],//MC?\r
-                       GPDMA:[null,null,29],\r
-                       ENET:[null,null,30],\r
-                       USB:[null,null,31]\r
-               },\r
-               /**\r
-                * PCXpressoのPINに対応する識別子のテーブルである。要素はPIN識別子である。テーブルは、P0[n]~p4[m]まで存在する。\r
-                * ピン識別子は、ピンP?[?]を、P0[0]のように表現する。これは、UM10360のTable 73. Pin descriptionのSymbol P?[?]に対応している。\r
-                * Pn[m]のn,mの使用できる値は、Table 73. Pin descriptionに一致する。\r
-                * PIN識別子から値を取り出すときは、専用の関数を使用するべきである。\r
-                * ピン識別子は、ピンを制御するレジスタ番号とビット番号を格納した配列である。\r
-                * <pre>\r
-                * Pn:[[PINSELreg#,PINMODEreg#,PINMODEODreg#,bitidx,[ピン機能名]]]\r
-                * </pre>\r
-                * <ul>\r
-                * <li>PINFUNC,PINMODEのビット位置は、(bitidx%16)*2で計算する。ODRegについては、そのままの数値を使う。</li>\r
-                * <li>[ピン機能名]は、PINSEL設定値に対応するテーブルである。配列のインデクス値が、そのままPINSELの値に対応する。</li>\r
-                * <li>設定できない値のフィールドはnullである。ピン機能名はPin Function Select registerのテーブルの定義値そのもである。ただし、GPIOについては"GPIO Port "を"GPIO"に省略していることに注意。</li>\r
-                * <li>nullはそのビットが無効であることを示す。</li>\r
-                * </ul>\r
-                * @name LPCXpresso1769#P0\r
-                * @constant\r
-                * @field\r
-                * @example\r
-                * //1\r
-                * LPCXpresso1796.P0[0]; //P0[0]\r
-                * LPCXpresso1796.P1[1]; //P0[01]\r
-                * //2\r
-                * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”);\r
-                * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO");//bind P0[0] with GPIO function
-                */\r
-               P0:[\r
-                       [0,0,0,0,["GPIO0.0","RD1","TXD3","SDA1"]],//0\r
-                       [0,0,0,1,["GPIO0.1","TD1","RXD3","SCL1"]],//1\r
-                       [0,0,0,2,["GPIO0.2","TXD0","AD0.7",null]],//2\r
-                       [0,0,0,3,["GPIO0.3","RXD0","AD0.6",null]],//3\r
-                       [0,0,0,4,["GPIO0.4","I2SRX_CLK","RD2","CAP2.0"]],//4\r
-                       [0,0,0,5,["GPIO0.5","I2SRX_WS","TD2","CAP2.1"]],//5\r
-                       [0,0,0,6,["GPIO0.6","I2SRX_SDA","SSEL1","MAT2.0"]],//6\r
-                       [0,0,0,7,["GPIO0.7","I2STX_CLK","SCK1", "MAT2.1"]],//7\r
-                       [0,0,0,8,["GPIO0.8","I2STX_WS","MISO1","MAT2.2"]],//8\r
-                       [0,0,0,9,["GPIO0.9","I2STX_SDA","MOSI1","MAT2.3"]],//9\r
-                       [0,0,0,10,["GPIO0.10","TXD2","SDA2","MAT3.0"]],//10\r
-                       [0,0,0,11,["GPIO0.11","RXD2","SCL2","MAT3.1"]],//11\r
-                       null,null,null,//12,13,14\r
-                       [0,0,0,15,["GPIO0.15","TXD1","SCK0","SCK"]],//15\r
-                       [1,1,0,16,["GPIO0.16","RXD1","SSEL0","SSEL"]],//16\r
-                       [1,1,0,17,["GPIO0.17","CTS1","MISO0","MISO"]],//17\r
-                       [1,1,0,18,["GPIO0.18","DCD1","MOSI0","MOSI"]],//18\r
-                       [1,1,0,19,["GPIO0.19","DSR1",null,"SDA1"]],//19\r
-                       [1,1,0,20,["GPIO0.20","DTR1",null,"SCL1"]],//20\r
-                       [1,1,0,21,["GPIO0.21","RI1",null,"RD1"]],//21\r
-                       [1,1,0,22,["GPIO0.22","RTS1",null,"TD1"]],//22\r
-                       [1,1,0,23,["GPIO0.23","AD0.0","I2SRX_CLK","CAP3.0"]],//23\r
-                       [1,1,0,24,["GPIO0.24","AD0.1","I2SRX_WS","CAP3.1"]],//24\r
-                       [1,1,0,25,["GPIO0.25","AD0.2","I2SRX_SDA","TXD3"]],//25\r
-                       [1,1,0,26,["GPIO0.26","AD0.3","AOUT","RXD3"]],//26\r
-                       [1,null,null,22,["GPIO0.27","SDA0",     "USB_SDA",null]],//27\r
-                       [1,null,null,24,["GPIO0.28","SCL0",     "USB_SCL",null]],//28\r
-                       [1,null,0,29,["GPIO0.29","USB_D+",null,null]],//29\r
-                       [1,null,0,30,["GPIO0.30","USB_D-",null,null]],//30\r
-                       ],\r
-               /**\r
-                * P1に対する定義である。詳細はP0のドキュメントを参照。
-                * @name LPCXpresso1769#P1\r
-                * @constant\r
-                * @field\r
-                * @see LPCXpresso1769#P0
-                */\r
-               P1:[    //P1[x]\r
-                       [2,2,1,0,["GPIO1.0","ENET_TXD0",null,null]],//0\r
-                       [2,2,1,1,["GPIO1.1","ENET_TXD1",null,null]],//1\r
-                       null,null,//2,3\r
-                       [2,2,1,4,["GPIO1.4","ENET_TX_EN",null,null]],//4\r
-                       null,null,null,//5,6,7\r
-                       [2,2,1,8,["GPIO1.8","ENET_CRS",null,null]],//8\r
-                       [2,2,1,9,["GPIO1.9","ENET_RXD0",null,null]],//9\r
-                       [2,2,1,10,["GPIO1.10","ENET_RXD1",null,null]],//10\r
-                       null,null,null,//11,12,13\r
-                       [2,2,1,14,["GPIO1.14","ENET_RX_ER",null,null]],//14\r
-                       [2,2,1,15,["GPIO1.15","ENET_REF_CLK",null,null]],//15\r
-                       [3,3,1,16,["GPIO1.16","ENET_MDC",null,null]],//16\r
-                       [3,3,1,17,["GPIO1.17","ENET_MDIO",null,null]],//17\r
-                       [3,3,1,18,["GPIO1.18","USB_UP_LED","PWM1.1","CAP1.0"]],//18\r
-                       [3,3,1,19,["GPIO1.19","MCOA0","USB_PPWR","CAP1.1"]],//19\r
-                       [3,3,1,20,["GPIO1.20","MCI0","PWM1.2","SCK0"]],//20\r
-                       [3,3,1,21,["GPIO1.21","MCABORT","PWM1.3","SSEL0"]],//21\r
-                       [3,3,1,22,["GPIO1.22","MCOB0","USB_PWRD","MAT1.0"]],//22\r
-                       [3,3,1,23,["GPIO1.23","MCI1","PWM1.4","MISO0"]],//23\r
-                       [3,3,1,24,["GPIO1.24","MCI2","PWM1.5","MOSI0"]],//24\r
-                       [3,3,1,25,["GPIO1.25","MCOA1",null,"MAT1.1"]],//25\r
-                       [3,3,1,26,["GPIO1.26","MCOB1","PWM1.6","CAP0.0"]],//26\r
-                       [3,3,1,27,["GPIO1.27","CLKOUT","USB_OVRCR","CAP0.1"]],//27\r
-                       [3,3,1,28,["GPIO1.28","MCOA2","PCAP1.0","MAT0.0"]],//28\r
-                       [3,3,1,29,["GPIO1.29","MCOB2","PCAP1.1","MAT0.1"]],//29\r
-                       [3,3,1,30,["GPIO1.30",null,"VBUS","AD0.4"]],//30\r
-                       [3,3,1,31,["GPIO1.31",null,"SCK1","AD0.5"]],//31\r
-                       ],\r
-               /**\r
-                * P2に対する定義である。詳細はP0のドキュメントを参照。\r
-                * @name LPCXpresso1769#P2\r
-                * @constant\r
-                * @field\r
-                * @see LPCXpresso1769#P0\r
-                */\r
-               P2:[    //P2[x]\r
-                       [4,4,2,0,["GPIO2.0","PWM1.1","TXD1",null]],//0\r
-                       [4,4,2,1,["GPIO2.1","PWM1.2","RXD1",null]],//1\r
-                       [4,4,2,2,["GPIO2.2","PWM1.3","CTS1",null]],//2\r
-                       [4,4,2,3,["GPIO2.3","PWM1.4","DCD1",null]],//3\r
-                       [4,4,2,4,["GPIO2.4","PWM1.5","DSR1",null]],//4\r
-                       [4,4,2,5,["GPIO2.5","PWM1.6","DTR1",null]],//5\r
-                       [4,4,2,6,["GPIO2.6","PCAP1.0","RI1",null]],//6\r
-                       [4,4,2,7,["GPIO2.7","RD2","RTS1",null]],//7\r
-                       [4,4,2,8,["GPIO2.8","TD2","TXD2","ENET_MDC"]],//8\r
-                       [4,4,2,9,["GPIO2.9","USB_CONNECT","RXD2","ENET_MDIO"]],//9\r
-                       [4,4,2,10,["GPIO2.10","EINT0","NMI",null]],//10\r
-                       [4,4,2,11,["GPIO2.11","EINT1",null,"I2STX_CLK"]],//11\r
-                       [4,4,2,12,["GPIO2.12","EINT2",null,"I2STX_WS"]],//12\r
-                       [4,4,2,13,["GPIO2.13","EINT3",null,"I2STX_SDA"]],//13\r
-                       ],\r
-               /**\r
-                * P3に対する定義である。詳細はP0のドキュメントを参照。\r
-                * @name LPCXpresso1769#P3\r
-                * @constant\r
-                * @field\r
-                * @see LPCXpresso1769#P0\r
-                */\r
-               P3:[    //P3[x]\r
-                       null/* 0*/,null/* 1*/,null/* 2*/,null/* 3*/,null/* 4*/,null/* 5*/,null/* 6*/,null/* 7*/,null/* 8*/,null/* 9*/,\r
-                       null/*10*/,null/*11*/,null/*12*/,null/*13*/,null/*14*/,null/*15*/,null/*16*/,null/*17*/,null/*18*/,null/*19*/,\r
-                       null/*20*/,null/*21*/,null/*22*/,null/*23*/,null/*24*/,\r
-                       [7,7,3,25,["GPIO3.25",null,"MAT0.0","PWM1.2"]],//25\r
-                       [7,7,3,26,["GPIO3.26","STCLK","MAT0.1","PWM1.3"]],//26\r
-               ],\r
-               /**\r
-                * P4に対する定義である。詳細はP0のドキュメントを参照。\r
-                * @name LPCXpresso1769#P4\r
-                * @constant\r
-                * @field\r
-                * @see LPCXpresso1769#P0\r
-                */\r
-               P4:[    //P4[x]\r
-                       null/* 0*/,null/* 1*/,null/* 2*/,null/* 3*/,null/* 4*/,null/* 5*/,null/* 6*/,null/* 7*/,null/* 8*/,null/* 9*/,\r
-                       null/*10*/,null/*11*/,null/*12*/,null/*13*/,null/*14*/,null/*15*/,null/*16*/,null/*17*/,null/*18*/,null/*19*/,\r
-                       null/*20*/,null/*21*/,null/*22*/,null/*23*/,null/*24*/,null/*25*/,null/*26*/,null/*27*/,\r
-                       [9,9,4,28,["GPIO4.28","RX_MCLK","MAT2.0","TXD3"]],//28\r
-                       [9,9,4,29,["GPIO4.29","TX_MCLK","MAT2.1","RXD3"]]//29\r
-               ],\r
-               /**\r
-                * [forSystem]ピン識別子のアクセス関数である。\r
-                * ピン機能シンボルのプレフィクス(機能シンボル)を、 ピン識別子を元に、完全な名称に変換する。\r
-                * ピンにFunctionが含まれているか調べることが出来る。\r
-                * @private\r
-                */\r
-               completePinFunctionName:function completePinFunctionName(i_pin,i_prefix)\r
-               {\r
-                       try{\r
-                               //配列探索\r
-                               for(var i=0;i<i_pin[4].length;i++){\r
-                                       if(i_pin[4][i].indexOf(i_prefix)==0){\r
-                                               //ピン情報の構成\r
-                                               return i_pin[4][i];\r
-                                       }\r
-                               }\r
-                               throw new MiMicException("The function name '"+i_prefix+"' is not unknown.");\r
-                       }catch(e){\r
-                               throw new MiMicException(e);\r
-                       }\r
-               },\r
-               /**\r
-                * [forSystem]ピン識別子のアクセス関数。\r
-                * ピン識別値から、Pinレジスタの番号と、ビット位置を取り出す。\r
-                * @private\r
-                * @return\r
-                * {s:pinselのレジスタ番号、m:modeのレジスタ番号、,o:odのレジスタ番号,sbm:mode,selのビット位置,ob:odのビット位置}
-                */\r
-               getPinRegInfo:function getPinRegInfo(i_pin)\r
-               {\r
-                       try{\r
-                               return {s:i_pin[0],m:i_pin[1],o:i_pin[2],smb:(i_pin[3]%16)*2,ob:i_pin[3]};\r
-                       }catch(e){\r
-                               throw new MiMicException(e);\r
-                       }\r
-               },\r
-               /**\r
-                * [forSystem]ピン識別子のアクセス関数。\r
-                * PIN機能名に一致するPinsel値を取り出す。\r
-                * @private\r
-                */\r
-               getPinSelByFunctionName:function getPinSelByFunctionName(i_pin,i_name)\r
-               {\r
-                       try{\r
-                               for(var i=0;i<i_pin[4].length;i++){\r
-                                       if(i_pin[4][i]==i_name){\r
-                                               //ピン情報の構成\r
-                                               return i;\r
-                                       }\r
-                               }\r
-                               throw new MiMicException("The function name '"+i_name+"' has not function.");\r
-                       }catch(e){\r
-                               throw new MiMicException(e);\r
-                       }\r
-               },\r
-               /**\r
-                * [forSystem]ピンが、ピン機能シンボルを持つか返す。\r
-                * @private\r
-                */\r
-               hasPinFunctionName:function hasPinFunctionName(i_pin,i_name)\r
-               {\r
-                       return i_pin[4].indexOf(i_name)>=0;\r
-               }\r
-       }\r
-\r
-/**\r
- * @private
- */\r
-DEV.I2c=function I2c()\r
-{\r
-       throw new MiMicException("Not imprement.");\r
-}\r
-\r
-/**\r
- * @private\r
- */\r
-DEV.Dma=function Dma()\r
-{\r
-       throw new MiMicException("Not imprement.");\r
-}\r
-/**\r
- * @private\r
- */\r
-DEV.Uart=function Uart()\r
-{\r
-       throw new MiMicException("Not imprement.");\r
-}\r
-/**\r
- * @private\r
- */\r
-DEV.Usb=function Usb()\r
-{\r
-       throw new MiMicException("Not imprement.");\r
-}\r
-\r
-\r
-LPCXpresso1769=DEV;\r
+       //LPC1769を継承する。"構築済のLPC1769ネームスペース"をシャローコピーして、extensionをマージする方法で生成する。\r
+       LPCXpresso1769=MiMicLib.cloneAssoc(LPC1769);\r
+       if(!isUndef(LPCXpresso1769.LED)){alert("invalid override[LED]");}\r
+       /**\r
+        * LPCXpresso1769のLEDに接続されたピン識別子である。\r
+        * 要素は、LPC1769のピン識別子を参照する。\r
+        * @name LPCXpresso1769#LED\r
+        * @constant\r
+        * @field\r
+        * @example\r
+        * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”);\r
+        * var pin=mcu.getPin(LPCXpresso1769.LED[0],"GPIO");//bind LEDPIN with gpio function\r
+        */\r
+       LED:[\r
+               DEV.P0[22],\r
+       ]\r
 }());\r
 \r
diff --git a/misc/MiMicVM/api.js/mbedM3.js b/misc/MiMicVM/api.js/mbedM3.js
new file mode 100644 (file)
index 0000000..0cb93cb
--- /dev/null
@@ -0,0 +1,122 @@
+/**\r
+ * @fileOverview MbedM3ネームスペース、定数値を定義する。\r
+ */\r
+\r
+/**\r
+ * MbedM3用の高レベルAPIのネームスペースである。LPC1769ネームスペースを継承して、MbedM3独自の拡張要素を追加する。\r
+ * このネームスペースは、LPC1769ネームスペースの全てのクラス、関数、宣言を継承する。\r
+ * @namespace\r
+ * <p>\r
+ * 実装メモ\r
+ * このネームスペースは、LPC1769を継承する。LPC1769の構築を完了させてから読み込むこと。\r
+ * </p>\r
+ */\r
+var MbedM3;\r
+\r
+(function(){\r
+       var isUndef=MiMicLib.isUndef;\r
+               \r
+       //LPC1769を継承する。"構築済のLPC1769ネームスペース"をシャローコピーして、extensionをマージする方法で生成する。\r
+       MbedM3=MiMicLib.cloneAssoc(LPC1769);\r
+\r
+       if(!isUndef(MbedM3.PINNAME)){alert("invalid override[PINNAME]");}\r
+       /**\r
+        * Mbedのピン名に対応するピン識別子である。\r
+        * 要素は、LPC1769のピン識別子を参照する。\r
+        * @name mbedM3#P0\r
+        * @constant\r
+        * @field\r
+        * @example\r
+        * var mcu=new MbedM3.Mcu(“192.168.0.39”);\r
+        * var adpin=mcu.getPin(MbedM3.PINNAME.AIN0,"AD");//bind AIN0 with AD function\r
+        */\r
+       MbedM3.PINNAME={\r
+               //Left side\r
+               SPI1MOSI:DEV.P0[9],\r
+               SPI1MISO:DEV.P0[8],\r
+               SPI1SCK :DEV.P0[7],\r
+               GPIO    :DEV.P0[6],\r
+               UART1TX :DEV.P0[0],I2C1SDA:DEV.P0[0],\r
+               UART1RX :DEV.P0[1],I2C1SCL:DEV.P0[1],\r
+               SPI2MODI:DEV.P0[18],\r
+               SPI2MISO:DEV.P0[17],\r
+               SPI2SCK :DEV.P0[15],UART2TX:DEV.P0[15],SPI2SCL :DEV.P0[15], //SPISCL->SPISCK?\r
+               UART2RX :DEV.P0[16],\r
+               AIN0:DEV.P0[23],\r
+               AIN1:DEV.P0[24],\r
+               AIN2:DEV.P0[25],\r
+               AIN3:DEV.P0[26],AOUT:DEV.P0[26],\r
+               AIN4:DEV.P0[30],\r
+               AIN5:DEV.P0[31],\r
+               //Right side\r
+               USBDP:DEV.P0[29],\r
+               USBDM:DEV.P0[30],\r
+               CANRD:DEV.P0[4],\r
+               CANTD:DEV.P0[5],\r
+               UART3TX:DEV.P0[10],I2C2SDA:DEV.P0[10],\r
+               UART3RX:DEV.P0[11],I2C2SCL:DEV.P0[10],\r
+               PWMOUT0:DEV.P2[0],\r
+               PWMOUT1:DEV.P2[1],\r
+               PWMOUT2:DEV.P2[2],\r
+               PWMOUT3:DEV.P2[3],\r
+               PWMOUT4:DEV.P2[4],\r
+               PWMOUT5:DEV.P2[5],\r
+       };\r
+       if(!isUndef(MbedM3.PIN)){alert("invalid override[PIN]");}\r
+       /**\r
+        * Mbedのピン名に対応するピン識別子である。配列の番号は、Mbed付属のチートシートに一致する。\r
+        * 要素は、LPC1769のピン識別子を参照する。\r
+        * @name MbedM3#PIN\r
+        * @constant\r
+        * @field\r
+        * @example\r
+        * var mcu=new MbedM3.Mcu(“192.168.0.39”);\r
+        * var adpin=mcu.getPin(MbedM3.PINNAME.AIN0,"AD");//bind AIN0 with AD function\r
+        */\r
+       MbedM3.PIN=[\r
+               null,null,null,null,null,//0,1,2,3,4\r
+               DEV.P0[9],//5\r
+               DEV.P0[8],//6\r
+               DEV.P0[7],//7\r
+               DEV.P0[6],//8\r
+               DEV.P0[0],//9\r
+               DEV.P0[1],//10\r
+               DEV.P0[18],//11\r
+               DEV.P0[17],//12\r
+               DEV.P0[15],//13\r
+               DEV.P0[16],//14\r
+               DEV.P0[23],//15\r
+               DEV.P0[24],//16\r
+               DEV.P0[25],//17\r
+               DEV.P0[26],//18\r
+               DEV.P0[30],//19\r
+               DEV.P0[31],//20\r
+               DEV.P2[5],//21\r
+               DEV.P2[4],//22\r
+               DEV.P2[3],//23\r
+               DEV.P2[2],//24\r
+               DEV.P2[1],//25\r
+               DEV.P2[0],//26\r
+               DEV.P0[11],//27\r
+               DEV.P0[10],//28\r
+               DEV.P0[5],//29\r
+               DEV.P0[4]//30\r
+       ];\r
+       if(!isUndef(MbedM3.LED)){alert("invalid override[LED]");}\r
+       /**\r
+        * MbedのLEDに接続されたピン識別子である。\r
+        * 要素は、LPC1769のピン識別子を参照する。\r
+        * @name MbedM3#LED\r
+        * @constant\r
+        * @field\r
+        * @example\r
+        * var mcu=new MbedM3.Mcu(“192.168.0.39”);\r
+        * var pin=mcu.getPin(MbedM3.LED[0],"GPIO");//bind LEDPIN with gpio function\r
+        */\r
+       LED:[\r
+               DEV.P1[18],\r
+               DEV.P1[20],\r
+               DEV.P1[21],\r
+               DEV.P1[23]\r
+       ]\r
+}());
\ No newline at end of file