bugfix about AirDistribution
[profile/ivi/automotive-message-broker.git] / plugins / common / canobserver.h
1 /*
2 Copyright (C) 2012 Intel Corporation
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18
19 #ifndef CANOBSERVER_H
20 #define CANOBSERVER_H
21
22 /**
23  *  \addtogroup libcanbus
24  *  @{
25  */
26
27 #include <stdlib.h>
28 #include <linux/can.h>
29
30 #include "canframeinfo.h"
31
32 /**
33 * \brief Interface. Receives notifications about the CAN bus traffic and errors.
34 *
35 * CANBus user has to derive from this interface.
36 * @class CANObserver
37 */
38
39 class CANObserver
40 {
41 public:
42         /**
43         * General CAN bus error. Currently only GENERAL_ERROR is specified.
44         * @enum CANError
45         * @public
46         */
47         enum CANError {
48                 GENERAL_ERROR = 0
49         };
50
51         virtual ~CANObserver(){} /*LCOV_EXCL_LINE*/
52         /**
53         * Called when error occurred on the bus.
54         * @fn errorOccured
55         * @param error Bus error code
56         */
57         virtual void errorOccured(CANObserver::CANError error) = 0;             /* socket error */
58         /**
59         * Called when standard frame was is received from the bus.
60         * @fn standardFrameReceived
61         * @param frame Received frame
62         */
63         virtual void standardFrameReceived(const can_frame& frame) = 0;       /* SFF was present */
64         /**
65         * Called when extended frame was is received from the bus.
66         * @fn extendedFrameReceived
67         * @param frame Received frame
68         */
69         virtual void extendedFrameReceived(const can_frame& frame) = 0;       /* EFF was present */
70         /**
71         * Called when error frame was received from the bus.
72         * @fn errorFrameReceived
73         * @param frame Error frame
74         */
75         virtual void errorFrameReceived(const can_frame& frame) = 0;          /* error frame */
76         /**
77         * Called when remote transmission frame was received from the bus.
78         * @fn remoteTransmissionRequest
79         * @param frame RTR frame
80         */
81         virtual void remoteTransmissionRequest(const can_frame& frame) = 0;   /* remote transmission request (SFF/EFF is still present)*/
82         /**
83         * Called when timeout was detected for a cyclic message.
84         * @fn timeoutDetected
85         * @param frame
86         */
87         virtual void timeoutDetected(const can_frame& frame) = 0;             /* timeout */
88 };
89
90 #endif // CANOBSERVER_H
91
92 /** @} */
93