void chunk_encode_copy(chunk dst,chunk src,char esc){ chunk_len k=0; for(chunk_len i=0;i<src.len;i++){ if (isprint((unsigned char)src.data[i])) { if (src.data[i]==esc){ VALID_IDX(k+1,dst); dst.data[k]=esc; dst.data[k+1]=esc; k+=2; VALID_IDX(k,dst); } else { VALID_IDX(k,dst); dst.data[k]=src.data[i]; k++; } } else { VALID_IDX(k+2,dst); dst.data[k]=esc; dst.data[k+1]=HEX[(src.data[i]>>4)&(char)0x0F]; dst.data[k+2]=HEX[src.data[i]&(char)0x0F]; k+=3; } } if(k<dst.len) { dst.data[k]=0; } }
/* #[<ENTRY_FUNC>]# eEnt_func42 * name: eEnt_func42 * global_name: tSimpleServer_eEnt_func42 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func42(CELLIDX idx, char_t** msg) { ER ercd = E_OK; CELLCB *p_cellcb; // static char_t *MSG[8] = { "Hallo", "this", "is", "nice", "day", "isn't", "it", "?" }; char_t *MSG[8] = { "Hallo", "this", "is", "nice", "day", "isn't", "it", "?" }; int_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ for( i = 0; i < 8; i++ ) strcpy( msg[i], MSG[i] ); for( i = 0; i < 8; i++ ){ printf( "M %d %s\n", i, MSG[i] ); printf( "m %d %08X %s\n", i, msg[i], msg[i] ); } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func43 * name: eEnt_func43 * global_name: tSimpleServer_eEnt_func43 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func43(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_# */ 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 ); } for( i = 0; i < len; i++ ){ int32_t a, b; a = sta[i].a; b = sta[i].b; sta[i].a = b; sta[i].b = a; } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func35 * name: eEnt_func35 * global_name: tSimpleServer_eEnt_func35 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func35(CELLIDX idx, char_t*** msg, int32_t* len, int32_t* msglen) { ER ercd = E_OK; CELLCB *p_cellcb; static const char_t *MSG[] = { "Today", "is", "2010", "October", "10", "10-10-10" }; int32_t i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ printf( "&i=%08X\n", &i ); *len = sizeof MSG / sizeof( char_t * ); *msglen = 9; // MSG[i] の最大長さ syslog( LOG_INFO, "func35: len=%d\n", *len ); eEnt_func35_msg_alloc( sizeof MSG, (void **)msg ); for( i = 0; i < *len; i++ ){ eEnt_func35_msg_alloc( strlen(MSG[i])+1, (void **)&(*msg)[i] ); strcpy((*msg)[i],MSG[i]); } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func36 * name: eEnt_func36 * global_name: tSimpleServer_eEnt_func36 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func36(CELLIDX idx, STA** sta, int32_t* len) { ER ercd = E_OK; int_t i; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } #define N_STA (5) /* ここに処理本体を記述します #_TEFB_# */ *len = N_STA; eEnt_func36_sta_alloc( N_STA * sizeof(STA), (void**)sta ); for( i = 0; i < N_STA; i++ ){ (*sta)[i].a = i + 1; (*sta)[i].b = - i - 1; #define FUNC36_MSG "have a nice day!" (*sta)[i].len = (*sta)[i].count = sizeof FUNC36_MSG; eEnt_func36_sta_alloc( sizeof(FUNC36_MSG), (void**)&(*sta)[i].msg ); strcpy( (*sta)[i].msg, FUNC36_MSG ); } return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func37 * name: eEnt_func37 * global_name: tSimpleServer_eEnt_func37 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func37(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_# */ #define STA_LEN 3 #define FUNC37_MSG "Welcome to TECS" *len = STA_LEN; eEnt_func37_sta_alloc( sizeof(STA*)*STA_LEN, (void **)sta ); for( i = 0; i < STA_LEN; i++ ){ eEnt_func37_sta_alloc( sizeof(STA), (void **)&(*sta)[i] ); (*sta)[i]->a = ( i + 1 ) * ( i + 1 ); (*sta)[i]->b = ( i + 1 ) * ( i + 1 ) * ( i + 1 ); eEnt_func37_sta_alloc( sizeof FUNC37_MSG, (void **)&(*sta)[i]->msg ); (*sta)[i]->len = (*sta)[i]->count = sizeof FUNC37_MSG; } return(ercd); }
/* * シリアルポートからの送信可能コールバック(受け口関数) */ void eiSIOCBR_readySend(CELLIDX idx) { CELLCB *p_cellcb; assert(VALID_IDX(idx)); p_cellcb = GET_CELLCB(idx); if (VAR_receiveFlowControl != '\0') { /* * START/STOP を送信する. */ (void) cSIOPort_putChar(VAR_receiveFlowControl); VAR_receiveFlowControl = '\0'; } else if (!VAR_sendStopped && VAR_sendCount > 0U) { /* * 送信バッファ中から文字を取り出して送信する. */ (void) cSIOPort_putChar(VAR_sendBuffer[VAR_sendReadPointer]); INC_PTR(VAR_sendReadPointer, ATTR_sendBufferSize); if (VAR_sendCount == ATTR_sendBufferSize) { if (ciSendSemaphore_signal() < 0) { VAR_errorFlag = true; } } VAR_sendCount--; } else { /* * 送信すべき文字がない場合は,送信可能コールバックを禁止する. */ cSIOPort_disableCBR(SIOSendReady); } }
/* #[<ENTRY_FUNC>]# eDev_Receive * name: eDev_Receive * global_name: tDev_eDev_Receive * oneway: false * #[</ENTRY_FUNC>]# */ ER eDev_Receive(CELLIDX idx, int8_t** buf, int32_t* len) { ER ercd = E_OK; int32_t i; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ { #define LEN 100 int32_t i, len = LEN; int8_t *buf; cCB_Send_buf_alloc( len, (void **)&buf ); for( i = 0; i < len; i++ ) buf[ i ] = ( i + 1 ) * 2; syslog( LOG_INFO, "tDev: eDev_Receive: calling cCB_Send(len=%d)", len ); cCB_Send( buf, len ); } *len = 128; eDev_Receive_buf_alloc( *len, (void **)buf ); for( i = 0; i < *len; i++ ) (*buf)[ i ] = i * i; syslog( LOG_INFO, "tDev: eDev_Receive: Exit (*len=%d)", *len ); return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func39 * name: eEnt_func39 * global_name: tSimpleServer_eEnt_func39 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func39(CELLIDX idx, STA*(** arraySt)[ArraySizeSTA]) { ER ercd = E_OK; CELLCB *p_cellcb; STA sta[ArraySizeSTA] = { { 11, 121 }, { 13, 169 } }; char_t *msg[ArraySizeSTA] = { "hello!! func39-0", "hello!! func39-1" }; int i; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ eEnt_func39_arraySt_alloc( sizeof(STA *)*ArraySizeSTA, (void **)arraySt ); for( i = 0; i < ArraySizeSTA; i++ ){ eEnt_func39_arraySt_alloc( sizeof(STA ), (void **)&(**arraySt)[i] ); (**arraySt)[i]->a = sta[i].a; (**arraySt)[i]->b = sta[i].b; (**arraySt)[i]->len = (**arraySt)[i]->count = strlen( msg[i] ) + 1; eEnt_func39_arraySt_alloc( (**arraySt)[i]->len, (void **)&(**arraySt)[i]->msg ); strncpy( (**arraySt)[i]->msg, msg[i], (**arraySt)[i]->len ); } return(ercd); }
/* * シリアルポートのクローズ(受け口関数) */ ER eSerialPort_close(CELLIDX idx) { CELLCB *p_cellcb; ER ercd; bool_t eflag = false; 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 { /* * ハードウェア依存のクローズ処理 */ if (loc_cpu() < 0) { eflag = true; } cSIOPort_close(); VAR_openFlag = false; if (unl_cpu() < 0) { eflag = true; } /* * セマフォの初期化 */ if (cSendSemaphore_initialize() < 0) { eflag = true; } if (cReceiveSemaphore_initialize() < 0) { eflag = true; } /* * エラーコードの設定 */ if (eflag) { ercd = gen_ercd_sys(p_cellcb); } else { ercd = E_OK; } } SVC(ena_dsp(), gen_ercd_sys(p_cellcb)); error_exit: return(ercd); }
/* * name: ka_del_sem * global_name: tKernel_ka_del_sem */ ER ka_del_sem( tKernel_IDX idx, ID id) { struct tag_tKernel_CB *this; if( VALID_IDX( idx ) ){ this = tKernel_GET_CELLCB(idx); }else{ /* エラー処理コードをここに記述 */ } }
/* * シリアルポートからの文字列受信(受け口関数) */ ER_UINT eSerialPort_read(CELLIDX idx, char *buffer, uint_t length) { CELLCB *p_cellcb; bool_t buffer_empty; uint_t reacnt = 0U; char c = '\0'; /* コンパイラの警告を抑止するために初期化する */ 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_empty = true; /* ループの1回めはwai_semする */ while (reacnt < length) { if (buffer_empty) { SVC(rercd = cReceiveSemaphore_wait(), gen_ercd_wait(rercd, p_cellcb)); } SVC(rercd = serialPort_readChar(p_cellcb, &c), rercd); *buffer++ = c; reacnt++; buffer_empty = (bool_t) rercd; /* * エコーバック処理. */ if ((VAR_ioControl & IOCTL_ECHO) != 0U) { SVC(rercd = cSendSemaphore_wait(), gen_ercd_wait(rercd, p_cellcb)); SVC(rercd = serialPort_writeChar(p_cellcb, c), rercd); if (!((bool_t) rercd)) { SVC(cSendSemaphore_signal(), gen_ercd_sys(p_cellcb)); } } } if (!buffer_empty) { SVC(cReceiveSemaphore_signal(), gen_ercd_sys(p_cellcb)); } ercd = E_OK; error_exit: return(reacnt > 0U ? (ER_UINT) reacnt : ercd); }
/* #[<ENTRY_FUNC>]# eEnt_func * name: eEnt_func * global_name: tCelltype2_eEnt_func * oneway: false * #[</ENTRY_FUNC>]# */ void eEnt_func(CELLIDX idx) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } printf("Celltyp2 cellName %s\n",ATTR_cellName); }
/* * name: eEntry2_func2 * global_name: tCell2_eEntry2_func2 */ tecs_int32 eEntry2_func2( tCell2_IDX idx, tecs_int32 a) { CELLCB *p_cellcb; if( VALID_IDX( idx ) ){ p_cellcb = tCell2_GET_CELLCB(idx); }else{ /* エラー処理コードをここに記述 */ } printf( "tCell2: eEntry2_func2( a=%d )\n", a ); printf( "tCell2: eEntry2_func2: calling cCall2_func2( this, a=202 )\n" ); cCall2_func2( 202 ); }
/* * name: eEnt_func * global_name: tSingleCellOptimizeCaller_eEnt_func * oneway: * #[/ENTRY_FUNC>]# */ void eEnt_func(CELLIDX idx) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ cCall_func(); }
/* #[<ENTRY_FUNC>]# eParamsSEND_func10 * name: eParamsSEND_func10 * global_name: tCellCheckParam_eParamsSEND_func10 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsSEND_func10(CELLIDX idx, char_t** str_array, int32_t len) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eParamsIN_func10 * name: eParamsIN_func10 * global_name: tCellCheckParam_eParamsIN_func10 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsIN_func10(CELLIDX idx, const int16_t* wstr) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eParamsOUT_func31 * name: eParamsOUT_func31 * global_name: tCellCheckParam_eParamsOUT_func31 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsOUT_func31(CELLIDX idx, int8_t*** str, int32_t sz) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eParamsOUT_func42 * name: eParamsOUT_func42 * global_name: tCellCheckParam_eParamsOUT_func42 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsOUT_func42(CELLIDX idx, int64_t(* array2D)[4][4]) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eParamsRECEIVE_func11 * name: eParamsRECEIVE_func11 * global_name: tCellCheckParam_eParamsRECEIVE_func11 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsRECEIVE_func11(CELLIDX idx, struct complex_number ** dat) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eParamsRECEIVE_func20 * name: eParamsRECEIVE_func20 * global_name: tCellCheckParam_eParamsRECEIVE_func20 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsRECEIVE_func20(CELLIDX idx, int32_t** array, int32_t* sz) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eiBody_main * name: eiBody_main * global_name: tCyclicTaskActivator_eiBody_main * oneway: false * #[</ENTRY_FUNC>]# */ void eiBody_main(CELLIDX idx) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* end if VALID_IDX(idx) */ /* ここに処理本体を記述します #_TEFB_# */ }
/* #[<ENTRY_FUNC>]# eParamsIN_func22 * name: eParamsIN_func22 * global_name: tCellCheckParam_eParamsIN_func22 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsIN_func22(CELLIDX idx, const int32_t array[4]) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eParamsSEND_funcA0 * name: eParamsSEND_funcA0 * global_name: tCellCheckParam_eParamsSEND_funcA0 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsSEND_funcA0(CELLIDX idx, int8_t* buf, int32_t len) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<ENTRY_FUNC>]# eEnt_func * name: eEnt_func * global_name: tSingleCellOptimizeCallee_eEnt_func * oneway: * #[/ENTRY_FUNC>]# */ void eEnt_func(CELLIDX idx) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ printf( "tSingleCellOptimizeCallee: eEnt_func: called\n" ); }
/* #[<ENTRY_FUNC>]# eParamsRECEIVE_func40 * name: eParamsRECEIVE_func40 * global_name: tCellCheckParam_eParamsRECEIVE_func40 * oneway: * #[/ENTRY_FUNC>]# */ void eParamsRECEIVE_func40(CELLIDX idx, char_t*** str) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ }
/* #[<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 { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ printf( "tSkeltonUselessOptimizeCallee: eEnt_func2: called\n" ); return 30; }
/* #[<ENTRY_FUNC>]# eEnt_func2 * name: eEnt_func2 * global_name: tRelay_eEnt_func2 * oneway: false * #[</ENTRY_FUNC>]# */ ER eEnt_func2(CELLIDX idx, int8_t* buf, int32_t sz) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ return(ercd); }
/* #[<ENTRY_FUNC>]# eEnt_shutdown * name: eEnt_shutdown * global_name: tSimpleServer_eEnt_shutdown * oneway: true * #[</ENTRY_FUNC>]# */ void eEnt_shutdown(CELLIDX idx) { CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { /* エラー処理コードをここに記述します */ } /* ここに処理本体を記述します */ syslog( LOG_INFO, "shutdown tSimpleServer" ); eEnt_func21_a_printStatistics(); exit(0); }
/* #[<ENTRY_FUNC>]# eEnt_func * name: eEnt_func * global_name: tCt1_eEnt_func * oneway: * #[/ENTRY_FUNC>]# */ ER eEnt_func(CELLIDX idx, int32_t* a) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します */ return(ercd); }