Skip to content

0.15.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 14:21
· 25 commits to main since this release

New features

  • Listing the attached decks — the new deck list command prints one line per
    attached expansion deck with its board name, board revision and serial number.
    See docs/deck.md.

    Name           | Rev | Serial
    ---------------+-----+--------------------------
    bcFlow2        | A   | 0DD07B8E0000002D
    WiFi camera de | G   | 7E0048001250465753393020
    

    Both kinds of deck identity memory are covered: OneWire decks, where the
    serial is the 1-wire ROM id, and DeckCtrl decks, where the name and revision
    come from the info page and the serial is the deck controller's CPU id. The
    serial is reported together with the memory listing, so a deck whose memory
    can't be read — a 1-wire memory failing its CRC check, for instance — is still
    listed with its serial and ? in the fields that could not be read, with the
    reason on stderr. --csv gives machine-readable output. A deck with no
    identity memory at all is not listed, since the Crazyflie has no way of knowing
    it is there.

  • Verifying memory contents — mem verify takes the same arguments as
    mem write, but reads the memory back and compares it against the data you
    give it, so a write can be confirmed:

    cfcli mem verify DeckMemory -s 0x10000000 -i color-led.bin

    The number of bytes read back is the length of the expected data, so the same
    --data/--input that wrote a region verifies exactly that region. A match
    prints a confirmation and exits 0; otherwise the differing bytes are listed
    with their absolute offsets and the command exits 1, so a script can act on
    it:

    Offset     | Expected | Actual
    -----------+----------+--------
    0x00000004 | 0xFF     | 0x00
    0x00000005 | 0xBD     | 0xBC
    Error: Verify FAILED: 2 of 32 bytes differ
    

    At most 16 differing bytes are listed, the rest are summarised as
    ... and N more. See docs/memory.md.

Bug fixes

  • Flashing no longer fails on a deck that is already up to date — the
    Lighthouse deck cannot be commanded into its bootloader, and the firmware only
    leaves it there while its bitstream is out of date. A running deck is therefore
    already up to date, and is now skipped instead of failing the whole flash run.
    The Crazyflie is only restarted if something was actually written.
    (#6)

Improvements

  • Consistent table output — param list/get, log list, mem list,
    loco display and the new deck list now build their tables with
    tabled, so columns are sized to fit their
    contents instead of being padded to a fixed width. A name longer than the old
    fixed width no longer pushes the rest of the row out of alignment, a set of
    short names no longer leaves a wide gap before the next column, and numeric
    columns are right-aligned. Note that mem list changes shape as
    part of this — it prints an ID | Type | Size | Serial table rather than one
    formatted line per memory, so anything parsing that output should use --csv,
    which is unchanged.

  • Warning when a deck product name is too long — the product name in the
    DeckCtrl info page is stored in a 15 byte field, so util deck-ctrl bingen
    and binflash now warn on stderr when the name in the YAML configuration does
    not fit and say how it will be stored. The configuration is still written, so a
    name that was already flashed keeps working.

  • Arming moved to the supervisor subsystem — hlc arm/hlc disarm now use
    the supervisor API in crazyflie-lib, replacing a method deprecated in 0.8.2.
    No change in behaviour.

  • crazyflie-link and crazyradio are used through crazyflie-lib — both are
    re-exported by crazyflie-lib, so the exact versions it was built against are
    reachable as crazyflie_lib::crazyflie_link and no longer have to be direct
    dependencies kept manually in sync. packet_capture is enabled through the
    crazyflie-lib passthrough feature, still on Unix targets only. Internal change,
    no difference in behaviour.