1
0
forked from me/IronOS

Merge branch 'master' into ralim/scrollbar

This commit is contained in:
Ben V. Brown
2021-09-25 11:04:23 +10:00
committed by GitHub
11 changed files with 82 additions and 50 deletions

View File

@@ -26,6 +26,7 @@ extern const char *SymbolCellCount;
extern const char *SymbolVersionNumber;
extern const char *DebugMenu[];
extern const char *AccelTypeNames[];
enum class SettingsItemIndex : uint8_t {
DCInCutoff,

View File

@@ -3,7 +3,6 @@
#include "OLED.hpp"
#include "Setup.h"
extern uint8_t DetectedAccelerometerVersion;
extern uint32_t currentTempTargetDegC;
extern bool settingsWereReset;
extern bool usb_pd_available;
@@ -13,8 +12,6 @@ extern "C" {
void vApplicationStackOverflowHook(TaskHandle_t *pxTask, signed portCHAR *pcTaskName);
#define NO_DETECTED_ACCELEROMETER 99
#define ACCELEROMETERS_SCANNING 100
// Threads
void startGUITask(void const *argument);
void startPIDTask(void const *argument);
@@ -26,5 +23,17 @@ extern uint8_t accelInit;
extern TickType_t lastMovementTime;
#ifdef __cplusplus
}
// Accelerometer type
enum class AccelType {
Scanning = 0,
None = 1,
MMA = 2,
LIS = 3,
BMA = 4,
MSA = 5,
SC7 = 6,
};
extern AccelType DetectedAccelerometerVersion;
#endif
#endif /* __MAIN_H */

View File

@@ -9,8 +9,8 @@
#include "Settings.h"
#include "cmsis_os.h"
#include "power.hpp"
uint8_t DetectedAccelerometerVersion = 0;
bool settingsWereReset = false;
AccelType DetectedAccelerometerVersion = AccelType::Scanning;
bool settingsWereReset = false;
// FreeRTOS variables
osThreadId GUITaskHandle;

View File

@@ -713,7 +713,7 @@ void showDebugMenu(void) {
break;
case 10:
// Print PCB ID number
OLED::printNumber(DetectedAccelerometerVersion, 2, FontStyle::SMALL);
OLED::print(AccelTypeNames[(int)DetectedAccelerometerVersion], FontStyle::SMALL);
break;
case 11:
// Power negotiation status
@@ -768,11 +768,11 @@ void showWarnings() {
// We also want to alert if accel or pd is not detected / not responding
// In this case though, we dont want to nag the user _too_ much
// So only show first 2 times
while (DetectedAccelerometerVersion == ACCELEROMETERS_SCANNING) {
while (DetectedAccelerometerVersion == AccelType::Scanning) {
osDelay(5);
}
// Display alert if accelerometer is not detected
if (DetectedAccelerometerVersion == NO_DETECTED_ACCELEROMETER) {
if (DetectedAccelerometerVersion == AccelType::None) {
if (getSettingValue(SettingsOptions::AccelMissingWarningCounter) < 2) {
nextSettingValue(SettingsOptions::AccelMissingWarningCounter);
saveSettings();

View File

@@ -29,11 +29,11 @@ uint8_t accelInit = 0;
TickType_t lastMovementTime = 0;
void detectAccelerometerVersion() {
DetectedAccelerometerVersion = ACCELEROMETERS_SCANNING;
DetectedAccelerometerVersion = AccelType::Scanning;
#ifdef ACCEL_MMA
if (MMA8652FC::detect()) {
if (MMA8652FC::initalize()) {
DetectedAccelerometerVersion = 1;
DetectedAccelerometerVersion = AccelType::MMA;
}
} else
#endif
@@ -41,7 +41,7 @@ void detectAccelerometerVersion() {
if (LIS2DH12::detect()) {
// Setup the ST Accelerometer
if (LIS2DH12::initalize()) {
DetectedAccelerometerVersion = 2;
DetectedAccelerometerVersion = AccelType::LIS;
}
} else
#endif
@@ -49,7 +49,7 @@ void detectAccelerometerVersion() {
if (BMA223::detect()) {
// Setup the BMA223 Accelerometer
if (BMA223::initalize()) {
DetectedAccelerometerVersion = 3;
DetectedAccelerometerVersion = AccelType::BMA;
}
} else
#endif
@@ -57,7 +57,7 @@ void detectAccelerometerVersion() {
if (MSA301::detect()) {
// Setup the MSA301 Accelerometer
if (MSA301::initalize()) {
DetectedAccelerometerVersion = 4;
DetectedAccelerometerVersion = AccelType::MSA;
}
} else
#endif
@@ -65,43 +65,43 @@ void detectAccelerometerVersion() {
if (SC7A20::detect()) {
// Setup the SC7A20 Accelerometer
if (SC7A20::initalize()) {
DetectedAccelerometerVersion = 5;
DetectedAccelerometerVersion = AccelType::SC7;
}
} else
#endif
{
// disable imu sensitivity
setSettingValue(SettingsOptions::Sensitivity, 0);
DetectedAccelerometerVersion = NO_DETECTED_ACCELEROMETER;
DetectedAccelerometerVersion = AccelType::None;
}
}
inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation &rotation) {
#ifdef ACCEL_LIS
if (DetectedAccelerometerVersion == 2) {
LIS2DH12::getAxisReadings(tx, ty, tz);
rotation = LIS2DH12::getOrientation();
} else
#endif
#ifdef ACCEL_MMA
if (DetectedAccelerometerVersion == 1) {
if (DetectedAccelerometerVersion == AccelType::MMA) {
MMA8652FC::getAxisReadings(tx, ty, tz);
rotation = MMA8652FC::getOrientation();
} else
#endif
#ifdef ACCEL_LIS
if (DetectedAccelerometerVersion == AccelType::LIS) {
LIS2DH12::getAxisReadings(tx, ty, tz);
rotation = LIS2DH12::getOrientation();
} else
#endif
#ifdef ACCEL_BMA
if (DetectedAccelerometerVersion == 3) {
if (DetectedAccelerometerVersion == AccelType::BMA) {
BMA223::getAxisReadings(tx, ty, tz);
rotation = BMA223::getOrientation();
} else
#endif
#ifdef ACCEL_MSA
if (DetectedAccelerometerVersion == 4) {
if (DetectedAccelerometerVersion == AccelType::MSA) {
MSA301::getAxisReadings(tx, ty, tz);
rotation = MSA301::getOrientation();
} else
#endif
#ifdef ACCEL_SC7
if (DetectedAccelerometerVersion == 5) {
if (DetectedAccelerometerVersion == AccelType::SC7) {
SC7A20::getAxisReadings(tx, ty, tz);
rotation = SC7A20::getOrientation();
} else