diff --git a/bin_delivery/final/death-stack-entry/death-stack-entry.bin b/bin_delivery/final/death-stack-entry/death-stack-entry.bin new file mode 100755 index 0000000000000000000000000000000000000000..cfb4816667dcc01eff8f1d078a1b70e042966130 Binary files /dev/null and b/bin_delivery/final/death-stack-entry/death-stack-entry.bin differ diff --git a/scripts/flashentry.sh b/scripts/flashentry.sh index 389aae65d0cdf1cf828bbd1b286b73016c127eb0..7e9ed530b586a41268390ca12ed520520b527ffb 100755 --- a/scripts/flashentry.sh +++ b/scripts/flashentry.sh @@ -1,3 +1,3 @@ #!/bin/sh -st-flash write bin_delivery/final/death-stack-entry.bin 0x8000000 +st-flash write bin_delivery/final/death-stack-entry/death-stack-entry.bin 0x8000000 diff --git a/skyward-boardcore b/skyward-boardcore index cf503554420c3dba5f58326bafe06c29caabc55c..aa1c891fdf2693331bf9d3f8f072f58ae79105cb 160000 --- a/skyward-boardcore +++ b/skyward-boardcore @@ -1 +1 @@ -Subproject commit cf503554420c3dba5f58326bafe06c29caabc55c +Subproject commit aa1c891fdf2693331bf9d3f8f072f58ae79105cb diff --git a/src/boards/DeathStack/SensorManager/SensorManager.cpp b/src/boards/DeathStack/SensorManager/SensorManager.cpp index a5259b05cb92d521df7c843679d1d5f0f78107e5..231fd750e3bfa89571b3830e5b12980547f4a271 100644 --- a/src/boards/DeathStack/SensorManager/SensorManager.cpp +++ b/src/boards/DeathStack/SensorManager/SensorManager.cpp @@ -41,6 +41,7 @@ #include "sensors/LM75B.h" #include "sensors/MPU9250/MPU9250.h" #include "sensors/MPU9250/MPU9250Data.h" +#include "sensors/MS580301BA07/MS580301BA07.h" #ifdef USE_MOCK_SENSORS #include "Sensors/Test/MockGPS.h" @@ -95,11 +96,13 @@ void SensorManager::initSensors() { i2c1::init(); spiMPU9250::init(); + spiMS5803::init(); // Instantiation adc_ad7994 = new AD7994Wrapper(sensors::ad7994::addr); temp_lm75b_analog = new LM75BType(sensors::lm75b_analog::addr); temp_lm75b_imu = new LM75BType(sensors::lm75b_imu::addr); + pressure_ms5803 = new MS580301BA07Type(); imu_mpu9250 = new MPU9250Type(MPU9250Type::ACC_FS_16G, MPU9250Type::GYRO_FS_2000); @@ -126,7 +129,7 @@ void SensorManager::initSensors() sensor_status.lm75b_analog = temp_lm75b_analog->init(); // // TODO: lsm6ds3h - // // TODO: ms5803 + sensor_status.ms5803 = pressure_ms5803->init(); sensor_status.ad7994 = adc_ad7994->init(); @@ -143,6 +146,7 @@ void SensorManager::initSamplers() sampler_20hz_simple.AddSensor(adc_internal->getBatterySensorPtr()); sampler_20hz_simple.AddSensor(adc_ad7994); sampler_20hz_simple.AddSensor(adc_internal->getCurrentSensorPtr()); + sampler_20hz_simple.AddSensor(pressure_ms5803); sampler_20hz_simple.AddSensor(temp_lm75b_imu); sampler_20hz_simple.AddSensor(temp_lm75b_analog); @@ -308,6 +312,8 @@ void SensorManager::onSimple20HZCallback() logger.log(*(ad7994_data)); logger.log(lm78b_imu_data); logger.log(lm78b_analog_data); + logger.log(lm78b_analog_data); + logger.log(pressure_ms5803->getData()); } ada->updateBaro(ad7994_data->nxp_baro_pressure); diff --git a/src/boards/DeathStack/SensorManager/SensorManager.h b/src/boards/DeathStack/SensorManager/SensorManager.h index 3852cb780e66d2b3e255531cb06054f9a4ab2930..19a699400bf41ee89042a63d6557357b5fcd4377 100644 --- a/src/boards/DeathStack/SensorManager/SensorManager.h +++ b/src/boards/DeathStack/SensorManager/SensorManager.h @@ -157,6 +157,7 @@ private: LM75BType* temp_lm75b_imu; LM75BType* temp_lm75b_analog; ADCWrapper* adc_internal; + MS580301BA07Type* pressure_ms5803; #ifdef USE_MOCK_SENSORS MockPressureSensor* mock_pressure_sensor; MockGPS* mock_gps; diff --git a/src/boards/DeathStack/SensorManager/SensorManagerData.h b/src/boards/DeathStack/SensorManager/SensorManagerData.h index e7095d9ea8f590639128d30ce95f7321c8f00f23..06f8b545b9141b1c2a08f804e1449f507973843c 100644 --- a/src/boards/DeathStack/SensorManager/SensorManagerData.h +++ b/src/boards/DeathStack/SensorManager/SensorManagerData.h @@ -54,8 +54,8 @@ enum class SensorManagerState : uint8_t // Nominal value returned by SensorStatus.toNumeric() when every sensor was // initialized successfully. -// 127 = 1 in every bit of the SensorStatus struct -static constexpr uint16_t NOMINAL_SENSOR_INIT_VALUE = 127; +// 255 = 1 in every bit of the SensorStatus struct +static constexpr uint16_t NOMINAL_SENSOR_INIT_VALUE = 255; struct SensorStatus { @@ -76,6 +76,9 @@ struct SensorStatus // External ADC uint16_t ad7994 : 1; + // Digital pressure sensor + uint16_t ms5803 : 1; + /** * Converts data in the struct to a single uint16_t value * @return uint16_t representing the struct @@ -90,13 +93,14 @@ struct SensorStatus static std::string header() { return "mpu9250,lm75b_imu,lm75b_analog,piksi,current_sensor,battery_" - "sensor,ad7994"; + "sensor,ad7994, ms5803\n"; } void print(std::ostream& os) const { os << mpu9250 << "," << lm75b_imu << "," << lm75b_analog << "," << piksi - << "," << current_sensor << "," << battery_sensor << "," << ad7994; + << "," << current_sensor << "," << battery_sensor << "," << ad7994 + << "," << ms5803 <<"\n"; } }; diff --git a/src/entrypoints/deserializer/LogTypes.h b/src/entrypoints/deserializer/LogTypes.h index 32204a38007c032fa5bbe5cee34e5bf874f82fba..f7f20c2b3857e96dc18a8f60ea2201e932961557 100644 --- a/src/entrypoints/deserializer/LogTypes.h +++ b/src/entrypoints/deserializer/LogTypes.h @@ -43,6 +43,7 @@ #include "logger/LogStats.h" #include "scheduler/TaskSchedulerData.h" #include "sensors/MPU9250/MPU9250Data.h" +#include "sensors/MS580301BA07/MS580301BA07Data.h" using std::ofstream; @@ -112,6 +113,8 @@ void registerTypes(Deserializer& ds) // ds.registerType<StackData>(print<StackData>, StackData::header()); ds.registerType<ReferenceValues>(print<ReferenceValues>, ReferenceValues::header()); + + ds.registerType<MS580301BA07Data>(print<MS580301BA07Data>, MS580301BA07Data::header()); } #endif diff --git a/src/tests/drivers/test-all-sensors.cpp b/src/tests/drivers/test-all-sensors.cpp index 972410fffb41bc5cf1d4b23bdc4159580be809cd..fd4d5a5ccb1cf1f630bcf5480ecc674ffc97ded6 100644 --- a/src/tests/drivers/test-all-sensors.cpp +++ b/src/tests/drivers/test-all-sensors.cpp @@ -30,6 +30,7 @@ #include <sensors/ADIS16405/ADIS16405.h> #include <sensors/LM75B.h> #include <sensors/MPU9250/MPU9250.h> +#include "sensors/MS580301BA07/MS580301BA07.h" #include <sensors/SensorSampling.h> #include <interfaces-impl/hwmapping.h> @@ -40,6 +41,7 @@ using namespace miosix; typedef MPU9250<spiMPU9250> MPU9250Type; //typedef ADIS16405<spiADIS16405, sensors::adis16405::rst> ADIS16405Type; typedef LM75B<i2c1> LM75BType; +typedef MS580301BA07<spiMS5803> MS580301BA07Type; AD7994Wrapper* adc_ad7994; ADCWrapper* adc_internal; @@ -49,6 +51,7 @@ MPU9250Type* imu_mpu9250; LM75BType* temp_lm75b_analog; LM75BType* temp_lm75b_imu; +MS580301BA07Type* pressure_ms5803; Piksi* piksi; @@ -67,6 +70,8 @@ void init() imu_mpu9250 = new MPU9250Type(MPU9250Type::ACC_FS_16G, MPU9250Type::GYRO_FS_2000); + pressure_ms5803 = new MS580301BA07Type(); + piksi = new Piksi("/dev/gps"); Thread::sleep(1000); @@ -78,6 +83,7 @@ void init() printf("Testing adc_ad7994... %s\n", adc_ad7994->init() ? "Ok" : "Failed"); printf("Testing battery sensor ... %s\n", adc_internal->getBatterySensorPtr()->init() ? "Ok" : "Failed"); printf("Testing current sensor... %s\n", adc_internal->getCurrentSensorPtr()->init() ? "Ok" : "Failed"); + printf("Testing digital pressure sensor... %s\n", pressure_ms5803->init() ? "Ok" : "Failed"); printf("\n\n"); } @@ -90,6 +96,7 @@ void update() adc_ad7994->onSimpleUpdate(); adc_internal->getBatterySensorPtr()->onSimpleUpdate(); adc_internal->getCurrentSensorPtr()->onSimpleUpdate(); + pressure_ms5803->onSimpleUpdate(); } void print() @@ -100,8 +107,10 @@ void print() imu_adis16405->accelDataPtr()->getZ()); */ printf("LM75B imu Temp: \tT: %.3f\n", temp_lm75b_imu->getTemp()); printf("LM75B analog Temp: \tT: %.3f\n", temp_lm75b_analog->getTemp()); + printf("Digital temp: \tP: %f\n", pressure_ms5803->getData().temp); printf("HW Pressure: \tP: %f\n", adc_ad7994->getDataPtr()->honeywell_baro_pressure); printf("NXP Pressure: \tP: %f\n", adc_ad7994->getDataPtr()->nxp_baro_pressure); + printf("Digital Pressure: \tP: %f\n", pressure_ms5803->getData().pressure*100); printf("Battery voltage:\tV: %f\n", adc_internal->getBatterySensorPtr()->getBatteryDataPtr()->volt); printf("Current sens 1: \tC: %f\n",