diff options
author | Jakob Stendahl <jakob.stendahl@outlook.com> | 2021-02-10 11:04:13 +0100 |
---|---|---|
committer | Jakob Stendahl <jakob.stendahl@outlook.com> | 2021-02-24 11:31:52 +0100 |
commit | 8cc460085e75a2cda1bb03cc51786c776da6ebcd (patch) | |
tree | 4b92e382ee0325e9d74e0f6fd437194812f13ed6 /source/HoverBitController.cpp | |
parent | 318d850719a86d58012689143c01dd0edb6263b5 (diff) | |
download | hoverbit-ble-8cc460085e75a2cda1bb03cc51786c776da6ebcd.tar.gz hoverbit-ble-8cc460085e75a2cda1bb03cc51786c776da6ebcd.zip |
:boom: Refactor HoverBitController to only have API relevant for HoverBit
Diffstat (limited to 'source/HoverBitController.cpp')
-rw-r--r-- | source/HoverBitController.cpp | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/source/HoverBitController.cpp b/source/HoverBitController.cpp index 16c6bf1..9860b43 100644 --- a/source/HoverBitController.cpp +++ b/source/HoverBitController.cpp @@ -44,8 +44,7 @@ void HoverBitController::init(MicroBit* _uBit) { roll = 0; yaw = 0; throttle = 0; - failSafeC = 0; - receiveTime = (*uBit).systemTime(); + lastReceiveTime = (*uBit).systemTime(); /* I am not completly sure what this does, but it seems to me like this is putting the air:bit board in some kind of "bind-mode", on the spec-sheet @@ -62,14 +61,15 @@ void HoverBitController::init(MicroBit* _uBit) { * This is not implemented yet. */ bool HoverBitController::failSafe(void) { - unsigned long deltaReceiveTime = (*uBit.systemTime()) - receiveTime; + unsigned long deltaReceiveTime = (*uBit).systemTime() - lastReceiveTime; if (deltaReceiveTime > FSAFE_TLIM_THROTTLE) { Throttle(0); - Roll(0); - Servo1(0); + Rudder(0); + AirBit(0, arm, 0, throttle, roll, roll + 45, servo_1); } if (deltaReceiveTime > FSAFE_TLIM_ARM) { Arm(0); + AirBit(0, arm, 0, throttle, roll, roll + 45, servo_1); } return (deltaReceiveTime > FSAFE_TLIM_THROTTLE) || (deltaReceiveTime > FSAFE_TLIM_ARM); } @@ -77,7 +77,7 @@ bool HoverBitController::failSafe(void) { /** * This returns the current voltage of the battery. */ -unsigned int HoverBitController::getBatteryVoltage() { +unsigned int HoverBitController::GetBatteryVoltage() { float batteryFactor = 4.42; int batteryMilliVolt = 3700; return ((float)((&(*uBit).io.P0)->getAnalogValue()) * batteryFactor * 0.05) + ((float)batteryMilliVolt * 0.95); @@ -164,22 +164,15 @@ void HoverBitController::Throttle(int _throttle) { else { throttle = _throttle; } lastReceiveTime = (*uBit).systemTime(); } -int HoverBitController::Servo1() { - return servo_1; -} -void HoverBitController::Servo1(int _servo1) { - if (_servo1 > 180) { servo_1 = 180; } - else if (_servo1 < 0) { servo_1 = 0; } - else { servo_1 = _servo1; } - lastReceiveTime = (*uBit).systemTime(); -} -int HoverBitController::Roll() { +int HoverBitController::Rudder() { + // The AirBit uses the roll parameter to control the hoverbit's rudder. return roll; } -void HoverBitController::Roll(int _roll) { - if (_roll > 90) { roll = 90; } - else if (_roll < -90) { roll = -90; } - else { roll = _roll; } +void HoverBitController::Rudder(int _rudder) { + // The AirBit uses the roll parameter to control the hoverbit's rudder. + if (_rudder > 90) { roll = 90; } + else if (_rudder < -90) { roll = -90; } + else { roll = _rudder; } lastReceiveTime = (*uBit).systemTime(); } bool HoverBitController::Arm() { |