RangingSensor and bug fixed

Implemented RangingSensor driver and choice between barometer and RangingSensor. Reduced I/O load.
This commit is contained in:
2024-03-11 22:47:32 +07:00
parent 007a3fd16f
commit e27b3ca794
16 changed files with 208 additions and 73 deletions

View File

@@ -49,6 +49,7 @@ void FlightController::tick() {
break;
case DeviceStatus::IsBoarding:
/* TODO: implement boarding */
_boarding();
break;
case DeviceStatus::IsFlying:
/* TODO: implement flying */
@@ -169,6 +170,7 @@ void FlightController::stopAllRotors() {
setRotor1Duty(0);
setRotor2Duty(0);
setRotor3Duty(0);
_status = DeviceStatus::Idle;
}
void FlightController::setHeightControllerParams(float p, float i, float d) {

View File

@@ -167,8 +167,8 @@ void FlightDispatcher::_pidSettingsOpened() {
pkg.endObj();
pkg.end();
pkg.s = String(MessageType::PidSettings) + ";" + pkg.s + _message_delimeter;
_bluetoothDispatcher->sendPackage(pkg.s.c_str(), strlen(pkg.s.c_str()));
pkg.s = String(MessageType::PidSettings) + ";" + pkg.s;
_bluetoothDispatcher->sendPackage(pkg.s.c_str());
ESP_LOGI(_tag, "PID settings sended %s", pkg.s.c_str());
}
@@ -186,6 +186,6 @@ void FlightDispatcher::_sendTelemetry() {
package["zIn"] = state.mpuState.zInertial;
package.endObj();
package.end();
package.s = String(MessageType::UpdatePackage) + ";" + package.s + _message_delimeter;
_bluetoothDispatcher->sendPackage(package.s.c_str(), strlen((package.s.c_str())));
package.s = String(MessageType::UpdatePackage) + ";" + package.s;
_bluetoothDispatcher->sendPackage(package.s.c_str());
}

View File

@@ -7,32 +7,38 @@
#include <map>
// Message type annotation for mobile app
enum MessageType { UpdatePackage = 0, PidSettings };
enum MessageType {
UpdatePackage = 0, PidSettings
};
class FlightDispatcher {
/* Deserialize state and update it in FlightController. */
public:
public:
FlightDispatcher(BluetoothDispatcher *bluetoothDispatcher,
FlightController *flightController, volatile bool loop_on_fail = true);
~FlightDispatcher();
void tick();
private:
private:
/* Telemetry flow */
void _sendTelemetry();
/* Events handlers */
void _onNewDeviceConnected(BTAddress device);
void _onNewMessageReceived(char *package);
/* Requests handlers */
void _changeStatus(const DeviceStatus &newStatus);
void _pidSettingsOpened();
/* Compile time settings */
static constexpr const char *_tag = "FlightDispatcher";
static constexpr const int _telemetryTimeIntervalMS = 200;
static constexpr const uint8_t _jsonMaxDepth = 5;
static constexpr const char *_message_delimeter = "\n";
uint32_t _telemetryTimer = millis();
BluetoothDispatcher *_bluetoothDispatcher;