示例#1
0
/*
 * Process accelerometer data
 */
static void accel_data_handler(AccelData *data, uint32_t num_samples) {

  // Average the data
  uint32_t avg_x = 0;
  uint32_t avg_y = 0;
  uint32_t avg_z = 0;
  AccelData *dx = data;
  for (uint32_t i = 0; i < num_samples; i++, dx++) {
    // If vibe went off then discount everything - we're only loosing a 2.5 second set of samples, better than an
    // unwanted spike
    if (dx->did_vibrate) {
      return;
    }
    avg_x += scale_accel(dx->x);
    avg_y += scale_accel(dx->y);
    avg_z += scale_accel(dx->z);
  }

  avg_x /= num_samples;
  avg_y /= num_samples;
  avg_z /= num_samples;

  // Work out deviations
  uint16_t biggest = 0;
  AccelData *d = data;
  for (uint32_t i = 0; i < num_samples; i++, d++) {
    do_axis(d->x, &biggest, avg_x);
    do_axis(d->y, &biggest, avg_y);
    do_axis(d->z, &biggest, avg_z);
  }

  store_sample(biggest);
}
示例#2
0
//=================================================================================================
void eve::thr::profiler::stop(void)
{
	clock_cycle_end__ = __rdtsc();
	::QueryPerformanceCounter(&time_end_);

	int64_t elapsed = 0;
	elapsed  = time_end_.QuadPart - time_start_.QuadPart;
	elapsed *= 1000000LL;
	elapsed /= frequency_.QuadPart;
	time_elapsed_ = elapsed;

	clock_cycle_num_ = clock_cycle_end__ - clock_cycle_start__;

	store_sample();
}