EE445M RTOS
Taken at the University of Texas Spring 2015
ir.cpp
Go to the documentation of this file.
1 #include "ir.hpp"
2 #include "math.hpp"
3 
4 ir::ir() {}
5 
6 ir::ir(uint8_t ir_adc_sequence_step, adc* ir_assoc_adc,
7  int32_t ir_a, int32_t ir_b, int32_t ir_k) {
8 
10  adc_sequence_step = ir_adc_sequence_step;
11  assoc_adc = ir_assoc_adc;
12  calibrate(ir_a, ir_b, ir_k);
13 }
14 
15 void ir::calibrate(int32_t a, int32_t b, int32_t k) {
16 
17  calibration.a = a;
18  calibration.b = b;
19  calibration.k = k;
20 }
21 
22 void ir::sample() {
24  /* sem += adc_producer_index / (signal_length-1); */
25 }
26 
27 int32_t ir::average() {
28 
29  int32_t i, value;
30  value = 0;
31  for (i=0; i<buf.len; ++i) {
32  value += buf.buf[i];
33  }
34  value /= buf.len;
35  return value;
36 }
37 
40 int32_t ir::distance() {
41 
43 
44  if ((cached_average + calibration.b) <= 0) {
45  return max_distance;
46  }
47 
50 }
void calibrate(int32_t a, int32_t b, int32_t k)
Definition: ir.cpp:15
static const int32_t max_distance
Definition: ir.hpp:66
int32_t clamp(int32_t value, int32_t min, int32_t max)
Definition: math.cpp:5
adc * assoc_adc
Definition: ir.hpp:53
circularbuffer< int16_t, 32 > buf
Definition: ir.hpp:51
T buf[N]
Definition: bufferpp.hpp:115
uint32_t len
Definition: bufferpp.hpp:113
uint32_t get_sample(uint8_t i)
Definition: adcpp.cpp:91
int32_t cached_average
Definition: ir.hpp:55
void sample(void)
Definition: ir.cpp:22
void add(const T ch)
int32_t average()
Definition: ir.cpp:27
calibration_data calibration
Definition: ir.hpp:50
int32_t distance()
Definition: ir.cpp:40
Definition: adcpp.hpp:18
uint8_t adc_sequence_step
Definition: ir.hpp:52
ir()
Definition: ir.cpp:4
static const int32_t min_distance
Definition: ir.hpp:67