/* #[<ENTRY_FUNC>]# eEnt_func22 * name: eEnt_func22 * global_name: tSimpleServer_eEnt_func22 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func22(CELLIDX idx, STA* sta) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ syslog( LOG_INFO, "SimpleServer: eEnt_func22" ); syslog( LOG_INFO, " sta->a = %d", sta->a ); syslog( LOG_INFO, " sta->b = %d", sta->b ); EENT_FUNC22_STA_DEALLOC( sta ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func27 * name: eEnt_func27 * global_name: tSimpleServer_eEnt_func27 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func27(CELLIDX idx, int8_t(* array2)[8]) { ER ercd = E_OK; int_t i; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ syslog( LOG_INFO, "eEnt_func27" ); for( i = 0; i < ArraySize; i++ ) syslog( LOG_INFO, "(*array2)[%d]=%d", i, (*array2)[i] ); EENT_FUNC27_ARRAY2_DEALLOC( array2 ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func34 * name: eEnt_func34 * global_name: tSimpleServer_eEnt_func34 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func34(CELLIDX idx, char_t** msg, int32_t* len) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ #define FUNC34_MSG "The temparature & humidity is just confortable." *len = sizeof FUNC34_MSG; eEnt_func34_msg_alloc( *len, (void **)msg ); strcpy( *msg, FUNC34_MSG ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func7 * name: eEnt_func7 * global_name: tSimpleServer_eEnt_func7 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func7(CELLIDX idx, const int8_t array2[8][4]) { ER ercd = E_OK; CELLCB *p_cellcb; int_t i, j; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < ArraySize; i++ ) for( j = 0; j < ArraySize2; j++ ) syslog( LOG_INFO, "array2[%d][%d]=%d", i, j, array2[i][j] ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func6 * name: eEnt_func6 * global_name: tSimpleServer_eEnt_func6 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func6(CELLIDX idx, const int8_t array[8]) { ER ercd = E_OK; CELLCB *p_cellcb; int_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ syslog( LOG_INFO, "eEnt_func6" ); for( i = 0; i < ArraySize; i++ ) syslog( LOG_INFO, "array[%d]=%d", i, array[i]); return(ercd); }
/* * シリアルポートへの文字列送信(受け口関数) */ ER_UINT eSerialPort_write(CELLIDX idx, const char *buffer, uint_t length) { CELLCB *p_cellcb; bool_t buffer_full; uint_t wricnt = 0U; ER ercd, rercd; if (sns_dpn()) { /* コンテキストのチェック */ return(E_CTX); } if (!VALID_IDX(idx)) { /* ポート番号のチェック */ return(E_ID); } p_cellcb = GET_CELLCB(idx); if (!VAR_openFlag) { /* オープン済みかのチェック */ return(E_OBJ); } if (VAR_errorFlag) { /* エラー状態かのチェック */ return(E_SYS); } buffer_full = true; /* ループの1回めはwai_semする */ while (wricnt < length) { if (buffer_full) { SVC(rercd = cSendSemaphore_wait(), gen_ercd_wait(rercd, p_cellcb)); } SVC(rercd = serialPort_writeChar(p_cellcb, *buffer++), rercd); wricnt++; buffer_full = (bool_t) rercd; } if (!buffer_full) { SVC(cSendSemaphore_signal(), gen_ercd_sys(p_cellcb)); } ercd = E_OK; error_exit: return(wricnt > 0U ? (ER_UINT) wricnt : ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func2 * name: eEnt_func2 * global_name: tSingleCellOptimizeCallee_eEnt_func2 * oneway: * #[/ENTRY_FUNC>]# */ int32_t eEnt_func2(CELLIDX idx, int32_t arg) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ if( is_cCall_joined() ){ int32_t res; res = cCall_func2( arg ); return res; } else printf( "tSingleCellOptimizeCaller: cCall: not joined\n" ); }
/* #[<ENTRY_FUNC>]# eEnt_func3 * name: eEnt_func3 * global_name: tSingleCellOptimizeCallee_eEnt_func3 * oneway: * #[/ENTRY_FUNC>]# */ struct tagST eEnt_func3(CELLIDX idx, struct tagST a) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ if( is_cCall_joined() ){ struct tagST res; res = cCall_func3( a ); return res; } else printf( "tSingleCellOptimizeCaller: cCall: not joined\n" ); }
/* #[<ENTRY_FUNC>]# eEnt_func26 * name: eEnt_func26 * global_name: tSimpleServer_eEnt_func26 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func26(CELLIDX idx, STA** sta, int32_t len) { ER ercd = E_OK; CELLCB *p_cellcb; int_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ syslog( LOG_INFO, " len=%d", len ); for( i = 0; i < len; i++ ) syslog( LOG_INFO, " sta[%d]->a=%d, sta[%d]->b=%d", i, sta[i]->a, i, sta[i]->b ); EENT_FUNC26_STA_DEALLOC( sta, len ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func5 * name: eEnt_func5 * global_name: tSimpleServer_eEnt_func5 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func5(CELLIDX idx, const STA** sta, int32_t len) { ER ercd = E_OK; CELLCB *p_cellcb; int_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < len; i++ ){ syslog( LOG_INFO, "sta[%d]->a=%d sta[%d]->b=%d", i, sta[i]->a, i, sta[i]->b ); syslog( LOG_INFO, "sta[%d]->len=%d", i, sta[i]->len ); syslog( LOG_INFO, sta[i]->msg ); } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func14 * name: eEnt_func14 * global_name: tSimpleServer_eEnt_func14 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func14(CELLIDX idx, STB** sta, int32_t len) { ER ercd = E_OK; CELLCB *p_cellcb; int_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < len; i++ ){ sta[i]->a = i + 100; sta[i]->b = - i + 100; } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func4 * name: eEnt_func4 * global_name: tSimpleServer_eEnt_func4 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func4(CELLIDX idx, const char_t** msg, int32_t len) { ER ercd = E_OK; CELLCB *p_cellcb; int32_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < len; i++ ){ puts( msg[i] ); /* msg[i] は NULL 終端されているとは限らないので、このコーディングは不適切 */ /* string(10) のぎりぎりまで詰め込むテストケースを作る場合には問題が発生する */ } return(ercd); }
/* #[<ENTRY_FUNC>]# eC0_send * name: eC0_send * global_name: tTINETClient_eC0_send * oneway: false * #[</ENTRY_FUNC>]# */ ER eC0_send(CELLIDX idx, const int8_t* buf, int16_t size, TMO tmo) { ER ercd = E_OK; CELLCB *p_cellcb; int sz; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します */ #ifdef DEBUG syslog( LOG_INFO, "tTINETServer: send" ); { int i; for( i = 0; i < size; i++ ){ printf( "%02X ", (unsigned char)buf[i] ); if( i % 8 == 7 ) putchar( '\n' ); } putchar( '\n' ); } #endif while(size>0){ if((sz=tcp_snd_dat( ATTR_cep_id, (intptr_t *)buf, (size_t)size, tmo )) < 0 ){ ercd = sz; break; } else{ size -= sz; } } return(ercd); }
/* #[<ENTRY_FUNC>]# eOpener_open * name: eOpener_open * global_name: tTINETClient_eOpener_open * oneway: false * #[</ENTRY_FUNC>]# */ ER eOpener_open(CELLIDX idx, const T_IPV4EP* clientAddr, TMO tmo) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ puts("opening"); ercd=tcp_con_cep(ATTR_cep_id, NADR, clientAddr, tmo); if(ercd<0){ puts("failed"); syslog( LOG_INFO, "TINETClient: connect failed"); } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func13 * name: eEnt_func13 * global_name: tSimpleServer_eEnt_func13 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func13(CELLIDX idx, STB* sta, int32_t len) { ER ercd = E_OK; CELLCB *p_cellcb; int32_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < len; i++ ){ sta[i].a = ( i + 1 ) * 2 - 1; sta[i].b = ( i + 1 ) * 2; } return(ercd); }
/* #[<ENTRY_FUNC>]# ePPAllocator_dealloc * name: ePPAllocator_dealloc * global_name: tPPAllocator_ePPAllocator_dealloc * oneway: false * #[</ENTRY_FUNC>]# */ ER ePPAllocator_dealloc(CELLIDX idx, const void* ptr) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ if( (uintptr_t)ptr < (uintptr_t)VAR_buf || (uintptr_t)ptr >= (uintptr_t)(VAR_buf+VAR_allocatedSize) ){ ercd = E_PAR; } else { VAR_allocatedSize = (uintptr_t)ptr - (uintptr_t)VAR_buf; } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func12 * name: eEnt_func12 * global_name: tSimpleServer_eEnt_func12 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func12(CELLIDX idx, char_t** msg) { ER ercd = E_OK; int_t i; char *MSG[8] = { "we", "are", "very", "glad", "you", "join", "TECS RPC", "Too long string will be chopped in 32." }; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } syslog( LOG_INFO, "func12 called" ); /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < 8; i++ ) strncpy( msg[i], MSG[i], 32 ); return(ercd); }
/* #[<ENTRY_FUNC>]# eBody_main * name: eBody_main * global_name: tTestClient_eBody_main * oneway: * #[/ENTRY_FUNC>]# */ void eBody_main(CELLIDX idx) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ { void *p; #define BUF_SZ 16 cS_snd_buf_alloc( BUF_SZ, &p ); strncpy( p, "msg: calling cS_snd", BUF_SZ - 1); ((char_t *)p)[BUF_SZ-1] = 0; cS_snd( p, BUF_SZ ); } }
/* #[<ENTRY_FUNC>]# ePPAllocator_alloc * name: ePPAllocator_alloc * global_name: tPPAllocator_ePPAllocator_alloc * oneway: false * #[</ENTRY_FUNC>]# */ ER ePPAllocator_alloc(CELLIDX idx, uint32_t size, void** ptr) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ if( size + VAR_allocatedSize > ATTR_heapSize ){ ercd = E_NOMEM; } else { *ptr = (void *)(VAR_buf+VAR_allocatedSize); VAR_allocatedSize += size; } return(ercd); }
/* #[<ENTRY_FUNC>]# eDev_Send * name: eDev_Send * global_name: tDev_eDev_Send * oneway: false * #[</ENTRY_FUNC>]# */ ER eDev_Send(CELLIDX idx, int8_t* buf, int32_t len) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ eDev_Send_buf_dealloc( (void *)buf ); syslog( LOG_INFO, "tDev: eDev_Send: Enter (len=%d)", len ); syslog( LOG_INFO, "tDev: eDev_Send: calling cCB_Receive()" ); cCB_Receive( &buf, &len ); syslog( LOG_INFO, "tDev: eDev_Send: returned from cCB_Receive(len=%d)", len ); cCB_Receive_buf_dealloc( (void *)buf ); return(ercd); }
/* #[<ENTRY_FUNC>]# eErrorHandler_errorOccured * name: eErrorHandler_errorOccured * global_name: tServerErrorHandler_eErrorHandler_errorOccured * oneway: false * #[</ENTRY_FUNC>]# */ ER eErrorHandler_errorOccured(CELLIDX idx, int16_t func_id, ER er, int16_t state) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* end if VALID_IDX(idx) */ /* ここに処理本体を記述します #_TEFB_# */ /* チャンネルを閉じたのち、1秒休憩して、再度開きなおす */ syslog( LOG_INFO, "ServerHandler closing channel" ); cOpener_close( ); sleep(1); syslog( LOG_INFO, "ServerHandler reopen channel" ); cOpener_open( ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func32 * name: eEnt_func32 * global_name: tSimpleServer_eEnt_func32 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func32(CELLIDX idx, STA** sta) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ eEnt_func31_a_alloc( sizeof(STA), (void**) sta ); (*sta)->a = 2; (*sta)->b = 141421; #define FUNC32_MSG "You have a big chance." (*sta)->len = (*sta)->count = sizeof FUNC32_MSG; eEnt_func31_a_alloc( sizeof(FUNC32_MSG), (void**)&(*sta)->msg ); strcpy( (*sta)->msg, FUNC32_MSG ); return(ercd); }
/* * シリアルポートの制御(受け口関数) */ ER eSerialPort_control(CELLIDX idx, uint_t ioctl) { CELLCB *p_cellcb; if (sns_dpn()) { /* コンテキストのチェック */ return(E_CTX); } if (!VALID_IDX(idx)) { return(E_ID); /* ポート番号のチェック */ } p_cellcb = GET_CELLCB(idx); if (!VAR_openFlag) { /* オープン済みかのチェック */ return(E_OBJ); } if (VAR_errorFlag) { /* エラー状態かのチェック */ return(E_SYS); } VAR_ioControl = ioctl; return(E_OK); }
/* #[<ENTRY_FUNC>]# eEnt_func9 * name: eEnt_func9 * global_name: tSimpleServer_eEnt_func9 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func9(CELLIDX idx, const STA* arraySt[ArraySizeSTA]) { ER ercd = E_OK; CELLCB *p_cellcb; int i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < ArraySizeSTA; i++ ){ syslog( LOG_INFO, "arraySt[%d]->a=%d arraySt[%d]->b=%d", i, arraySt[i]->a, i, arraySt[i]->b ); syslog( LOG_INFO, "arraySt[%d]->len=%d", i, arraySt[i]->len ); syslog( LOG_INFO, arraySt[i]->msg ); } return(ercd); }
/* #[<ENTRY_FUNC>]# eAlloc_dealloc * name: eAlloc_dealloc * global_name: tAlloc_eAlloc_dealloc * oneway: false * #[</ENTRY_FUNC>]# */ ER eAlloc_dealloc(CELLIDX idx, const void* ptr) { ER ercd = E_OK; CELLCB *p_cellcb; ALLOC_TAG *at; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します */ at = (ALLOC_TAG *)(ptr-sizeof( ALLOC_TAG )); VAR_n_dealloc++; VAR_byte_dealloc+=at->byte_allocated; VAR_id_map[ at->id ] = 0; syslog(LOG_INFO, "free size=%d p=%08X id=%d", at->byte_allocated, ptr, at->id ); free((void*)at); return(ercd); }
/* * シリアルポート状態の参照(受け口関数) */ ER eSerialPort_refer(CELLIDX idx, T_SERIAL_RPOR* pk_rpor) { CELLCB *p_cellcb; if (sns_dpn()) { /* コンテキストのチェック */ return(E_CTX); } if (!VALID_IDX(idx)) { return(E_ID); /* ポート番号のチェック */ } p_cellcb = GET_CELLCB(idx); if (!VAR_openFlag) { /* オープン済みかのチェック */ return(E_OBJ); } if (VAR_errorFlag) { /* エラー状態かのチェック */ return(E_SYS); } pk_rpor->reacnt = VAR_receiveCount; pk_rpor->wricnt = VAR_sendCount; return(E_OK); }
/* #[<ENTRY_FUNC>]# eAlloc_printStatistics * name: eAlloc_printStatistics * global_name: tAlloc_eAlloc_printStatistics * oneway: false * #[</ENTRY_FUNC>]# */ ER eAlloc_printStatistics(CELLIDX idx) { ER ercd = E_OK; CELLCB *p_cellcb; uint32_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ syslog( LOG_INFO, "=== tAlloc: print statistics ===" ); syslog( LOG_INFO, "n_alloc=%d n_dealloc=%d byte_alloc=%d byte_dealloc=%d", VAR_n_alloc, VAR_n_dealloc, VAR_byte_alloc, VAR_byte_dealloc ); for( i = 0; i < ATTR_max_n_alloc; i++ ){ if( VAR_id_map[ i ] != 0 ) syslog( LOG_INFO, "unfreed id=%d", i ); } return(ercd); }
/* * シリアルポートのオープン(受け口関数) */ ER eSerialPort_open(CELLIDX idx) { CELLCB *p_cellcb; ER ercd; if (sns_dpn()) { /* コンテキストのチェック */ return(E_CTX); } if (!VALID_IDX(idx)) { return(E_ID); /* ポート番号のチェック */ } p_cellcb = GET_CELLCB(idx); SVC(dis_dsp(), gen_ercd_sys(p_cellcb)); if (VAR_openFlag) { /* オープン済みかのチェック */ ercd = E_OBJ; } else { /* * 変数の初期化 */ VAR_ioControl = (IOCTL_ECHO | IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV); VAR_receiveReadPointer = 0U; VAR_receiveWritePointer = 0U; VAR_receiveCount = 0U; VAR_receiveFlowControl = '\0'; VAR_receiveStopped = false; VAR_sendReadPointer = 0U; VAR_sendWritePointer = 0U; VAR_sendCount = 0U; VAR_sendStopped = false; /* * これ以降,割込みを禁止する. */ if (loc_cpu() < 0) { ercd = E_SYS; goto error_exit_enadsp; } /* * ハードウェア依存のオープン処理 */ cSIOPort_open(); /* * 受信通知コールバックを許可する. */ cSIOPort_enableCBR(SIOReceiveReady); VAR_openFlag = true; VAR_errorFlag = false; if (unl_cpu() < 0) { VAR_errorFlag = true; ercd = E_SYS; goto error_exit_enadsp; } ercd = E_OK; } error_exit_enadsp: SVC(ena_dsp(), gen_ercd_sys(p_cellcb)); error_exit: return(ercd); }
/* * シリアルポートからの受信通知コールバック(受け口関数) */ void eiSIOCBR_readyReceive(CELLIDX idx) { CELLCB *p_cellcb; char c; assert(VALID_IDX(idx)); p_cellcb = GET_CELLCB(idx); c = (char) cSIOPort_getChar(); if ((VAR_ioControl & IOCTL_FCSND) != 0U && c == FC_STOP) { /* * 送信を一時停止する.送信中の文字はそのまま送信する. */ VAR_sendStopped = true; } else if (VAR_sendStopped && (c == FC_START || (VAR_ioControl & IOCTL_FCANY) != 0U)) { /* * 送信を再開する. */ VAR_sendStopped = false; if (VAR_sendCount > 0U) { c = VAR_sendBuffer[VAR_sendReadPointer]; if (serialPort_sendChar(p_cellcb, c)) { INC_PTR(VAR_sendReadPointer, ATTR_sendBufferSize); if (VAR_sendCount == ATTR_sendBufferSize) { if (ciSendSemaphore_signal() < 0) { VAR_errorFlag = true; } } VAR_sendCount--; } } } else if ((VAR_ioControl & IOCTL_FCSND) != 0U && c == FC_START) { /* * 送信に対してフロー制御している場合,START は捨てる. */ } else if (VAR_receiveCount == ATTR_receiveBufferSize) { /* * バッファフルの場合,受信した文字を捨てる. */ } else { /* * 受信した文字を受信バッファに入れる. */ VAR_receiveBuffer[VAR_receiveWritePointer] = c; INC_PTR(VAR_receiveWritePointer, ATTR_receiveBufferSize); if (VAR_receiveCount == 0U) { if (ciReceiveSemaphore_signal() < 0) { VAR_errorFlag = true; } } VAR_receiveCount++; /* * STOPを送信する. */ if ((VAR_ioControl & IOCTL_FCRCV) != 0U && !VAR_receiveStopped && VAR_receiveCount >= BUFCNT_STOP(ATTR_receiveBufferSize)) { if (!serialPort_sendChar(p_cellcb, FC_STOP)) { VAR_receiveFlowControl = FC_STOP; } VAR_receiveStopped = true; } } }