Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_asp/trunk/asp_dcre/syssvc/serial.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r313 r315  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     11 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     12 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     13 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16 *      スコード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20 *      の無保証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     23 *      と.
     24 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     25 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     26 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     27 *        報告すること.
     28 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     29 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     30 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     31 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  @(#) $Id$
     
    5742
    5843/*
    59  *              シリアルインタフェースドライバ
     44 *              シリアルインタフェースドライバ
    6045 */
    6146
     
    6853
    6954/*
    70  *  バッファサイズのデフォルト値とバッファの定義
     55 *  バッファサイズのデフォルト値とバッファの定義
    7156 */
    7257#ifndef SERIAL_RCV_BUFSZ1
    73 #define SERIAL_RCV_BUFSZ1       256                     /* ポート1の受信バッファサイズ */
     58#define SERIAL_RCV_BUFSZ1       256                     /* ポート1の受信バッファサイズ */
    7459#endif /* SERIAL_RCV_BUFSZ1 */
    7560
    7661#ifndef SERIAL_SND_BUFSZ1
    77 #define SERIAL_SND_BUFSZ1       256                     /* ポート1の送信バッファサイズ */
     62#define SERIAL_SND_BUFSZ1       256                     /* ポート1の送信バッファサイズ */
    7863#endif /* SERIAL_SND_BUFSZ1 */
    7964
     
    8166static char     snd_buffer1[SERIAL_SND_BUFSZ1];
    8267
    83 #if TNUM_PORT >= 2                                              /* ポート2に関する定義 */
     68#if TNUM_PORT >= 2                                              /* ポート2に関する定義 */
    8469
    8570#ifndef SERIAL_RCV_BUFSZ2
    86 #define SERIAL_RCV_BUFSZ2       256                     /* ポート2の受信バッファサイズ */
     71#define SERIAL_RCV_BUFSZ2       256                     /* ポート2の受信バッファサイズ */
    8772#endif /* SERIAL_RCV_BUFSZ2 */
    8873
    8974#ifndef SERIAL_SND_BUFSZ2
    90 #define SERIAL_SND_BUFSZ2       256                     /* ポート2の送信バッファサイズ */
     75#define SERIAL_SND_BUFSZ2       256                     /* ポート2の送信バッファサイズ */
    9176#endif /* SERIAL_SND_BUFSZ2 */
    9277
     
    9681#endif /* TNUM_PORT >= 2 */
    9782
    98 #if TNUM_PORT >= 3                                              /* ポート3に関する定義 */
     83#if TNUM_PORT >= 3                                              /* ポート3に関する定義 */
    9984
    10085#ifndef SERIAL_RCV_BUFSZ3
    101 #define SERIAL_RCV_BUFSZ3       256                     /* ポート3の受信バッファサイズ */
     86#define SERIAL_RCV_BUFSZ3       256                     /* ポート3の受信バッファサイズ */
    10287#endif /* SERIAL_RCV_BUFSZ3 */
    10388
    10489#ifndef SERIAL_SND_BUFSZ3
    105 #define SERIAL_SND_BUFSZ3       256                     /* ポート3の送信バッファサイズ */
     90#define SERIAL_SND_BUFSZ3       256                     /* ポート3の送信バッファサイズ */
    10691#endif /* SERIAL_SND_BUFSZ3 */
    10792
     
    11196#endif /* TNUM_PORT >= 3 */
    11297
    113 #if TNUM_PORT >= 4                                              /* ポート4に関する定義 */
     98#if TNUM_PORT >= 4                                              /* ポート4に関する定義 */
    11499
    115100#ifndef SERIAL_RCV_BUFSZ4
    116 #define SERIAL_RCV_BUFSZ4       256                     /* ポート4の受信バッファサイズ */
     101#define SERIAL_RCV_BUFSZ4       256                     /* ポート4の受信バッファサイズ */
    117102#endif /* SERIAL_RCV_BUFSZ4 */
    118103
    119104#ifndef SERIAL_SND_BUFSZ4
    120 #define SERIAL_SND_BUFSZ4       256                     /* ポート4の送信バッファサイズ */
     105#define SERIAL_SND_BUFSZ4       256                     /* ポート4の送信バッファサイズ */
    121106#endif /* SERIAL_SND_BUFSZ4 */
    122107
     
    131116
    132117/*
    133  *  フロー制御に関連する定数とマクロ
    134  */
    135 #define FC_STOP                 '\023'          /* コントロール-S */
    136 #define FC_START                '\021'          /* コントロール-Q */
    137 
    138 #define BUFCNT_STOP(bufsz)              ((bufsz) * 3 / 4)       /* STOPを送る基準文字数 */
    139 #define BUFCNT_START(bufsz)             ((bufsz) / 2)           /* STARTを送る基準文字数 */
    140 
    141 /*
    142  *  シリアルポート初期化ブロック
     118 *  フロー制御に関連する定数とマクロ
     119 */
     120#define FC_STOP                 '\023'          /* コントロール-S */
     121#define FC_START                '\021'          /* コントロール-Q */
     122
     123#define BUFCNT_STOP(bufsz)              ((bufsz) * 3 / 4)       /* STOPを送る基準文字数 */
     124#define BUFCNT_START(bufsz)             ((bufsz) / 2)           /* STARTを送る基準文字数 */
     125
     126/*
     127 *  シリアルポート初期化ブロック
    143128 */
    144129typedef struct serial_port_initialization_block {
    145         ID              rcv_semid;              /* 受信バッファ管理用セマフォのID */
    146         ID              snd_semid;              /* 送信バッファ管理用セマフォのID */
    147         uint_t  rcv_bufsz;              /* 受信バッファサイズ */
    148         char    *rcv_buffer;    /* 受信バッファ */
    149         uint_t  snd_bufsz;              /* 送信バッファサイズ */
    150         char    *snd_buffer;    /* 送信バッファ */
     130        ID              rcv_semid;              /* 受信バッファ管理用セマフォのID */
     131        ID              snd_semid;              /* 送信バッファ管理用セマフォのID */
     132        uint_t  rcv_bufsz;              /* 受信バッファサイズ */
     133        char    *rcv_buffer;    /* 受信バッファ */
     134        uint_t  snd_bufsz;              /* 送信バッファサイズ */
     135        char    *snd_buffer;    /* 送信バッファ */
    151136} SPINIB;
    152137
     
    173158
    174159/*
    175  *  シリアルポート管理ブロック
     160 *  シリアルポート管理ブロック
    176161 */
    177162typedef struct serial_port_control_block {
    178         const SPINIB *p_spinib;         /* シリアルポート初期化ブロック */
    179         SIOPCB  *p_siopcb;                      /* シリアルI/Oポート管理ブロック */
    180         bool_t  openflag;                       /* オープン済みフラグ */
    181         bool_t  errorflag;                      /* エラーフラグ */
    182         uint_t  ioctl;                          /* 動作制御の設定値 */
    183 
    184         uint_t  rcv_read_ptr;           /* 受信バッファ読出しポインタ */
    185         uint_t  rcv_write_ptr;          /* 受信バッファ書込みポインタ */
    186         uint_t  rcv_count;                      /* 受信バッファ中の文字数 */
    187         char    rcv_fc_chr;                     /* 送るべきSTART/STOP */
    188         bool_t  rcv_stopped;            /* STOPを送った状æ
    189 ‹ã‹ï¼Ÿ */
    190 
    191         uint_t  snd_read_ptr;           /* 送信バッファ読出しポインタ */
    192         uint_t  snd_write_ptr;          /* 送信バッファ書込みポインタ */
    193         uint_t  snd_count;                      /* 送信バッファ中の文字数 */
    194         bool_t  snd_stopped;            /* STOPを受け取った状æ
    195 ‹ã‹ï¼Ÿ */
     163        const SPINIB *p_spinib;         /* シリアルポート初期化ブロック */
     164        SIOPCB  *p_siopcb;                      /* シリアルI/Oポート管理ブロック */
     165        bool_t  openflag;                       /* オープン済みフラグ */
     166        bool_t  errorflag;                      /* エラーフラグ */
     167        uint_t  ioctl;                          /* 動作制御の設定値 */
     168
     169        uint_t  rcv_read_ptr;           /* 受信バッファ読出しポインタ */
     170        uint_t  rcv_write_ptr;          /* 受信バッファ書込みポインタ */
     171        uint_t  rcv_count;                      /* 受信バッファ中の文字数 */
     172        char    rcv_fc_chr;                     /* 送るべきSTART/STOP */
     173        bool_t  rcv_stopped;            /* STOPを送った状態か? */
     174
     175        uint_t  snd_read_ptr;           /* 送信バッファ読出しポインタ */
     176        uint_t  snd_write_ptr;          /* 送信バッファ書込みポインタ */
     177        uint_t  snd_count;                      /* 送信バッファ中の文字数 */
     178        bool_t  snd_stopped;            /* STOPを受け取った状態か? */
    196179} SPCB;
    197180
     
    199182
    200183/*
    201  *  シリアルポートIDからシリアルポート管理ブロックを取り出すためのマクロ
     184 *  シリアルポートIDからシリアルポート管理ブロックを取り出すためのマクロ
    202185 */
    203186#define INDEX_PORT(portid)      ((uint_t)((portid) - 1))
     
    205188
    206189/*
    207  *  ポインタのインクリメント
     190 *  ポインタのインクリメント
    208191 */
    209192#define INC_PTR(ptr, bufsz) do {        \
     
    214197
    215198/*
    216  *  サービスコール呼出しマクロ
     199 *  サービスコール呼出しマクロ
    217200 *
    218  *  サービスコール呼出しを含む式expを評価し,返値がエラー(負の値)の場
    219  *  合には,ercにercd_expを評価した値を代å
    220 ¥ã—,error_exitにgotoする.
     201 *  サービスコール呼出しを含む式expを評価し,返値がエラー(負の値)の場
     202 *  合には,ercにercd_expを評価した値を代入し,error_exitにgotoする.
    221203 */
    222204#define SVC(exp, ercd_exp) do {         \
     
    228210
    229211/*
    230  *  E_SYSエラーの生成
     212 *  E_SYSエラーの生成
    231213 */
    232214static ER
     
    238220
    239221/*
    240  *  å¾
    241 ã¡ã«å
    242 ¥ã‚‹ã‚µãƒ¼ãƒ“スコールからのエラーの変換
     222 *  待ちに入るサービスコールからのエラーの変換
    243223 */
    244224static ER
     
    256236
    257237/*
    258  *  シリアルインタフェースドライバの初期化ルーチン
     238 *  シリアルインタフェースドライバの初期化ルーチン
    259239 */
    260240void
     
    272252
    273253/*
    274  *  シリアルポートのオープン(サービスコール)
     254 *  シリアルポートのオープン(サービスコール)
    275255 */
    276256ER
     
    280260        ER              ercd;
    281261
    282         if (sns_dpn()) {                                /* コンテキストのチェック */
     262        if (sns_dpn()) {                                /* コンテキストのチェック */
    283263                return(E_CTX);
    284264        }
    285265        if (!(1 <= portid && portid <= TNUM_PORT)) {
    286                 return(E_ID);                           /* ポート番号のチェック */
     266                return(E_ID);                           /* ポート番号のチェック */
    287267        }
    288268        p_spcb = get_spcb(portid);
    289269
    290270        SVC(dis_dsp(), gen_ercd_sys(p_spcb));
    291         if (p_spcb->openflag) {                 /* オープン済みかのチェック */
     271        if (p_spcb->openflag) {                 /* オープン済みかのチェック */
    292272                ercd = E_OBJ;
    293273        }
    294274        else {
    295275                /*
    296                  *  変数の初期化
     276                 *  変数の初期化
    297277                 */
    298278                p_spcb->ioctl = (IOCTL_ECHO | IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV);
     
    310290
    311291                /*
    312                  *  これ以降,割込みを禁止する.
     292                 *  これ以降,割込みを禁止する.
    313293                 */
    314294                if (loc_cpu() < 0) {
     
    318298
    319299                /*
    320                  *  ハードウェア依存のオープン処理
     300                 *  ハードウェア依存のオープン処理
    321301                 */
    322302                p_spcb->p_siopcb = sio_opn_por(portid, (intptr_t) p_spcb);
    323303
    324304                /*
    325                  *  受信通知コールバックを許可する.
     305                 *  受信通知コールバックを許可する.
    326306                 */
    327307                sio_ena_cbr(p_spcb->p_siopcb, SIO_RDY_RCV);
     
    345325
    346326/*
    347  *  シリアルポートのクローズ(サービスコール)
     327 *  シリアルポートのクローズ(サービスコール)
    348328 */
    349329ER
     
    354334        bool_t  eflag = false;
    355335
    356         if (sns_dpn()) {                                /* コンテキストのチェック */
     336        if (sns_dpn()) {                                /* コンテキストのチェック */
    357337                return(E_CTX);
    358338        }
    359339        if (!(1 <= portid && portid <= TNUM_PORT)) {
    360                 return(E_ID);                           /* ポート番号のチェック */
     340                return(E_ID);                           /* ポート番号のチェック */
    361341        }
    362342        p_spcb = get_spcb(portid);
    363343
    364344        SVC(dis_dsp(), gen_ercd_sys(p_spcb));
    365         if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
     345        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    366346                ercd = E_OBJ;
    367347        }
    368348        else {
    369349                /*
    370                  *  ハードウェア依存のクローズ処理
     350                 *  ハードウェア依存のクローズ処理
    371351                 */
    372352                if (loc_cpu() < 0) {
     
    380360
    381361                /*
    382                  *  セマフォの初期化
     362                 *  セマフォの初期化
    383363                 */
    384364                if (ini_sem(p_spcb->p_spinib->snd_semid) < 0) {
     
    390370
    391371                /*
    392                  *  エラーコードの設定
     372                 *  エラーコードの設定
    393373                 */
    394374                if (eflag) {
     
    406386
    407387/*
    408  *  シリアルポートへの文字送信
     388 *  シリアルポートへの文字送信
    409389 *
    410  *  p_spcbで指定されるシリアルI/Oポートに対して,文字cを送信する.文字
    411  *  を送信レジスタにいれた場合にはtrueを返す.そうでない場合には,送信
    412  *  レジスタが空いたことを通知するコールバック関数を許可し,falseを返す.
    413  *  この関数は,CPUロック状æ
    414 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Ž
     390 *  p_spcbで指定されるシリアルI/Oポートに対して,文字cを送信する.文字
     391 *  を送信レジスタにいれた場合にはtrueを返す.そうでない場合には,送信
     392 *  レジスタが空いたことを通知するコールバック関数を許可し,falseを返す.
     393 *  この関数は,CPUロック状態で呼び出される.
    415394 */
    416395Inline bool_t
     
    427406
    428407/*
    429  *  シリアルポートへの1文字送信
     408 *  シリアルポートへの1文字送信
    430409 */
    431410static ER_BOOL
     
    436415
    437416        /*
    438          *  LFの前にCRを送信する.
     417         *  LFの前にCRを送信する.
    439418         */
    440419        if (c == '\n' && (p_spcb->ioctl & IOCTL_CRLF) != 0U) {
    441420                /*
    442                  *  以下のコードは再帰呼出しになっているが,引数cが'\n'の場合に
    443                  *  引数cを'\r'として呼び出すことから,この再帰呼出しは2回目の
    444                  *  呼び出しでå¿
    445 ãšæ­¢ã¾ã‚‹ï¼Ž
     421                 *  以下のコードは再帰呼出しになっているが,引数cが'\n'の場合に
     422                 *  引数cを'\r'として呼び出すことから,この再帰呼出しは2回目の
     423                 *  呼び出しで必ず止まる.
    446424                 */
    447425                SVC(rercd = serial_wri_chr(p_spcb, '\r'), rercd);
     
    456434                                                                && serial_snd_chr(p_spcb, c)) {
    457435                /*
    458                  *  シリアルI/Oデバイスの送信レジスタに文字をå
    459 ¥ã‚Œã‚‹ã“とに成功し
    460                  *  た場合.
     436                 *  シリアルI/Oデバイスの送信レジスタに文字を入れることに成功し
     437                 *  た場合.
    461438                 */
    462439                buffer_full = false;
     
    464441        else {
    465442                /*
    466                  *  送信バッファに文字をå
    467 ¥ã‚Œã‚‹ï¼Ž
     443                 *  送信バッファに文字を入れる.
    468444                 */
    469445                p_spcb->p_spinib->snd_buffer[p_spcb->snd_write_ptr] = c;
     
    481457
    482458/*
    483  *  シリアルポートへの文字列送信(サービスコール)
     459 *  シリアルポートへの文字列送信(サービスコール)
    484460 */
    485461ER_UINT
     
    491467        ER              ercd, rercd;
    492468
    493         if (sns_dpn()) {                                /* コンテキストのチェック */
     469        if (sns_dpn()) {                                /* コンテキストのチェック */
    494470                return(E_CTX);
    495471        }
    496472        if (!(1 <= portid && portid <= TNUM_PORT)) {
    497                 return(E_ID);                           /* ポート番号のチェック */
     473                return(E_ID);                           /* ポート番号のチェック */
    498474        }
    499475
    500476        p_spcb = get_spcb(portid);
    501         if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
     477        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    502478                return(E_OBJ);
    503479        }
    504         if (p_spcb->errorflag) {                /* エラー状æ
    505 ‹ã‹ã®ãƒã‚§ãƒƒã‚¯ */
     480        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    506481                return(E_SYS);
    507482        }
    508483
    509         buffer_full = true;                             /* ループの1回めはwai_semする */
     484        buffer_full = true;                             /* ループの1回めはwai_semする */
    510485        while (wricnt < len) {
    511486                if (buffer_full) {
     
    527502
    528503/*
    529  *  シリアルポートからの1文字受信
     504 *  シリアルポートからの1文字受信
    530505 */
    531506static bool_t
     
    538513
    539514        /*
    540          *  受信バッファから文字を取り出す.
     515         *  受信バッファから文字を取り出す.
    541516         */
    542517        *p_c = p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_read_ptr];
     
    546521
    547522        /*
    548          *  STARTを送信する.
     523         *  STARTを送信する.
    549524         */
    550525        if (p_spcb->rcv_stopped && p_spcb->rcv_count
     
    564539
    565540/*
    566  *  シリアルポートからの文字列受信(サービスコール)
     541 *  シリアルポートからの文字列受信(サービスコール)
    567542 */
    568543ER_UINT
     
    572547        bool_t  buffer_empty;
    573548        uint_t  reacnt = 0U;
    574         char    c = '\0';               /* コンパイラの警告を抑止するために初期化する */
     549        char    c = '\0';               /* コンパイラの警告を抑止するために初期化する */
    575550        ER              ercd, rercd;
    576551
    577         if (sns_dpn()) {                                /* コンテキストのチェック */
     552        if (sns_dpn()) {                                /* コンテキストのチェック */
    578553                return(E_CTX);
    579554        }
    580555        if (!(1 <= portid && portid <= TNUM_PORT)) {
    581                 return(E_ID);                           /* ポート番号のチェック */
     556                return(E_ID);                           /* ポート番号のチェック */
    582557        }
    583558
    584559        p_spcb = get_spcb(portid);
    585         if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
     560        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    586561                return(E_OBJ);
    587562        }
    588         if (p_spcb->errorflag) {                /* エラー状æ
    589 ‹ã‹ã®ãƒã‚§ãƒƒã‚¯ */
     563        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    590564                return(E_SYS);
    591565        }
    592566
    593         buffer_empty = true;                    /* ループの1回めはwai_semする */
     567        buffer_empty = true;                    /* ループの1回めはwai_semする */
    594568        while (reacnt < len) {
    595569                if (buffer_empty) {
     
    603577
    604578                /*
    605                  *  エコーバック処理.
     579                 *  エコーバック処理.
    606580                 */
    607581                if ((p_spcb->ioctl & IOCTL_ECHO) != 0U) {
     
    625599
    626600/*
    627  *  シリアルポートの制御(サービスコール)
     601 *  シリアルポートの制御(サービスコール)
    628602 */
    629603ER
     
    632606        SPCB    *p_spcb;
    633607
    634         if (sns_dpn()) {                                /* コンテキストのチェック */
     608        if (sns_dpn()) {                                /* コンテキストのチェック */
    635609                return(E_CTX);
    636610        }
    637611        if (!(1 <= portid && portid <= TNUM_PORT)) {
    638                 return(E_ID);                           /* ポート番号のチェック */
     612                return(E_ID);                           /* ポート番号のチェック */
    639613        }
    640614
    641615        p_spcb = get_spcb(portid);
    642         if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
     616        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    643617                return(E_OBJ);
    644618        }
    645         if (p_spcb->errorflag) {                /* エラー状æ
    646 ‹ã‹ã®ãƒã‚§ãƒƒã‚¯ */
     619        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    647620                return(E_SYS);
    648621        }
     
    653626
    654627/*
    655  *  シリアルポート状æ
    656 ‹ã®å‚ç
    657 §ï¼ˆã‚µãƒ¼ãƒ“スコール)
     628 *  シリアルポート状態の参照(サービスコール)
    658629 */
    659630ER
     
    662633        SPCB    *p_spcb;
    663634
    664         if (sns_dpn()) {                                /* コンテキストのチェック */
     635        if (sns_dpn()) {                                /* コンテキストのチェック */
    665636                return(E_CTX);
    666637        }
    667638        if (!(1 <= portid && portid <= TNUM_PORT)) {
    668                 return(E_ID);                           /* ポート番号のチェック */
     639                return(E_ID);                           /* ポート番号のチェック */
    669640        }
    670641
    671642        p_spcb = get_spcb(portid);
    672         if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
     643        if (!(p_spcb->openflag)) {              /* オープン済みかのチェック */
    673644                return(E_OBJ);
    674645        }
    675         if (p_spcb->errorflag) {                /* エラー状æ
    676 ‹ã‹ã®ãƒã‚§ãƒƒã‚¯ */
     646        if (p_spcb->errorflag) {                /* エラー状態かのチェック */
    677647                return(E_SYS);
    678648        }
     
    684654
    685655/*
    686  *  シリアルポートからの送信可能コールバック
     656 *  シリアルポートからの送信可能コールバック
    687657 */
    688658void
     
    694664        if (p_spcb->rcv_fc_chr != '\0') {
    695665                /*
    696                  *  START/STOP を送信する.
     666                 *  START/STOP を送信する.
    697667                 */
    698668                (void) sio_snd_chr(p_spcb->p_siopcb, p_spcb->rcv_fc_chr);
     
    701671        else if (!(p_spcb->snd_stopped) && p_spcb->snd_count > 0U) {
    702672                /*
    703                  *  送信バッファ中から文字を取り出して送信する.
     673                 *  送信バッファ中から文字を取り出して送信する.
    704674                 */
    705675                (void) sio_snd_chr(p_spcb->p_siopcb,
     
    715685        else {
    716686                /*
    717                  *  送信すべき文字がない場合は,送信可能コールバックを禁止する.
     687                 *  送信すべき文字がない場合は,送信可能コールバックを禁止する.
    718688                 */
    719689                sio_dis_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
     
    722692
    723693/*
    724  *  シリアルポートからの受信通知コールバック
     694 *  シリアルポートからの受信通知コールバック
    725695 */
    726696void
     
    734704        if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_STOP) {
    735705                /*
    736                  *  送信を一時停止する.送信中の文字はそのまま送信する.
     706                 *  送信を一時停止する.送信中の文字はそのまま送信する.
    737707                 */
    738708                p_spcb->snd_stopped = true;
     
    741711                                || (p_spcb->ioctl & IOCTL_FCANY) != 0U)) {
    742712                /*
    743                  *  送信を再開する.
     713                 *  送信を再開する.
    744714                 */
    745715                p_spcb->snd_stopped = false;
     
    759729        else if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_START) {
    760730                /*
    761                  *  送信に対してフロー制御している場合,START は捨てる.
     731                 *  送信に対してフロー制御している場合,START は捨てる.
    762732                 */
    763733        }
    764734        else if (p_spcb->rcv_count == p_spcb->p_spinib->rcv_bufsz) {
    765735                /*
    766                  *  バッファフルの場合,受信した文字を捨てる.
     736                 *  バッファフルの場合,受信した文字を捨てる.
    767737                 */
    768738        }
    769739        else {
    770740                /*
    771                  *  受信した文字を受信バッファにå
    772 ¥ã‚Œã‚‹ï¼Ž
     741                 *  受信した文字を受信バッファに入れる.
    773742                 */
    774743                p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_write_ptr] = c;
     
    782751
    783752                /*
    784                  *  STOPを送信する.
     753                 *  STOPを送信する.
    785754                 */
    786755                if ((p_spcb->ioctl & IOCTL_FCRCV) != 0U && !(p_spcb->rcv_stopped)
     
    796765
    797766/*
    798  *  シリアルインタフェースドライバからの未送信文字の取出し
     767 *  シリアルインタフェースドライバからの未送信文字の取出し
    799768 */
    800769bool_t
     
    803772        SPCB    *p_spcb;
    804773
    805         if (1 <= portid && portid <= TNUM_PORT) {       /* ポート番号のチェック */
     774        if (1 <= portid && portid <= TNUM_PORT) {       /* ポート番号のチェック */
    806775                p_spcb = get_spcb(portid);
    807                 if (p_spcb->openflag) {                                 /* オープン済みかのチェック */
     776                if (p_spcb->openflag) {                                 /* オープン済みかのチェック */
    808777                        if (p_spcb->snd_count > 0U) {
    809778                                *p_c = p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr];
Note: See TracChangeset for help on using the changeset viewer.