From e0c7598647ba085882da56934decd703c599742d Mon Sep 17 00:00:00 2001 From: Joerg Deckert Date: Sun, 22 Dec 2013 20:07:52 +0100 Subject: [PATCH] cleanup, advanced ftp server compatibility --- lib/api_telnet_serial.spin | 200 ------------------------------------- system/regnatix/ftp.spin | 18 ++-- 2 files changed, 9 insertions(+), 209 deletions(-) delete mode 100644 lib/api_telnet_serial.spin diff --git a/lib/api_telnet_serial.spin b/lib/api_telnet_serial.spin deleted file mode 100644 index 488bf40..0000000 --- a/lib/api_telnet_serial.spin +++ /dev/null @@ -1,200 +0,0 @@ -{{ - PropTCP Sockets - FullDuplexSerial API Layer - -------------------------------------------- - - Copyright (c) 2006-2009 Harrison Pham - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - The latest version of this software can be obtained from - http://hdpham.com/PropTCP and http://obex.parallax.com/ -}} - -'' NOTICE: All buffer sizes must be a power of 2! - -OBJ - tcp : "driver_socket" - -VAR - long handle - word listenport - byte listening - - long ptrrxbuff, ptrtxbuff - word rxlen, txlen - -PUB start(cs, sck, si, so, xtalout, macptr, ipconfigptr) - - tcp.start(cs, sck, si, so, xtalout, macptr, ipconfigptr) - -PUB stop - - tcp.stop - -PUB connect(ipaddr, remoteport, _ptrrxbuff, _rxlen, _ptrtxbuff, _txlen) - - {if tcp.isValidHandle(handle) - close} - - listening := false - handle := -1 - handle := tcp.connect(ipaddr, remoteport, _ptrrxbuff, _rxlen, _ptrtxbuff, _txlen) - - return handle - -PUB listen(port, _ptrrxbuff, _rxlen, _ptrtxbuff, _txlen) - - {if tcp.isValidHandle(handle) - close} - - listenport := port - ptrrxbuff := _ptrrxbuff - rxlen := _rxlen - ptrtxbuff := _ptrtxbuff - txlen := _txlen - listening := true - handle := -1 - handle := tcp.listen(listenport, ptrrxbuff, rxlen, ptrtxbuff, txlen) - - return handle - -PUB relisten - if listening - ifnot tcp.isValidHandle(handle) - listen(listenport, ptrrxbuff, rxlen, ptrtxbuff, txlen) - -PUB isConnected - - return tcp.isConnected(handle) - -PUB rxcount - - return tcp.getReceiveBufferCount(handle) - -PUB resetBuffers - - tcp.resetBuffers(handle) - -PUB waitConnectTimeout(ms) : connected | t - - t := cnt - repeat until (connected := isConnected) or (((cnt - t) / (clkfreq / 1000)) > ms) - -PUB close - - tcp.close(handle) - handle := -1 - -PUB rxflush - - repeat while rxcheck => 0 - -PUB rxcheck : rxbyte - - {if listening - relisten - rxbyte := tcp.readByteNonBlocking(handle) - else} - rxbyte := tcp.readByteNonBlocking(handle) - if (not tcp.isConnected(handle)) and (rxbyte == -1) - abort tcp#ERRSOCKETCLOSED - -PUB rxtime(ms) : rxbyte | t - - t := cnt - repeat until (rxbyte := rxcheck) => 0 or (cnt - t) / (clkfreq / 1000) > ms - -PUB rx : rxbyte - - repeat while (rxbyte := rxcheck) < 0 - -PUB rxdatatime(ptr, maxlen, ms) : len | t - - t := cnt - repeat until (len := tcp.readDataNonBlocking(handle, ptr, maxlen)) => 0 or (cnt - t) / (clkfreq / 1000) > ms - -PUB rxdata(ptr, maxlen) - - return tcp.readData(handle, ptr, maxlen) - -PUB txflush - - tcp.flush(handle) - -PUB txcheck(txbyte) - - {if listening - relisten} - - ifnot tcp.isConnected(handle) - abort tcp#ERRSOCKETCLOSED - - return tcp.writeByteNonBlocking(handle, txbyte) - -PUB tx(txbyte) - - repeat while txcheck(txbyte) < 0 - -PUB txdata(ptr, len) - - {if listening - relisten} - - tcp.writeData(handle, ptr, len) - -PUB str(stringptr) - - txdata(stringptr, strsize(stringptr)) - -PUB dec(value) | i - -'' Print a decimal number - - if value < 0 - -value - tx("-") - - i := 1_000_000_000 - - repeat 10 - if value => i - tx(value / i + "0") - value //= i - result~~ - elseif result or i == 1 - tx("0") - i /= 10 - - -PUB hex(value, digits) - -'' Print a hexadecimal number - - value <<= (8 - digits) << 2 - repeat digits - tx(lookupz((value <-= 4) & $F : "0".."9", "A".."F")) - - -PUB bin(value, digits) - -'' Print a binary number - - value <<= 32 - digits - repeat digits - tx((value <-= 1) & 1 + "0") \ No newline at end of file diff --git a/system/regnatix/ftp.spin b/system/regnatix/ftp.spin index 6e3ff46..9c7be63 100644 --- a/system/regnatix/ftp.spin +++ b/system/regnatix/ftp.spin @@ -225,6 +225,15 @@ PRI ftppasv : port | i, k, port256, port1 PRI ftpretr | len + if sendStr(string("TYPE I",13,10)) + ios.print(string("Fehler beim Senden des Types")) + ios.printnl + return(-1) + ifnot getResponse(string("200 ")) + ios.print(string("Keine oder falsche Antwort vom FTP-Server erhalten.")) + ios.printnl + return(-1) + if sendStr(string("SIZE ")) || sendStr(@filename) || sendStr(string(13,10)) ios.print(string("Fehler beim Senden des SIZE-Kommandos")) ios.printnl @@ -236,15 +245,6 @@ PRI ftpretr | len ifnot(len := num.FromStr(@strTemp+4, num#DEC)) return(-1) - if sendStr(string("TYPE I",13,10)) - ios.print(string("Fehler beim Senden des Types")) - ios.printnl - return(-1) - ifnot getResponse(string("200 ")) - ios.print(string("Keine oder falsche Antwort vom FTP-Server erhalten.")) - ios.printnl - return(-1) - if sendStr(string("RETR ")) || sendStr(@filename) || sendStr(string(13,10)) ios.print(string("Fehler beim Senden des Filenamens")) return -1