Code Monkey home page Code Monkey logo

zmodem-spin's Introduction

zmodem-spin


This is a P8X32A/Propeller, P2X8C4M64P/Propeller 2 object for the ZModem file transfer protocol

IMPORTANT: This software is meant to be used with the spin-standard-library (P8X32A) or p2-spin-standard-library (P2X8C4M64P). Please install the applicable library first before attempting to use this code, otherwise you will be missing several files required to build the project.

Salient Features

  • Transmit/send files from Propeller to remote device
  • Integration with any terminal I/O driver that provides Char() and CharIn()

Requirements

P1/SPIN1:

  • spin-standard-library
  • A terminal I/O driver that provides transmit (Char()) and receive (CharIn()) methods

P2/SPIN2:

  • p2-spin-standard-library

Compiler Compatibility

Processor Language Compiler Backend Status
P1 SPIN1 FlexSpin (5.9.14-beta) Bytecode OK
P1 SPIN1 FlexSpin (5.9.14-beta) Native code OK
P1 SPIN1 OpenSpin (1.00.81) Bytecode Untested (deprecated)
P2 SPIN2 FlexSpin (5.9.14-beta) NuCode Untested
P2 SPIN2 FlexSpin (5.9.14-beta) Native code OK
P1 SPIN1 Brad's Spin Tool (any) Bytecode Unsupported
P1, P2 SPIN1, 2 Propeller Tool (any) Bytecode Unsupported
P1, P2 SPIN1, 2 PNut (any) Bytecode Unsupported

Limitations

  • Very early in development - may malfunction, or outright fail to build
  • API not finalized
  • Currently only supports a subset of ZModem's features; doesn't support frame types ZSINIT, ZSKIP, ZNAK, ZABORT, ZFERR, ZCRC, ZCHALLENGE, ZCOMPL, ZCAN, ZFREECNT, ZCOMMAND, ZSTDERR
  • Doesn't handle Telenet-specific command escape
  • Nothing is timeout-protected (yet), so if expected data isn't received, it will wait forever.
  • ZFILE frames: All file information besides filename and size are effectively ignored
  • Not optimized:

P1:

Link Rate Thruput (bytecode) Thruput (native)
19200 18.9kbps (RX) 18.9kbps (RX)
16.8kbps (TX) 16.8kbps (TX)
38400 N/A (RX - fail (1)) 37.5kbps (RX)
18.8kbps (TX) 32.7kbps (TX)
115200 N/A (RX - fail (1)) 110.95kbps (RX)
18.8kbps (TX) 8.7kbps (TX)
--------------- ----------------------- -----------------------
(1): The sender keeps streaming, regardless, and the Prop can't keep up at this speed or faster when built to bytecode, so misses frames

P2:

Link Rate Thruput (bytecode) Thruput (native)
19200 00.0kbps (RX) 18.9kbps (RX)
00.0kbps (TX) 17.7kbps (TX)
38400 N/A (RX - fail (1)) 37.6kbps (RX)
18.8kbps (TX) 00.0kbps (TX)
115200 N/A (RX - fail (1)) N/A (RX - fail
00.0kbps (TX) 93.9kbps (TX)
--------------- ----------------------- -----------------------

zmodem-spin's People

Contributors

avsa242 avatar

Watchers

 avatar  avatar  avatar

zmodem-spin's Issues

Rewrite as fully object-oriented

It would be far more modular and easy to use if it were something that could be simply be 'plugged into' a project by using it as a child object, rather than having to #include it inline an existing one.

  • Add a way to 'attach' a physical layer's getchar() and putchar() methods at runtime
  • Break up file transfer code such that an individual zmodem frame is transmitted, then returns (currently blocks for the entire file transmission)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.