source: flair-dev/trunk/include/FlairCore/I2cPort.h@ 28

Last change on this file since 28 was 13, checked in by Bayard Gildas, 9 years ago

formatting script + include reformatted

File size: 2.0 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5/*!
6 * \file I2cPort.h
7 * \brief Base class for i2c port
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2014/04/24
10 * \version 4.0
11 */
12
13#ifndef I2CPORT_H
14#define I2CPORT_H
15
16#include <Mutex.h>
17#include <stdint.h>
18
19namespace flair {
20namespace core {
21/*! \class I2cPort
22*
23* \brief Base class for i2c port
24*
25* This class has a Mutex which must be used to protect access to the port in
26*case
27* that more than one Thread is using it. Lock the Mutex before any communication
28*(including SetSlave)
29* and release it after communication.
30*/
31class I2cPort : public Mutex {
32public:
33 /*!
34 * \brief Constructor
35 *
36 * Construct an i2c port.
37 *
38 * \param parent parent
39 * \param name name
40 */
41 I2cPort(const Object *parent, std::string name) : Mutex(parent, name) {}
42
43 /*!
44 * \brief Destructor
45 *
46 */
47 ~I2cPort(){};
48
49 /*!
50 * \brief Set slave's address
51 *
52 * This function need to be called before any communication.
53 *
54 * \param address slave's address
55 */
56 virtual int SetSlave(uint16_t address) = 0;
57
58 /*!
59 * \brief Write datas
60 *
61 * \param buf pointer to datas
62 * \param nbyte length of datas
63 *
64 * \return amount of written datas
65 */
66 virtual ssize_t Write(const void *buf, size_t nbyte) = 0;
67
68 /*!
69 * \brief Read datas
70 *
71 * \param buf pointer to datas
72 * \param nbyte length of datas
73 *
74 * \return amount of read datas
75 */
76 virtual ssize_t Read(void *buf, size_t nbyte) = 0;
77
78 /*!
79 * \brief Set RX timeout
80 *
81 * Timeout for waiting an ACK from the slave.
82 *
83 * \param timeout_ns timeout in nano second
84 */
85 virtual void SetRxTimeout(Time timeout_ns) = 0;
86
87 /*!
88 * \brief Set TX timeout
89 *
90 * Timeout for waiting an ACK from the slave.
91 *
92 * \param timeout_ns timeout in nano second
93 */
94 virtual void SetTxTimeout(Time timeout_ns) = 0;
95};
96} // end namespace core
97} // end namespace framework
98
99#endif // I2CPORT_H
Note: See TracBrowser for help on using the repository browser.