Zephyr C++ Toolkit
Loading...
Searching...
No Matches
WatchdogMock.hpp
Go to the documentation of this file.
1/**************************************************************************************
2 * @file WatchdogMock.hpp
3 *
4 * Mock implementation of the watchdog interface for testing purposes.
5 *
6 **************************************************************************************
7 *
8 * Copyright 2025 Electronic Timers Ltd.
9 *
10 **************************************************************************************/
11
12#pragma once
13
14// System includes
15#include <vector>
16#include <chrono>
17
18// Local includes
19#include "IWatchdog.hpp"
20
21namespace zct {
22
28class WatchdogMock : public IWatchdog {
29public:
34 uint32_t timeoutMs;
36 void* userData;
38 bool isActive;
39 std::chrono::steady_clock::time_point lastFed;
40 };
41
47 WatchdogMock(const char* name);
48
53
64 int installTimeout(uint32_t timeoutMs,
65 CallbackFn callback = nullptr,
66 void* userData = nullptr,
67 ResetFlag flags = ResetFlag::ResetSoc) override;
68
75 int setup(Option options = Option::None) override;
76
83 int feed(int channelId) override;
84
90 int disable() override;
91
97 const struct device* getRawDevice() const override;
98
99 // ========================================
100 // Mock-specific methods for testing
101 // ========================================
102
108 void mockTriggerTimeout(int channelId);
109
115 bool mockIsSetup() const { return m_isSetup; }
116
122 bool mockIsDisabled() const { return m_isDisabled; }
123
129 size_t mockGetChannelCount() const { return m_channels.size(); }
130
137 const TimeoutChannel* mockGetChannelInfo(int channelId) const;
138
145 bool mockIsChannelExpired(int channelId) const;
146
153 int64_t mockGetTimeRemainingMs(int channelId) const;
154
161 uint32_t mockGetFeedCount(int channelId) const;
162
166 void mockReset();
167
168private:
169 std::vector<TimeoutChannel> m_channels;
170 std::vector<uint32_t> m_feedCounts;
175};
176
177} // namespace zct
Interface for a hardware watchdog peripheral (not the software watchdog, this does not need to be moc...
Definition IWatchdog.hpp:26
Option
Watchdog configuration options.
Definition IWatchdog.hpp:31
std::function< void(int channelId, void *userData)> CallbackFn
Watchdog callback function type.
Definition IWatchdog.hpp:52
ResetFlag
Watchdog reset behavior flags.
Definition IWatchdog.hpp:40
@ ResetSoc
Reset entire SoC on timeout.
Mock implementation of the watchdog interface for testing.
Definition WatchdogMock.hpp:28
bool m_isSetup
Whether setup() has been called.
Definition WatchdogMock.hpp:171
int disable() override
Disable the watchdog instance.
Definition WatchdogMock.cpp:127
Option m_globalOptions
Global watchdog options.
Definition WatchdogMock.hpp:173
int installTimeout(uint32_t timeoutMs, CallbackFn callback=nullptr, void *userData=nullptr, ResetFlag flags=ResetFlag::ResetSoc) override
Install a watchdog timeout configuration.
Definition WatchdogMock.cpp:38
bool mockIsDisabled() const
Check if the watchdog is disabled.
Definition WatchdogMock.hpp:122
const struct device * getRawDevice() const override
Get the raw watchdog device pointer.
Definition WatchdogMock.cpp:143
int feed(int channelId) override
Feed (service) a watchdog channel to prevent timeout.
Definition WatchdogMock.cpp:95
bool mockIsSetup() const
Check if the watchdog has been set up.
Definition WatchdogMock.hpp:115
size_t mockGetChannelCount() const
Get the number of installed timeout channels.
Definition WatchdogMock.hpp:129
std::vector< uint32_t > m_feedCounts
Feed count per channel.
Definition WatchdogMock.hpp:170
int m_nextChannelId
Next channel ID to assign.
Definition WatchdogMock.hpp:174
int64_t mockGetTimeRemainingMs(int channelId) const
Get the time remaining until timeout for a channel.
Definition WatchdogMock.cpp:187
~WatchdogMock()
Destructor.
Definition WatchdogMock.cpp:33
void mockReset()
Reset all mock state (useful for test setup).
Definition WatchdogMock.cpp:210
int setup(Option options=Option::None) override
Setup the watchdog with global configuration.
Definition WatchdogMock.cpp:73
bool mockIsChannelExpired(int channelId) const
Check if a channel is expired (past its timeout).
Definition WatchdogMock.cpp:174
uint32_t mockGetFeedCount(int channelId) const
Get the number of times a channel has been fed.
Definition WatchdogMock.cpp:201
bool m_isDisabled
Whether disable() has been called.
Definition WatchdogMock.hpp:172
void mockTriggerTimeout(int channelId)
Manually trigger a timeout for a specific channel.
Definition WatchdogMock.cpp:149
std::vector< TimeoutChannel > m_channels
Installed timeout channels.
Definition WatchdogMock.hpp:169
const TimeoutChannel * mockGetChannelInfo(int channelId) const
Get information about a specific channel.
Definition WatchdogMock.cpp:165
Definition Mutex.hpp:6
Structure to hold information about an installed timeout channel.
Definition WatchdogMock.hpp:33
std::chrono::steady_clock::time_point lastFed
Last time channel was fed.
Definition WatchdogMock.hpp:39
bool isActive
Whether the channel is active.
Definition WatchdogMock.hpp:38
uint32_t timeoutMs
Timeout value in milliseconds.
Definition WatchdogMock.hpp:34
ResetFlag flags
Reset behavior flags.
Definition WatchdogMock.hpp:37
void * userData
User data for callback.
Definition WatchdogMock.hpp:36
CallbackFn callback
Callback function.
Definition WatchdogMock.hpp:35