ADD preparation for tests
This commit is contained in:
		| @@ -1,21 +1,37 @@ | |||||||
|  | // Copyright 2022 Haute école d'ingénierie et d'architecture de Fribourg | ||||||
|  | // | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | /**************************************************************************** | ||||||
|  |  * @file speedometer_device.cpp | ||||||
|  |  * @author Serge Ayer <serge.ayer@hefr.ch> | ||||||
|  |  * | ||||||
|  |  * @brief WheelCounterDevice implementation (static scheduling) | ||||||
|  |  * | ||||||
|  |  * @date 2023-08-20 | ||||||
|  |  * @version 1.0.0 | ||||||
|  |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #include "sensor_device.hpp" | #include "sensor_device.hpp" | ||||||
|  |  | ||||||
| namespace bike_computer { | namespace bike_computer { | ||||||
|  |  | ||||||
| SensorDevice::SensorDevice() : _hdc1000(I2C_SDA, I2C_SCL, STMOD_11)  | SensorDevice::SensorDevice() : _hdc1000(I2C_SDA, I2C_SCL, STMOD_11) {} | ||||||
| {} |  | ||||||
|  |  | ||||||
| bool SensorDevice::init() { | bool SensorDevice::init() { return this->_hdc1000.probe(); } | ||||||
|     return this->_hdc1000.probe(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| float SensorDevice::readTemperature(void) { | float SensorDevice::readTemperature(void) { return this->_hdc1000.getTemperature(); } | ||||||
|     return this->_hdc1000.getTemperature(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| float SensorDevice::readHumidity(void) { | float SensorDevice::readHumidity(void) { return this->_hdc1000.getHumidity(); } | ||||||
|     return this->_hdc1000.getHumidity(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| } // bike_computer |  | ||||||
|  |  | ||||||
|  | }  // namespace bike_computer | ||||||
|   | |||||||
| @@ -80,7 +80,6 @@ float Speedometer::getDistance() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void Speedometer::reset() { | void Speedometer::reset() { | ||||||
|     // TODO : done |  | ||||||
|     this->_totalDistanceMutex.lock(); |     this->_totalDistanceMutex.lock(); | ||||||
|     this->_totalDistance = 0.0f; |     this->_totalDistance = 0.0f; | ||||||
|     this->_totalDistanceMutex.unlock(); |     this->_totalDistanceMutex.unlock(); | ||||||
| @@ -96,6 +95,7 @@ float Speedometer::getTraySize() const { return kTraySize; } | |||||||
| std::chrono::milliseconds Speedometer::getCurrentPedalRotationTime() const { | std::chrono::milliseconds Speedometer::getCurrentPedalRotationTime() const { | ||||||
|     return _pedalRotationTime; |     return _pedalRotationTime; | ||||||
| } | } | ||||||
|  | void Speedometer::setOnResetCallback(mbed::Callback<void()> cb) { _cbOnReset = cb; } | ||||||
|  |  | ||||||
| #endif  // defined(MBED_TEST_MODE) | #endif  // defined(MBED_TEST_MODE) | ||||||
|  |  | ||||||
| @@ -107,7 +107,6 @@ void Speedometer::computeSpeed() { | |||||||
|     // = 6.99m If you ride at 80 pedal turns / min, you run a distance of 6.99 * 80 / min |     // = 6.99m If you ride at 80 pedal turns / min, you run a distance of 6.99 * 80 / min | ||||||
|     // ~= 560 m / min = 33.6 km/h |     // ~= 560 m / min = 33.6 km/h | ||||||
|  |  | ||||||
|     // TODO : done |  | ||||||
|     // Distance run with one pedal turn = tray size / rear gear size * circumference of |     // Distance run with one pedal turn = tray size / rear gear size * circumference of | ||||||
|     // the wheel |     // the wheel | ||||||
|     constexpr float ms_in_hour = static_cast<float>(3600 * 1000); |     constexpr float ms_in_hour = static_cast<float>(3600 * 1000); | ||||||
| @@ -129,7 +128,6 @@ void Speedometer::computeDistance() { | |||||||
|     // ~= 560 m / min = 33.6 km/h. We then multiply the speed by the time for getting the |     // ~= 560 m / min = 33.6 km/h. We then multiply the speed by the time for getting the | ||||||
|     // distance traveled. |     // distance traveled. | ||||||
|  |  | ||||||
|     // TODO : done |  | ||||||
|     Speedometer::computeSpeed(); |     Speedometer::computeSpeed(); | ||||||
|     // compute distance |     // compute distance | ||||||
|  |  | ||||||
|   | |||||||
| @@ -55,6 +55,7 @@ class Speedometer { | |||||||
|     float getTraySize() const; |     float getTraySize() const; | ||||||
|     std::chrono::milliseconds getCurrentPedalRotationTime() const; |     std::chrono::milliseconds getCurrentPedalRotationTime() const; | ||||||
|     void setOnResetCallback(mbed::Callback<void()> cb); |     void setOnResetCallback(mbed::Callback<void()> cb); | ||||||
|  |     mbed::Callback<void()> _cbOnReset; | ||||||
| #endif  // defined(MBED_TEST_MODE) | #endif  // defined(MBED_TEST_MODE) | ||||||
|  |  | ||||||
|    private: |    private: | ||||||
|   | |||||||
| @@ -87,6 +87,14 @@ BikeSystem::BikeSystem() | |||||||
|  |  | ||||||
| #if defined(MBED_TEST_MODE) | #if defined(MBED_TEST_MODE) | ||||||
| const advembsof::TaskLogger& BikeSystem::getTaskLogger() { return _taskLogger; } | const advembsof::TaskLogger& BikeSystem::getTaskLogger() { return _taskLogger; } | ||||||
|  |  | ||||||
|  | bike_computer::Speedometer& Bike_system::getSpeedometer() { | ||||||
|  |     _mutexSpeedometer.lock(); | ||||||
|  |     bike_computer::Speedometer& speedometer = _speedometer; | ||||||
|  |     _mutexSpeedometer.unlock(); | ||||||
|  |     return speedometer; | ||||||
|  | } | ||||||
|  |  | ||||||
| #endif  // defined(MBED_TEST_MODE) | #endif  // defined(MBED_TEST_MODE) | ||||||
|  |  | ||||||
| void BikeSystem::init() { | void BikeSystem::init() { | ||||||
| @@ -162,10 +170,12 @@ void BikeSystem::onReset() { | |||||||
| // ISR thread functions | // ISR thread functions | ||||||
|  |  | ||||||
| void BikeSystem::resetTask() { | void BikeSystem::resetTask() { | ||||||
|  | #ifndef(MBED_TEST_MODE) | ||||||
|     auto taskStartTime = _timer.elapsed_time(); |     auto taskStartTime = _timer.elapsed_time(); | ||||||
|  |  | ||||||
|     std::chrono::microseconds responseTime = _timer.elapsed_time() - _resetTime; |     std::chrono::microseconds responseTime = _timer.elapsed_time() - _resetTime; | ||||||
|     tr_info("Reset task: response time is %" PRIu64 " usecs", responseTime.count()); |     tr_info("Reset task: response time is %" PRIu64 " usecs", responseTime.count()); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     // ENTER CRITICAL SECTION |     // ENTER CRITICAL SECTION | ||||||
|     _mutexSpeedometer.lock(); |     _mutexSpeedometer.lock(); | ||||||
| @@ -173,8 +183,10 @@ void BikeSystem::resetTask() { | |||||||
|     _mutexSpeedometer.unlock(); |     _mutexSpeedometer.unlock(); | ||||||
|     // END CRITICAL SECTION |     // END CRITICAL SECTION | ||||||
|  |  | ||||||
|  | #ifndef(MBED_TEST_MODE) | ||||||
|     _taskLogger.logPeriodAndExecutionTime( |     _taskLogger.logPeriodAndExecutionTime( | ||||||
|         _timer, advembsof::TaskLogger::kResetTaskIndex, taskStartTime); |         _timer, advembsof::TaskLogger::kResetTaskIndex, taskStartTime); | ||||||
|  | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
| // Speed distance thread functions | // Speed distance thread functions | ||||||
|   | |||||||
| @@ -58,6 +58,7 @@ class BikeSystem { | |||||||
|  |  | ||||||
| #if defined(MBED_TEST_MODE) | #if defined(MBED_TEST_MODE) | ||||||
|     const advembsof::TaskLogger& getTaskLogger(); |     const advembsof::TaskLogger& getTaskLogger(); | ||||||
|  |     bike_computer::Speedometer& getSpeedometer(); | ||||||
| #endif  // defined(MBED_TEST_MODE) | #endif  // defined(MBED_TEST_MODE) | ||||||
|  |  | ||||||
|    private: |    private: | ||||||
| @@ -70,7 +71,16 @@ class BikeSystem { | |||||||
|     void cpuTask(); |     void cpuTask(); | ||||||
|  |  | ||||||
| // ISR Thread | // ISR Thread | ||||||
|  | #if defined(MBED_TEST_MODE) | ||||||
|  |  | ||||||
|  |    public: | ||||||
|  | #endif | ||||||
|     void onReset(); |     void onReset(); | ||||||
|  | #if defined(MBED_TEST_MODE) | ||||||
|  |  | ||||||
|  |    private: | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     void resetTask(); |     void resetTask(); | ||||||
|  |  | ||||||
|     // gear Thread |     // gear Thread | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user