Exemple #1
0
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');
  }
}
Exemple #2
0
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');
}
Exemple #3
0
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);
}
Exemple #4
0
/*
 * 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
}
Exemple #5
0
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;
}
Exemple #6
0
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;
}
Exemple #7
0
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;
}
Exemple #8
0
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);
}
Exemple #10
0
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);
}