#include "Sonar.hh" #include Sonar::Sonar() { lock = new Semaphore(1); for ( int i = 0 ; i < MAX_SONAR ; i++ ) { sonar_ptr[i] = 0; buffer_ptr[i] = 0; for ( int j = 0 ; j < BUF_SIZE ; j++ ) { sonar_value[i][j] = 0; sonar_buffer[i][j] = 0; } } } Sonar::~Sonar() { delete lock; } int Sonar::setSonar( int sonar_num, int sonar_val ) { if ( sonar_num <= MAX_SONAR ) { sonar_val = (int)(sonar_val * RANGE_CONV); /* if ( sonar_num == 6 ) cout << "New Sonar Value: " << sonar_val <up(); } } else return 0; return 1; } double Sonar::getSonar( int sonar_num ) { int last = sonar_ptr[sonar_num] - 1; if (last == -1) last = BUF_SIZE-1; double reading = sonar_value[sonar_num][last]; return reading; } double Sonar::stdev( double* array, int size ) { double s = 0.0, s2 = 0.0; int count = size; while ( count-- ) { s += *array; s2 += (*array) * (*array); array++; } return sqrt( (s2 - s*s/size)/size ); }