Thank you for your interest in contributing! This document provides guidelines for contributing to this project.
- Check if the bug has already been reported in Issues
- Use the bug report template
- Include:
- Platform and compiler version
- Minimal reproducible example
- Expected vs actual behavior
- Open an issue with the feature request template
- Clearly describe the use case
- Explain why this feature would be useful
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes following the coding standards
- Test your changes thoroughly
- Commit with clear messages:
git commit -m "Add feature X" - Push to your fork:
git push origin feature/my-feature - Open a Pull Request
- Use C99 standard
- 2-space indentation
- Function names:
snake_casewith_prefix for static functions - Type names:
PascalCasewith typedef - Constants:
UPPER_SNAKE_CASE - Max line length: 100 characters
- Use
/* */for multi-line comments - Document all public APIs with Doxygen-style comments
- Explain "why" not "what" in implementation comments
/**
* @brief Brief description
*
* Detailed description if needed.
*
* @param[in] param1 Description
* @return Description of return value
*/
int public_function(int param1);
static void _internal_helper(void) {
/* Implementation */
}- Test on multiple platforms if possible (Linux, macOS, embedded)
- Verify both reliable and unreliable transmission modes
- Test edge cases (max payload, timeout, memory allocation failures)
Follow conventional commits:
feat:New featurefix:Bug fixdocs:Documentation changesrefactor:Code refactoringtest:Adding testschore:Maintenance tasks
Example: feat: add support for custom CRC algorithms
By contributing, you agree that your contributions will be licensed under the GPL v2 License.