2 * Hyper Operating System Application Framework
5 * @brief %jp{SCI用デバイスドライバ}
7 * Copyright (C) 2006 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #include "scidrv_local.h"
16 FILE_SIZE SciDrv_Write(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, const void *pData, FILE_SIZE Size)
20 const unsigned char *pubBuf;
25 self = (C_SCIDRV *)pDrvObj;
26 pChrFile = (C_CHRFILE *)pFileObj;
28 pubBuf = (const unsigned char *)pData;
31 SysMtx_Lock(self->hMtxSend);
33 for ( i = 0; i < Size; i++ )
36 while ( SciHal_SendChar(&self->SciHal, c) < 0 )
38 if ( pChrFile->cWriteMode == FILE_WMODE_BLOCKING )
40 /* ブロッキングなら送信割り込みを待つ */
41 SciHal_EnableInterrupt(&self->SciHal, SCIHAL_INT_TIE | SCIHAL_INT_RIE);
42 SysEvt_Wait(self->hEvtSend);
43 SysEvt_Clear(self->hEvtSend);
55 SysMtx_Unlock(self->hMtxSend);