| /**************************************************************************** |
| * apps/interpreters/bas/bas_fs.h |
| * |
| * Copyright (c) 1999-2014 Michael Haardt |
| * |
| * 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. |
| * |
| * Adapted to NuttX and re-released under a 3-clause BSD license: |
| * |
| * Copyright (C) 2014 Gregory Nutt. All rights reserved. |
| * Authors: Alan Carvalho de Assis <Alan Carvalho de Assis> |
| * Gregory Nutt <gnutt@nuttx.org> |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * 3. Neither the name NuttX nor the names of its contributors may be |
| * used to endorse or promote products derived from this software |
| * without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS |
| * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
| * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
| * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| * POSSIBILITY OF SUCH DAMAGE. |
| * |
| ****************************************************************************/ |
| |
| #ifndef __APPS_EXAMPLES_BAS_BAS_FS_H |
| #define __APPS_EXAMPLES_BAS_BAS_FS_H |
| |
| /**************************************************************************** |
| * Included Files |
| ****************************************************************************/ |
| |
| #include <sys/types.h> |
| #include "bas_str.h" |
| |
| /**************************************************************************** |
| * Pre-processor Definitions |
| ****************************************************************************/ |
| |
| #define FS_COLOUR_BLACK 0 |
| #define FS_COLOUR_BLUE 1 |
| #define FS_COLOUR_GREEN 2 |
| #define FS_COLOUR_CYAN 3 |
| #define FS_COLOUR_RED 4 |
| #define FS_COLOUR_MAGENTA 5 |
| #define FS_COLOUR_BROWN 6 |
| #define FS_COLOUR_WHITE 7 |
| #define FS_COLOUR_GREY 8 |
| #define FS_COLOUR_LIGHTBLUE 9 |
| #define FS_COLOUR_LIGHTGREEN 10 |
| #define FS_COLOUR_LIGHTCYAN 11 |
| #define FS_COLOUR_LIGHTRED 12 |
| #define FS_COLOUR_LIGHTMAGENTA 13 |
| #define FS_COLOUR_YELLOW 14 |
| #define FS_COLOUR_BRIGHTWHITE 15 |
| |
| #define FS_ACCESS_NONE 0 |
| #define FS_ACCESS_READ 1 |
| #define FS_ACCESS_WRITE 2 |
| #define FS_ACCESS_READWRITE 3 |
| |
| #define FS_LOCK_NONE 0 |
| #define FS_LOCK_SHARED 1 |
| #define FS_LOCK_EXCLUSIVE 2 |
| |
| /**************************************************************************** |
| * Public Types |
| ****************************************************************************/ |
| |
| struct FileStream |
| { |
| int dev,tty; |
| int recLength; |
| |
| int infd; |
| char inBuf[1024]; |
| size_t inSize,inCapacity; |
| |
| int outfd; |
| int outPos; |
| int outLineWidth; |
| int outColWidth; |
| char outBuf[1024]; |
| size_t outSize,outCapacity; |
| int outforeground,outbackground; |
| |
| int randomfd; |
| int recPos; |
| char *recBuf; |
| struct StringField field; |
| |
| int binaryfd; |
| }; |
| |
| /**************************************************************************** |
| * Public Data |
| ****************************************************************************/ |
| |
| extern const char *FS_errmsg; |
| |
| /**************************************************************************** |
| * Public Function Prototypes |
| ****************************************************************************/ |
| |
| int FS_opendev(int dev, int infd, int outfd); |
| int FS_openin(const char *name); |
| int FS_openinChn(int chn, const char *name, int mode); |
| int FS_openout(const char *name); |
| int FS_openoutChn(int chn, const char *name, int mode, int append); |
| int FS_openrandomChn(int chn, const char *name, int mode, int recLength); |
| int FS_openbinaryChn(int chn, const char *name, int mode); |
| int FS_freechn(void); |
| int FS_flush(int dev); |
| int FS_close(int dev); |
| |
| #ifdef CONFIG_SERIAL_TERMIOS |
| int FS_istty(int chn); |
| #else |
| # define FS_istty(chn) (1) |
| #endif |
| |
| int FS_lock(int chn, off_t offset, off_t length, int mode, int w); |
| int FS_truncate(int chn); |
| void FS_shellmode(int chn); |
| void FS_fsmode(int chn); |
| void FS_xonxoff(int chn, int on); |
| int FS_put(int chn); |
| int FS_putChar(int dev, char ch); |
| int FS_putChars(int dev, const char *chars); |
| int FS_putString(int dev, const struct String *s); |
| int FS_putItem(int dev, const struct String *s); |
| int FS_putbinaryString(int chn, const struct String *s); |
| int FS_putbinaryInteger(int chn, long int x); |
| int FS_putbinaryReal(int chn, double x); |
| int FS_getbinaryString(int chn, struct String *s); |
| int FS_getbinaryInteger(int chn, long int *x); |
| int FS_getbinaryReal(int chn, double *x); |
| int FS_nextcol(int dev); |
| int FS_nextline(int dev); |
| int FS_tab(int dev, int position); |
| int FS_cls(int chn); |
| int FS_locate(int chn, int line, int column); |
| int FS_colour(int chn, int foreground, int background); |
| int FS_get(int chn); |
| int FS_getChar(int dev); |
| int FS_eof(int chn); |
| long int FS_loc(int chn); |
| long int FS_lof(int chn); |
| int FS_width(int dev, int width); |
| int FS_zone(int dev, int zone); |
| long int FS_recLength(int chn); |
| void FS_field(int chn, struct String *s, long int position, long int length); |
| int FS_appendToString(int dev, struct String *s, int nl); |
| int FS_inkeyChar(int dev, int ms); |
| void FS_sleep(double s); |
| int FS_seek(int chn, long int record); |
| void FS_closefiles(void); |
| int FS_charpos(int chn); |
| int FS_copy(const char *from, const char *to); |
| int FS_portInput(int address); |
| int FS_memInput(int address); |
| int FS_portOutput(int address, int value); |
| int FS_memOutput(int address, int value); |
| |
| #endif /* __APPS_EXAMPLES_BAS_BAS_FS_H */ |