Merge pull request #31 from vas-dav/pressure-wrapper

Pressure wrapper
This commit is contained in:
Evgenii Meshcheriakov
2022-10-18 12:27:41 +03:00
committed by GitHub
14 changed files with 509 additions and 14 deletions

View File

@@ -47,6 +47,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/inc}&quot;"/>
</option>
<option id="com.crt.advproject.cpp.misc.dialect.1893636131" name="Language standard" superClass="com.crt.advproject.cpp.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c++11" valueType="enumerated"/>
<inputType id="com.crt.advproject.compiler.cpp.input.1024506123" superClass="com.crt.advproject.compiler.cpp.input"/>
@@ -77,6 +78,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/inc}&quot;"/>
</option>
<option id="com.crt.advproject.c.misc.dialect.1885316467" name="Language standard" superClass="com.crt.advproject.c.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c11" valueType="enumerated"/>
<inputType id="com.crt.advproject.compiler.input.1491212950" superClass="com.crt.advproject.compiler.input"/>
@@ -97,7 +99,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/inc}&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.486566022" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="com.crt.advproject.assembler.input.255980151" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
@@ -131,6 +133,7 @@
<listOptionValue builtIn="false" value="StateHandler"/>
<listOptionValue builtIn="false" value="Timer"/>
<listOptionValue builtIn="false" value="SwitchController"/>
<listOptionValue builtIn="false" value="PressureWrapper"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.link.option.paths.804461696" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/lpc_board_nxp_lpcxpresso_1549/Debug}&quot;"/>
@@ -141,6 +144,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/Debug}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/Debug}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/Debug}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/Debug}&quot;"/>
</option>
<option id="com.crt.advproject.link.cpp.crpenable.8641361" name="Enable automatic placement of Code Read Protection field in image" superClass="com.crt.advproject.link.cpp.crpenable"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.849613399" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
@@ -207,6 +211,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/inc}&quot;"/>
</option>
<option id="com.crt.advproject.cpp.misc.dialect.1640449237" name="Language standard" superClass="com.crt.advproject.cpp.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c++11" valueType="enumerated"/>
<inputType id="com.crt.advproject.compiler.cpp.input.812988440" superClass="com.crt.advproject.compiler.cpp.input"/>
@@ -237,6 +242,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/inc}&quot;"/>
</option>
<option id="com.crt.advproject.c.misc.dialect.1383624929" name="Language standard" superClass="com.crt.advproject.c.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c11" valueType="enumerated"/>
<inputType id="com.crt.advproject.compiler.input.391538574" superClass="com.crt.advproject.compiler.input"/>
@@ -257,6 +263,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/inc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/inc}&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1169670567" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="com.crt.advproject.assembler.input.956763731" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
@@ -290,6 +297,7 @@
<listOptionValue builtIn="false" value="StateHandler"/>
<listOptionValue builtIn="false" value="Timer"/>
<listOptionValue builtIn="false" value="SwitchController"/>
<listOptionValue builtIn="false" value="PressureWrapper"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.link.option.paths.245096214" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/lpc_board_nxp_lpcxpresso_1549/Release}&quot;"/>
@@ -300,6 +308,7 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/StateHandler/Release}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Timer/Release}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/SwitchController/Release}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/PressureWrapper/Release}&quot;"/>
</option>
<option id="com.crt.advproject.link.cpp.crpenable.209534913" name="Enable automatic placement of Code Read Protection field in image" superClass="com.crt.advproject.link.cpp.crpenable"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1513506142" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">

View File

@@ -11,6 +11,7 @@
<project>StateHandler</project>
<project>Timer</project>
<project>SwitchController</project>
<project>PressureWrapper</project>
</projects>
<buildSpec>
<buildCommand>

View File

@@ -37,7 +37,7 @@
* this code.
*/
#include "../inc/I2C.h"
#include "I2C.h"
I2C::I2C(const I2C_config &cfg): device(nullptr) {

View File

@@ -36,13 +36,26 @@ PressureWrapper::~PressureWrapper ()
}
int PressureWrapper::getPressure() {
int16_t pressure = 0;
if(!getRawPressure ()) {
unsigned int i = 0;
while(i<7200000) i++;
getRawPressure ();
i = 0;
}
if(crc8(data.rBuffer, 2) != data.crc){
pressure = data.rBuffer[0];
pressure = pressure << 8;
pressure |= data.rBuffer[1];
float result = (float) pressure * 0.95 / 240;
return (int) result;
}
return -255;
}
PRESSURE_DATA* PressureWrapper::getRawPressure () {
bool PressureWrapper::getRawPressure () {
uint8_t getMeasurementComm = 0xF1;
i2c->transaction(0x40, &getMeasurementComm, 1, data.rBuffer, 3);
return &data;
return (i2c->transaction(ADDRESS, &getMeasurementComm, 1, data.rBuffer, 3));
}

View File

@@ -9,10 +9,15 @@
#define PRESSUREWRAPPER_H_
#include "I2C.h"
#include <cstdio>
#define ADDRESS 0x40
#define READADD 0x81
#define WRITEADD 0x80
/**
* @brief structure to hold a raw data from
* the pressure sensor
*/
typedef struct _PRESSURE{
uint8_t rBuffer[2];
@@ -23,11 +28,8 @@ class PressureWrapper
{
public:
PressureWrapper ();
/**
* @brief Get the Status object
*
* @return true
* @return false
/*
* @return pressure in Pascal
*/
int getPressure ();
@@ -36,7 +38,11 @@ public:
private:
I2C *i2c;
PRESSURE_DATA data = {{0, 0}, 0};
PRESSURE_DATA* getRawPressure ();
/*
* @return struct with pressure data in
* rBuffer and CRC check in crc
*/
bool getRawPressure ();
};
#endif /* PRESSUREWRAPPER_H_ */