Revision d6728c5b

View differences:

Makefile
1
################################################################################
2
# AMiRo-LLD is a compilation of low-level hardware drivers for the Autonomous  #
3
# Mini Robot (AMiRo) platform.                                                 #
4
# Copyright (C) 2016..2018  Thomas Schöpping et al.                            #
5
#                                                                              #
6
# This program is free software: you can redistribute it and/or modify         #
7
# it under the terms of the GNU General Public License as published by         #
8
# the Free Software Foundation, either version 3 of the License, or            #
9
# (at your option) any later version.                                          #
10
#                                                                              #
11
# This program 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                #
14
# GNU General Public License for more details.                                 #
15
#                                                                              #
16
# You should have received a copy of the GNU General Public License            #
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.        #
18
#                                                                              #
19
# This research/work was supported by the Cluster of Excellence Cognitive      #
20
# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
21
# funded by the German Research Foundation (DFG).                              #
22
################################################################################
23

  
24

  
25

  
26
# absolute path to this directory
27
AMIROLLD_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
28

  
29
# include paths
30
AMIROLLD_INC = $(AMIROLLD_DIR) \
31
               $(AMIROLLD_DIR)include/
32

  
33
AMIROLLD_SRCDIR = $(AMIROLLD_DIR)source/
34

  
35
# C sources
36
AMIROLLD_CSRC = $(AMIROLLD_SRCDIR)alld_a3906.c \
37
                $(AMIROLLD_SRCDIR)alld_at24c01bn-sh-b.c \
38
                $(AMIROLLD_SRCDIR)alld_bq24103a.c \
39
                $(AMIROLLD_SRCDIR)alld_bq27500.c \
40
                $(AMIROLLD_SRCDIR)alld_hmc5883l.c \
41
                $(AMIROLLD_SRCDIR)alld_ina219.c \
42
                $(AMIROLLD_SRCDIR)alld_l3g4200d.c \
43
                $(AMIROLLD_SRCDIR)alld_led.c \
44
                $(AMIROLLD_SRCDIR)alld_lis331dlh.c \
45
                $(AMIROLLD_SRCDIR)alld_ltc4412.c \
46
                $(AMIROLLD_SRCDIR)alld_mpr121.c \
47
                $(AMIROLLD_SRCDIR)alld_pca9544a.c \
48
                $(AMIROLLD_SRCDIR)alld_pklcs1212e4001.c \
49
                $(AMIROLLD_SRCDIR)alld_tlc5947.c \
50
                $(AMIROLLD_SRCDIR)alld_tps2051bdbv.c \
51
                $(AMIROLLD_SRCDIR)alld_tps62113.c \
52
                $(AMIROLLD_SRCDIR)alld_vcnl4020.c
53

  
README.txt
1
AMiRo-LLD is a compilation of low-level hardware drivers for the base version of
2
the Autonomous Mini Robot (AMiRo) [1]. It provides directional interfaces for an
3
operating system to access the drivers and for the drivers to access the
4
communication infrastructure via the operating system.
5

  
6
Copyright (C) 2016..2018  Thomas Schöpping et al.
7
(a complete list of all authors is given below)
8

  
9
This program is free software: you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation, either version 3 of the License, or (at
12
your option) any later version.
13

  
14
This program is distributed in the hope that it will be useful, but
15
WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
General Public License for more details.
18

  
19
You should have received a copy of the GNU General Public License
20
along with this program.  If not, see <http://www.gnu.org/licenses/>.
21

  
22
This research/work was supported by the Cluster of Excellence
23
Cognitive Interaction Technology 'CITEC' (EXC 277) at Bielefeld
24
University, which is funded by the German Research Foundation (DFG).
25

  
26
Authors:
27
 - Thomas Schöpping          <tschoepp[at]cit-ec.uni-bielefeld.de>
28
 - Marc Rothmann
29

  
30
References:
31
 [1] S. Herbrechtsmeier, T. Korthals, T. Schopping and U. Rückert, "AMiRo: A
32
     modular & customizable open-source mini robot platform," 2016 20th
33
     International Conference on System Theory, Control and Computing (ICSTCC),
34
     Sinaia, 2016, pp. 687-692.
35

  
36

  
37

  
38
################################################################################
39
#                                                                              #
40
#        RRRRRRRR   EEEEEEEE     AAA     DDDDDDDD   MM     MM  EEEEEEEE        #
41
#        RR     RR  EE          AA AA    DD     DD  MMM   MMM  EE              #
42
#        RR     RR  EE         AA   AA   DD     DD  MMMM MMMM  EE              #
43
#        RRRRRRRR   EEEEEE    AA     AA  DD     DD  MM MMM MM  EEEEEE          #
44
#        RR   RR    EE        AAAAAAAAA  DD     DD  MM     MM  EE              #
45
#        RR    RR   EE        AA     AA  DD     DD  MM     MM  EE              #
46
#        RR     RR  EEEEEEEE  AA     AA  DDDDDDDD   MM     MM  EEEEEEEE        #
47
#                                                                              #
48
################################################################################
49

  
50
AMiRo-LLD is a compilation of low-level hardware drivers, originally developed
51
for the Autonomous Mini Robot (AMiRo) [1]. It provides a modular design, so that
52
each driver can be (de)activated individually as required. Interface functions
53
allow for bidirectional comunication with an operating system. On the one hand
54
drivers access according hardware interfaces via defined interface functions
55
(which need to be implemented by the operating system) and any applications (or
56
the operating system itself) can take advantage of the drivers by their
57
individual interfaces. The abstraction layer of the hardware interfaces is
58
called "periphAL", which is defined by this project.
59

  
60
Although this compilation was originally designed to be used in combination with
61
the AMiRo operating system (AMiRo-OS; cf. https://opensource.cit-ec.de/projects/amiro-os/),
62
it is not limited to this use case. The included drivers may be used for any
63
purpose and contributions of further drivers, even if the according hardware is
64
not present on the AMiRo platform, are highly appreciated.
65

  
66
The files are structured as follows:
67
* include/
68
  Each driver defines exactly one include header in this directory. By
69
  convention these files are named by the form
70
    alld_<product_name>.h
71
  <product_name> is a placeholder for the exact name of the according hardware,
72
  or the product familiy, if the driver is compatible with all parts.
73
* source/
74
  Any source files are placed in this directory. Usually there is a single file
75
  for each driver. If multiple files are necessary, these should be placed in an
76
  accordingly named subfolder. Names of folders and files should comply to the
77
  aforementioned convention.
78
* templates/
79
  AMiRo-LLD requires an implementation of the defined interface and an
80
  configuration header to be accessible in the include paths at compile time.
81
  Template files for both can be found in this folder. It is recommended to
82
  place according implementations of these templated not in the AMiRo-LLD
83
  project, but the superproject which includes AMiRo-LLD.
84
* /
85
  The project root directory contains this file, a license.html file as well as
86
  a Makefile that allows to easily integrate the project. Furthermore, two
87
  interface headers are provided: amiro-lld.h and periphALtypes.h. These are
88
  entry points for any utilizing superproject, so it is not required (and not
89
  recommanded) to include each driver individually.
90

  
91
================================================================================
92

  
amiro-lld.h
1
/*
2
AMiRo-LLD is a compilation of low-level hardware drivers for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2016..2018  Thomas Schöpping et al.
4

  
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

  
15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18

  
19
#ifndef _AMIROLLD_H_
20
#define _AMIROLLD_H_
21

  
22
/**
23
 * @brief   AMIRO-LLD identification macro.
24
 */
25
#define _AMIRO_LLD_
26

  
27
/**
28
 * @name   AMiRo-LLD version and relase information.
29
 * @{
30
 */
31

  
32
/**
33
 * @brief   Realease type of this version.
34
 *          IPossible values are "pre-alpha", "alpha", "beta", "release candidate", "release".
35
 */
36
#define AMIRO_LLD_RELEASE_TYPE     "release"
37

  
38
/**
39
 * @brief   The periphery abstraction layer interface major version.
40
 * @note    Changes of the major version imply incompatibilities.
41
 */
42
#define AMIRO_LLD_VERSION_MAJOR    1
43

  
44
/**
45
 * @brief   The periphery abstraction layer interface minor version.
46
 * @note    A higher minor version implies new functionalty, but all old interfaces are still available.
47
 */
48
#define AMIRO_LLD_VERSION_MINOR    0
49

  
50
/**
51
 * @brief   The periphery abstraction layer interface patch level.
52
 */
53
#define AMIRO_LLD_VERSION_PATCH    0
54

  
55
/**
56
 * @brief   The periphery abstraction layer interface required major version.
57
 */
58
#define PERIPHAL_REQUIRED_MAJOR    1
59

  
60
/**
61
 * @brief   The periphery abstraction layer interface required minor version.
62
 */
63
#define PERIPHAL_REQUIRED_MINOR    0
64

  
65
/** @} */
66

  
67
#include <alldconf.h>
68

  
69
#if !defined(_AMIRO_LLD_CFG_)
70
#error "invalid AMiRo-LLD configuration file"
71
#endif
72
#if (AMIRO_LLD_CFG_VERSION_MAJOR != AMIRO_LLD_VERSION_MAJOR) || (AMIRO_LLD_CFG_VERSION_MINOR < AMIRO_LLD_VERSION_MINOR)
73
#error "incompatible AMiRo-LLD configuration file"
74
#endif
75

  
76
#include <periphAL.h>
77
#if !defined(PERIPHAL_VERSION_MAJOR) || !defined(PERIPHAL_VERSION_MINOR)
78
#error "invalid periphAL implementation"
79
#endif
80
#if (PERIPHAL_VERSION_MAJOR != PERIPHAL_REQUIRED_MAJOR) || (PERIPHAL_VERSION_MINOR < PERIPHAL_REQUIRED_MINOR)
81
#error "incompatible periphAL implementation"
82
#endif
83

  
84
#endif /* _AMIROLLD_H_ */
docs/Doxyfile
1
# Doxyfile 1.7.6.1
2

  
3
# This file describes the settings to be used by the documentation system
4
# doxygen (www.doxygen.org) for a project.
5
#
6
# All text after a hash (#) is considered a comment and will be ignored.
7
# The format is:
8
#       TAG = value [value, ...]
9
# For lists items can also be appended using:
10
#       TAG += value [value, ...]
11
# Values that contain spaces should be placed between quotes (" ").
12

  
13
#---------------------------------------------------------------------------
14
# Project related configuration options
15
#---------------------------------------------------------------------------
16

  
17
# This tag specifies the encoding used for all characters in the config file
18
# that follow. The default is UTF-8 which is also the encoding used for all
19
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
20
# iconv built into libc) for the transcoding. See
21
# http://www.gnu.org/software/libiconv for the list of possible encodings.
22

  
23
DOXYFILE_ENCODING      = UTF-8
24

  
25
# The PROJECT_NAME tag is a single word (or sequence of words) that should
26
# identify the project. Note that if you do not use Doxywizard you need
27
# to put quotes around the project name if it contains spaces.
28

  
29
PROJECT_NAME           = "AMiRo-LLD"
30

  
31
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
32
# This could be handy for archiving the generated documentation or
33
# if some version control system is used.
34

  
35
PROJECT_NUMBER         = 1.0
36

  
37
# Using the PROJECT_BRIEF tag one can provide an optional one line description
38
# for a project that appears at the top of each page and should give viewer
39
# a quick idea about the purpose of the project. Keep the description short.
40

  
41
PROJECT_BRIEF          = AMiRo Low Level Drivers
42

  
43
# With the PROJECT_LOGO tag one can specify an logo or icon that is
44
# included in the documentation. The maximum height of the logo should not
45
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
46
# Doxygen will copy the logo to the output directory.
47

  
48
PROJECT_LOGO           =
49

  
50
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
51
# base path where the generated documentation will be put.
52
# If a relative path is entered, it will be relative to the location
53
# where doxygen was started. If left blank the current directory will be used.
54

  
55
OUTPUT_DIRECTORY       = doxygen
56

  
57
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
58
# 4096 sub-directories (in 2 levels) under the output directory of each output
59
# format and will distribute the generated files over these directories.
60
# Enabling this option can be useful when feeding doxygen a huge amount of
61
# source files, where putting all generated files in the same directory would
62
# otherwise cause performance problems for the file system.
63

  
64
CREATE_SUBDIRS         = NO
65

  
66
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
67
# documentation generated by doxygen is written. Doxygen will use this
68
# information to generate all constant output in the proper language.
69
# The default language is English, other supported languages are:
70
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
71
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
72
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
73
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
74
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
75
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
76

  
77
OUTPUT_LANGUAGE        = English
78

  
79
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
80
# include brief member descriptions after the members that are listed in
81
# the file and class documentation (similar to JavaDoc).
82
# Set to NO to disable this.
83

  
84
BRIEF_MEMBER_DESC      = YES
85

  
86
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
87
# the brief description of a member or function before the detailed description.
88
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
89
# brief descriptions will be completely suppressed.
90

  
91
REPEAT_BRIEF           = YES
92

  
93
# This tag implements a quasi-intelligent brief description abbreviator
94
# that is used to form the text in various listings. Each string
95
# in this list, if found as the leading text of the brief description, will be
96
# stripped from the text and the result after processing the whole list, is
97
# used as the annotated text. Otherwise, the brief description is used as-is.
98
# If left blank, the following values are used ("$name" is automatically
99
# replaced with the name of the entity): "The $name class" "The $name widget"
100
# "The $name file" "is" "provides" "specifies" "contains"
101
# "represents" "a" "an" "the"
102

  
103
ABBREVIATE_BRIEF       =
104

  
105
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
106
# Doxygen will generate a detailed section even if there is only a brief
107
# description.
108

  
109
ALWAYS_DETAILED_SEC    = NO
110

  
111
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
112
# inherited members of a class in the documentation of that class as if those
113
# members were ordinary class members. Constructors, destructors and assignment
114
# operators of the base classes will not be shown.
115

  
116
INLINE_INHERITED_MEMB  = NO
117

  
118
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
119
# path before files name in the file list and in the header files. If set
120
# to NO the shortest path that makes the file name unique will be used.
121

  
122
FULL_PATH_NAMES        = YES
123

  
124
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
125
# can be used to strip a user-defined part of the path. Stripping is
126
# only done if one of the specified strings matches the left-hand part of
127
# the path. The tag can be used to show relative paths in the file list.
128
# If left blank the directory from which doxygen is run is used as the
129
# path to strip.
130

  
131
STRIP_FROM_PATH        =
132

  
133
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
134
# the path mentioned in the documentation of a class, which tells
135
# the reader which header file to include in order to use a class.
136
# If left blank only the name of the header file containing the class
137
# definition is used. Otherwise one should specify the include paths that
138
# are normally passed to the compiler using the -I flag.
139

  
140
STRIP_FROM_INC_PATH    =
141

  
142
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
143
# (but less readable) file names. This can be useful if your file system
144
# doesn't support long names like on DOS, Mac, or CD-ROM.
145

  
146
SHORT_NAMES            = NO
147

  
148
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
149
# will interpret the first line (until the first dot) of a JavaDoc-style
150
# comment as the brief description. If set to NO, the JavaDoc
151
# comments will behave just like regular Qt-style comments
152
# (thus requiring an explicit @brief command for a brief description.)
153

  
154
JAVADOC_AUTOBRIEF      = NO
155

  
156
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
157
# interpret the first line (until the first dot) of a Qt-style
158
# comment as the brief description. If set to NO, the comments
159
# will behave just like regular Qt-style comments (thus requiring
160
# an explicit \brief command for a brief description.)
161

  
162
QT_AUTOBRIEF           = NO
163

  
164
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
165
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
166
# comments) as a brief description. This used to be the default behaviour.
167
# The new default is to treat a multi-line C++ comment block as a detailed
168
# description. Set this tag to YES if you prefer the old behaviour instead.
169

  
170
MULTILINE_CPP_IS_BRIEF = NO
171

  
172
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
173
# member inherits the documentation from any documented member that it
174
# re-implements.
175

  
176
INHERIT_DOCS           = YES
177

  
178
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
179
# a new page for each member. If set to NO, the documentation of a member will
180
# be part of the file/class/namespace that contains it.
181

  
182
SEPARATE_MEMBER_PAGES  = NO
183

  
184
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
185
# Doxygen uses this value to replace tabs by spaces in code fragments.
186

  
187
TAB_SIZE               = 8
188

  
189
# This tag can be used to specify a number of aliases that acts
190
# as commands in the documentation. An alias has the form "name=value".
191
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
192
# put the command \sideeffect (or @sideeffect) in the documentation, which
193
# will result in a user-defined paragraph with heading "Side Effects:".
194
# You can put \n's in the value part of an alias to insert newlines.
195

  
196
ALIASES                =
197

  
198
# This tag can be used to specify a number of word-keyword mappings (TCL only).
199
# A mapping has the form "name=value". For example adding
200
# "class=itcl::class" will allow you to use the command class in the
201
# itcl::class meaning.
202

  
203
TCL_SUBST              =
204

  
205
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
206
# sources only. Doxygen will then generate output that is more tailored for C.
207
# For instance, some of the names that are used will be different. The list
208
# of all members will be omitted, etc.
209