diff options
| author | Nick Van Doorn <vandoorn.nick@gmail.com> | 2018-09-11 18:57:15 -0700 |
|---|---|---|
| committer | Nick Van Doorn <vandoorn.nick@gmail.com> | 2018-09-11 18:57:15 -0700 |
| commit | ecde0e8def9473be4095261bc3d242eef22c18c4 (patch) | |
| tree | 4e67bddba71d6722fa62b0583b5caf1d24b21523 /upload/xmodem.h | |
| parent | dd19abb0dab39605777dc9cf0b8f3073f7fae8c1 (diff) | |
Swap for xmodem1k
Diffstat (limited to 'upload/xmodem.h')
| -rw-r--r-- | upload/xmodem.h | 308 |
1 files changed, 4 insertions, 304 deletions
diff --git a/upload/xmodem.h b/upload/xmodem.h index 37bed1a..62346f1 100644 --- a/upload/xmodem.h +++ b/upload/xmodem.h @@ -1,310 +1,10 @@ #ifndef XMODEM_H #define XMODEM_H -////////////////////////////////////////////////////////////////////////////// -// // -// _ _ // -// __ __ _ __ ___ ___ __| | ___ _ __ ___ | |__ // -// \ \/ /| '_ ` _ \ / _ \ / _` | / _ \| '_ ` _ \ | '_ \ // -// > < | | | | | || (_) || (_| || __/| | | | | | _ | | | | // -// /_/\_\|_| |_| |_| \___/ \__,_| \___||_| |_| |_|(_)|_| |_| // -// // -// // -////////////////////////////////////////////////////////////////////////////// -// // -// Copyright (c) 2012 by S.F.T. Inc. - All rights reserved // -// Use, copying, and distribution of this software are licensed according // -// to the LGPLv2.1, or a BSD-like license, as appropriate (see below) // -// // -////////////////////////////////////////////////////////////////////////////// +#include "legato.h" -#ifdef ARDUINO -/** \mainpage S.F.T. XMODEM library (ARDUINO version) - * - * Copyright (c) 2012 by S.F.T. Inc. - All rights reserved\n - * - * The source files include DOXYGEN SUPPORT to properly document the library - * Please excuse the additional comments necessary to make this work. - * Instead, build the doxygen output and view the documentation, as - * well as the code itself WITHOUT all of the doxygen markup comments. - * \n - * \n - * This library was designed to work with POSIX-compliant operating systems - * such as Linux, FreeBSD, and OSX, and also on Arduino microcontrollers. - * The intent was to provide an identical code base for both ends of the - * XMODEM transfer, compilable as either C or C++ code for maximum flexibility. - * - * Normally you will only need to use one of these two functions:\n - * \n - * \ref XSend() - send a file via XMODEM\n - * \ref XReceive() - receive a file via XMODEM\n - * \n - * The rest of the documentation was provided to help you debug any problems, - * or even to write your own library (as appropriate).\n - * - * LICENSE - * - * This software is licensed under either the LGPLv2 or a BSD-like license. - * For more information, see\n - * http://opensource.org/licenses/BSD-2-Clause\n - * http://www.gnu.org/licenses/lgpl-2.1.html\n - * and the above copyright notice.\n - * \n - * In short, you may use this software anyway you like, provided that you - * do not hold S.F.T. Inc. responsible for consequential or inconsequential - * damages resulting from use, modification, abuse, or anything else done - * with this software, and you include the appropriate license (either LGPLv2 - * or a BSD-like license) and comply with the requirements of said license.\n - * So, if you use a BSD-like license, you can copy the license template at - * the abovementioned URL and sub in the copyright notice as shown above. - * Or, you may use an LGPLv2 license, and then provide source files with a - * re-distributed or derived work (including a complete re-write with this - * library as a template). A link back to the original source, of course, - * would be appreciated but is not required. -**/ -#else // ARDUINO -/** \mainpage S.F.T. XMODEM library - * - * Copyright (c) 2012 by S.F.T. Inc. - All rights reserved\n - * - * The source files include DOXYGEN SUPPORT to properly document the library - * Please excuse the additional comments necessary to make this work. - * Instead, build the doxygen output and view the documentation, as - * well as the code itself WITHOUT all of the doxygen markup comments. - * \n - * \n - * This library was designed to work with POSIX-compliant operating systems - * such as Linux, FreeBSD, and OSX, and also on Arduino microcontrollers. - * The intent was to provide an identical code base for both ends of the - * XMODEM transfer, compilable as either C or C++ code for maximum flexibility. - * - * Normally you will only need to use one of these two functions:\n - * \n - * \ref XSend() - send a file via XMODEM\n - * \ref XReceive() - receive a file via XMODEM\n - * \n - * The rest of the documentation was provided to help you debug any problems, - * or even to write your own library (as appropriate).\n - * - * LICENSE - * - * This software is licensed under either the LGPLv2 or a BSD-like license. - * For more information, see\n - * http://opensource.org/licenses/BSD-2-Clause\n - * http://www.gnu.org/licenses/lgpl-2.1.html\n - * and the above copyright notice.\n - * \n - * In short, you may use this software anyway you like, provided that you - * do not hold S.F.T. Inc. responsible for consequential or inconsequential - * damages resulting from use, modification, abuse, or anything else done - * with this software, and you include the appropriate license (either LGPLv2 - * or a BSD-like license) and comply with the requirements of said license.\n - * So, if you use a BSD-like license, you can copy the license template at - * the abovementioned URL and sub in the copyright notice as shown above. - * Or, you may use an LGPLv2 license, and then provide source files with a - * re-distributed or derived work (including a complete re-write with this - * library as a template). A link back to the original source, of course, - * would be appreciated but is not required. -**/ -#endif // ARDUINO - -/** \file xmodem.h - * \brief main header file for S.F.T. XMODEM library - * - * S.F.T. XMODEM library -**/ - -/** \defgroup xmodem_api XModem API - * high-level API functions -*/ - -/** \defgroup xmodem_internal XModem Internal - * internal support functions -*/ - -#ifdef STANDALONE -/** \defgroup xmodem_standalone XModem Stand-alone - * internal 'standalone' functions, an example for POSIX implementation -*/ -#endif // STANDALONE - -// determine if arduino build, define ARDUINO if not already done - -#if defined(__AVR__) || defined(AVR) || defined(__AVR) || defined(__AVR_ARCH__) -#ifndef ARDUINO -#define ARDUINO /* hopefully I cover all compiler variations */ -#endif // ARDUINO -#endif // __AVR__ - -#include <stdlib.h> - -// required include files -#ifdef ARDUINO -// arduino includes -#include <Arduino.h> -#include <SD.h> -#include <HardwareSerial.h> /* may already be included by 'Arduino.h' */ -#include <avr/pgmspace.h> - -#elif WIN32 -// win32 includes -#include <Windows.h> -#include <io.h> -#else // POSIX -// posix includes -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <errno.h> -#include <fcntl.h> -#include <sys/time.h> -#include <sys/ioctl.h> // for IOCTL definitions -#include <memory.h> -#endif // OS-dependent includes - -// required per-OS definitions -#ifdef ARDUINO - -// file and serial types for Arduino -#define FILE_TYPE File -#define SERIAL_TYPE HardwareSerial* - -#elif defined(WIN32) // WINDOWS - -// file and serial types for WIN32 -#define FILE_TYPE HANDLE -#define SERIAL_TYPE HANDLE - -#else // POSIX - -// file and serial types for POSIX -#define FILE_TYPE int -#define SERIAL_TYPE int - -#endif // ARDUINO - -// common definitions - -#define SILENCE_TIMEOUT 5000 /* 5 seconds */ -#define TOTAL_ERROR_COUNT 32 -#define ACK_ERROR_COUNT 8 - -// Arduino build uses C++ so I must define functions properly - -#ifdef ARDUINO - -/** \ingroup xmodem_api - * \brief Receive a file using XMODEM protocol (ARDUINO version) - * - * \param pSD A pointer to an SDClass object, such as &SD (the default SD - *library object is 'SD') - * \param pSer A pointer to a HardwareSerial object, such as &Serial - * \param szFilename A pointer to a (const) 0-byte terminated string containing - *the file name - * \return A value of zero on success, negative on failure, positive if - *canceled - * - * Call this function to receive a file, passing the SD card's initialized - *SDClass object pointer, - * and the pointer to the 'HardwareSerial' object to be used for serial - *communication, and the - * name of the file to create from the XMODEM stream. The function will return - *a value of zero on - * success. On failure or cancelation, the file will be deleted.\n - * If the specified file exists before calling this function, it will be - *overwritten. If you do not - * want to unconditionally overwrite an existing file, you should test to see - *if it exists first - * using the SD library. - * -**/ -short XReceive(SDClass* pSD, HardwareSerial* pSer, const char* szFilename); - -/** \ingroup xmodem_api - * \brief Send a file using XMODEM protocol (ARDUINO version) - * - * \param pSD A pointer to an SDClass object, such as &SD (the default SD - *library object is 'SD') - * \param pSer A pointer to a HardwareSerial object, such as &Serial - * \param szFilename A pointer to a (const) 0-byte terminated string containing - *the file name - * \return A value of zero on success, negative on failure, positive if - *canceled - * - * Call this function to send a file, passing the SD card's initialized SDClass - *object pointer, - * and the pointer to the 'HardwareSerial' object to be used for serial - *communication, and the - * name of the file to send via the XMODEM stream. The function will return a - *value of zero on - * success. If the file does not exist, the function will return a 'failure' - *value and cancel - * the transfer. - * -**/ -int XSend(SDClass* pSD, HardwareSerial* pSer, const char* szFilename); - -#ifdef DEBUG_CODE -const char* XMGetError(void); -#endif // DEBUG_CODE - -#else // ARDUINO - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -/** \ingroup xmodem_api - * \brief Receive a file using XMODEM protocol - * - * \param hSer A 'HANDLE' for the open serial connection - * \param szFilename A pointer to a (const) 0-byte terminated string containing - *the file name - * \param nMode The file mode to be used on create (RWX bits) - * \return A value of zero on success, negative on failure, positive if - *canceled - * - * Call this function to receive a file, passing the handle to the open serial - *connection, and the - * name and mode of the file to create from the XMODEM stream. The function - *will return a value of zero on - * success. On failure or cancelation, the file will be deleted.\n - * If the specified file exists before calling this function, it will be - *overwritten. If you do not - * want to unconditionally overwrite an existing file, you should test to see - *if it exists first. - * -**/ -int XReceive(SERIAL_TYPE hSer, const char* szFilename, int nMode); - -/** \ingroup xmodem_api - * \brief Send a file using XMODEM protocol - * - * \param hSer A 'HANDLE' for the open serial connection - * \param szFilename A pointer to a (const) 0-byte terminated string containing - *the file name - * \return A value of zero on success, negative on failure, positive if - *canceled - * - * Call this function to receive a file, passing the handle to the open serial - *connection, and the - * name and mode of the file to send via the XMODEM stream. The function will - *return a value of zero on - * success. If the file does not exist, the function will return a 'failure' - *value and cancel - * the transfer. - * -**/ -int XSend(SERIAL_TYPE hSer, const char* szFilename); - -#ifdef DEBUG_CODE -const char* XMGetError(void); -#endif // DEBUG_CODE - -#ifdef __cplusplus -}; -#endif // __cplusplus - -#endif // ARDUINO +int xmodemTransmit(unsigned char* src, int srcsz); +uint8_t _inbyte(unsigned short timeout); +void _outbyte(uint8_t c); #endif |
