OSDN Git Service

Update ecrobot to nxtOSEK_v212.zip
[nxt-jsp/etrobo-atk.git] / nxtOSEK / ecrobot / c++ / device / SoundSensor.cpp
diff --git a/nxtOSEK/ecrobot/c++/device/SoundSensor.cpp b/nxtOSEK/ecrobot/c++/device/SoundSensor.cpp
new file mode 100644 (file)
index 0000000..4c21997
--- /dev/null
@@ -0,0 +1,52 @@
+//\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