1
0
forked from me/IronOS

S60 Support (#1692)

* Mock S60

* cleanup

* Start refactor of OLED init

* Setup timers roughly

* Set Vector table offset correctly

Update system_stm32f1xx.c

* Update OLED.cpp

* Update stm32f1xx_hal_msp.c

* Update configuration.h

* I2C init before GPIO

From Errata

Update stm32f1xx_hal_msp.c

Update Software_I2C.h

Allow no hardware I2C

* I2C BB run bus unlock at init

* cleanups

* Software I2C for now

* Mildly more graceful Interpolate

* Handle is powered by DC

Update Power.cpp

Update drawPowerSourceIcon.cpp

Update configuration.h

Update Setup.cpp

* Cleanup HomeScreen

* Segment remap oled at init

* Cleanup

* Update MOVThread.cpp

* Fix PWM Init

* Fix adc2 trigger

* Update configs

* Fixup warning

* Saner default config

* Update ThermoModel.cpp

* Util for current@voltage

* Hub238 warning

* Add hub238 handling in power mode

* Update USBPDDebug_FUSB.cpp

* HUSB238 debug

* Hook PSU Limit

* Use wrapping section of GRAM for scroll

Update OLED.hpp

* Update NTC table

* Fix HUB voltage picker

* Cleanup

* Larger tip filter

* Calibrate in a bunch closer

Update ThermoModel.cpp

* Update configuration.h

* Update HUB238.cpp

* Update configuration.h

* Movement Pin

* Update BSP.cpp

* tim2 irq

* Rough timer conversion (adc broken) but movement working

* Fix tim2 start

* Faster base PWM

* Ensure utils grabs config

* Add wattage limiter tolerance for device

* Speed up PWM and enable PWM current limiting

* tune for 12v

* Prevent start until PD done

* Update configuration.h

* Add HUB238 check for have re-negotiated

* Adjust timer to avoid noise when its possible
This commit is contained in:
Ben V. Brown
2023-06-03 20:05:31 +10:00
committed by GitHub
parent 1acb29fcf3
commit 286afad919
116 changed files with 72488 additions and 259 deletions

View File

@@ -74,6 +74,12 @@ void detectAccelerometerVersion() {
return;
}
}
#endif
#ifdef GPIO_VIBRATION
if (true) {
DetectedAccelerometerVersion = AccelType::GPIO;
return;
}
#endif
{
// disable imu sensitivity
@@ -111,20 +117,35 @@ inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation
SC7A20::getAxisReadings(tx, ty, tz);
rotation = SC7A20::getOrientation();
} else
#endif
#ifdef GPIO_VIBRATION
if (DetectedAccelerometerVersion == AccelType::GPIO) {
// TODO
if (HAL_GPIO_ReadPin(MOVEMENT_GPIO_Port, MOVEMENT_Pin) == GPIO_PIN_SET) {
// Movement
tx = ty = tz = 5000;
} else {
// No Movement
tx = ty = tz = 0;
}
rotation = Orientation::ORIENTATION_FLAT;
} else
#endif
{
// do nothing :(
}
}
void startMOVTask(void const *argument __unused) {
osDelay(TICKS_100MS / 5); // This is here as the BMA doesnt start up instantly and can wedge the I2C bus if probed too fast after boot
detectAccelerometerVersion();
osDelay(TICKS_100MS / 2); // wait ~50ms for setup of accel to finalise
lastMovementTime = 0;
// Mask 2 seconds if we are in autostart so that if user is plugging in and
// then putting in stand it doesnt wake instantly
if (getSettingValue(SettingsOptions::AutoStartMode))
if (getSettingValue(SettingsOptions::AutoStartMode)) {
osDelay(2 * TICKS_SECOND);
}
int16_t datax[MOVFilter] = {0};
int16_t datay[MOVFilter] = {0};