Пример #1
0
z_status zp_parser::parse_item(void*& p_item,
									ctext item_entry_name
									)
{
	//ZTF;
	z_status status;
	const zp_factory* ie=find_item(item_entry_name);
	if(ie==0)
		return zs_no_entry_for_item;
	void* obj=ie->create_obj();
	context_set_root(obj,ie,0);
	reset_results();


	status=_process_template(zp_mode_parse_input);

	if(status==zs_matched)
	{
		ZT("==========ITEM[%s] MATCHED, CREATING=====\n",item_entry_name);
		index_reset();
		context_get_current_template_parser().index_reset();
		reset_results();

		status=_process_template(zp_mode_parse_create);

		p_item=obj;
	}
	return status;
}
Пример #2
0
z_status zp_parser::parse_template(	ctext tmpl)
{
	z_status status;
	//_append_mode=false;

	//TODO this is UGLY!

	reset_results();


	context_set_root(0,0,tmpl);

	status=_process_template(zp_mode_parse_input);
	return status;
	/*
	if(status==zs_matched)
	{
		Z_ASSERT(0); //void* obj=new void_generic(tmpl);
		Z_ASSERT(0); //context_set_root(obj,0,0);

		ZT("==========TEMPLATE[%s] MATCHED, CREATING=====\n",tmpl);
		index_reset();
		context_get_current_template_parser().index_reset();
		reset_results();
		status=_process_template(zp_mode_parse_create);
		Z_ASSERT(0); //p_item=obj;
	}
	return status;
	*/
}
Пример #3
0
 void
 handle_run(ThroughputCommand & an_instance)
 {
    if( an_instance.command == THROUGHPUT_COMMAND_START)
      {
        logres = true;
        reset_results();
        interval_data_length_ = an_instance.data_length;
        demand_ = an_instance.current_publisher_effort;
        ACE_High_Res_Timer::gettimeofday_hr ().to_usec (first_time_);
     }
   if( an_instance.command == THROUGHPUT_COMMAND_COMPLETE)
    {
      logres = false;
      ACE_UINT64 last_time;
      ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time);
      interval_time_ =  (last_time  - first_time_);
      ++run_;
      show_results();
      if(an_instance.current_publisher_effort ==
         an_instance.final_publisher_effort)
        {
          shutdown_flag = true;
        }
    }
 }
Пример #4
0
void
sql_stream::check_binds()
{
  if (m_bExecuted && m_nArgPos==(int)m_vars.size()) {
    // reset the query for another execution
    reset_results();
  }
  if (m_nArgPos>=(int)m_vars.size())
    throw db_excpt(m_queryBuf, "Mismatch between bound variables and query");
}
Пример #5
0
z_status zp_parser::parse_obj(void* p_obj,const zp_factory* factory,ctext data)
{
	z_status status;
	Z_ASSERT(p_obj);
	set_source(data,strlen(data));
	reset_results();
	factory->clear_all_vars(p_obj);
	context_set_root(p_obj,factory,0);
	status=_process_template(zp_mode_parse_input);
	if(status==zs_matched)
	{
		ZT("==========ITEM[%s] MATCHED, CREATING=====\n",factory->get_name());
		index_reset();
		context_get_current_template_parser().index_reset();
		reset_results();
		status=_process_template(zp_mode_parse_create);
	}
	return status;
}
Пример #6
0
void
write_one (void)
{
  if ((number_of_msg_ == 0) && (datalen_idx_ == 0))
    {
      ACE_High_Res_Timer::gettimeofday_hr ().to_usec (start_time_test_);
    }
  // First message sent always, next messages only as previous sent message
  // is received back.
  if ((number_of_msg_ == 0) || received_)
    {
      // All messages send, stop timer.
      if ((iterations_ != 0) &&
          (number_of_msg_ >= iterations_ ))
        {
          if (datalen_idx_ >= (nr_of_runs_ - 1))
            {
              stop();
              calc_results();
              ACE_High_Res_Timer::gettimeofday_hr ().to_usec (end_time_test_);
              ACE_Reactor::instance ()->end_reactor_event_loop ();
            }
          else
            {
              calc_results();
              reset_results();
              ++datalen_idx_;
              datalen_ = datalen_range_[datalen_idx_];
              instance_->data.length (datalen_);
            }
        }
      else
        {
          try
            {
              instance_->seq_num =  number_of_msg_;
              // Keep last sent seq_num, to control if message is sent back.
              seq_num_ = number_of_msg_;
              received_ = false;
              ACE_High_Res_Timer::gettimeofday_hr ().to_usec (start_time_);
              test_data_writer_->write (*instance_, DDS_HANDLE_NIL);
            }
          catch (const ::CORBA::Exception& )
            {
              ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
                          ACE_TEXT ("while writing sample with sequence_number <%u>.\n"),
                          instance_->seq_num));
            }
          ++number_of_msg_;
        }
    }
}
Пример #7
0
bool
write_one (void)
{
  // First message sent always, next messages only as previous sent message
  // is received back.
  if ((number_of_msg_ == 0) || received_)
    {
      // All messages send, stop timer.
      if ((iterations_ != 0) &&
          (number_of_msg_ >= iterations_ ))
        {
          if (datalen_idx_ >= (nr_of_runs_ - 1))
            {
              calc_results();
              return true;
            }
          else
            {
              calc_results();
              reset_results();
              ++datalen_idx_;
              datalen_ = datalen_range_[datalen_idx_];
              instance_->data.length (datalen_);
            }
        }
      else
        {
          try
            {
              instance_->seq_num =  number_of_msg_;
              // Keep last sent seq_num, to control if message is sent back.
              seq_num_ = number_of_msg_;
              received_ = false;
              RTINtpTime_setZero(&start_time_);
              timer->getTime(timer, &start_time_);
              test_data_writer_->write (*instance_, DDS_HANDLE_NIL);
            }
          catch (const CORBA::Exception& )
            {
              ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
                          ACE_TEXT ("while writing sample with sequence_number <%u>.\n"),
                          instance_->seq_num));
            }
          ++number_of_msg_;
        }
    }
  return false;
}
Пример #8
0
z_status zp_parser::output_default_template(z_file* fp,ctext tmpl)
{
	z_status status;
	//_append_mode=false;
	ZT("==========TEMPLATE[%s] OUTPUT DEFAULT=====\n",tmpl);

	_file_out=fp;

	reset_results();


	context_set_root(0,0,tmpl);

	status=_process_template(zp_mode_output_default);
	if(status<zs_fatal_error)
		status=zs_ok;

	return status;
}
Пример #9
0
static int cmd_dyno_run(UNUSED(int argc), UNUSED(char **argv)) {
	ecu_data *ep;

	int speed;						/* measured speed */
	int rpm;							/* measured rpm */
	int rpm_previous = 0; /* previous rpm */

	unsigned long tv0, tv;	/* measuring time */
	int elapsed; /* elapsed time (ms) */

	int i, length = 0; /* length of printed string */
	int nb = 0; /* number of measures */

	//make sure we're connected !
	if (global_l3_conn == NULL) {
		fprintf(stderr, FLFMT "No active L3 connection !\n", FL);
		return CMD_FAILED;
	}

	/* Check mass */
	if (dyno_get_mass() <= 0) {
		printf("The mass of the vehicle has not been set, please set the mass first\n");
		return CMD_OK;
	}

	/* Check mass */
	if (dyno_loss_done <= 0) {
		printf("The loss determination has not been done, please use command loss or setloss first\n");
		return CMD_OK;
	}

	/* Show instructions */
	printf("To proceed dyno, do a full-throttle acceleration run\n");
	printf("in a single gear from a rolling start.\n");
	printf("The run ends automatically when RPM begins to decrease.\n");
	printf("\n");
	wait_enter("Press ENTER when ready... ");
	printf("\n");

	/* Reset data */
	dyno_reset(); /* dyno data */
	reset_results();

	tv0=diag_os_getms();	/* initial time */
	ep = ecu_info; /* ECU data */

	/* Measures */
	while (1) {
		/* measure RPM */
		rpm = RUN_MEASURE_DATA(RPM_PID, ep);

		if (rpm < 0) {
			printf("invalid RPM !\n");
			break;
		}


		if (rpm_previous == 0) {
			/* this is the first measure */
			printf("Starting dyno (min rpm=%d)\n", rpm);
			printf("Number of measures : ");
		}

		/* if RPM starts decreasing, stop run */
		if (rpm < rpm_previous) {
			printf(" (max rpm=%d)\n", rpm_previous);
			break;
		}

		/* get elapsed time */
		tv=diag_os_getms();
		elapsed = (int) (tv - tv0);

		/* Add measure */
		dyno_add_measure(elapsed, rpm);

		/* Display number of measures */
		nb++;
		for (i = 0; i < length; i++) {
			printf("");
		}

		length = printf("%d (%d RPM) ", nb, rpm);
		fflush(stdout); /* force displaying now (may slow down dyno...) */

		rpm_previous = rpm;
	}

	/* measure gear ratio */
	rpm_previous = rpm;
	speed = RUN_MEASURE_DATA(SPEED_PID, ep); /* m/s * 1000 */
	rpm	 = RUN_MEASURE_DATA(RPM_PID, ep);

	if ((speed < 0) || (rpm < 0)) {
		printf("invalid RUN_MEASURE_DATA result !\n");
		return CMD_FAILED;
	}
	dyno_set_gear(speed, (rpm_previous + rpm) / 2);

	/* display dyno time */
	tv=diag_os_getms();
	elapsed = (int) (tv - tv0);
	printf("Dyno time : %ds.\n", (elapsed/1000));

	printf("\n");

	return CMD_OK;
}
Пример #10
0
static int cmd_dyno_loss(UNUSED(int argc), UNUSED(char **argv)) {
	ecu_data *ep;

	int speed;              /* measured speed */
	int speed_previous = 0; /* previous speed */

	unsigned long tv0, tv;
	int elapsed; /* elapsed time */

	int i, length; /* length of printed string */
	int nb = 0; /* number of measures */

	//make sure we have an L3 connection first !
	if (global_l3_conn == NULL) {
		fprintf(stderr, FLFMT "Error: there must be an active L3 connection!\n", FL);
		return CMD_FAILED;
	}

	/* Check mass */
	if (dyno_get_mass() <= 0) {
		printf("The mass of the vehicle has not been set, please set the mass first\n");
		return CMD_OK;
	}

	/* Show instructions */
	printf("To proceed loss determination, reach the maximum speed you will reach during\n");
	printf("dyno, then push in the clutch, leaving the car in gear. Allow the car to coast\n");
	printf("down to the lowest possible speed. Press ENTER when finished.\n");
	printf("\n");
	wait_enter("Press ENTER when ready... ");
	printf("\n");

	/* Reset data */
	dyno_loss_reset(); /* dyno data */
	reset_results();
	tv0=diag_os_getms(); /* initial time */
	ep = ecu_info; /* ECU data */

	/* exclude 1st measure */
	speed_previous = LOSS_MEASURE_DATA(SPEED_PID, ep); /* m/s * 1000 */
	if (speed_previous < 0) {
		printf("invalid speed !\n");
		return CMD_FAILED;
	}

	printf("Starting loss determination (max speed=%d km/h)\n", SPEED_ISO_TO_KMH(speed_previous));
	printf("Number of measures : 0");
	length = 1;

	/* loss measures */
	while (1) {
		/* measure speed */
		speed = LOSS_MEASURE_DATA(SPEED_PID, ep); /* m/s * 1000 */
		if (speed < 0) {
			printf("invalid speed !\n");
			break;
		}


		/* get elapsed time */

		tv=diag_os_getms();
		elapsed = (int) (tv - tv0);

		if (speed < speed_previous) {
			/* Add measure */
			dyno_loss_add_measure(elapsed, speed);
			nb++;

			speed_previous = speed;
		}

		if (pressed_enter() != 0) {
			/* ENTER pressed : stops */
			printf("Number of measures : %d (min speed=%d km/h)\n", nb, SPEED_ISO_TO_KMH(speed));
			break;
		}
		if (speed_previous == speed) { /* measure added: update display */
			/* erase previous measure */
			for (i = 0; i < length; i++) {
				printf("");
			}

			/* Display new measure */
			length = printf("%d (speed=%d km/h, d=%5.5f, f=%4.2f)\t ",
			nb, SPEED_ISO_TO_KMH(speed), dyno_loss_get_d(), dyno_loss_get_f());
			fflush(stdout); /* force displaying now (may slow down dyno...) */
		}
	}

	/* display dyno time */
	//elapsed = MILLIS(tv) - MILLIS(tv0);
	tv=diag_os_getms();
	elapsed= (int) (tv - tv0);
	printf("d=%5.5f, f=%4.2f\n", dyno_loss_get_d(), dyno_loss_get_f());
	printf("Loss determination time : %ds.\n", (elapsed/1000));

	printf("\n");

	/* now dyno loss has been done */
	dyno_loss_done = 1;

	return CMD_OK;
}