-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
315 lines (274 loc) · 12.3 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
# SPDX-License-Identifier: CC-BY-SA-4.0
# SPDX-FileCopyrightText: 2017-2021 Bartosz Golaszewski <[email protected]>
libgpiod v1.6
=============
New features:
- add a standardized '__version__' module attribute in Python bindings
- print the bias flags info (if set) in gpioinfo
Improvements:
- remove unnecessary indirection in free_dirs() in iterator code
- put all ABI versions next to one another in configure.ac
- improve std namespace resolution in C++ bindings
- add more checks for non-standard functions in configure.ac
- various code size improvements
- enforce gnu89 C standard in makefiles
- many documentation improvements
- unduplicate signalfd() handling in tools
- fix a forward declaration for line_event in C++ bindings
Bug fixes:
- relax is_gpiochip_cdev() for symbolic links
- make gpiod_line_get_value_bulk() work for bulks of lines requested for
events, not only those requested for values
- fix regex patterns for timestamps in gpiomon test cases
- remove leftover asserts from tests
- fix unit conversion in event timestamp calculation in C++ bindings
- fix reading subset of available events in core library
libgpiod v1.5
=============
New features:
- switched to using the GLib testing framework for core library tests and BATS
(Bash Automated Testing System) for command-line tools
- used Catch2 C++ testing framework to implement a proper test-suite for C++
bindings while also reusing the API provided by libgpiomockup
- used Python's unittest package to implement a proper test suite for Python
bindings and reused libgpiockup again
- provided line::update() and Line.update() routines for C++ and Python
bindings respectively allowing to update the line info from bindings as well
- added support for bias flags which are a new functionality first available in
linux v5.5; subsequently the library now requires v5.5 kernel headers to
build; the new flags are supported in the core library, C++ and Python
bindings as well as the command-line tools
- added support for the new SET_CONFIG ioctl(): this too is a new functionality
added in linux v5.5; both features have been implemented in the library by
Kent Gibson
- added routines for reading multiple line events at once to the core library,
C++ and Python bindings
Improvements:
- constified function arguments where applicable in libgpiomockup
- fixed the name of the test exeucutable displayed at build time
- improved the function pointer casting in Python bindings to avoid warnings
emitted by GCC8
- switched to using the KERNEL_VERSION() macro in tests instead of handcoded
version parsing
- improved the setup ordering in tests (setup libgpiomockup before checking
the kernel version
- add 'extern "c"' to the libgpiomockup header to make it usable from C++
- add chip index validation to libgpiomockup functions
- check if the debugfs directory used by libgpiomockup is writable before
using it to set the pull of dummy lines
- add several new test cases
- improved Python example programs (made gpiomon's output similar to the
original tool, make gpioset wait for an ENTER pres by default)
- fixed the major:minor number comparison between the device and sysfs
- deprecated the gpiod_line_needs_update() function and removed the logic
behind it from the library
- shrank the Python bindings a bit by directly returning the value from
PyErr_SetFromErrno()
- dropped noexcept from methods which can throw in C++ bindings
- switched to initializing the bitset with integers instead of strings in C++
bindings
- allowed gpiod_line_set_value_bulk() to accept null pointers
- when building Python bindings: check for the existence of python-config
- improved the readability of help text messages for command-line tools
- reworked the .gitignore file: added libtool scripts generated during
cross-compilation and split the main .gitignore into several fine-grained
files
- fixed several misspellings
- other minor tweaks and improvements
Bug fixes:
- fixed memory leaks in libgpiomockup
- fixed memory leaks in the testing framework
- fixed a segfault in error path in tests
- make gpioinfo show lines claimed by the kernel as used even if they have no
named consumer
- fixed the test cases validating the '--active-low' switch in gpiomon and
the GPIOHANDLE_REQUEST_ACTIVE_LOW flag in the core library after a fix
for incorrect behavior was merged in linux v5.2.7
- stopped failing at init-time of libgpiomockup if gpio-mockup is already
loaded
- added a missing throw keyword in error path in C++ bindings
- fixed a segfault in Python bindings when calling Line.request() without
the consumer argument
libgpiod v1.4
=============
New features:
- updated the testing framework to work with linux v5.1 in which the debugfs
interface of the GPIO testing module changed in a backward incompatible way
- factored out the code controlling the GPIO testing module into a separate
shared library that may be reused by future testing executables for different
language bindings
- removed the --enable-install-tests build option and the make check target as
they were redundant, subsequently tests are now installed as a normal program
whenever they're enabled with --enable-tests
Improvements:
- removed unnecessary std::move calls from C++ bindings
- added the explicit keyword to bool() operators in C++ bindings
Bug fixes:
- fix out of source build of man pages
libgpiod v1.3
=============
New features:
- the gpio-tools now have automatically generated (using help2man) man pages
that are bundled with the release tarball
- support a singular 'default_val' argument in Line.request() in python
bindings
- the test executable can now be installed to the bindir along with the
gpio-tools and the testing framework will look for the binaries in standard
locations if it's not run from the top source directory
- gpiomon now supports line buffered output
Improvements:
- tweaks to the C API documentation
- treewide unification of the naming of local variables
- extended helptest in gpioset (explanation of the way the character device
works aimed at reducing user confusion when a GPIO line reverts to its
default value after gpioset exits)
- the source directories have been rearranged and the src/ directory was
dropped, lib/ and tools/ now live in the top source directory
- minor coding style fixes in python bindings, ctxless functions and tools
- automatically generated documentation is now removed by 'make clean'
- all Makefiles now use top_builddir instead of relative paths
- code shrink in configure.ac
- add a brief section about API documentation to README
Bug fixes:
- fix a segfault causing bug in C++ bindings
- make bitset_cmp::operator() const as this is required by C++17
- ignore 'remove' events from udev in the testing framework
- don't segfault on num_lines = 0 in ctxless functions
libgpiod v1.2
=============
New features:
- new contextless event monitor that should replace the previous event loop
which caused problems on hardware that doesn't allow to watch both rising
and falling edge events
- port gpiomon to the new event monitor
- deprecate event loop routines
Improvements:
- many minor improvements and tweaks in the python module
- new test cases for python bindings
- add much more detailed documentation for python bindings
- coding style improvements in gpio-tools
- remove unicode characters from build scripts
- improve the help text messages in gpio-tools
- make gpiod_chip_open() and its variants verify that we're really trying to
open a character device associated with a GPIO chip
Bug fixes:
- fix memory leaks in python bindings
- fix a memory corruption bug in python bindings
- fix the default_vals argument in line request implementation in python
bindings
- fix a compilation warning in python bindings
- fix gpiod_Chip_find_lines() for nonexistent lines (python bindings)
- add a missing include in C++ bindings examples
- correctly display the version string in gpio-tools
libgpiod v1.1
=============
New features:
- add object-oriented C++ bindings
- add object-oriented Python3 bindings
- add several new helpers to the C API
Improvements:
- start using separate versioning schemes for API and ABI
- use SPDX license identifiers and remove LGPL boilerplate
- check for unexpanded macros in configure.ac
Bug fixes:
- include Doxyfile in the release tarball
- fix the implicit-fallthrough warnings
- make tests work together with gpio-mockup post v4.16 linux kernel
- use reference counting for line file descriptors
- correctly handle POLLNVAL when polling for events
- fix the copyright notice in tools
libgpiod v1.0
=============
NOTE: This is a major release - it breaks the API compatibility with
the 0.x.y series.
New features:
- remove custom error handling in favor of errnos
- merge the two separate interfaces for event requests and regular line
requests
- redesign the simple API
- change the prefix of the high-level API from 'simple' to 'ctxless' (for
contextless) which better reflects its purpose
- redesign the iterator API
- make use of prefixes more consistent
- rename symbols all over the place
- various minor tweaks
- add support for pkg-config
Improvements:
- add a bunch of helpers for line requests
- split the library code into multiple source files by functionality
- re-enable a test case previously broken by a bug in the kernel
Bug fixes:
- correctly handle signal interrupts when polling in gpiod_simple_event_loop()
- fix the linking order when building with static libraries
- pass the correct consumer string to gpiod_simple_get_value_multiple() in
gpioget
- fix a line test case: don't use open-drain or open-source flags for input
mode
- fix the flags passed to ar in order to supress a build warning
- set the last error code in gpiod_chip_open_by_label() to ENOENT if a chip
can't be found
- fix checking the kernel version in the test suite
- fix various coding style issues
- initialize the active low variable in gpiomon
libgpiod v0.3
=============
New features:
- gpiomon can now watch multiple lines at the same time and supports custom
output formats which can be specified using the --format argument
- testing framework can now test external programs: test cases for gpio-tools
have been added
Improvements:
- improve error messages
- improve README examples
- configure script improvements
Bug fixes:
- use correct UAPI flags when requesting line events
- capitalize 'GPIO' in error messages in gpioset, gpioget & gpiomon
- tweak the error message on invalid arguments in gpiofind
- don't ignore superfluous arguments and fix the displayed name for falling
edge events in gpiomon
libgpiod v0.2
=============
New features:
- relicensed under LGPLv2.1
- implemented a unit testing framework together with a comprehensive
set of test cases
- added a non-closing variant of the gpiochip iterator and foreach
macro [by Clemens Gruber]
- added gpiod_chip_open_by_label()
Improvements:
- Makefiles & build commands have been reworked [by Thierry Reding]
- documentation updates
- code shrinkage here and there
- coding style fixes
- removed all designated initializers from the header for better standards
compliance
Bug fixes:
- fix the return value of gpiod_simple_event_loop()
- don't try to process docs if doxygen is not installed
- pass the O_CLOEXEC flag to open() when opening the GPIO chip device file
- include <poll.h> instead of <sys/poll.h> in gpioset
- fix a formatting issue in gpioinfo for chips with >100 GPIO lines
- fix a bug when requesting both-edges event notifications
- fix short options in gpiomon (short opt for --silent was missing)
- correct the kernel headers requirements in README
- include <time.h> for struct timespec
- include <poll.h> instead of <sys/poll.h>
- detect the version of strerror_r()
libgpiod v0.1
=============
First version of libgpiod.
It's currently possible to:
- get and set the values of multiple GPIO lines with a single function call
- monitor a GPIO line for events
- enumerate all GPIO chips present in the system
- enumerate all GPIO lines exposed by a chip
- extract information about GPIO chips (label, name, number of lines)
- extract information about GPIO lines (name, flags, state, user)
Tools provided with the library are:
- gpioget - read values from GPIO lines
- gpioset - set values of GPIO lines
- gpiodetect - list GPIO chips
- gpioinfo - print info about GPIO lines exposed by a chip
- gpiomon - monitor a GPIO line for events
- gpiofind - find a GPIO line by name