EE445M RTOS
Taken at the University of Texas Spring 2015
ir Class Reference

#include <ir.hpp>

Collaboration diagram for ir:
Collaboration graph

Classes

struct  calibration_data
 

Public Member Functions

 ir ()
 
 ir (uint8_t ir_adc_sequence_step, adc *ir_assoc_adc, int32_t ir_a=240333, int32_t ir_b=-314, int32_t ir_k=0)
 
void calibrate (int32_t a, int32_t b, int32_t k)
 
void sample (void)
 
int32_t average ()
 
int32_t distance ()
 

Static Public Attributes

static const int32_t max_distance = 500
 
static const int32_t min_distance = 0
 

Private Types

typedef struct ir::calibration_data calibration_data
 

Private Attributes

calibration_data calibration
 
circularbuffer< int16_t, 32 > buf
 
uint8_t adc_sequence_step
 
adcassoc_adc
 
int32_t cached_average
 

Detailed Description

Definition at line 15 of file ir.hpp.

Member Typedef Documentation

Constructor & Destructor Documentation

ir::ir ( )

Definition at line 4 of file ir.cpp.

4 {}
ir::ir ( uint8_t  ir_adc_sequence_step,
adc ir_assoc_adc,
int32_t  ir_a = 240333,
int32_t  ir_b = -314,
int32_t  ir_k = 0 
)

Definition at line 6 of file ir.cpp.

References adc_sequence_step, assoc_adc, buf, and calibrate().

7  {
8 
10  adc_sequence_step = ir_adc_sequence_step;
11  assoc_adc = ir_assoc_adc;
12  calibrate(ir_a, ir_b, ir_k);
13 }
void calibrate(int32_t a, int32_t b, int32_t k)
Definition: ir.cpp:15
adc * assoc_adc
Definition: ir.hpp:53
circularbuffer< int16_t, 32 > buf
Definition: ir.hpp:51
uint8_t adc_sequence_step
Definition: ir.hpp:52

Here is the call graph for this function:

Member Function Documentation

int32_t ir::average ( )

Definition at line 27 of file ir.cpp.

References buf, buffer< T, N >::buf, and buffer< T, N >::len.

Referenced by distance().

27  {
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 }
circularbuffer< int16_t, 32 > buf
Definition: ir.hpp:51
T buf[N]
Definition: bufferpp.hpp:115
uint32_t len
Definition: bufferpp.hpp:113

Here is the caller graph for this function:

void ir::calibrate ( int32_t  a,
int32_t  b,
int32_t  k 
)

Definition at line 15 of file ir.cpp.

References ir::calibration_data::a, ir::calibration_data::b, calibration, and ir::calibration_data::k.

Referenced by ir().

15  {
16 
17  calibration.a = a;
18  calibration.b = b;
19  calibration.k = k;
20 }
calibration_data calibration
Definition: ir.hpp:50

Here is the caller graph for this function:

int32_t ir::distance ( )

Converts the values of the IR distance sensor to centimeters

Returns
0 if the conversion did not succeed, data otherwise

Definition at line 40 of file ir.cpp.

References ir::calibration_data::a, average(), ir::calibration_data::b, cached_average, calibration, clamp(), ir::calibration_data::k, max_distance, and min_distance.

Referenced by can_transmitter().

40  {
41 
43 
44  if ((cached_average + calibration.b) <= 0) {
45  return max_distance;
46  }
47 
50 }
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
int32_t cached_average
Definition: ir.hpp:55
int32_t average()
Definition: ir.cpp:27
calibration_data calibration
Definition: ir.hpp:50
static const int32_t min_distance
Definition: ir.hpp:67

Here is the call graph for this function:

Here is the caller graph for this function:

void ir::sample ( void  )

Definition at line 22 of file ir.cpp.

References adc_sequence_step, circularbuffer< T, N >::add(), assoc_adc, buf, and adc::get_sample().

Referenced by ADC0Seq0_Handler().

22  {
24  /* sem += adc_producer_index / (signal_length-1); */
25 }
adc * assoc_adc
Definition: ir.hpp:53
circularbuffer< int16_t, 32 > buf
Definition: ir.hpp:51
uint32_t get_sample(uint8_t i)
Definition: adcpp.cpp:91
void add(const T ch)
uint8_t adc_sequence_step
Definition: ir.hpp:52

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

uint8_t ir::adc_sequence_step
private

Definition at line 52 of file ir.hpp.

Referenced by ir(), and sample().

adc* ir::assoc_adc
private

Definition at line 53 of file ir.hpp.

Referenced by ir(), and sample().

circularbuffer< int16_t , 32 > ir::buf
private

Definition at line 51 of file ir.hpp.

Referenced by average(), ir(), and sample().

int32_t ir::cached_average
private

Definition at line 55 of file ir.hpp.

Referenced by distance().

calibration_data ir::calibration
private

Definition at line 50 of file ir.hpp.

Referenced by calibrate(), and distance().

const int32_t ir::max_distance = 500
static

Definition at line 66 of file ir.hpp.

Referenced by distance().

const int32_t ir::min_distance = 0
static

Definition at line 67 of file ir.hpp.

Referenced by distance().


The documentation for this class was generated from the following files: