All Projects → bang-olufsen → yahdlc

bang-olufsen / yahdlc

Licence: MIT license
yahdlc - Yet Another HDLC implementation

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to yahdlc

Arduino Robust Serial
A simple and robust serial communication protocol. It was designed for Arduino but can be used for other purposes (e.g. bluetooth, sockets). Implementation in C Arduino, C++, Python and Rust.
Stars: ✭ 83 (+76.6%)
Mutual labels:  serial, communication, protocol
Cserialport
基于C++的轻量级开源跨平台串口类库Lightweight cross-platform serial port library based on C++
Stars: ✭ 296 (+529.79%)
Mutual labels:  serial, communication
Pjon
PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.
Stars: ✭ 2,615 (+5463.83%)
Mutual labels:  communication, protocol
Liblightmodbus
A cross-platform, lightweight Modbus RTU library
Stars: ✭ 121 (+157.45%)
Mutual labels:  serial, communication
Sharer
Arduino & .NET serial communication library to read/write variables and remote call functions using the Sharer protocol. Works on Windows, Linux and MacOS.
Stars: ✭ 21 (-55.32%)
Mutual labels:  communication, protocol
bluetooth-terminal
ES6 class for serial communication with your own Bluetooth Low Energy (Smart) devices
Stars: ✭ 43 (-8.51%)
Mutual labels:  serial, communication
Node Bluetooth Serial Port
Serial I/O over bluetooth for NodeJS
Stars: ✭ 444 (+844.68%)
Mutual labels:  serial, communication
Hazel Networking
Hazel Networking is a low level networking library for C# providing connection orientated, message based communication via TCP, UDP and RUDP.
Stars: ✭ 194 (+312.77%)
Mutual labels:  communication, protocol
Packetserial
An Arduino Library that facilitates packet-based serial communication using COBS or SLIP encoding.
Stars: ✭ 177 (+276.6%)
Mutual labels:  serial, communication
Gps.js
A NMEA parser and GPS utility library
Stars: ✭ 171 (+263.83%)
Mutual labels:  serial, protocol
Web Bluetooth Terminal
Progressive Web Application for serial communication with your own Bluetooth Low Energy (Smart) devices
Stars: ✭ 130 (+176.6%)
Mutual labels:  serial, communication
SerialTransfer
Arduino library to transfer dynamic, packetized data fast and reliably via Serial, I2C, or SPI
Stars: ✭ 273 (+480.85%)
Mutual labels:  serial, communication
HeishaMon
Panasonic Aquarea air-water H and J series protocol decrypt
Stars: ✭ 102 (+117.02%)
Mutual labels:  serial, protocol
SerialProtocol
A protocol for sending data between two Arduino devices, or between an Arduino and another device through a serial port
Stars: ✭ 36 (-23.4%)
Mutual labels:  serial, protocol
enzyme-subgraph
The official subgraph the Enzyme protocol.
Stars: ✭ 20 (-57.45%)
Mutual labels:  protocol
loco.rs
Loco Protocol Wrapper for Rust
Stars: ✭ 38 (-19.15%)
Mutual labels:  protocol
node-ads
NodeJS Twincat ADS protocol implementation
Stars: ✭ 49 (+4.26%)
Mutual labels:  protocol
opensimmpls
OpenSimMPLS is an MPLS network simulator, multiplatform and mutilanguage. It is easy-to-use and is intended for teaching activities. It can be used as well to test new protocols, techniques and methods related to MPLS and/or GoS.
Stars: ✭ 21 (-55.32%)
Mutual labels:  protocol
ampleforth-contracts
Smart contracts for Ampleforth Protocol (working name uFragments)
Stars: ✭ 238 (+406.38%)
Mutual labels:  protocol
Computer-Networks
GBN and SR simulation, Distance Vector Algorithm Simulation
Stars: ✭ 21 (-55.32%)
Mutual labels:  protocol

yahdlc - Yet Another HDLC

Build Status Coverage Status Scan_Coverity License

The Yet Another High-Level Data Link Control implementation is a framing protocol optimized for embedded communication with single pass operations. It uses the HDLC asynchronous framing format. For more information see:

https://en.wikipedia.org/wiki/High-Level_Data_Link_Control

The supported frames are limited to DATA (I-frame with Poll bit), ACK (S-frame Receive Ready with Final bit) and NACK (S-frame Reject with Final bit). All DATA frames must be acknowledged or negative acknowledged using the defined ACK and NACK frames. The Address and Control fields uses the 8-bit format which means that the highest sequence number is 7. The FCS field is 16-bit by default, but can be set to 32-bit by the definition of "CRC32".

Below are some examples on the usage:

Acknowledge of frames:
A ----> B   DATA [Seq No = 1]
A <---- B   DATA [Seq No = 4]
A <---- B    ACK [Seq No = 2]
A ----> B    ACK [Seq No = 5]

Negative acknowledge of frame:
A ----> B   DATA [Seq No = 1]
A <---- B   NACK [Seq No = 1]
A ----> B   DATA [Seq No = 1]

Acknowledge frame lost:
A ----> B   DATA [Seq No = 1]
A  X<-- B    ACK [Seq No = 2]
*Timeout*
A ----> B   DATA [Seq No = 1]

Programming languages

Currently yahdlc supports C/C++ and Python. Python bindings for yahdlc has been implemented by SkypLabs and can be found here:

https://github.com/SkypLabs/python4yahdlc

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].