4 * Read a DataPoint from a Sensor; block until value is read
5 * @param id - The ID of the sensor
6 * @param d - DataPoint to set
7 * @returns True if the DataPoint was different from the most recently recorded.
9 bool Sensor_Read(Sensor * s, DataPoint * d)
14 gettimeofday(&t, NULL);
15 d->time_stamp = TIMEVAL_DIFF(t, g_options.start_time);
17 // Read value based on Sensor Id
21 d->value = ADCRead(0); //ADC #0 on the Beaglebone
25 d->value = ADCRead(1);
29 d->value = (double)(rand() % 6) * -( rand() % 2) / ( rand() % 100 + 1);
30 //Gives a value between -5 and 5
33 d->value = pinRead(0); //replace 0 with correct pin number
36 d->value = pinRead(1); //replace 1 with correct pin number
39 if( rand() % 100 > 98)
41 d->value = rand() % 2;
42 //Gives 0 or 1 or a 2 every 1/100 times
45 Fatal("Unknown sensor id: %d", s->id);
48 usleep(100000); // simulate delay in sensor polling
50 // Perform sanity check based on Sensor's ID and the DataPoint
51 Sensor_CheckData(s->id, d->value);
53 // Update latest DataPoint if necessary
54 bool result = (d->value != s->newest_data.value);
57 s->newest_data.time_stamp = d->time_stamp;
58 s->newest_data.value = d->value;