VLCB
Loading...
Searching...
No Matches
EventProducerService.h
Go to the documentation of this file.
1// Copyright (C) Martin Da Costa 2023 (martindc.merg@gmail.com)
2// This file is part of VLCB-Arduino project on https://github.com/SvenRosvall/VLCB-Arduino
3// Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
4// The full licence can be found at: http://creativecommons.org/licenses/by-nc-sa/4.0/
5
6#pragma once
7
8#include "Service.h"
9#include <vlcbdefs.hpp>
10
11namespace VLCB {
12
13struct VlcbMessage;
14
25public:
28 void setRequestEventHandler(void (*fptr)(byte index, const VlcbMessage *msg));
30 virtual void processAction(const Action & action) override;
31
32 virtual VlcbServiceTypes getServiceID() const override
33 {
35 }
36 virtual byte getServiceVersionID() const override
37 {
38 return 1;
39 }
40
41
48 void sendShortEvent(bool state, int eventNumber);
49
57 void sendLongEvent(bool state, int eventNumber);
58
69 void sendLongEventWithSpoofedNodeNumber(bool state, int nodeNumber, int eventNumber);
70
77 void sendEventAtIndex(bool state, byte evIndex);
78
86 void sendEventAtIndex(bool state, byte evIndex, byte data1);
87
96 void sendEventAtIndex(bool state, byte evIndex, byte data1, byte data2);
97
107 void sendEventAtIndex(bool state, byte evIndex, byte data1, byte data2, byte data3);
108
112 void sendEventResponse(bool state, byte index);
113
117 void sendEventResponse(bool state, byte index, byte data1);
118
122 void sendEventResponse(bool state, byte index, byte data1, byte data2);
123
128 void sendEventResponse(bool state, byte index, byte data1, byte data2, byte data3);
129
130
131private:
132 void (*requesteventhandler)(byte index, const VlcbMessage *msg);
133 void handleProdSvcMessage(const VlcbMessage *msg);
134
135 void sendMessage(VlcbMessage &msg, byte opCode, const byte *nn_en);
137protected:
138 unsigned int diagEventsProduced = 0;
140};
141
142} // VLCB
Service for producing events.
Definition EventProducerService.h:24
void setRequestEventHandler(void(*fptr)(byte index, const VlcbMessage *msg))
register the user handler for learned events
Definition EventProducerService.cpp:21
void sendEventResponse(bool state, byte index)
Definition EventProducerService.cpp:202
virtual void processAction(const Action &action) override
Called when there is an action available.
Definition EventProducerService.cpp:26
virtual byte getServiceVersionID() const override
Return the version of the service specification implemented by this service.
Definition EventProducerService.h:36
unsigned int diagEventsProduced
Definition EventProducerService.h:138
void sendShortEvent(bool state, int eventNumber)
Send a short event.
Definition EventProducerService.cpp:34
virtual VlcbServiceTypes getServiceID() const override
Return a unique ID for this service.
Definition EventProducerService.h:32
void sendLongEventWithSpoofedNodeNumber(bool state, int nodeNumber, int eventNumber)
Send a long event with a spoofed node number.
Definition EventProducerService.cpp:46
void sendEventAtIndex(bool state, byte evIndex)
Send an event from the taught events table.
Definition EventProducerService.cpp:68
void sendLongEvent(bool state, int eventNumber)
Send a long event.
Definition EventProducerService.cpp:40
Interface base class for all VLCB services.
Definition Service.h:25
Definition AbstractEventTeachingService.cpp:13
An action to be performed.
Definition Controller.h:51
CAN/Controller message type.
Definition Controller.h:30
VlcbServiceTypes
Definition vlcbdefs.hpp:487
@ SERVICE_ID_PRODUCER
Definition vlcbdefs.hpp:496