OSDN Git Service

48f702f583a971c1eb0200ff92009d32517dbf79
[nxt-jsp/etrobo-atk.git] / nxtOSEK / c++ / src / SoundSensor.cc
1 //
2 // SoundSensor.cc
3 //
4 // Sound sensor class
5 //
6 // Written 12-jan-2008 by rwk
7 //
8 // Copyright 2007, 2008 by Robert W. Kramer and Takashi Chikamasa
9 //
10
11 #include "SoundSensor.h"
12
13 //=============================================================================
14 // SoundSensor::SoundSensor(unsigned char _port,bool _lamp)
15 //   constructor for sensor object
16 //
17 // Parm
18 //   _port - port number sensor is connected to
19 //   _lamp - true iff set to DBA mode
20 //
21
22 SoundSensor::SoundSensor(unsigned char _port,bool _dba) {
23
24   //
25   // remember the port number for data transfers
26   //
27
28   port = _port;
29
30   //
31   // remember dba state
32   //
33
34   dba = _dba;
35
36   //
37   // turn on dba mode if so indicated
38   //
39
40   if (dba) {
41     set_digi1(port);
42     unset_digi0(port);
43   } else {
44     unset_digi1(port);
45     set_digi0(port);
46   }
47 }
48
49
50
51 //=============================================================================
52 // SoundSensor::~SoundSensor(void)
53 //   class destructor
54 //
55
56 SoundSensor::~SoundSensor(void) {
57
58   unset_digi0(port);
59   unset_digi1(port);
60 }
61
62
63
64 //=============================================================================
65 // void setDBA(bool _dba)
66 //   set the DBA status
67 //
68
69 void SoundSensor::setDBA(bool _dba) {
70
71   //
72   // if new status == current status, there's nothing to do
73   //
74
75   if (dba == _dba)
76     return;
77
78   dba = _dba;
79
80   if (dba) {
81     set_digi1(port);
82     unset_digi0(port);
83   } else {
84     unset_digi1(port);
85     set_digi0(port);
86   }
87 }
88
89
90
91 //=============================================================================
92 // short int getValue(void)
93 //   get sound level as percent
94 //
95
96 short int SoundSensor::getValue(void) {
97
98   return ((1023 - sensor_adc(port)) * 100) >> 10;
99 }
100
101
102
103 //=============================================================================
104 // short int getRawValue(void)
105 //   get raw sound level
106 //
107
108 short int SoundSensor::getRawValue(void) {
109
110   return 1023 - sensor_adc(port);
111 }