Ejemplo n.º 1
0
/* XXX simplify */
static int
max1111_adc_value_avg(int chan, int pause)
{
	int val[5];
	int sum;
	int minv, maxv, v;
	int i;

	DPRINTF(("max1111_adc_value_avg: chan = %d, pause = %d\n",
	    chan, pause));

	for (i = 0; i < 5; i++) {
		val[i] = max1111_adc_value(chan);
		if (i != 4)
			delay(pause * 1000);
		DPRINTF(("max1111_adc_value_avg: chan[%d] = %d\n", i, val[i]));
	}

	/* get max value */
	v = val[0];
	minv = 0;
	for (i = 1; i < 5; i++) {
		if (v < val[i]) {
			v = val[i];
			minv = i;
		}
	}

	/* get min value */
	v = val[4];
	maxv = 4;
	for (i = 3; i >= 0; i--) {
		if (v > val[i]) {
			v = val[i];
			maxv = i;
		}
	}

	DPRINTF(("max1111_adc_value_avg: minv = %d, maxv = %d\n", minv, maxv));
	sum = 0;
	for (i = 0; i < 5; i++) {
		if (i == minv || i == maxv)
			continue;
		sum += val[i];
	}

	DPRINTF(("max1111_adc_value_avg: sum = %d, sum / 3 = %d\n",
	    sum, sum / 3));

	return sum / 3;
}
Ejemplo n.º 2
0
/* XXX simplify */
int
max1111_adc_value_avg(int chan, int pause)
{
	int val[5];
	int i, j, k, x;
	int sum = 0;

	for (i = 0; i < 5; i++) {
		val[i] = max1111_adc_value(chan);
		if (i != 4)
			delay(pause * 1000);
	}

	x = val[0];
	j = 0;
	for (i = 1; i < 5; i++) {
		if (x < val[i]) {
			x = val[i];
			j = i;
		}
	}

	x = val[4];
	k = 4;
	for (i = 3; i >= 0; i--) {
		if (x > val[i]) {
			x = val[i];
			k = i;
		}
	}

	for (i = 0; i < 5; i++) {
		if (i == j || i == k)
			continue;
		sum += val[i];
	}

	return (sum / 3);
}