# xmodem
**Repository Path**: penjun71/xmodem
## Basic Information
- **Project Name**: xmodem
- **Description**: No description available
- **Primary Language**: C
- **License**: CC0-1.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2024-07-06
- **Last Updated**: 2024-11-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Embedded XModem
===============
[](https://travis-ci.org/bsail/xmodem)
[](https://coveralls.io/github/bsail/xmodem?branch=master)
Fork of original library by [caseykelso](https://github.com/caseykelso/xmodem).
Forked by Nikolay Nerovny, BMSTU, 2018.
Latest version of library:
https://github.com/bsail/xmodem
# Development
For developers looking to extend, bug fix, build, and test libXMODEM with dependencies and test infrastructure included in the source tree. This version differs from original version by [caseykelso](https://github.com/caseykelso/xmodem): it uses Ceedling build system with Unity tests.
This library has several changes in transmitter state machine in order to properly work with `rz` utility: it did not wait for 'C', it starts transmission from the beginning.
Setup Environment - Ubuntu 16.04/18.04
---------------------------------
```bash
sudo apt install build-essential git ruby
sudo gem install ceedling
```
Get Code
-----------------
```bash
mkdir xmodem
git clone https://github.com/bsail/xmodem xmodem
ceedling upgrade xmodem
cd xmodem
```
# Tests
## Unit Tests
Build & Run Unit Tests
```bash
ceedling test:all
```
You may use and create additional tasks for Ceedling build system. Please refer to the documentation in the `vendor/ceedling/docs`.
### Transmit State Machine
All transitions are covered via unit tests.
### Receive State Machine
All transitions are NOT YET covered via unit tests.
# Project Structure
## Source Directories
* /src - libxmodem source directory
* xmodem.h - common header (transmitter and receiver)
* xmodem.c - common implementation (transmitter and receiver)
* xmodem_receiver.h - receiver side header
* xmodem_receiver.c - receiver side implementation
* xmodem_transmitter.h - transmitter side header
* xmodem_transmitter.c - transmitter side implementation
* /test
* test_xmodem.c - Unity test file for xmodem.c module (use `ceedling test:xmodem` to run tests only in this source file)
* test_xmodem_receiver.c - Unity test file for xmodem_receiver.c module (use `ceedling test:xmodem_receiver` to run tests only in this source file)
* test_xmodem_transmitter.c - Unity test file for xmodem_transmitter.c module (use `ceedling test:xmodem_transmitter` to run tests only in this source file)
* /
* README.md - this file
* project.yml - Ceedling project file including parameters of test compiler and linker
* .gitignore - definitions of files and directories to be ignored by git
## Third Party Source Directories
* /vendor - Ceedling source with documentation and plugins
## Build Directories
* /build - Ceedling library build directory
## Additional Directories
* /documentation - Source of state machine schematics
* /reference - Reference documentation about xmodem protocol