7816 fsm: move to static msgb

Error handling was difficult due to the need to pass msgb pointers
attached to the sub fsms back to the cb that is polled from the main
loop to be able free them, while ensuring they never get lost, because
memory leakage is deadly.

This is now fixed by using static pseudo-msgbs for the fsms that are
never deallocated. This only adds one tpdu tx copy, the ccid response
msgbs were already being copied anyway, so memory usage has not changed
except for the "unused slots" case that is not really important since
the octsim was designed around concurrent slot operation anway.

All of this allows convenient error handling in the allstate function
instead of having to spread it all over the sub fsms - in practice
handling errors mostly consists of card deactivation + returning a
proper failure message that matches the ccid command anyway.

Change-Id: I65e77c376aca9ed50e234a0b58a7450a8bbd4fe0
3 files changed
tree: 89ac5cce832d8ffc0176b8865c4b39390bfba59d
  1. ccid_common/
  2. ccid_host/
  3. contrib/
  4. sysmoOCTSIM/
  5. tests/
  6. .gitignore
  7. git-version-gen
  8. README.md
README.md

osmo-ccid-firmware - CCID implementation (not just) for firmware

This repository contains a C-language implementation of the USB CCID (Smart Card Reader) device class. The code is written in a portable fashin and can be found in the ccid_common sub-directory.

The code can be built to run as an userspace program on Linux, implementing a USB Gadget using the FunctionFS interface. For this version, see the ccid_host subdirectory.

The CCID code can also be built into a firmware for the sysmoOCTSIM 8-slot high-performance USB smart card reader.

Mailing List

Discussions related to osmo-ccid-firmware are happening on the slightly unrelated simtrace@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/simtrace for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for osmo-ccid-firmware can be seen at https://gerrit.osmocom.org/#/q/project:osmo-ccid-firmware+status:open