5555+

Dependencies:   RingBuffer

Fork of iSerial by BE@R lab

Revision:
3:d5353b68105f
Parent:
2:3fc74f4d685a
Child:
4:b38ef9675d39
--- a/iSerial.cpp	Fri Aug 31 17:32:00 2012 +0000
+++ b/iSerial.cpp	Sat Sep 01 12:28:28 2012 +0000
@@ -1,138 +1,138 @@
-//
-//  iSerial.cpp ... Serial Driver with Interrupt Rec/Send
-//
-//  2009.11.13 ... Originally written by Y.Kuroda for Renesas H83664
-//  2012.08.31 ... Code convert for mbed in C++
-//
-#include "mbed.h"
-#include "RingBuffer.h"
-#include "iSerial.h"
-
-
-/*
- *    Interrupt Function
- */
-void
-ISerial::rx_handler(void)
-{
-    if(Serial::readable()){
-        rxbuf.save(Serial::getc());
-    }
-
-    NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
-}
-
-void
-ISerial::tx_handler(void)
-{
-    if(Serial::writeable()){
-        if(txbuf.check()){
-            Serial::putc( txbuf.read() );
-        }
-    }
-    NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
-}
-
-/*
- *  void sci_init(void)
- *
- * ポート初期化関数....すべてのI/Oの設定を行っている.
- *
- *  引数:なし
- *  戻り値:なし
- *
- */
-ISerial::ISerial(PinName _tx, PinName _rx, const char *_name, int _txbufsize, int _rxbufsize)
-:   Serial(_tx, _rx, _name),
-    txbuf(RingBuffer(_txbufsize)),
-    rxbuf(RingBuffer(_rxbufsize))
-{
-    __disable_irq();
-
-    attach(this, &ISerial::tx_handler, Serial::TxIrq);
-    attach(this, &ISerial::rx_handler, Serial::RxIrq);
-
-//  format(8,Serial::None,1);   // default
-//  baud(baudrate);
-
-    __enable_irq();
-    NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
-}
-
-/*
- *  シリアル入力に文字があるかどうかチェック
- *  返値:    バッファにある文字数
- */
-int
-ISerial::readable(void)
-{
-    return rxbuf.check();
-}
-
-/*
- *  シリアルから一文字入力
- *    --- 文字入力を待つ
- */
-int
-ISerial::getc(void)
-{
-    unsigned short int c;
-
-    while(!rxbuf.check());
-    c = rxbuf.read();
-
-    return c;
-}
-
-
-/*
- * シリアルへ一文字出力
- */
-void
-ISerial::putc(short ch)
-{
-    if(txbuf.check()==0 && Serial::writeable()){
-        Serial::putc(ch);
-        
-    } else {
-        while(txbuf.full());
-        txbuf.save(ch);
-        NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
-    }
-}
-
-/*
- * シリアルへ文字列を出力
- *  注:一回の最大文字数はLINESIZE
- *  注:文字列の終わりにはヌル文字が必要.
- *
- *  引数:文字列へのポインタ
- *  返値:出力した文字数
- */
-short int
-ISerial::putstr(const char* s)
-{
-    int i=0;
-    for(; ; i++){
-        if(*s==0) break;
-        putc(*s++);
-    }
-    return i;
-}
-
-/* short int sci_puts(char* s)
- * シリアルへ文字列を一行出力
- *  注:最後に改行コードを送る他はsci_putstrと同じ
- *
- *  引数:文字列へのポインタ
- *  返値:出力した文字数
- */
-short int
-ISerial::puts(const char* s)
-{
-    short int n = putstr(s);
-    putc(CR);
-    putc(LF);
-    return n;
-}
-
+//
+//  iSerial.cpp ... Serial Driver with Interrupt Rec/Send
+//
+//  2009.11.13 ... Originally written by Y.Kuroda for Renesas H83664
+//  2012.08.31 ... Code convert for mbed in C++
+//
+#include "mbed.h"
+#include "RingBuffer.h"
+#include "iSerial.h"
+
+
+/*
+ *    Interrupt Function
+ */
+void
+iSerial::rx_handler(void)
+{
+    if(Serial::readable()){
+        rxbuf.save(Serial::getc());
+    }
+
+    NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
+}
+
+void
+iSerial::tx_handler(void)
+{
+    if(Serial::writeable()){
+        if(txbuf.check()){
+            Serial::putc( txbuf.read() );
+        }
+    }
+    NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
+}
+
+/*
+ *  void sci_init(void)
+ *
+ *@ƒ|[ƒg‰Šú‰»ŠÖ”DDDD‚·‚ׂĂÌI/O‚̐ݒè‚ðs‚Á‚Ä‚¢‚éD
+ *
+ *@@ˆø”F‚È‚µ
+ *@@–ß‚è’lF‚È‚µ
+ *
+ */
+iSerial::iSerial(PinName _tx, PinName _rx, const char *_name, int _txbufsize, int _rxbufsize)
+:   Serial(_tx, _rx, _name),
+    txbuf(RingBuffer(_txbufsize)),
+    rxbuf(RingBuffer(_rxbufsize))
+{
+    __disable_irq();
+
+    attach(this, &iSerial::tx_handler, Serial::TxIrq);
+    attach(this, &iSerial::rx_handler, Serial::RxIrq);
+
+//  format(8,Serial::None,1);   // default
+//  baud(baudrate);
+
+    __enable_irq();
+    NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
+}
+
+/*
+ *  ƒVƒŠƒAƒ‹“ü—Í‚É•¶Žš‚ª‚ ‚é‚©‚Ç‚¤‚©ƒ`ƒFƒbƒN
+ *  •Ô’lF    ƒoƒbƒtƒ@‚É‚ ‚镶Žš”
+ */
+int
+iSerial::readable(void)
+{
+    return rxbuf.check();
+}
+
+/*
+ *  ƒVƒŠƒAƒ‹‚©‚çˆê•¶Žš“ü—Í
+ *    --- •¶Žš“ü—Í‚ð‘Ò‚Â
+ */
+int
+iSerial::getc(void)
+{
+    unsigned short int c;
+
+    while(!rxbuf.check());
+    c = rxbuf.read();
+
+    return c;
+}
+
+
+/*
+ *@ƒVƒŠƒAƒ‹‚ֈꕶŽšo—Í
+ */
+void
+iSerial::putc(short ch)
+{
+    if(txbuf.check()==0 && Serial::writeable()){
+        Serial::putc(ch);
+        
+    } else {
+        while(txbuf.full());
+        txbuf.save(ch);
+        NVIC_EnableIRQ(UART_IRQn); // UART1_IRQn);
+    }
+}
+
+/*
+ *@ƒVƒŠƒAƒ‹‚Ö•¶Žš—ñ‚ðo—Í
+ *@@’Fˆê‰ñ‚̍ő啶Žš”‚ÍLINESIZE
+ *@@’F•¶Žš—ñ‚̏I‚í‚è‚ɂ̓kƒ‹•¶Žš‚ª•K—vD
+ *
+ *@@ˆø”F•¶Žš—ñ‚ւ̃|ƒCƒ“ƒ^
+ *@@•Ô’lFo—Í‚µ‚½•¶Žš”
+ */
+short int
+iSerial::putstr(const char* s)
+{
+    int i=0;
+    for(; ; i++){
+        if(*s==0) break;
+        putc(*s++);
+    }
+    return i;
+}
+
+/*@short int sci_puts(char* s)
+ *@ƒVƒŠƒAƒ‹‚Ö•¶Žš—ñ‚ðˆêso—Í
+ *@@’FÅŒã‚ɉüsƒR[ƒh‚𑗂鑼‚Ísci_putstr‚Æ“¯‚¶
+ *
+ *@@ˆø”F•¶Žš—ñ‚ւ̃|ƒCƒ“ƒ^
+ *@@•Ô’lFo—Í‚µ‚½•¶Žš”
+ */
+short int
+iSerial::puts(const char* s)
+{
+    short int n = putstr(s);
+    putc(CR);
+    putc(LF);
+    return n;
+}
+