|
|
|
@ -61,7 +61,10 @@ BikeSystem::BikeSystem()
|
|
|
|
|
: _gearDevice(_timer),
|
|
|
|
|
_pedalDevice(_timer),
|
|
|
|
|
_resetDevice(_timer),
|
|
|
|
|
_displayDevice(),
|
|
|
|
|
_speedometer(_timer),
|
|
|
|
|
_sensorDevice(),
|
|
|
|
|
_taskLogger(),
|
|
|
|
|
_cpuLogger(_timer) {}
|
|
|
|
|
|
|
|
|
|
void BikeSystem::start() {
|
|
|
|
@ -205,29 +208,18 @@ void BikeSystem::speedDistanceTask() {
|
|
|
|
|
_timer, advembsof::TaskLogger::kSpeedTaskIndex, taskStartTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BikeSystem::temperatureTask() {
|
|
|
|
|
void BikeSystem::displayTask1() {
|
|
|
|
|
auto taskStartTime = _timer.elapsed_time();
|
|
|
|
|
|
|
|
|
|
tr_warn("Tick1 %" PRIu64, _timer.elapsed_time().count());
|
|
|
|
|
|
|
|
|
|
// no need to protect access to data members (single threaded)
|
|
|
|
|
_currentTemperature = _sensorDevice.readTemperature();
|
|
|
|
|
|
|
|
|
|
tr_warn("Tick2 %" PRIu64, _timer.elapsed_time().count());
|
|
|
|
|
_displayDevice.displayGear(_currentGear);
|
|
|
|
|
_displayDevice.displaySpeed(_currentSpeed);
|
|
|
|
|
_displayDevice.displayDistance(_traveledDistance);
|
|
|
|
|
|
|
|
|
|
ThisThread::sleep_for(std::chrono::duration_cast<std::chrono::milliseconds>(
|
|
|
|
|
kTemperatureTaskComputationTime - (_timer.elapsed_time() - taskStartTime)));
|
|
|
|
|
|
|
|
|
|
// simulate task computation by waiting for the required task computation time
|
|
|
|
|
|
|
|
|
|
// std::chrono::microseconds elapsedTime =
|
|
|
|
|
// std::chrono::microseconds::zero(); while (elapsedTime <
|
|
|
|
|
// kTemperatureTaskComputationTime) {
|
|
|
|
|
// elapsedTime = _timer.elapsed_time() - taskStartTime;
|
|
|
|
|
// }
|
|
|
|
|
kDisplayTask1ComputationTime - (_timer.elapsed_time() - taskStartTime)));
|
|
|
|
|
|
|
|
|
|
_taskLogger.logPeriodAndExecutionTime(
|
|
|
|
|
_timer, advembsof::TaskLogger::kTemperatureTaskIndex, taskStartTime);
|
|
|
|
|
_timer, advembsof::TaskLogger::kDisplayTask1Index, taskStartTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BikeSystem::resetTask() {
|
|
|
|
@ -244,26 +236,21 @@ void BikeSystem::resetTask() {
|
|
|
|
|
_timer, advembsof::TaskLogger::kResetTaskIndex, taskStartTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BikeSystem::displayTask1() {
|
|
|
|
|
void BikeSystem::temperatureTask() {
|
|
|
|
|
auto taskStartTime = _timer.elapsed_time();
|
|
|
|
|
|
|
|
|
|
_displayDevice.displayGear(_currentGear);
|
|
|
|
|
_displayDevice.displaySpeed(_currentSpeed);
|
|
|
|
|
_displayDevice.displayDistance(_traveledDistance);
|
|
|
|
|
tr_warn("Tick1 %" PRIu64, _timer.elapsed_time().count());
|
|
|
|
|
|
|
|
|
|
// no need to protect access to data members (single threaded)
|
|
|
|
|
_currentTemperature = _sensorDevice.readTemperature();
|
|
|
|
|
|
|
|
|
|
tr_warn("Tick2 %" PRIu64, _timer.elapsed_time().count());
|
|
|
|
|
|
|
|
|
|
ThisThread::sleep_for(std::chrono::duration_cast<std::chrono::milliseconds>(
|
|
|
|
|
kDisplayTask1ComputationTime - (_timer.elapsed_time() - taskStartTime)));
|
|
|
|
|
|
|
|
|
|
// simulate task computation by waiting for the required task computation time
|
|
|
|
|
|
|
|
|
|
// std::chrono::microseconds elapsedTime =
|
|
|
|
|
// std::chrono::microseconds::zero(); while (elapsedTime <
|
|
|
|
|
// kDisplayTask1ComputationTime) {
|
|
|
|
|
// elapsedTime = _timer.elapsed_time() - taskStartTime;
|
|
|
|
|
// }
|
|
|
|
|
kTemperatureTaskComputationTime - (_timer.elapsed_time() - taskStartTime)));
|
|
|
|
|
|
|
|
|
|
_taskLogger.logPeriodAndExecutionTime(
|
|
|
|
|
_timer, advembsof::TaskLogger::kDisplayTask1Index, taskStartTime);
|
|
|
|
|
_timer, advembsof::TaskLogger::kTemperatureTaskIndex, taskStartTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BikeSystem::displayTask2() {
|
|
|
|
@ -274,13 +261,6 @@ void BikeSystem::displayTask2() {
|
|
|
|
|
ThisThread::sleep_for(std::chrono::duration_cast<std::chrono::milliseconds>(
|
|
|
|
|
kDisplayTask2ComputationTime - (_timer.elapsed_time() - taskStartTime)));
|
|
|
|
|
|
|
|
|
|
// simulate task computation by waiting for the required task computation time
|
|
|
|
|
|
|
|
|
|
// std::chrono::microseconds elapsedTime =
|
|
|
|
|
// std::chrono::microseconds::zero(); while (elapsedTime <
|
|
|
|
|
// kDisplayTask2ComputationTime) {
|
|
|
|
|
// elapsedTime = _timer.elapsed_time() - taskStartTime;
|
|
|
|
|
// }
|
|
|
|
|
_taskLogger.logPeriodAndExecutionTime(
|
|
|
|
|
_timer, advembsof::TaskLogger::kDisplayTask2Index, taskStartTime);
|
|
|
|
|
}
|
|
|
|
|