Skip to content

Commit 6f49d3d

Browse files
committed
further implementation; cal and non-cal outputs, bulb and indicator props
1 parent 84898c0 commit 6f49d3d

File tree

2 files changed

+165
-97
lines changed

2 files changed

+165
-97
lines changed

src/Flux/flxDevAS7265x.cpp

Lines changed: 97 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,41 @@ flxRegisterDevice(flxDevAS7265X);
3131
//----------------------------------------------------------------------------------------------------------
3232
/// @brief Constructor
3333
///
34-
flxDevAS7265X::flxDevAS7265X()
34+
flxDevAS7265X::flxDevAS7265X() : _indicator{true}
3535
{
3636

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

39+
// Properties
40+
flxRegister(readWithLED, "Enable LED", "Measure with LED enabled");
41+
flxRegister(enableIndicator, "Enable Indicator", "Indicator LED enabled");
42+
flxRegister(outputCal, "Calibrated Output", "Return calibrated values");
43+
3944
// Register output params
40-
flxRegister(outCalA, "Calibrated A", "Calibrated channel A");
41-
flxRegister(outCalB, "Calibrated B", "Calibrated channel B");
42-
flxRegister(outCalC, "Calibrated C", "Calibrated channel C");
43-
flxRegister(outCalD, "Calibrated D", "Calibrated channel D");
44-
flxRegister(outCalE, "Calibrated E", "Calibrated channel E");
45-
flxRegister(outCalF, "Calibrated F", "Calibrated channel F");
45+
flxRegister(outputType, "Calibrated", "True if output data is calibrated");
46+
47+
flxRegister(outA, "Channel A");
48+
flxRegister(outB, "Channel B");
49+
flxRegister(outC, "Channel C");
50+
flxRegister(outD, "Channel D");
51+
flxRegister(outE, "Channel E");
52+
flxRegister(outF, "Channel F");
4653

4754
// Register output params
48-
flxRegister(outCalG, "Calibrated G", "Calibrated channel G");
49-
flxRegister(outCalH, "Calibrated H", "Calibrated channel H");
50-
flxRegister(outCalI, "Calibrated I", "Calibrated channel I");
51-
flxRegister(outCalJ, "Calibrated J", "Calibrated channel J");
52-
flxRegister(outCalK, "Calibrated K", "Calibrated channel K");
53-
flxRegister(outCalL, "Calibrated L", "Calibrated channel L");
55+
flxRegister(outG, "Channel G");
56+
flxRegister(outH, "Channel H");
57+
flxRegister(outI, "Channel I");
58+
flxRegister(outJ, "Channel J");
59+
flxRegister(outK, "Channel K");
60+
flxRegister(outL, "Channel L");
5461

5562
// Register output params
56-
flxRegister(outCalR, "Calibrated R", "Calibrated channel R");
57-
flxRegister(outCalS, "Calibrated S", "Calibrated channel S");
58-
flxRegister(outCalT, "Calibrated T", "Calibrated channel T");
59-
flxRegister(outCalU, "Calibrated U", "Calibrated channel U");
60-
flxRegister(outCalV, "Calibrated V", "Calibrated channel V");
61-
flxRegister(outCalW, "Calibrated W", "Calibrated channel W");
63+
flxRegister(outR, "Channel R");
64+
flxRegister(outS, "Channel S");
65+
flxRegister(outT, "Channel T");
66+
flxRegister(outU, "Channel U");
67+
flxRegister(outV, "Channel V");
68+
flxRegister(outW, "Channel W");
6269

6370
}
6471

@@ -91,9 +98,39 @@ bool flxDevAS7265X::onInitialize(TwoWire &wirePort)
9198
}
9299

93100

101+
//---------------------------------------------------------------------------
102+
// Indicator property
103+
//---------------------------------------------------------------------------
104+
bool flxDevAS7265X::get_indicator(void)
105+
{
106+
return _indicator;
107+
}
108+
109+
110+
void flxDevAS7265X::set_indicator(bool isOn)
111+
{
112+
if (_indicator == isOn)
113+
return;
114+
115+
if (isOn)
116+
AS7265X::enableIndicator();
117+
else
118+
AS7265X::disableIndicator();
119+
120+
_indicator = isOn;
121+
}
122+
123+
//---------------------------------------------------------------------------
124+
///
125+
/// @brief Called right before data parameters are read - take measurments called
126+
///
127+
94128
bool flxDevAS7265X::execute(void)
95129
{
96-
AS7265X::takeMeasurements();
130+
if (readWithLED())
131+
AS7265X::takeMeasurementsWithBulb();
132+
else
133+
AS7265X::takeMeasurements();
97134

98135
return true;
99136
}
@@ -102,83 +139,87 @@ bool flxDevAS7265X::execute(void)
102139
// Outputs
103140
//---------------------------------------------------------------------------
104141

142+
bool flxDevAS7265X::read_output_type(void)
143+
{
144+
return outputCal();
145+
}
105146
//---------------------------------------------------------------------------
106147

107-
float flxDevAS7265X::read_calA(void)
148+
float flxDevAS7265X::read_A(void)
108149
{
109-
return AS7265X::getCalibratedA();
150+
return outputCal() ? AS7265X::getCalibratedA() : AS7265X::getA();
110151
}
111152

112-
float flxDevAS7265X::read_calB(void)
153+
float flxDevAS7265X::read_B(void)
113154
{
114-
return AS7265X::getCalibratedB();
155+
return outputCal() ? AS7265X::getCalibratedB() : AS7265X::getB();
115156
}
116157

117-
float flxDevAS7265X::read_calC(void)
158+
float flxDevAS7265X::read_C(void)
118159
{
119-
return AS7265X::getCalibratedC();
160+
return outputCal() ? AS7265X::getCalibratedC() : AS7265X::getC();
120161
}
121162

122-
float flxDevAS7265X::read_calD(void)
163+
float flxDevAS7265X::read_D(void)
123164
{
124-
return AS7265X::getCalibratedD();
165+
return outputCal() ? AS7265X::getCalibratedD() : AS7265X::getD();
125166
}
126167

127-
float flxDevAS7265X::read_calE(void)
168+
float flxDevAS7265X::read_E(void)
128169
{
129-
return AS7265X::getCalibratedE();
170+
return outputCal() ? AS7265X::getCalibratedE() : AS7265X::getE();
130171
}
131172

132-
float flxDevAS7265X::read_calF(void)
173+
float flxDevAS7265X::read_F(void)
133174
{
134-
return AS7265X::getCalibratedF();
175+
return outputCal() ? AS7265X::getCalibratedF() : AS7265X::getF();
135176
}
136177

137-
float flxDevAS7265X::read_calG(void)
178+
float flxDevAS7265X::read_G(void)
138179
{
139-
return AS7265X::getCalibratedG();
180+
return outputCal() ? AS7265X::getCalibratedG() : AS7265X::getG();
140181
}
141-
float flxDevAS7265X::read_calH(void)
182+
float flxDevAS7265X::read_H(void)
142183
{
143-
return AS7265X::getCalibratedH();
184+
return outputCal() ? AS7265X::getCalibratedH() : AS7265X::getH();
144185
}
145-
float flxDevAS7265X::read_calI(void)
186+
float flxDevAS7265X::read_I(void)
146187
{
147-
return AS7265X::getCalibratedI();
188+
return outputCal() ? AS7265X::getCalibratedI() : AS7265X::getI();
148189
}
149-
float flxDevAS7265X::read_calJ(void)
190+
float flxDevAS7265X::read_J(void)
150191
{
151-
return AS7265X::getCalibratedJ();
192+
return outputCal() ? AS7265X::getCalibratedJ() : AS7265X::getJ();
152193
}
153-
float flxDevAS7265X::read_calK(void)
194+
float flxDevAS7265X::read_K(void)
154195
{
155-
return AS7265X::getCalibratedK();
196+
return outputCal() ? AS7265X::getCalibratedK() : AS7265X::getK();
156197
}
157-
float flxDevAS7265X::read_calL(void)
198+
float flxDevAS7265X::read_L(void)
158199
{
159-
return AS7265X::getCalibratedL();
200+
return outputCal() ? AS7265X::getCalibratedL() : AS7265X::getL();
160201
}
161-
float flxDevAS7265X::read_calR(void)
202+
float flxDevAS7265X::read_R(void)
162203
{
163-
return AS7265X::getCalibratedR();
204+
return outputCal() ? AS7265X::getCalibratedR() : AS7265X::getR();
164205
}
165-
float flxDevAS7265X::read_calS(void)
206+
float flxDevAS7265X::read_S(void)
166207
{
167-
return AS7265X::getCalibratedS();
208+
return outputCal() ? AS7265X::getCalibratedS() : AS7265X::getS();
168209
}
169-
float flxDevAS7265X::read_calT(void)
210+
float flxDevAS7265X::read_T(void)
170211
{
171-
return AS7265X::getCalibratedT();
212+
return outputCal() ? AS7265X::getCalibratedT() : AS7265X::getT();
172213
}
173-
float flxDevAS7265X::read_calU(void)
214+
float flxDevAS7265X::read_U(void)
174215
{
175-
return AS7265X::getCalibratedU();
216+
return outputCal() ? AS7265X::getCalibratedU() : AS7265X::getU();
176217
}
177-
float flxDevAS7265X::read_calV(void)
218+
float flxDevAS7265X::read_V(void)
178219
{
179-
return AS7265X::getCalibratedV();
220+
return outputCal() ? AS7265X::getCalibratedV() : AS7265X::getV();
180221
}
181-
float flxDevAS7265X::read_calW(void)
222+
float flxDevAS7265X::read_W(void)
182223
{
183-
return AS7265X::getCalibratedW();
224+
return outputCal() ? AS7265X::getCalibratedW() : AS7265X::getW();
184225
}

src/Flux/flxDevAS7265x.h

Lines changed: 68 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -51,49 +51,76 @@ class flxDevAS7265X : public flxDeviceI2CType<flxDevAS7265X>, public AS7265X
5151
bool execute(void);
5252

5353
private:
54+
55+
// property methods
56+
57+
bool get_indicator(void);
58+
void set_indicator(bool);
59+
60+
bool _indicator;
61+
62+
63+
64+
5465
// Parameter methods
55-
float read_calA();
56-
float read_calB();
57-
float read_calC();
58-
float read_calD();
59-
float read_calE();
60-
float read_calF();
61-
62-
float read_calG();
63-
float read_calH();
64-
float read_calI();
65-
float read_calJ();
66-
float read_calK();
67-
float read_calL();
68-
69-
float read_calR();
70-
float read_calS();
71-
float read_calT();
72-
float read_calU();
73-
float read_calV();
74-
float read_calW();
66+
bool read_output_type(void);
67+
float read_A(void);
68+
float read_B(void);
69+
float read_C(void);
70+
float read_D(void);
71+
float read_E(void);
72+
float read_F(void);
73+
74+
float read_G(void);
75+
float read_H(void);
76+
float read_I(void);
77+
float read_J(void);
78+
float read_K(void);
79+
float read_L(void);
80+
81+
float read_R(void);
82+
float read_S(void);
83+
float read_T(void);
84+
float read_U(void);
85+
float read_V(void);
86+
float read_W(void);
7587

7688
public:
7789

78-
// Define our output parameters - specify the get functions to call.
79-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calA> outCalA;
80-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calB> outCalB;
81-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calC> outCalC;
82-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calD> outCalD;
83-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calE> outCalE;
84-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calF> outCalF;
85-
86-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calG> outCalG;
87-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calH> outCalH;
88-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calI> outCalI;
89-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calJ> outCalJ;
90-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calK> outCalK;
91-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calL> outCalL;
92-
93-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calR> outCalR;
94-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calS> outCalS;
95-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calT> outCalT;
96-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calU> outCalU;
97-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calV> outCalV;
98-
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_calW> outCalW;
90+
// Properties
91+
92+
// Read with LED active?
93+
94+
flxPropertyBool<flxDevAS7265X> readWithLED = {false};
95+
96+
flxPropertyRWBool<flxDevAS7265X, &flxDevAS7265X::get_indicator, &flxDevAS7265X::set_indicator> enableIndicator = {true};
97+
98+
flxPropertyBool<flxDevAS7265X> outputCal = {true};
99+
100+
101+
// Outputs
102+
// define parameters for calibrarted outputs
103+
flxParameterOutBool<flxDevAS7265X, &flxDevAS7265X::read_output_type> outputType;
104+
105+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_A> outA;
106+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_B> outB;
107+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_C> outC;
108+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_D> outD;
109+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_E> outE;
110+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_F> outF;
111+
112+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_G> outG;
113+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_H> outH;
114+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_I> outI;
115+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_J> outJ;
116+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_K> outK;
117+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_L> outL;
118+
119+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_R> outR;
120+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_S> outS;
121+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_T> outT;
122+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_U> outU;
123+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_V> outV;
124+
flxParameterOutFloat<flxDevAS7265X, &flxDevAS7265X::read_W> outW;
125+
99126
};

0 commit comments

Comments
 (0)