CHANGELOG.md 15.8 KB
Newer Older
Rahix's avatar
Rahix committed
1 2 3 4 5
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

Rahix's avatar
Rahix committed
6
## [Unreleased]
Rahix's avatar
Rahix committed
7 8


schneider's avatar
schneider committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## [v1.15] - 2020-02-02 - [Okra]
[Okra]: https://card10.badge.events.ccc.de/release/card10-v1.15-Okra.zip

### Added
- Show a fault screen on the display when epicardium panics

### Fixed
- Prevent MicroPython garbage collector from delting ISRs
- Fix race conditoin when reading/writing BLE MAC address at boot.
- Fix locking of LEDs.
- Fix bug which only allowed to have a single file open at any time.
- Put all chips into standby when going to sleep
- Misc BLE fixes


Rahix's avatar
Rahix committed
24 25 26
## [v1.14] - 2019-12-29 - [Nettle]
[Nettle]: https://card10.badge.events.ccc.de/release/card10-v1.14-Nettle.zip

Rahix's avatar
Rahix committed
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
### Added
- Scripts for profiling card10 (`tools/poor-profiler`)
- `tools/ecg2wav.py` script for displaying ECG logs in audio programs like
  Audacity.

### Changed
- Ported hardware-locks & bhi160 to new mutex API
- The menu now tries to display apps without a `metadata.json` as well, if
  possible.

### Fixed
- Fixed an unguarded i2c bus transaction which caused strange issues all
  around.
- Fixed copying large files freezing card10.
- Fixed BHI160 initialization interrupt behavior.
- Properly disable BHI160 if an error occurs during init.
- Fixed bhi160 app overflowing sensor queues.
- Fixed neopixel driver not properly writing the first pixel the first
  time.
- Fixed some l0dables crashing because the SysTick timer interrupt was not
  disabled.
Rahix's avatar
Rahix committed
48 49 50 51 52


## [v1.13] - 2019-12-09 - [Mushroom]
[Mushroom]: https://card10.badge.events.ccc.de/release/card10-v1.13-Mushroom.zip

Rahix's avatar
Rahix committed
53 54 55 56 57 58 59 60 61
### Added
- ECG plotter tool (for desktop machines) which can plot ECG logs taken with card10.
- The `input()` Python function.
- Enabled the MicroPython `framebuf` module for a Pycardium-only framebuffer
  implementation.
- Added the `utime.ticks_us()` and `utime.ticks_ms()` functions for very
  accurate timing of MicroPython code.
- Added an option to use the right buttons for scrolling and the left one for
  selecting.  This will be made configurable in a future release.
Rahix's avatar
Rahix committed
62 63
- Made timezone configurable with a new `timezone` option in `card10.cfg`.
- Added a setting-menu to the ECG App.
Rahix's avatar
Rahix committed
64 65

### Changed
Rahix's avatar
Rahix committed
66
- Changed default timezone to CET.
Rahix's avatar
Rahix committed
67 68
- Made a few library functions callable without any parameters so they are
  easier to use.
Rahix's avatar
Rahix committed
69
- Refactored the `card10.cfg` config parser.
Rahix's avatar
Rahix committed
70 71 72 73 74 75 76 77 78

### Fixed
- Fixed the Pycardium delay implementation in preparation for features like
  button-interrupts.  Should also be more accurate now.
- Fixed the filter which is used by the ECG app.
- Fixed the display staying off while printing the sleep-messages.
- Improved the USB-Storage mode in the menu app.
- Fixed GPIO module not properly configuring a pin if both IN and ADC are given.
- Added missing documentation for `os.mkdir()` and `os.rename()`.
Rahix's avatar
Rahix committed
79
- Fixed all `-Wextra` warnings, including a few bugs.  Warnings exist for a reason!
Rahix's avatar
Rahix committed
80 81 82 83

### Removed
- Removed unnecessary out-of-bounds checks in display module.  Drawing outside
  the display is now perfectly fine and the pixels will silently be ignored.
Rahix's avatar
Rahix committed
84 85 86 87 88


## [v1.12] - 2019-10-19 - [Leek]
[Leek]: https://card10.badge.events.ccc.de/release/card10-v1.12-Leek.zip

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
### Added
- **USB Storage mode**!  You can now select 'USB Storage' in the menu and
  access card10's filesystem via USB.  No more rebooting into bootloader!
- LED feedback on boot.  If your display is broken, you can still see it doing
  something now.
- `./tools/pycard10.py --set-time` to set card10's system time from your host.
- 4 new functions in `utime` modules:
  * `set_time_ms()`
  * `set_unix_time_ms()`
  * `unix_time()`
  * `unix_time_ms()`

### Changed
- Updated BLE stack
- Refactored gfx API for drawing images (internal).
- Draw partially clipped primitives in all cases (Fixes menu scrolling
  animation).
- Fatal errors are now handled in a central 'panic' module.

### Fixed
- Make BLE interrupts higher priority than anything else to hopefully increase
  stability.
- Turn off BLE encryption after closing a connection.
- Fixed mainline bootloader being broken.
- Fixed menu entries being ordered by path instead of name.
- Fixed menu crashing without a message.
- Fixed QSTR build-system.
Rahix's avatar
Rahix committed
116 117 118 119 120


## [v1.11] - 2019-09-24 - [Karotte]
[Karotte]: https://card10.badge.events.ccc.de/release/card10-v1.11-Karotte.zip

Rahix's avatar
Rahix committed
121 122 123 124 125 126 127 128 129 130 131 132
### Added
- **Support for sleep-mode instead of full power-off.  This means the RTC now
  retains its state!**
- For debugger users: A GDB macro `task_backtrace` which allows to view
  backtraces of tasks which are currently swapped out.  Use like
  ```text
  (gdb) task_backtrace serial_task_id
  ...
  (gdb) task_backtrace dispatcher_task_id
  ...
  (gdb) task_backtrace ble_task_id
  ```
Rahix's avatar
Rahix committed
133 134 135
- BHI160 magnetometer sensor
- ESB API in Pycardium.
- Monotonic clock API
Rahix's avatar
Rahix committed
136
- New FOSS font ...
Rahix's avatar
Rahix committed
137 138 139

### Changed
- `Display.print()` uses a transparent background when printing with `bg == fg`.
Rahix's avatar
Rahix committed
140 141
- Try different crc16 module during build because different environments might
  have different ones installed.
Rahix's avatar
Rahix committed
142 143
- Improved ECG app, it can now blink on pulse and more!
- Improved BHI160 and BME680 apps.
Rahix's avatar
Rahix committed
144 145 146 147 148 149 150 151 152 153 154 155

### Fixed
- Fixed a regression which made it impossible to turn off the flashlight.
- Fixed CRT for l0dables not allowing to overwrite interrupt handlers.
- Fixed ECG App not closing the sensor on `KeyboardInterrupt`.
- Fixed a bug which made the power-button unresponsive when pressed during boot
  (Interrupts were getting ignored).
- Fixed `simple_menu.Menu.exit()` not actually working.
- Added a few missing locks in `leds` module.
- Added a workaround for BHI160 axis mapping not being applied in some cases.
- Added a critical-section in BLE stack initialization to prevent weird lock-ups.
- Fixed vibra module crashing when calling `vibra.vibrate()` while already running.
Rahix's avatar
Rahix committed
156
- Fixed sensor-sample overflow leading to I2C bus lockup.
Rahix's avatar
Rahix committed
157 158 159 160 161


## [v1.10] - 2019-09-05 21:42 - [JerusalemArtichoke]
[JerusalemArtichoke]: https://card10.badge.events.ccc.de/release/card10-v1.10-JerusalemArtichoke.zip

Rahix's avatar
Rahix committed
162
### Added
Rahix's avatar
Rahix committed
163 164
- **ws2812**: Connect Neopixels to the wristband GPIOs and make your card10
  even more colorful!
Rahix's avatar
Rahix committed
165
- DigiClk is now in the default prelude!
Rahix's avatar
Rahix committed
166
- High-pass filter and pulse detection in default ECG app.
Rahix's avatar
Rahix committed
167 168
- Actually added `uuid` module - it was not built into the firmware before,
  by accident.
Rahix's avatar
Rahix committed
169 170 171 172
- `leds.get_rgb()`: Get the current color of an LED.
- `leds.get_rocket()`: Get the current brightness of one of the rockets.
- `micropython.mem_use()` function.
- The analog-clock can now also set the time using the buttons.
Rahix's avatar
Rahix committed
173 174 175 176

### Changed
- **Pycardium**: Switched from `long-long` to `mpz` integer representation.
  This should resolve any issues with large numbers which had popped up so far.
Rahix's avatar
Rahix committed
177
- Refactored BME680 sensor interface.
Rahix's avatar
Rahix committed
178 179
- Made OpenOCD scripts work with more debuggers out of the box.
- Internal changes in preparation for button-interrupts.
Rahix's avatar
Rahix committed
180 181 182 183

### Fixed
- Backlight and Vibration motor were not reset when switching apps.
- Mismatch in default settings of the *Card10 Nickname* app.
Rahix's avatar
Rahix committed
184 185
- Fixed the PMIC ADC muxer not being properly reset to neutral after a
  measurement.
Rahix's avatar
Rahix committed
186 187
- Fixed wrong timezone offset calculation in `utime.time_ms()`.
- Fixed bug where `\` characters were not parsed as path separators.
Rahix's avatar
Rahix committed
188 189
- Fixed the alignment request check in our ELF l0der.
- Fixed a buffer-overflow in the config-parser.
Rahix's avatar
Rahix committed
190 191 192 193 194


## [v1.9] - 2019-08-28 23:23 - [IcebergLettuce]
[IcebergLettuce]: https://card10.badge.events.ccc.de/release/card10-v1.9-IcebergLettuce.zip

195
### Added
Rahix's avatar
Rahix committed
196 197 198 199 200 201 202 203 204 205 206
- `tools/pycard10.py`: Tool to interact with card10's serial connection and
  upload files directly:
  ```bash
  ./tools/pycard10.py path/to/python-script.py
  ```
- `epic_disp_print_adv` & `Display.print(font=...)`: Print with different
  fonts!  The following fonts are supported: `8px`, `12px`, `16px`, `20px`,
  and `24px`.
- **pycardium**: Support for RAW REPL mode.
- **bhi160**: Function to disable all sensors (`bhi160.disable_all_sensors()`).
- `ls_cmsis_dap`: A tool to enumerate CMSIS-DAP debuggers.
Rahix's avatar
Rahix committed
207 208 209 210
- Tons of new features to `simple_menu`: Timeout, scrolling of long texts,
  robustness against crashes, and proper exiting.
- `card10.cfg` config file which allows enabling *ELF* files.
- Analog read for wristband GPIOs.
211

Rahix's avatar
Rahix committed
212
### Changed
Rahix's avatar
Rahix committed
213
- Refactored *menu* and *personal-state* apps.
Rahix's avatar
Rahix committed
214 215 216
- `main.py` was moved into an app to allow easier reconfiguration of the
  default app.  The new `main.py` points to the "old" one so behavior is not
  changed.
Rahix's avatar
Rahix committed
217
- After a timeout, the menu will close and `main.py` will run again.
Rahix's avatar
Rahix committed
218 219 220
- BLE security updates.
- More detailed battery state display in nickname app.
- Improved ECG app.
Rahix's avatar
Rahix committed
221 222 223 224 225 226

### Removed
- Some unused font files.

### Fixed
- Fixed a regression which made the ECG app no longer work.
Rahix's avatar
Rahix committed
227 228
- Fixed card10 advertising support for AT-commands.
- Rectangles being one pixel too small.
Rahix's avatar
Rahix committed
229

Rahix's avatar
Rahix committed
230 231 232 233 234


## [v1.8] - 2019-08-27 11:38 - [HabaneroChilli]
[HabaneroChilli]: https://card10.badge.events.ccc.de/release/card10-v1.8-HabaneroChilli.zip

Rahix's avatar
Rahix committed
235
### Added
Rahix's avatar
Rahix committed
236 237 238 239 240
- API-call for direct light-sensor readout: `epic_light_sensor_read`.
- Pause mode in ECG-App.
- `bin` field in metatdata for an alternate entrypoint.
- `shell.nix`: Nix-Shell which installs patched OpenOCD and dependencies.
- Cool LED animation in default ECG app.
Rahix's avatar
Rahix committed
241 242 243

### Changed
- No longer require locking the display for setting the backlight.
Rahix's avatar
Rahix committed
244 245 246


## [v1.7] - 2019-08-24 21:48 - [Garlic]
Rahix's avatar
Rahix committed
247 248
[Garlic]: https://card10.badge.events.ccc.de/release/card10-v1.7-Garlic.zip

Rahix's avatar
Rahix committed
249
### Added
Rahix's avatar
Rahix committed
250 251
- **ESB**: Epic Serial Bus (Better than USB!), stability improvements of the
  USB module.  Preparation for mass-storage access in the Firmware.
Rahix's avatar
Rahix committed
252
- Enabled the Hardware Watchdog;  Card10 will reset itself if the firmware crashes
Rahix's avatar
Rahix committed
253
- Log messages when BLE is pairing / connected.
Rahix's avatar
Rahix committed
254 255
- The name of the offending app is printed to the serial console, if an app
  crashes the metatdata parser.
Rahix's avatar
Rahix committed
256 257 258

### Changed
- Improved log messages in cases of lock-contention.
Rahix's avatar
Rahix committed
259
- Menu will show an error message if a crash occurs.
Rahix's avatar
Rahix committed
260 261

### Fixed
Rahix's avatar
Rahix committed
262
- Fixed race-conditions in serial writes by using a queue.
Rahix's avatar
Rahix committed
263
- "Card10 Nickname" crashing if only `nickname.txt` exists.
Rahix's avatar
Rahix committed
264 265 266
- Lockup when debug prints are enabled.
- Delayed BHI160 startup a bit so the PMIC task can check the battery first.
- Relaxed the PMIC lock-timeouts so other task can take a little more time.
Rahix's avatar
Rahix committed
267 268 269 270
- Fixed off-by-one error in `gfx_line()`.
- Fixed the API interrupts sometimes getting stuck.
- Fixed binary building on MacOS.
- Fixed race-conditions in serial console prints by introducing a queue.
Rahix's avatar
Rahix committed
271
- Fixed API & MAX30001 mutexes being initialized late sometimes.
Rahix's avatar
Rahix committed
272
- Fixed wrong stripe width in bi flag.
schneider's avatar
schneider committed
273 274 275


## [v1.6] - 2019-08-23 20:30 - [Fennel]
Rahix's avatar
Rahix committed
276 277
[Fennel]: https://card10.badge.events.ccc.de/release/card10-v1.6-Fennel.zip

Rahix's avatar
Rahix committed
278 279
- Maxim BLE SDK update

Rahix's avatar
Rahix committed
280
### Added
Rahix's avatar
Rahix committed
281
- **BLE**: Added personal state API to card10 SVC.
schneider's avatar
schneider committed
282 283
- **ECG**: Support for ECG + Python app
- **BLE**: Characteristic to read the time
Rahix's avatar
Rahix committed
284 285 286 287 288 289

### Changed
- Improved performance of circle-drawing algorithm.

### Fixed
- Removed a debug print in the `bhi160` module.
Rahix's avatar
Rahix committed
290 291


Rahix's avatar
Rahix committed
292 293 294
## [v1.5] - 2019-08-23 00:18 - [Eggppppplant]
[Eggppppplant]: https://card10.badge.events.ccc.de/release/card10-v1.5-Eggppppplant.zip

Rahix's avatar
Rahix committed
295 296
### Added
- **bootloader**: Add an error message when flashing fails.
297 298
- **display**: Option to set backlight from Python
- **utime**: Function to read time in ms from Python
Rahix's avatar
Rahix committed
299 300 301

### Changed
- **gpio**: Rename constants for consistency.
302 303
- **ble**: Storing pairings outside BLE stack context
- **security**: Disable ELFs by default, prevent access to some more files
Rahix's avatar
Rahix committed
304 305 306 307 308

### Fixed
- **gpio**: Fix field-setting in `gpio_cfg_t`.


Rahix's avatar
Rahix committed
309 310 311
## [v1.4] - 2019-08-22 19:43 - [DaikonRadish]
[DaikonRadish]: https://card10.badge.events.ccc.de/release/card10-v1.4-DaikonRadish.zip

Rahix's avatar
Rahix committed
312 313 314
### Added
- Support for the `bme680` environmental sensor.
- Support for the `bhi160` sensor fusion.
Rahix's avatar
Rahix committed
315 316 317 318 319
- `simple_menu` module for creating simple menus in Python.
- `power` module to access the voltage and current measurements from the PMIC.
- Support for color themes in the default clock script:
  Color themes are read from a json file, so people can customize their clock.
  Last selected theme is saved in the `clock.json` so it is persistent.
Rahix's avatar
Rahix committed
320 321 322

### Changed
- Refactored BLE card10 service.
Rahix's avatar
Rahix committed
323
- Improved BLE file-transfer (added security).
Rahix's avatar
Rahix committed
324 325 326 327 328 329 330
- Replaced dynamic attribute creation with static attributes.

### Fixed
- Fixed menu listing files starting with `.`.
- Fixed `utime.set_time()` applying the timezone offset in the wrong direction.
- Fixed the PMIC driver not releasing some locks properly.

Rahix's avatar
Rahix committed
331

Rahix's avatar
Rahix committed
332 333 334
## [v1.3] - 2019-08-22 00:12 - [CCCauliflower]
[CCCauliflower]: https://card10.badge.events.ccc.de/release/card10-v1.3-cccauliflower.zip

Rahix's avatar
Rahix committed
335 336 337 338 339 340 341 342 343 344 345 346
### Added
- A splashscreen in Epicardium showing the version number.
- `os.urandom()` function.

### Changed
- BLE file-transfers now create missing folders.

### Fixed
- **gfx**: Add a linebreak before character, not after.  This prevent the last
  character being cut off.
- Fixed serial task overflowing because it had a too small stack size.
- Removed confusing MAXUSB messages.
Rahix's avatar
Rahix committed
347 348


Rahix's avatar
Rahix committed
349 350
## [v1.2] - 2019-08-21 18:18 - [Broccoli]
[Broccoli]: https://card10.badge.events.ccc.de/release/card10-v1.2-broccoli.zip
Rahix's avatar
Rahix committed
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379

```text
8e8d8614 feat(apps): Add scope to preload
e1a7684a fix(cdcacm): Disable before printing error
4c74f061 fix(utime.c): set_time should operate in local tz
e0824843 feat(pmic): Switch off if battery is low
46ef3985 feat(pmic): Add API-call to read battery voltage
79e2fb15 feat(epicardium): Periodically check the battery voltage
5da9e074 feat(pmic): Implement AMUX reading
8c59935e py: timezone workaround
c7f59d3e fix(text_reader): Convert to unix line-endings
78a7a7f4 docs: Fix underlines in ble/card10
15649293 feat(app): Add some preloads
b12e4ef9 chore(docs): Fix utime module docs
3efbab13 feat(utime.c): add python functions to set time
38f83243 chore(docs): Fix color documentation
a966e221 chore(docs): Fix python-directives with double-module
66cd10d4 docs: Document os.reset()
5fe5fe31 docs: Document pride module
338132e5 apped apps folder to search module search path
cda91555 rename Main Clock to Home
c2935c8c fixed syntax
3017591a Rename preloaded apps to make use of hatchery folder structure
842e9ad8 feat(menu.py): support scrolling for long menu entries
fbf7c8c0 fix(menu.py) Refactored menu.py based on !138
8aa8c31f feat(ble): Store bondings
5e5c7a4f fix(menu.py): Fix color-mismatch of selector background
```

Rahix's avatar
Rahix committed
380
## [v1.1] - 2019-08-21 03:14 - Asparagus
Rahix's avatar
Rahix committed
381 382 383 384 385 386 387 388 389 390 391 392
### Added
- Seed ``urandom`` PRNG with ``TRNG`` peripheral.
- Show linenumbers in MicroPython tracebacks.

### Fixed
- **buttons**: Acquire lock before accessing I2C.
- **rtc**: Fix RTC getting stuck because of improper initialization.
- Make lifecycle task more important than dispatcher.

## [v1.0] - 2019-08-21 00:50
Initial release.

schneider's avatar
schneider committed
393 394
[Unreleased]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.15...master
[v1.15]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.14...v1.15
Rahix's avatar
Rahix committed
395
[v1.14]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.13...v1.14
Rahix's avatar
Rahix committed
396
[v1.13]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.12...v1.13
Rahix's avatar
Rahix committed
397
[v1.12]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.11...v1.12
Rahix's avatar
Rahix committed
398
[v1.11]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.10...v1.11
Rahix's avatar
Rahix committed
399
[v1.10]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.9...v1.10
Rahix's avatar
Rahix committed
400
[v1.9]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.8...v1.9
Rahix's avatar
Rahix committed
401
[v1.8]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.7...v1.8
Rahix's avatar
Rahix committed
402
[v1.7]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.6...v1.7
Rahix's avatar
Rahix committed
403
[v1.6]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.5...v1.6
Rahix's avatar
Rahix committed
404
[v1.5]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.4...v1.5
Rahix's avatar
Rahix committed
405
[v1.4]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.3...v1.4
Rahix's avatar
Rahix committed
406 407 408 409
[v1.3]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.2...v1.3
[v1.2]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.1...v1.2
[v1.1]: https://git.card10.badge.events.ccc.de/card10/firmware/compare/v1.0...v1.1
[v1.0]: https://git.card10.badge.events.ccc.de/card10/firmware/-/tags/v1.0