Better Serial C class library with interrupt

Dependencies:   RingBuffer

Fork of iSerial by Yoji KURODA

Committer:
ykuroda
Date:
Fri Aug 31 17:17:12 2012 +0000
Revision:
0:1d193cb1a933
1st coding

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ykuroda 0:1d193cb1a933 1 //
ykuroda 0:1d193cb1a933 2 // SerialIntr.h ... Serial Driver with Interrupt Rec/Send
ykuroda 0:1d193cb1a933 3 //
ykuroda 0:1d193cb1a933 4 // Copyright 2012 Yoji KURODA
ykuroda 0:1d193cb1a933 5 //
ykuroda 0:1d193cb1a933 6 // 2009.11.13 ... Originally written by Y.Kuroda for Renesas H83664
ykuroda 0:1d193cb1a933 7 // 2012.08.31 ... Code convert for mbed in C++
ykuroda 0:1d193cb1a933 8 //
ykuroda 0:1d193cb1a933 9 #ifndef _SERIALINTR_H
ykuroda 0:1d193cb1a933 10 #define _SERIALINTR_H
ykuroda 0:1d193cb1a933 11
ykuroda 0:1d193cb1a933 12 #include <string.h>
ykuroda 0:1d193cb1a933 13 #include "RingBuffer.h"
ykuroda 0:1d193cb1a933 14
ykuroda 0:1d193cb1a933 15
ykuroda 0:1d193cb1a933 16 class SerialIntr : public Serial {
ykuroda 0:1d193cb1a933 17 protected:
ykuroda 0:1d193cb1a933 18
ykuroda 0:1d193cb1a933 19 RingBuffer txbuf;
ykuroda 0:1d193cb1a933 20 RingBuffer rxbuf;
ykuroda 0:1d193cb1a933 21
ykuroda 0:1d193cb1a933 22 void tx_handler(void);
ykuroda 0:1d193cb1a933 23 void rx_handler(void);
ykuroda 0:1d193cb1a933 24
ykuroda 0:1d193cb1a933 25
ykuroda 0:1d193cb1a933 26 public:
ykuroda 0:1d193cb1a933 27
ykuroda 0:1d193cb1a933 28 enum TERMINL_CODES { CR=0x0D, LF=0x0A };
ykuroda 0:1d193cb1a933 29
ykuroda 0:1d193cb1a933 30 /*
ykuroda 0:1d193cb1a933 31 * void init_sci(void)
ykuroda 0:1d193cb1a933 32 *
ykuroda 0:1d193cb1a933 33 * ポート初期化関数....すべてのI/Oの設定を行っている.
ykuroda 0:1d193cb1a933 34 *
ykuroda 0:1d193cb1a933 35 *  引数:なし
ykuroda 0:1d193cb1a933 36 *  戻り値:なし
ykuroda 0:1d193cb1a933 37 *
ykuroda 0:1d193cb1a933 38 */
ykuroda 0:1d193cb1a933 39 SerialIntr(PinName _tx, PinName _rx, const char *_name=NULL, int _txbufsize=100, int _rxbufsize=100);
ykuroda 0:1d193cb1a933 40
ykuroda 0:1d193cb1a933 41 /*
ykuroda 0:1d193cb1a933 42 * シリアル入力に文字があるかどうかチェック
ykuroda 0:1d193cb1a933 43 * 返値: 0  :文字がない
ykuroda 0:1d193cb1a933 44 * 0以外:文字が来ている
ykuroda 0:1d193cb1a933 45 */
ykuroda 0:1d193cb1a933 46 int readable(void);
ykuroda 0:1d193cb1a933 47
ykuroda 0:1d193cb1a933 48 /*
ykuroda 0:1d193cb1a933 49 * シリアルから一文字入力
ykuroda 0:1d193cb1a933 50 */
ykuroda 0:1d193cb1a933 51 int getc(void);
ykuroda 0:1d193cb1a933 52
ykuroda 0:1d193cb1a933 53 /*
ykuroda 0:1d193cb1a933 54 * シリアルへ一文字出力
ykuroda 0:1d193cb1a933 55 */
ykuroda 0:1d193cb1a933 56 void putc(short ch);
ykuroda 0:1d193cb1a933 57
ykuroda 0:1d193cb1a933 58
ykuroda 0:1d193cb1a933 59 /*
ykuroda 0:1d193cb1a933 60 * シリアルへ文字列を出力
ykuroda 0:1d193cb1a933 61 *  注:一回の最大文字数はLINESIZE
ykuroda 0:1d193cb1a933 62 *  注:文字列の終わりにはヌル文字が必要.
ykuroda 0:1d193cb1a933 63 *
ykuroda 0:1d193cb1a933 64 *  引数:文字列へのポインタ
ykuroda 0:1d193cb1a933 65 *  返値:出力した文字数
ykuroda 0:1d193cb1a933 66 */
ykuroda 0:1d193cb1a933 67 short int putstr(const char* s);
ykuroda 0:1d193cb1a933 68
ykuroda 0:1d193cb1a933 69 /* void outs(char* s)
ykuroda 0:1d193cb1a933 70 * シリアルへ文字列を一行出力
ykuroda 0:1d193cb1a933 71 *  注:最後に改行コードを送る他はoutstrと同じ
ykuroda 0:1d193cb1a933 72 *
ykuroda 0:1d193cb1a933 73 *  引数:文字列へのポインタ
ykuroda 0:1d193cb1a933 74 *  返値:出力した文字数
ykuroda 0:1d193cb1a933 75 */
ykuroda 0:1d193cb1a933 76 short int puts(const char* s);
ykuroda 0:1d193cb1a933 77 };
ykuroda 0:1d193cb1a933 78
ykuroda 0:1d193cb1a933 79
ykuroda 0:1d193cb1a933 80 #endif /* _SCI_H */