Skip to content

Commit a3f3aaa

Browse files
committed
added gain property
1 parent 6f49d3d commit a3f3aaa

File tree

2 files changed

+39
-18
lines changed

2 files changed

+39
-18
lines changed

src/Flux/flxDevAS7265x.cpp

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,15 @@ flxRegisterDevice(flxDevAS7265X);
3131
//----------------------------------------------------------------------------------------------------------
3232
/// @brief Constructor
3333
///
34-
flxDevAS7265X::flxDevAS7265X() : _indicator{true}
34+
flxDevAS7265X::flxDevAS7265X() : _indicator{true}, _gain{AS7265X_GAIN_16X}
3535
{
3636

3737
setName(getDeviceName(), "AS7265X Triad Spectroscopy Sensor");
3838

3939
// Properties
4040
flxRegister(readWithLED, "Enable LED", "Measure with LED enabled");
4141
flxRegister(enableIndicator, "Enable Indicator", "Indicator LED enabled");
42+
flxRegister(sensorGain, "Gain", "Gain settings for sensor");
4243
flxRegister(outputCal, "Calibrated Output", "Return calibrated values");
4344

4445
// Register output params
@@ -57,16 +58,15 @@ flxDevAS7265X::flxDevAS7265X() : _indicator{true}
5758
flxRegister(outI, "Channel I");
5859
flxRegister(outJ, "Channel J");
5960
flxRegister(outK, "Channel K");
60-
flxRegister(outL, "Channel L");
61+
flxRegister(outL, "Channel L");
6162

6263
// Register output params
6364
flxRegister(outR, "Channel R");
6465
flxRegister(outS, "Channel S");
6566
flxRegister(outT, "Channel T");
6667
flxRegister(outU, "Channel U");
6768
flxRegister(outV, "Channel V");
68-
flxRegister(outW, "Channel W");
69-
69+
flxRegister(outW, "Channel W");
7070
}
7171

7272
//----------------------------------------------------------------------------------------------------------
@@ -93,10 +93,14 @@ bool flxDevAS7265X::isConnected(flxBusI2C &i2cDriver, uint8_t address)
9393
///
9494
bool flxDevAS7265X::onInitialize(TwoWire &wirePort)
9595
{
96-
return AS7265X::begin(wirePort);
97-
return false;
98-
}
96+
bool status = AS7265X::begin(wirePort);
9997

98+
if (status)
99+
{
100+
AS7265X::setGain(_gain);
101+
}
102+
return status;
103+
}
100104

101105
//---------------------------------------------------------------------------
102106
// Indicator property
@@ -106,20 +110,34 @@ bool flxDevAS7265X::get_indicator(void)
106110
return _indicator;
107111
}
108112

109-
110113
void flxDevAS7265X::set_indicator(bool isOn)
111114
{
112115
if (_indicator == isOn)
113116
return;
114117

115118
if (isOn)
116119
AS7265X::enableIndicator();
117-
else
118-
AS7265X::disableIndicator();
120+
else
121+
AS7265X::disableIndicator();
119122

120123
_indicator = isOn;
121124
}
122125

126+
//---------------------------------------------------------------------------
127+
// Gain property
128+
//---------------------------------------------------------------------------
129+
130+
uint8_t flxDevAS7265X::get_gain(void)
131+
{
132+
return _gain;
133+
}
134+
135+
void flxDevAS7265X::set_gain(uint8_t value)
136+
{
137+
_gain = value;
138+
if (isInitialized())
139+
AS7265X::setGain(value);
140+
}
123141
//---------------------------------------------------------------------------
124142
///
125143
/// @brief Called right before data parameters are read - take measurments called

src/Flux/flxDevAS7265x.h

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,20 @@ class flxDevAS7265X : public flxDeviceI2CType<flxDevAS7265X>, public AS7265X
5151
bool execute(void);
5252

5353
private:
54-
5554
// property methods
5655

5756
bool get_indicator(void);
5857
void set_indicator(bool);
5958

6059
bool _indicator;
6160

61+
uint8_t get_gain(void);
62+
void set_gain(uint8_t);
6263

63-
64+
uint8_t _gain;
6465

6566
// Parameter methods
66-
bool read_output_type(void);
67+
bool read_output_type(void);
6768
float read_A(void);
6869
float read_B(void);
6970
float read_C(void);
@@ -86,17 +87,20 @@ class flxDevAS7265X : public flxDeviceI2CType<flxDevAS7265X>, public AS7265X
8687
float read_W(void);
8788

8889
public:
89-
9090
// Properties
9191

9292
// Read with LED active?
9393

9494
flxPropertyBool<flxDevAS7265X> readWithLED = {false};
9595

96-
flxPropertyRWBool<flxDevAS7265X, &flxDevAS7265X::get_indicator, &flxDevAS7265X::set_indicator> enableIndicator = {true};
96+
flxPropertyRWBool<flxDevAS7265X, &flxDevAS7265X::get_indicator, &flxDevAS7265X::set_indicator> enableIndicator = {
97+
true};
9798

9899
flxPropertyBool<flxDevAS7265X> outputCal = {true};
99100

101+
flxPropertyRWUint8<flxDevAS7265X, &flxDevAS7265X::get_gain, &flxDevAS7265X::set_gain> sensorGain = {
102+
AS7265X_GAIN_16X,
103+
{{"1X", AS7265X_GAIN_1X}, {"3.7X", AS7265X_GAIN_37X}, {"16X", AS7265X_GAIN_16X}, {"64X", AS7265X_GAIN_64X}}};
100104

101105
// Outputs
102106
// define parameters for calibrarted outputs
@@ -107,7 +111,7 @@ class flxDevAS7265X : public flxDeviceI2CType<flxDevAS7265X>, public AS7265X
107111
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_C> outC;
108112
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_D> outD;
109113
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_E> outE;
110-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_F> outF;
114+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_F> outF;
111115

112116
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_G> outG;
113117
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_H> outH;
@@ -121,6 +125,5 @@ class flxDevAS7265X : public flxDeviceI2CType<flxDevAS7265X>, public AS7265X
121125
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_T> outT;
122126
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_U> outU;
123127
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_V> outV;
124-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_W> outW;
125-
128+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_W> outW;
126129
};

0 commit comments

Comments
 (0)