[libamb] - added value quality, removed deprecated GetFoo call, made updateFrequency...
[profile/ivi/automotive-message-broker.git] / plugins / common / canbusimpl.h
1 /*
2 Copyright (C) 2012 Intel Corporation
3 Copyright (C) 2015 Cogent Embedded Inc.
4 Copyright (C) 2015 Renesas Electronics Corporation
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19 */
20
21 #ifndef CANBUSIMPL_H
22 #define CANBUSIMPL_H
23
24 /**
25  *  \addtogroup libcanbus
26  *  @{
27  */
28
29 #include "canbus.h"
30
31 class CANObserver;
32 class CANAdapter;
33
34 /**
35 * \brief CANBus class implementation
36 *
37 * @class CANBus::Impl
38 */
39
40 class CANBusImpl : public CANBus
41 {
42 public:
43     /**
44     * @param observer \link #CANObserver Observer \endlink that will receive CAN bus frames
45     */
46     CANBusImpl(CANObserver& observer);
47     virtual ~CANBusImpl();
48
49     /**
50     * Starts the CAN bus instance on the specified interface
51     * @fn start
52     * @param name Name of the CAN bus network interface
53     * @return True if no error occurs.
54     */
55     bool start(const char*name);
56     /**
57     * Stops the CAN bus instance
58     * @fn stop
59     */
60     void stop();
61     /**
62     * Sends standard(11bit) CAN frame over the bus
63     * @fn sendStandardFrame
64     * @param frame CAN frame to be sent
65     * @return True if frame was sent
66     */
67     bool sendStandardFrame(const can_frame& frame);
68     /**
69     * Sends extended(29bit) CAN frame over the bus
70     * @fn sendExtendedFrame
71     * @param frame CAN frame to be sent
72     * @return True if frame was sent
73     */
74     bool sendExtendedFrame(const can_frame& frame);
75     /**
76      * Registers CAN ID of a cyclic message for receiving
77      * @fn registerCyclicMessageForReceive
78      * @param canId CAN ID of the message.
79      * @param minCycleTime Minimal interval between messages in seconds. Set to 0 if not used.
80      * @param maxCycleTime Maximum interval between messages for timeout detection in seconds. Set to 0 if no timeout detection is necessary.
81      * @return True if registration succeeds.
82      */
83     virtual bool registerCyclicMessageForReceive(int canId, double minCycleTime, double maxCycleTime);
84     /**
85      * Un-registers CAN ID of a message used of receiving. Valid for cyclic and sporadic messages.
86      * @fn unregisterMessageForReceive
87      * @param canId CAN ID of the message.
88      * @return True if de-registration succeeds.
89      */
90     virtual bool unregisterMessageForReceive(int canId);
91
92 protected:
93     /**
94     * CAN bus initialization
95     * @fn init
96     */
97     virtual void init();
98
99 private:
100     /**
101     * #CANObserver instance reference
102     * @property mObserver
103     * @protected
104     */
105     CANObserver& mObserver;
106     /**
107     * Pointer to #CANAdapter -  CAN hardware object representation
108     * @property mAdapter
109     * @protected
110     */
111     CANAdapter* mAdapter;
112 };
113
114 #endif // CANBUSIMPL_H
115
116 /** @} */