--- /dev/null
+//\r
+// SoundSensor.cpp\r
+//\r
+// Copyright 2009 by Takashi Chikamasa, Jon C. Martin and Robert W. Kramer\r
+//\r
+\r
+#include "SoundSensor.h"\r
+using namespace ecrobot;\r
+\r
+\r
+//=============================================================================\r
+// Constructor\r
+SoundSensor::SoundSensor(ePortS port, bool dba)\r
+:\r
+Sensor(port)\r
+{\r
+ this->setDBA(dba);\r
+}\r
+\r
+//=============================================================================\r
+// Destructor\r
+SoundSensor::~SoundSensor(void)\r
+{\r
+ unset_digi0(Sensor::getPort());\r
+ unset_digi1(Sensor::getPort());\r
+}\r
+\r
+//=============================================================================\r
+// get sound level in percent\r
+S16 SoundSensor::getLevel(void) const\r
+{\r
+ return static_cast<S16>((static_cast<S32>(1023 - Sensor::get()) * 100) >> 10);\r
+}\r
+\r
+//=============================================================================\r
+// set the DBA status\r
+void SoundSensor::setDBA(bool dba)\r
+{\r
+ ePortS port = Sensor::getPort();\r
+\r
+ if (dba)\r
+ {\r
+ set_digi1(port);\r
+ unset_digi0(port);\r
+ }\r
+ else\r
+ {\r
+ unset_digi1(port);\r
+ set_digi0(port);\r
+ }\r
+}\r
+\r