@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 2,21 2,24 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "Timer.hpp"
-#include "Service.hpp" // for Service, Service::Timers
-#include "Service/TimerMessage.hpp" // for TimerMessage
-#include "log/log.hpp" // for LOG_ERROR
-#include "projdefs.h"
-#include <Service/Bus.hpp> // for Bus
-#include <limits> // for numeric_limits
-#include <memory> // for make_shared
-#include <cstdint> // for uint32_t
+#include "Service.hpp"
+#include "TimerMessage.hpp"
+#include "Service/Bus.hpp"
+#include <log/log.hpp>
+#include <projdefs.h>
+#include <limits>
+#include <memory>
+#include <cstdint>
#if DEBUG_TIMER == 1
-#define log_timers(...) LOG_DEBUG(__VA_ARGS__)
+#define log(...) LOG_DEBUG(__VA_ARGS__)
#else
-#define log_timers(...)
+#define log_debug(...)
#endif
+#define log_error(...) LOG_ERROR(__VA_ARGS__)
+#define log_warn(...) LOG_WARN(__VA_ARGS__)
+
namespace sys
{
@@ 36,10 39,10 @@ namespace sys
service->getTimers().attach(this);
}
else {
- LOG_ERROR("Bad timer creation!");
+ log_error("Bad timer creation!");
}
++timer_id;
- log_timers("Timer %s created %s", name.c_str(), type == Type::Periodic ? "periodic" : "singleshot");
+ log_debug("Timer %s created %s", name.c_str(), type == Type::Periodic ? "periodic" : "singleshot");
}
Timer::Timer(Service *parent, ms interval, Type type) : Timer("Timer", parent, interval, type)
@@ 55,18 58,18 @@ namespace sys
{
auto msg = std::make_shared<TimerMessage>(this);
if (parent == nullptr) {
- LOG_ERROR("Timer %s error: no parent service", name.c_str());
+ log_error("Timer %s error: no parent service", name.c_str());
return;
}
if (!Bus::SendUnicast(msg, parent->GetName(), parent)) {
- LOG_ERROR("Timer %s error: bus error", name.c_str());
+ log_error("Timer %s error: bus error", name.c_str());
return;
}
}
void Timer::start()
{
- log_timers("Timer %s start!", name.c_str());
+ log_debug("Timer %s start!", name.c_str());
isActive = true;
Start(0);
}
@@ 78,14 81,14 @@ namespace sys
interval = from_time;
SetPeriod(pdMS_TO_TICKS(interval));
}
- log_timers("Timer %s reload!", name.c_str());
+ log_debug("Timer %s reload!", name.c_str());
isActive = true;
Start(0); // start with no waittime
}
void Timer::stop()
{
- log_timers("Timer %s stop!", name.c_str());
+ log_debug("Timer %s stop!", name.c_str());
// make sure callback is not called even if it is already in the queue
isActive = false;
Stop(0);
@@ 93,17 96,20 @@ namespace sys
void Timer::setInterval(ms new_interval)
{
- log_timers("Timer %s set interval to: %d ms!", name.c_str(), static_cast<unsigned int>(interval));
+ log_debug("Timer %s set interval to: %d ms!", name.c_str(), static_cast<unsigned int>(interval));
interval = new_interval;
SetPeriod(pdMS_TO_TICKS(new_interval), 0);
}
void Timer::onTimeout()
{
- log_timers("Timer %s tick", name.c_str());
+ log_debug("Timer %s tick", name.c_str());
if (callback != nullptr && isActive) {
- log_timers("Timer %s callback run!", name.c_str());
+ log_debug("Timer %s callback run!", name.c_str());
callback(*this);
+ return;
}
+ log_warn(
+ "callback from %s non valid - %d, or not active - %d", name.c_str(), callback == nullptr, isActive != true);
}
} // namespace sys
@@ 19,7 19,7 @@ namespace sys
using ms = unsigned int;
/// Base timer for all coarse timers in system
- class Timer : public cpp_freertos::Timer
+ class Timer : private cpp_freertos::Timer
{
public:
static const ms timeout_infinite;