All Projects → libcsp → Libcsp

libcsp / Libcsp

Licence: lgpl-2.1
Cubesat Space Protocol - A small network-layer delivery protocol designed for Cubesats

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Libcsp

Gps.js
A NMEA parser and GPS utility library
Stars: ✭ 171 (-33.72%)
Mutual labels:  satellite, protocol
landslide
Research project on building and evaluating deep learning models for landslides detection on satellite images
Stars: ✭ 36 (-86.05%)
Mutual labels:  satellite
httoop
HTTOOP - a fully object oriented HTTP protocol library written in python
Stars: ✭ 15 (-94.19%)
Mutual labels:  protocol
geoblaze
Blazing Fast JavaScript Raster Processing Engine
Stars: ✭ 80 (-68.99%)
Mutual labels:  satellite
wing-binlog
php mysqlbinlog monitoring system
Stars: ✭ 37 (-85.66%)
Mutual labels:  protocol
nxtp
Nxtp is a lightweight protocol for generalized crosschain transfers.
Stars: ✭ 129 (-50%)
Mutual labels:  protocol
xboxone-home-assistant
Control your Xbox One from your Home Assistant device.
Stars: ✭ 26 (-89.92%)
Mutual labels:  protocol
awesome-protocols
Curated list of awesome technology protocols with a reference to official RFCs
Stars: ✭ 16 (-93.8%)
Mutual labels:  protocol
ethereum-dissectors
🔍Wireshark dissectors for Ethereum devp2p protocols
Stars: ✭ 82 (-68.22%)
Mutual labels:  protocol
STUP-Protocol
Secure/Speedup TCP-like UDP protocol
Stars: ✭ 12 (-95.35%)
Mutual labels:  protocol
BedrockProxy
Allow Minecraft Bedrock players on your BungeeCord server!
Stars: ✭ 16 (-93.8%)
Mutual labels:  protocol
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 (-91.86%)
Mutual labels:  protocol
himawari-rx
📡 Receive images from weather satellite Himawari-8 via HimawariCast.
Stars: ✭ 21 (-91.86%)
Mutual labels:  satellite
lightify-binary-protocol
Documentation of the OSRAM Lightify Binary Protocol for communication between Lightify Gateway and applications
Stars: ✭ 26 (-89.92%)
Mutual labels:  protocol
geowombat
GeoWombat: Utilities for geospatial data
Stars: ✭ 34 (-86.82%)
Mutual labels:  satellite
as3MQTT
📢 Pure Action Script 3 that implements the MQTT (Message Queue Telemetry Transport) protocol, a lightweight protocol for publish/subscribe messaging.
Stars: ✭ 21 (-91.86%)
Mutual labels:  protocol
KS-1Q
Opensat first generation cubesat bus, launch into orbit at 2016/11/11
Stars: ✭ 22 (-91.47%)
Mutual labels:  satellite
sentinel-tiler
A serverless Sentinel-2 tiles server using AWS Lambda
Stars: ✭ 59 (-77.13%)
Mutual labels:  satellite
Noaa Apt
NOAA APT weather satellite image decoder, for Linux, Windows, RPi 2+ and OSX
Stars: ✭ 257 (-0.39%)
Mutual labels:  satellite
ssdp
Python asyncio library for Simple Service Discovery Protocol (SSDP).
Stars: ✭ 25 (-90.31%)
Mutual labels:  protocol

The Cubesat Space Protocol

Cubesat Space Protocol (CSP) is a small protocol stack written in C. CSP is designed to ease communication between distributed embedded systems in smaller networks, such as Cubesats. The design follows the TCP/IP model and includes a transport protocol, a routing protocol and several MAC-layer interfaces. The core of libcsp includes a router, a connection oriented socket API and message/connection pools.

The protocol is based on a 32-bit header containing both transport and network-layer information. Its implementation is designed for, but not limited to, embedded systems such as the 8-bit AVR microprocessor and the 32-bit ARM and AVR from Atmel. The implementation is written in GNU C and is currently ported to run on FreeRTOS, Linux (POSIX), MacOS and Windows. The primiary platforms being used are FreeRTOS and Linux.

The idea is to give sub-system developers of cubesats the same features of a TCP/IP stack, but without adding the huge overhead of the IP header. The small footprint and simple implementation allows a small 8-bit system to be fully connected on the network. This allows all subsystems to provide their services on the same network level, without any master node required. Using a service oriented architecture has several advantages compared to the traditional mater/slave topology used on many cubesats.

  • Standardised network protocol: All subsystems can communicate with eachother
  • Service loose coupling: Services maintain a relationship that minimizes dependencies between subsystems
  • Service abstraction: Beyond descriptions in the service contract, services hide logic from the outside world
  • Service reusability: Logic is divided into services with the intention of promoting reuse.
  • Service autonomy: Services have control over the logic they encapsulate.
  • Service Redundancy: Easily add redundant services to the bus
  • Reduces single point of failure: The complexity is moved from a single master node to several well defined services on the network

The implementation of libcsp is written with simplicity in mind, but it's compile time configuration allows it to have some rather advanced features as well:

Features

  • Thread safe Socket API
  • Router task with Quality of Services
  • Connection-oriented operation (RFC 908 and 1151).
  • Connection-less operation (similar to UDP)
  • ICMP-like requests such as ping and buffer status.
  • Loopback interface
  • Very Small Footprint in regards to code and memory required
  • Zero-copy buffer and queue system
  • Modular network interface system
  • OS abstraction, currently ported to: FreeRTOS, Linux (POSIX), MacOS and Windows
  • Broadcast traffic
  • Promiscuous mode
  • Encrypted packets with XTEA in CTR mode
  • Truncated HMAC-SHA1 Authentication (RFC 2104)

LGPL Software license

The source code is available under an LGPL 2.1 license. See COPYING for the license text.

As a special exception, the copyright holders of libcsp gives you permission to use macros or inline functions, or to link libcsp with independent modules that communicate with libcsp solely through the libcsp API interface, regardless of the license terms of these independent modules, and to copy and distribute the resulting combined work under terms of your choice. However the source code for libcsp must still be made available in accordance with the GNU Lesser General Public License version 2.1.

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].