static void show_nodes(dbc_t *dbc) { node_list_t *nl; for(nl = dbc->node_list; nl != NULL; nl = nl->next) { printf("%s;", nl->node->name); if(nl->node->comment) { //printf(";\"%s\"", nl->node->comment); show_string(nl->node->comment); } show_attribute_list(nl->node->attribute_list); putchar('\n'); } }
static void show_signal(signal_list_t *sl) { printf("%s;" /* signal name */ "%s;" /* mux type */ "%ld;" /* mux value */ "%d;" /* bit start */ "%d;" /* bit len */ "%d;" /* endianess */ "%d;" /* signedness */ "%f;" /* scale */ "%f;" /* offset */ "%f;" /* min */ "%f;" /* max */ "%s;" /* signal val type */ "\"%s\";" /* unit */ , /* Signal */ sl->signal->name, decode_mux_type(sl->signal->mux_type), sl->signal->mux_value, sl->signal->bit_start, sl->signal->bit_len, sl->signal->endianess, sl->signal->signedness, sl->signal->scale, sl->signal->offset, sl->signal->min, sl->signal->max, decode_signal_val_type(sl->signal->signal_val_type), sl->signal->unit?sl->signal->unit:""); show_string_list(sl->signal->receiver_list); putchar(';'); //printf("\"%s\";",sl->signal->comment?sl->signal->comment:""); if(sl->signal->comment) { show_string(sl->signal->comment); putchar(';'); } else { putchar(';'); } show_attribute_list(sl->signal->attribute_list); putchar(';'); show_val_map(sl->signal->val_map); putchar('\n'); }
static void show_message(message_list_t *ml) { printf("$%lX;" /* message id */ "%s;" /* message name */ "%d;" /* message len */ "%s" /* sender */ , ml->message->id, ml->message->name, ml->message->len, ml->message->sender); putchar(';'); show_string(ml->message->comment); putchar(';'); show_attribute_list(ml->message->attribute_list); putchar(';'); show_string_list(ml->message->transmitter_list); }
/* * Send a page to one char. */ void page_to_char_bw( const char *txt, CHAR_DATA *ch ) { if ( txt == NULL || ch->desc == NULL) return; if (ch->lines == 0 ) { send_to_char_bw(txt,ch); return; } #if defined(macintosh) send_to_char_bw(txt,ch); #else ch->desc->showstr_head = alloc_mem(strlen(txt) + 1); strcpy(ch->desc->showstr_head,txt); ch->desc->showstr_point = ch->desc->showstr_head; show_string(ch->desc,""); #endif }
void char_data::send( string txt, ... ) { char buf[MSL]; va_list args; if ( this == NULL || desc == NULL ) return; if ( txt.empty() ) return; va_start(args, txt); vsprintf(buf, txt.c_str(), args); va_end(args); if ( desc->showstr_head != NULL ) { char *ssh; ssh = (char *)qgetmem( strlen( desc->showstr_head ) + strlen( buf ) + 1 ); strcpy( ssh, desc->showstr_head ); strcat( ssh, buf ); if ( desc->showstr_point ) desc->showstr_point += ( ssh - desc->showstr_head ); else desc->showstr_point = ssh; free(desc->showstr_head); desc->showstr_head = ssh; } else { desc->showstr_head = (char *)malloc( strlen( buf ) + 1); strcpy( desc->showstr_head, buf ); desc->showstr_point = desc->showstr_head; } if ( desc->showstr_point == desc->showstr_head ) show_string( desc, "" ); return; }
bool calc_pose(void) { uchar ucType = watcher_data->step.activity.base.type; static uint16 nConfirmCount_STAND = 0,nConfirmCount_LIE = 0; //判断站、躺计数值 static uint16 nStaticCount = 0, //判断静计数值 nActivityCount = 0;//判断动计数阀值 static uint16 angleBuf = 0, //合加速度 nStaticSampleCont = 0; static uint8 nFallDelayCount = 0; uint32 nArea; //加速度平方和 short x,y,z; //xyz的加速度值 uint8 i; static bool suddenly_flag = false; for(i = 0; i < FIFO_COUNT; ++i) { x = (short)(watcher_data->fifo_buf[i].x_MSB<<8|watcher_data->fifo_buf[i].x_LSB)>>2; y = (short)(watcher_data->fifo_buf[i].y_MSB<<8|watcher_data->fifo_buf[i].y_LSB)>>2; z = (short)(watcher_data->fifo_buf[i].z_MSB<<8|watcher_data->fifo_buf[i].z_LSB)>>2; nArea = x * x + y * y + z * z; angleBuf = sqrt((double)nArea); #ifdef TRACE // sprintf(watcher_data->trace_data, "MMA8451: x = %d, y = %d, z = %d, SUM = %d",x, y, z,angleBuf); // post_trace(watcher_data->trace_data); #endif if(watcher_data->flag & FLAG_SAMPLES_SHOW){ watcher_data->flag &= ~FLAG_SAMPLES_SHOW; sprintf(watcher_data->trace_data, "x = %d\ny = %d\nz = %d\nsum = %d",x, y, z,angleBuf); draw_rectangle_color(0, 80, 63, 48, 0); show_string(0,112,(char*)watcher_data->trace_data); } ++pose_count; if(x > BODY_STATE_ANGLE_THRESHOLD ) {//计算X轴的夹角 ++nConfirmCount_STAND; if(nConfirmCount_STAND > BODY_STAND_COUNT) { if(suddenly_flag == true){ suddenly_flag = false; //watcher_data->flag |= flag_suddenly; } if(abs(nConfirmCount_STAND - nConfirmCount_LIE) <= BODY_STATE_COUNT){ nConfirmCount_LIE = 0;nConfirmCount_STAND = 0; }else{ nConfirmCount_STAND = 0;nConfirmCount_LIE = 0; ucType |= TYPE_STAND; /// post_trace("stand"); } } } else if(x < BODY_LIE_ANGLE_THRESHOLD){ ++nConfirmCount_LIE; if(nConfirmCount_LIE > BODY_LIE_COUNT) { if(suddenly_flag == true){ suddenly_flag = false; } if(nConfirmCount_LIE - nConfirmCount_STAND <= BODY_STATE_COUNT){ nConfirmCount_LIE = 0;nConfirmCount_STAND = 0; }else{ nConfirmCount_LIE = 0;nConfirmCount_STAND = 0; ucType &= ~TYPE_STAND; // post_trace("lie"); } } } if(angleBuf < (2048 + BODY_CHANGE_THRESHOLD) && angleBuf > 2048 - BODY_CHANGE_THRESHOLD){ if(++nStaticCount > BODY_STATIC_THRESHOLD) { ucType &= ~(TYPE_ACTIVITY | TYPE_WALK); nStaticCount = 0;nActivityCount = 0; ++nStaticSampleCont; if(nStaticSampleCont > CHECK_STATIC_SPAN){ if(nlh_count_temp <= 1){ nlh_count_temp = LH_8COUNT; } nStaticSampleCont = 0; } } } else { if(nlh_count_temp >= LH_8COUNT){//检测到运动,启动正常采样率 if(angleBuf >= BODY_SUNDDENLY){//猛起 suddenly_flag = true; } nlh_count_temp = 1; }else if(++nActivityCount >= BODY_ACTIVE_THRESHOLD){ nStaticCount = 0; nStaticSampleCont = 0;nActivityCount = 0; ucType |= TYPE_ACTIVITY; } } if(ucType & TYPE_ACTIVITY) { calc_activity(&ucType, angleBuf); calc_step(&ucType, angleBuf); } if(ucType != watcher_data->step.activity.base.type) { save_pose(); watcher_data->step.activity.base.type = ucType; } if(angleBuf <= FREEFALL_THRESHOLD /*&& ((watcher_data->step.activity.base.type & TYPE_STAND) == TYPE_STAND)*/){ //出现自由落体状态 ++nFallDelayCount; //#ifdef TRACE // sprintf(watcher_data->trace_data, " freefall = %d", angleBuf); // post_trace(watcher_data->trace_data); //#endif } // if((watcher_data->step.activity.base.type & TYPE_STAND) == TYPE_STAND){ // nArea = y * y + z * z; // if(sqrt((double)nArea) > BODY_STAGGER){ // watcher_data->flag |= flag_stagger; //#ifdef TRACE //// sprintf(watcher_data->trace_data, " flag_stagger = %d", angleBuf); //// post_trace(watcher_data->trace_data); //#endif // } // } if((nFallDelayCount >=FREEFALLTIME_THRESHOLD && angleBuf >= FALL_THRESHOLD) && ((watcher_data->step.activity.base.type & TYPE_STAND) == TYPE_STAND)){ //如果发生大冲击表示可能摔倒 //watcher_data->flag |= flag_sensor_transient; nFallDelayCount = 0; #ifdef TRACE // sprintf(watcher_data->trace_data, " fall = %d", angleBuf); // post_trace(watcher_data->trace_data); #endif }else if(nFallDelayCount >= FREEFALLTIME_THRESHOLD + 10){ nFallDelayCount = 0; } /* if((watcher_data->flag & flag_sensor_transient) == flag_sensor_transient){ if(is_fall()){ watcher_data->flag |= flag_auto_alarm; //dispatch(); } }*/ } return true; }
static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, const char *msg_fmt) { char *p = ev->buffer; int rem_size = ev->buffer_size; int precision = -1; int length = -1; char *q; for (q = l->data ; *q != '\0' ; q++) { if (*q == '%') { q++; handle_modifier: switch (*q) { case '\0': fprintf(stderr, "Layout format (%s) ending with %%\n", (char *)l->data); xbt_abort(); case '%': *p = '%'; check_overflow(1); break; case 'n': /* platform-dependant line separator; LOG4J compliant */ *p = '\n'; check_overflow(1); break; case 'e': /* plain space; SimGrid extension */ *p = ' '; check_overflow(1); break; case '.': /* precision specifier */ precision = strtol(q + 1, &q, 10); goto handle_modifier; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': /* length modifier */ length = strtol(q, &q, 10); goto handle_modifier; case 'c': /* category name; LOG4J compliant should accept a precision postfix to show the hierarchy */ show_string(ev->cat->name); break; case 'p': /* priority name; LOG4J compliant */ show_string(xbt_log_priority_names[ev->priority]); break; case 'h': /* host name; SimGrid extension */ show_string(SIMIX_host_self_get_name()); break; case 't': /* thread name; LOG4J compliant */ show_string(SIMIX_process_self_get_name()); break; case 'P': /* process name; SimGrid extension */ show_string(xbt_procname()); break; case 'i': /* process PID name; SimGrid extension */ show_int(xbt_getpid()); break; case 'F': /* file name; LOG4J compliant */ show_string(ev->fileName); break; case 'l': { /* location; LOG4J compliant */ int len, sz; set_sz_from_precision(); len = snprintf(p, sz, "%s:%d", ev->fileName, ev->lineNum); check_overflow(MIN(sz, len)); break; } case 'L': /* line number; LOG4J compliant */ show_int(ev->lineNum); break; case 'M': /* method (ie, function) name; LOG4J compliant */ show_string(ev->functionName); break; case 'b': /* backtrace; called %throwable in LOG4J */ case 'B': /* short backtrace; called %throwable{short} in LOG4J */ // TODO, backtrace #if 0 && HAVE_BACKTRACE && HAVE_EXECINFO_H && HAVE_POPEN && defined(ADDR2LINE) { xbt_ex_t e(""); e.used = backtrace((void **) e.bt, XBT_BACKTRACE_SIZE); e.bt_strings = NULL; xbt_ex_setup_backtrace(&e); if (*q == 'B') { show_string(e.bt_strings[1] + 8); } else { xbt_strbuff_t buff = xbt_strbuff_new(); int i; xbt_strbuff_append(buff, e.bt_strings[1] + 8); for (i = 2; i < e.used; i++) { xbt_strbuff_append(buff, "\n"); xbt_strbuff_append(buff, e.bt_strings[i] + 8); } show_string(buff->data); xbt_strbuff_free(buff); } } #else show_string("(no backtrace on this arch)"); #endif break; case 'd': /* date; LOG4J compliant */ show_double(surf_get_clock()); break; case 'r': /* application age; LOG4J compliant */ show_double(surf_get_clock() - format_begin_of_time); break; case 'm': { /* user-provided message; LOG4J compliant */ int len, sz; set_sz_from_precision(); len = vsnprintf(p, sz, msg_fmt, ev->ap); check_overflow(MIN(sz, len)); break; } default: fprintf(stderr, ERRMSG, *q, (char *)l->data); xbt_abort(); } } else { *p = *q; check_overflow(1); } } *p = '\0'; return 1; }
int main(void) { show_string((void *)"Jamsa's 1001 C/C++ Tips",(void *)("Jamsa's 1001 C/C++ Tips"+23-1),"Jamsa's 1001 C/C++ Tips"); return 1; }
static void do_stuff(MYDATA * data) { char *s; SCREEN *sp = data->sp; int my_code = 1234; const char *my_text = "\033[?m"; set_curterm_sp(sp, data->term); /* putp always goes to standard output */ putp_sp(sp, "Hello "); putp_sp(sp, data->name); putp_sp(sp, "!\n"); fprintf(data->fp, "Term: %s\n", termname_sp(sp)); fprintf(data->fp, "Long: %s\n", longname_sp(sp)); show_cap_flag(data, "am", "am"); show_cap_number(data, "lines", "li"); show_cap_string(data, "clear", "cl"); show_cap_string(data, "tbc", "ct"); show_flag(data, "has_ic", has_ic_sp(sp)); show_flag(data, "has_il", has_il_sp(sp)); show_number(data, "baudrate", baudrate_sp(sp)); show_char(data, "erase ch", erasechar_sp(sp)); show_char(data, "kill ch", killchar_sp(sp)); show_string(data, "unctrl", unctrl_sp(sp, 033)); fflush(data->fp); define_key_sp(sp, my_text, my_code); has_key_sp(sp, 0); key_defined_sp(sp, my_text); if ((s = keybound_sp(sp, my_code, 0)) != 0) free(s); keyname_sp(sp, '?'); keyok_sp(sp, my_code, FALSE); keyok_sp(sp, my_code, TRUE); savetty_sp(sp); def_shell_mode_sp(sp); /* * These functions are low-level settings for ncurses. */ set_tabsize_sp(sp, 5); /* waddch */ typeahead_sp(sp, FALSE); /* waddch */ use_env_sp(sp, FALSE); /* newterm */ use_tioctl_sp(sp, FALSE); /* newterm */ intrflush_sp(sp, 0, 0); /* wgetch */ flushinp_sp(sp); /* waddch */ halfdelay_sp(sp, 5); /* wgetch */ /* * These manipulate the terminal modes, mainly for wgetch. */ cbreak_sp(sp); raw_sp(sp); def_prog_mode_sp(sp); delay_output_sp(sp, 200); napms_sp(sp, 10); nocbreak_sp(sp); noqiflush_sp(sp); noraw_sp(sp); qiflush_sp(sp); resetty_sp(sp); tputs_sp(sp, "{reset-mode}\n", 0, data->outc); reset_prog_mode_sp(sp); curs_set_sp(sp, 0); tputs_sp(sp, "{prog-mode}\n", 0, data->outc); reset_shell_mode_sp(sp); tputs_sp(sp, "{shell-mode}\n", 0, data->outc); }
int main(void) { show_string("Jamsa's 1001 C/C++ Tips"); return 1; }
static void xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, const char *msg_fmt, xbt_log_appender_t app) { char *p, *q; char tmpfmt[50]; int precision = -1; int length = -1; p = ev->buffer; q = l->data; while (*q != '\0') { if (*q == '%') { q++; handle_modifier: switch (*q) { case '\0': fprintf(stderr, "Layout format (%s) ending with %%\n", (char *) l->data); abort(); case '%': *p++ = '%'; break; case 'n': /* platform-dependant line separator (LOG4J compliant) */ p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "\n"); check_overflow; break; case 'e': /* plain space (SimGrid extension) */ p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), " "); check_overflow; break; case '.': /* precision specifyier */ q++; sscanf(q, "%d", &precision); q += (precision>9?2:1); goto handle_modifier; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': /* length modifier */ sscanf(q, "%d", &length); q += (length>9?2:1); goto handle_modifier; case 'c': /* category name; LOG4J compliant should accept a precision postfix to show the hierarchy */ show_string(ev->cat->name); break; case 'p': /* priority name; LOG4J compliant */ show_string(xbt_log_priority_names[ev->priority]); break; case 'h': /* host name; SimGrid extension */ show_string(gras_os_myname()); break; case 't': /* thread name; LOG4J compliant */ show_string(xbt_thread_self_name()); break; case 'P': /* process name; SimGrid extension */ show_string(xbt_procname()); break; case 'i': /* process PID name; SimGrid extension */ show_int((*xbt_getpid) ()); break; case 'F': /* file name; LOG4J compliant */ show_string(ev->fileName); break; case 'l': /* location; LOG4J compliant */ if (precision == -1) { p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "%s:%d", ev->fileName, ev->lineNum); check_overflow; } else { p += snprintf(p, (int) MIN(XBT_LOG_BUFF_SIZE - (p - ev->buffer), precision), "%s:%d", ev->fileName, ev->lineNum); check_overflow; precision = -1; } break; case 'L': /* line number; LOG4J compliant */ show_int(ev->lineNum); break; case 'M': /* method (ie, function) name; LOG4J compliant */ show_string(ev->functionName); break; case 'b': /* backtrace; called %throwable in LOG4J */ case 'B': /* short backtrace; called %throwable{short} in LOG4J */ #if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE) { xbt_ex_t e; int i; e.used = backtrace((void **) e.bt, XBT_BACKTRACE_SIZE); e.bt_strings = NULL; e.msg = NULL; e.remote = 0; xbt_backtrace_current(&e); if (*q == 'B') { show_string(e.bt_strings[2] + 8); } else { for (i = 2; i < e.used; i++) if (precision == -1) { p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "%s\n", e.bt_strings[i] + 8); check_overflow; } else { p += sprintf(p, "%.*s\n", (int) MIN(XBT_LOG_BUFF_SIZE - (p - ev->buffer), precision), e.bt_strings[i] + 8); check_overflow; precision = -1; } } xbt_ex_free(e); } #else p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "(no backtrace on this arch)"); check_overflow; #endif break; case 'd': /* date; LOG4J compliant */ show_double(gras_os_time()); break; case 'r': /* application age; LOG4J compliant */ show_double(gras_os_time() - format_begin_of_time); break; case 'm': /* user-provided message; LOG4J compliant */ if (precision == -1) { p += vsnprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), msg_fmt, ev->ap); check_overflow; } else { p += vsnprintf(p, (int) MIN(XBT_LOG_BUFF_SIZE - (p - ev->buffer), precision), msg_fmt, ev->ap); check_overflow; precision = -1; } break; default: fprintf(stderr, ERRMSG, *q, (char *) l->data); abort(); } q++; } else { *(p++) = *(q++); check_overflow; } } *p = '\0'; app->do_append(app, ev->buffer); }