Should be no changes

Dependents:   microbit-dal

Fork of mbed-dev-bin by Lancaster University

Committer:
Asimov
Date:
Fri Jan 13 20:58:56 2017 +0000
Revision:
4:5d949669b10e
Parent:
0:e1a608bb55e8
No real changes?  DemoMicroBit_PCA9685

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jamesadevine 0:e1a608bb55e8 1 /* mbed Microcontroller Library
jamesadevine 0:e1a608bb55e8 2 * Copyright (c) 2006-2013 ARM Limited
jamesadevine 0:e1a608bb55e8 3 *
jamesadevine 0:e1a608bb55e8 4 * Licensed under the Apache License, Version 2.0 (the "License");
jamesadevine 0:e1a608bb55e8 5 * you may not use this file except in compliance with the License.
jamesadevine 0:e1a608bb55e8 6 * You may obtain a copy of the License at
jamesadevine 0:e1a608bb55e8 7 *
jamesadevine 0:e1a608bb55e8 8 * http://www.apache.org/licenses/LICENSE-2.0
jamesadevine 0:e1a608bb55e8 9 *
jamesadevine 0:e1a608bb55e8 10 * Unless required by applicable law or agreed to in writing, software
jamesadevine 0:e1a608bb55e8 11 * distributed under the License is distributed on an "AS IS" BASIS,
jamesadevine 0:e1a608bb55e8 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
jamesadevine 0:e1a608bb55e8 13 * See the License for the specific language governing permissions and
jamesadevine 0:e1a608bb55e8 14 * limitations under the License.
jamesadevine 0:e1a608bb55e8 15 */
jamesadevine 0:e1a608bb55e8 16 #ifndef MBED_FILEHANDLE_H
jamesadevine 0:e1a608bb55e8 17 #define MBED_FILEHANDLE_H
jamesadevine 0:e1a608bb55e8 18
jamesadevine 0:e1a608bb55e8 19 typedef int FILEHANDLE;
jamesadevine 0:e1a608bb55e8 20
jamesadevine 0:e1a608bb55e8 21 #include <stdio.h>
jamesadevine 0:e1a608bb55e8 22
jamesadevine 0:e1a608bb55e8 23 #if defined(__ARMCC_VERSION) || defined(__ICCARM__)
jamesadevine 0:e1a608bb55e8 24 typedef int ssize_t;
jamesadevine 0:e1a608bb55e8 25 typedef long off_t;
jamesadevine 0:e1a608bb55e8 26
jamesadevine 0:e1a608bb55e8 27 #else
jamesadevine 0:e1a608bb55e8 28 # include <sys/types.h>
jamesadevine 0:e1a608bb55e8 29 #endif
jamesadevine 0:e1a608bb55e8 30
jamesadevine 0:e1a608bb55e8 31 namespace mbed {
jamesadevine 0:e1a608bb55e8 32
jamesadevine 0:e1a608bb55e8 33 /** An OO equivalent of the internal FILEHANDLE variable
jamesadevine 0:e1a608bb55e8 34 * and associated _sys_* functions.
jamesadevine 0:e1a608bb55e8 35 *
jamesadevine 0:e1a608bb55e8 36 * FileHandle is an abstract class, needing at least sys_write and
jamesadevine 0:e1a608bb55e8 37 * sys_read to be implmented for a simple interactive device.
jamesadevine 0:e1a608bb55e8 38 *
jamesadevine 0:e1a608bb55e8 39 * No one ever directly tals to/instanciates a FileHandle - it gets
jamesadevine 0:e1a608bb55e8 40 * created by FileSystem, and wrapped up by stdio.
jamesadevine 0:e1a608bb55e8 41 */
jamesadevine 0:e1a608bb55e8 42 class FileHandle {
jamesadevine 0:e1a608bb55e8 43
jamesadevine 0:e1a608bb55e8 44 public:
jamesadevine 0:e1a608bb55e8 45 /** Write the contents of a buffer to the file
jamesadevine 0:e1a608bb55e8 46 *
jamesadevine 0:e1a608bb55e8 47 * @param buffer the buffer to write from
jamesadevine 0:e1a608bb55e8 48 * @param length the number of characters to write
jamesadevine 0:e1a608bb55e8 49 *
jamesadevine 0:e1a608bb55e8 50 * @returns
jamesadevine 0:e1a608bb55e8 51 * The number of characters written (possibly 0) on success, -1 on error.
jamesadevine 0:e1a608bb55e8 52 */
jamesadevine 0:e1a608bb55e8 53 virtual ssize_t write(const void* buffer, size_t length) = 0;
jamesadevine 0:e1a608bb55e8 54
jamesadevine 0:e1a608bb55e8 55 /** Close the file
jamesadevine 0:e1a608bb55e8 56 *
jamesadevine 0:e1a608bb55e8 57 * @returns
jamesadevine 0:e1a608bb55e8 58 * Zero on success, -1 on error.
jamesadevine 0:e1a608bb55e8 59 */
jamesadevine 0:e1a608bb55e8 60 virtual int close() = 0;
jamesadevine 0:e1a608bb55e8 61
jamesadevine 0:e1a608bb55e8 62 /** Function read
jamesadevine 0:e1a608bb55e8 63 * Reads the contents of the file into a buffer
jamesadevine 0:e1a608bb55e8 64 *
jamesadevine 0:e1a608bb55e8 65 * @param buffer the buffer to read in to
jamesadevine 0:e1a608bb55e8 66 * @param length the number of characters to read
jamesadevine 0:e1a608bb55e8 67 *
jamesadevine 0:e1a608bb55e8 68 * @returns
jamesadevine 0:e1a608bb55e8 69 * The number of characters read (zero at end of file) on success, -1 on error.
jamesadevine 0:e1a608bb55e8 70 */
jamesadevine 0:e1a608bb55e8 71 virtual ssize_t read(void* buffer, size_t length) = 0;
jamesadevine 0:e1a608bb55e8 72
jamesadevine 0:e1a608bb55e8 73 /** Check if the handle is for a interactive terminal device.
jamesadevine 0:e1a608bb55e8 74 * If so, line buffered behaviour is used by default
jamesadevine 0:e1a608bb55e8 75 *
jamesadevine 0:e1a608bb55e8 76 * @returns
jamesadevine 0:e1a608bb55e8 77 * 1 if it is a terminal,
jamesadevine 0:e1a608bb55e8 78 * 0 otherwise
jamesadevine 0:e1a608bb55e8 79 */
jamesadevine 0:e1a608bb55e8 80 virtual int isatty() = 0;
jamesadevine 0:e1a608bb55e8 81
jamesadevine 0:e1a608bb55e8 82 /** Move the file position to a given offset from a given location.
jamesadevine 0:e1a608bb55e8 83 *
jamesadevine 0:e1a608bb55e8 84 * @param offset The offset from whence to move to
jamesadevine 0:e1a608bb55e8 85 * @param whence SEEK_SET for the start of the file, SEEK_CUR for the
jamesadevine 0:e1a608bb55e8 86 * current file position, or SEEK_END for the end of the file.
jamesadevine 0:e1a608bb55e8 87 *
jamesadevine 0:e1a608bb55e8 88 * @returns
jamesadevine 0:e1a608bb55e8 89 * new file position on success,
jamesadevine 0:e1a608bb55e8 90 * -1 on failure or unsupported
jamesadevine 0:e1a608bb55e8 91 */
jamesadevine 0:e1a608bb55e8 92 virtual off_t lseek(off_t offset, int whence) = 0;
jamesadevine 0:e1a608bb55e8 93
jamesadevine 0:e1a608bb55e8 94 /** Flush any buffers associated with the FileHandle, ensuring it
jamesadevine 0:e1a608bb55e8 95 * is up to date on disk
jamesadevine 0:e1a608bb55e8 96 *
jamesadevine 0:e1a608bb55e8 97 * @returns
jamesadevine 0:e1a608bb55e8 98 * 0 on success or un-needed,
jamesadevine 0:e1a608bb55e8 99 * -1 on error
jamesadevine 0:e1a608bb55e8 100 */
jamesadevine 0:e1a608bb55e8 101 virtual int fsync() = 0;
jamesadevine 0:e1a608bb55e8 102
jamesadevine 0:e1a608bb55e8 103 virtual off_t flen() {
jamesadevine 0:e1a608bb55e8 104 /* remember our current position */
jamesadevine 0:e1a608bb55e8 105 off_t pos = lseek(0, SEEK_CUR);
jamesadevine 0:e1a608bb55e8 106 if(pos == -1) return -1;
jamesadevine 0:e1a608bb55e8 107 /* seek to the end to get the file length */
jamesadevine 0:e1a608bb55e8 108 off_t res = lseek(0, SEEK_END);
jamesadevine 0:e1a608bb55e8 109 /* return to our old position */
jamesadevine 0:e1a608bb55e8 110 lseek(pos, SEEK_SET);
jamesadevine 0:e1a608bb55e8 111 return res;
jamesadevine 0:e1a608bb55e8 112 }
jamesadevine 0:e1a608bb55e8 113
jamesadevine 0:e1a608bb55e8 114 virtual ~FileHandle();
jamesadevine 0:e1a608bb55e8 115 };
jamesadevine 0:e1a608bb55e8 116
jamesadevine 0:e1a608bb55e8 117 } // namespace mbed
jamesadevine 0:e1a608bb55e8 118
jamesadevine 0:e1a608bb55e8 119 #endif