Updated comments and fixed tabbing
[profile/ivi/automotive-message-broker.git] / plugins / common / cansocketreader.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 CANSOCKETREADER_H
20 #define CANSOCKETREADER_H
21
22 /**
23  *  \addtogroup libcanbus
24  *  @{
25  */
26
27 #include <sys/socket.h>
28
29 #include "thread.h"
30 #include "canobserver.h"
31
32 class CANSocket;
33 /**
34 * \brief Asynchronous socket CAN reader.
35 *
36 * @class CANSocketReader
37 */
38 class CANSocketReader : public CUtil::Thread
39 {
40 public:
41     /**
42     * @param observer @link CANObserver Observer @endlink that will receives CAN bus frames.
43     * @param socket @link CANSocket CAN Socket wrapper @endlink
44     */
45     CANSocketReader(CANObserver& observer, CANSocket& socket);
46     virtual ~CANSocketReader();
47
48     /**
49     * Starts a new thread for listening to CAN bus.
50     * @fn start
51     * @return True if no error occurs.
52     */
53
54     virtual bool start();
55     /**
56     * Stops listening thread.
57     * @fn stop
58     */
59
60     virtual void stop();
61
62 private:
63     /**
64     * Listening thread's main function.
65     * @fn run
66     */
67     virtual void run();
68
69     /**
70      * Proceseses CAN message received from SocketCAN and notifies mObserver.
71      * @fn dispatchMessage
72      * @param message CAN message to be processed. Unchanged.
73      */
74     virtual void dispatchMessage(const CANFrameInfo &message);
75
76 private:
77     /**
78     * #CANObserver instance reference
79     * @property mObserver
80     * @protected
81     */
82     CANObserver& mObserver;
83     /**
84     * @link CANSocket CAN Socket wrapper @endlink instance reference
85     * @property mSocket
86     * @protected
87     */
88     CANSocket& mSocket;
89 };
90
91 #endif // CANSOCKETREADER_H
92
93 /** @} */