7
7
#include " i2c/core/messages.hpp"
8
8
#include " i2c/core/poller.hpp"
9
9
#include " i2c/core/writer.hpp"
10
+ #include " motor-control/core/tasks/usage_storage_task.hpp"
10
11
#include " sensors/core/mmr920.hpp"
11
12
#include " sensors/core/tasks/pressure_driver.hpp"
12
13
#include " sensors/core/utils.hpp"
@@ -15,17 +16,19 @@ namespace sensors {
15
16
namespace tasks {
16
17
17
18
template <class I2CQueueWriter , class I2CQueuePoller ,
18
- can::message_writer_task::TaskClient CanClient, class OwnQueue >
19
+ can::message_writer_task::TaskClient CanClient, class OwnQueue ,
20
+ usage_storage_task::TaskClient UsageClient>
19
21
class PressureMessageHandler {
20
22
public:
21
23
explicit PressureMessageHandler (
22
24
I2CQueueWriter &i2c_writer, I2CQueuePoller &i2c_poller,
23
25
CanClient &can_client, OwnQueue &own_queue,
24
26
sensors::hardware::SensorHardwareBase &hardware,
25
27
const can::ids::SensorId &id,
26
- std::array<float , SENSOR_BUFFER_SIZE> *sensor_buffer)
27
- : driver{i2c_writer, i2c_poller, can_client, own_queue,
28
- hardware, id, sensor_buffer},
28
+ std::array<float , SENSOR_BUFFER_SIZE> *sensor_buffer,
29
+ UsageClient &usage_client, uint16_t pres_err_key)
30
+ : driver{i2c_writer, i2c_poller, can_client, own_queue, hardware,
31
+ id, sensor_buffer, usage_client, pres_err_key},
29
32
sensor_id{id} {}
30
33
PressureMessageHandler (const PressureMessageHandler &) = delete ;
31
34
PressureMessageHandler (const PressureMessageHandler &&) = delete ;
@@ -192,7 +195,8 @@ class PressureMessageHandler {
192
195
static_cast <void >(m);
193
196
}
194
197
195
- MMR920<I2CQueueWriter, I2CQueuePoller, CanClient, OwnQueue> driver;
198
+ MMR920<I2CQueueWriter, I2CQueuePoller, CanClient, OwnQueue, UsageClient>
199
+ driver;
196
200
can::ids::SensorId sensor_id;
197
201
};
198
202
@@ -205,8 +209,8 @@ class PressureSensorTask {
205
209
public:
206
210
using Messages = utils::TaskMessage;
207
211
using QueueType = QueueImpl<utils::TaskMessage>;
208
- PressureSensorTask (QueueType &queue, can::ids::SensorId id)
209
- : queue{queue}, sensor_id{id} {}
212
+ PressureSensorTask (QueueType &queue, can::ids::SensorId id, uint16_t key )
213
+ : queue{queue}, sensor_id{id}, key{key} {}
210
214
PressureSensorTask (const PressureSensorTask &c) = delete ;
211
215
PressureSensorTask (const PressureSensorTask &&c) = delete ;
212
216
auto operator =(const PressureSensorTask &c) = delete ;
@@ -216,15 +220,17 @@ class PressureSensorTask {
216
220
/* *
217
221
* Task entry point.
218
222
*/
219
- template <can::message_writer_task::TaskClient CanClient>
223
+ template <can::message_writer_task::TaskClient CanClient,
224
+ usage_storage_task::TaskClient UsageClient>
220
225
[[noreturn]] void operator ()(
221
226
i2c::writer::Writer<QueueImpl> *writer,
222
227
i2c::poller::Poller<QueueImpl> *poller, CanClient *can_client,
223
228
sensors::hardware::SensorHardwareBase *hardware,
224
- std::array<float , SENSOR_BUFFER_SIZE> *sensor_buffer) {
229
+ std::array<float , SENSOR_BUFFER_SIZE> *sensor_buffer,
230
+ UsageClient *usage_client) {
225
231
auto handler = PressureMessageHandler{
226
- *writer, *poller, *can_client, get_queue (),
227
- *hardware, sensor_id, sensor_buffer};
232
+ *writer, *poller, *can_client, get_queue (), *hardware ,
233
+ sensor_id, sensor_buffer, *usage_client, key };
228
234
handler.initialize ();
229
235
utils::TaskMessage message{};
230
236
for (;;) {
@@ -239,6 +245,7 @@ class PressureSensorTask {
239
245
private:
240
246
QueueType &queue;
241
247
can::ids::SensorId sensor_id;
248
+ uint16_t key;
242
249
};
243
250
}; // namespace tasks
244
251
}; // namespace sensors
0 commit comments