Skip to content

Manchester big-endian support#4

Open
tzijnge wants to merge 49 commits intodevelopmentfrom
manchester-big-endian-support
Open

Manchester big-endian support#4
tzijnge wants to merge 49 commits intodevelopmentfrom
manchester-big-endian-support

Conversation

@tzijnge
Copy link
Collaborator

@tzijnge tzijnge commented Mar 18, 2026

  • Support Manchester for both little and big-endian platforms
  • Added c390x devcontainer to allow development in a GitHub Workspace on a big-endian platform

This pull request introduces a s390x Big-Endian development container environment with cross-compilation setup including Dockerfile, build script, CMake toolchain, and devcontainer configuration. The Manchester implementation is refactored to use explicit little-endian read/write helpers. Encode and decode functions for span have been simplified to a single constexpr capable implementation

Timon Zijnge and others added 30 commits December 17, 2025 15:54
* Added manchester code and test
* Formatting and added missing file
* Some functions can only be constexpr since C++14
* Manchester decode and some refactoring
* Added some missing typenames
* constexpr void function not allowed in C++11
* condition on static_assert tests
* revert CMakeLists.txt
* Using ETL_STATIC_ASSERT
* Some cleanup
* Added static_assert message
* Added compile time tests
* Added invert manchester
* Some refactoring
* Disable test for now
* Move ETL_NODISCARD before static
* Test for valid_span
* Remove redundant (?) storage specifiers for template specializations. Storage specifier already given in base template
* refactoring to get rid of specialized template functions in template class
* cleanup
* Added documentation comments
* Some refactoring
* introducing namespace detail_manchester
* Some refactoring
* Update tests
* Some refactoring
* Removed possible undefined behavior by refactoring encode_span
* constexpr version of encode_span
* Static assertion for rare case where code doesn't work because CHAR_BIT is not the same as the number of bits in uint_least8_t
* renamed valid to is_valid
* renamed is_valid_span to is_valid
* Using etl exceptions in ETL_ASSERT
* Removed _fast functions
* merged encode_in_place with encode and decode_in_place with decode
* removed _span to create normal overloads of encode and decode for span
* Some renaming and minor refactoring
* Fix build issues
* Conditionally compile manchester_decoded
Removed redundant semicolon
* Formatting
* consistency: hex literals with lower case 0x
* Moved copyright to top of file
* Make constexpr encode/decode span functions equal for little and big endian platforms
* Added missing include
* Added missing 8bit/64bit guards
* Fixed is_valid for big endian platforms
Timon Zijnge and others added 19 commits February 23, 2026 10:50
* private memcpy alias
* Review comments
* Cleanup
* Fix build error
* Add manchester documentation
* Preparation for GitHub pages
* Add big-endian devcontainer
* fixed the configuration to work with GitHub Codespaces. The changes use cross-compilation with QEMU emulation instead of trying to use a native s390x container.
* Made manchester work for big-endian
* Some updates to the container
* add sourcedirectory
* Update documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants