|
1 | 1 | # Changelog
|
2 | 2 |
|
3 |
| -## v2.0.0-pre.6 - 2024-1-9 |
| 3 | +## v2.0.0 - 2024-01-11 |
4 | 4 |
|
5 |
| -This release only has naming changes and documentation updates. |
| 5 | +This is a major update to Circuits.GPIO that modernizes the API, restricts usage |
| 6 | +to Nerves and Linux, and updates the Linux/Nerves backend to the Linux GPIO cdev |
| 7 | +interface. |
6 | 8 |
|
7 |
| -* Changes |
8 |
| - * Rename `t:gpio_info/0` to `t:identifiers/0`, `t:gpio_status/0` to `t:status/0` |
9 |
| - and `info/1` to `backend_info/1`. This hopefully removes confusion between |
10 |
| - the 3 informational types and functions. |
11 |
| - |
12 |
| -## v2.0.0-pre.5 - 2024-1-8 |
13 |
| - |
14 |
| -* Changes |
15 |
| - * `t:gpio_info/0` now only contains static information so that it's easier to |
16 |
| - cache. Caching reduces open time from 2-3ms to 100us on an RPi Zero, so it's |
17 |
| - a decent improvement for apps that set a lot of GPIOs on boot. |
18 |
| - * Add `t:status/0` and `status/1` to get runtime information about |
19 |
| - GPIOs. It's currently populated with GPIO consumer info, direction and pull |
20 |
| - mode. It could certainly have more added in the future. |
21 |
| - * Add `write_one/3` and `read_one/2` convenience methods to simplify one-off |
22 |
| - and IEx prompt usage. These open and close GPIO references behind the scenes |
23 |
| - and reduce the code that you need to write to avoid exclusively holding on |
24 |
| - to references. |
25 |
| - * Make all error returns consistent. If an unknown errno is caught, its value |
26 |
| - is returned so that a better error message can be added. |
27 |
| - * Demote the `Circuits.GPIO.Info` struct to just a map so that backends can |
28 |
| - add additional informational fields. The type to use is `t:gpio_info/0`. |
29 |
| - * Various bug fixes and code cleanup |
30 |
| - |
31 |
| -## v2.0.0-pre.4 - 2024-1-5 |
32 |
| - |
33 |
| -This release is looking really close to the final prerelease. Please provide |
34 |
| -feedback soon if there are issues. |
| 9 | +It is mostly backwards compatible with Circuits.GPIO v1. Please see `PORTING.md` |
| 10 | +for upgrade instructions. |
35 | 11 |
|
36 |
| -* Changes |
37 |
| - * Add `Circuits.GPIO.gpio_spec?/1` and `Circuits.GPIO.is_gpio_spec/1` to |
38 |
| - support sanity checking GPIOs when parsing config options in user code. |
39 |
| - * Documentation updates |
40 |
| - |
41 |
| -## v2.0.0-pre.3 - 2024-1-1 |
42 |
| - |
43 |
| -* Changes |
44 |
| - * Add Circuits.GPIO.line_info/2 to simplify getting information about a GPIO |
45 |
| - * Add consumer information to the line information and change the label to |
46 |
| - just be the label rather than a tuple that contains the controller. This |
47 |
| - matches better to what would normally be passed to `Circuits.GPIO.open/3` |
48 |
| - * Add more information to the diagnostics report to simplify debugging |
49 |
| - * Add a read performance measurement to the diagnostics report |
50 |
| - |
51 |
| -## v2.0.0-pre.2 - 2023-12-30 |
52 |
| - |
53 |
| -* Changes |
54 |
| - * Fix Beaglebone workaround issues |
55 |
| - * Add Circuits.GPIO version to diagnostics and simplify |
| 12 | +* New features |
| 13 | + * Support alternative backends for different operating systems or for |
| 14 | + simulated hardware. The Linux cdev backend can be compiled out. |
56 | 15 |
|
57 |
| -## v2.0.0-pre.1 - 2023-12-29 |
| 16 | + * `Circuits.GPIO.open/3` is much more flexible in how GPIOs are identified. |
| 17 | + Specifying GPIOs by number still works, but it's now possible to specify |
| 18 | + GPIOs by string labels and by tuples that contain the GPIO controller name |
| 19 | + and index. See `t:gpio_spec/0` and the `README.md` for details. |
58 | 20 |
|
59 |
| -This is a major update over pre.0 that has a significant upgrade to the backend |
60 |
| -for Nerves and Linux users. |
| 21 | + * List out available GPIOs with `Circuits.GPIO.enumerate/0`. Other helper |
| 22 | + functions are available for getting more information about each GPIO too. |
61 | 23 |
|
62 |
| -* Changes |
63 |
| - * Replace the Linux sysfs backend with one that uses the Linux cdev interface |
64 |
| - * Add workaround for reordering of GPIO controllers on Beaglebones with Linux |
65 |
| - 5.15 and later. |
66 |
| - * Add `Circuits.GPIO.Diagnostics` to simplify testing runtime capabilities |
67 |
| - * Support pull modes on all targets that support them instead of only |
68 |
| - Raspberry Pis |
69 |
| - * Many documentation updates |
| 24 | + * Specify pull modes in general rather than only Raspberry Pis on Linux and |
| 25 | + Nerves |
70 | 26 |
|
71 |
| -## v2.0.0-pre.0 - 2023-05-30 |
| 27 | + * Easily do one-off reads and writes with `Circuits.GPIO.read_one/2` and |
| 28 | + `Circuits.GPIO.write_one/3` |
72 | 29 |
|
73 |
| -This is a major update to Circuits.GPIO that removes the requirement to use |
74 |
| -Nerves or Linux. The API is almost the same and the default is to compile and |
75 |
| -use the Linux backend, so changes may not be needed. |
| 30 | + * Improved performance on Nerves and Linux; kernel-applied timestamping of |
| 31 | + GPIO input events |
76 | 32 |
|
77 |
| -This is a prerelease so APIs may still change before the v2.0.0 release. |
| 33 | + * Add `Circuits.GPIO.Diagnostics` to automate runtime testing |
78 | 34 |
|
79 | 35 | * Changes
|
80 |
| - * Support alternative backends for different operating systems or for |
81 |
| - simulated hardware |
82 |
| - * Defer loading the Linux NIF until `Circuits.GPIO.open/2` is called |
| 36 | + * More consistent error returns. Unexpected errors return `{:errno, value}` |
| 37 | + tuples to help correlate errors to low level docs |
| 38 | + * Deferred loading of the NIF to simplify debugging of GPIO backends. |
| 39 | + Segfaults crash on first use of `Circuits.GPIO` rather than on load. |
83 | 40 |
|
84 | 41 | ## v1.1.0 - 2022-12-31
|
85 | 42 |
|
|
0 commit comments