code ax12 petit robot 12/05/2017

Fork of command_AX12_petit_robot_V3 by CRAC Team

Committer:
ClementBreteau
Date:
Fri May 12 14:35:09 2017 +0000
Revision:
7:ad4a19e26b84
Parent:
2:99b1cb0d9f5e
position ax12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SquirrelGod 2:99b1cb0d9f5e 1 /* mbed Microcontroller Library - FileHandler
SquirrelGod 2:99b1cb0d9f5e 2 * Copyright (c) 2007-2009 ARM Limited. All rights reserved.
SquirrelGod 2:99b1cb0d9f5e 3 */
SquirrelGod 2:99b1cb0d9f5e 4
SquirrelGod 2:99b1cb0d9f5e 5 #ifndef MBED_FILEHANDLE_H
SquirrelGod 2:99b1cb0d9f5e 6 #define MBED_FILEHANDLE_H
SquirrelGod 2:99b1cb0d9f5e 7
SquirrelGod 2:99b1cb0d9f5e 8 typedef int FILEHANDLE;
SquirrelGod 2:99b1cb0d9f5e 9
SquirrelGod 2:99b1cb0d9f5e 10 #include <stdio.h>
SquirrelGod 2:99b1cb0d9f5e 11 #ifdef __ARMCC_VERSION
SquirrelGod 2:99b1cb0d9f5e 12 typedef int ssize_t;
SquirrelGod 2:99b1cb0d9f5e 13 typedef long off_t;
SquirrelGod 2:99b1cb0d9f5e 14 #else
SquirrelGod 2:99b1cb0d9f5e 15 #include <sys/types.h>
SquirrelGod 2:99b1cb0d9f5e 16 #endif
SquirrelGod 2:99b1cb0d9f5e 17
SquirrelGod 2:99b1cb0d9f5e 18 namespace mbed {
SquirrelGod 2:99b1cb0d9f5e 19
SquirrelGod 2:99b1cb0d9f5e 20 /* Class FileHandle
SquirrelGod 2:99b1cb0d9f5e 21 * An OO equivalent of the internal FILEHANDLE variable
SquirrelGod 2:99b1cb0d9f5e 22 * and associated _sys_* functions
SquirrelGod 2:99b1cb0d9f5e 23 *
SquirrelGod 2:99b1cb0d9f5e 24 * FileHandle is an abstract class, needing at least sys_write and
SquirrelGod 2:99b1cb0d9f5e 25 * sys_read to be implmented for a simple interactive device
SquirrelGod 2:99b1cb0d9f5e 26 *
SquirrelGod 2:99b1cb0d9f5e 27 * No one ever directly tals to/instanciates a FileHandle - it gets
SquirrelGod 2:99b1cb0d9f5e 28 * created by FileSystem, and wrapped up by stdio
SquirrelGod 2:99b1cb0d9f5e 29 */
SquirrelGod 2:99b1cb0d9f5e 30 class FileHandle {
SquirrelGod 2:99b1cb0d9f5e 31
SquirrelGod 2:99b1cb0d9f5e 32 public:
SquirrelGod 2:99b1cb0d9f5e 33
SquirrelGod 2:99b1cb0d9f5e 34 /* Function write
SquirrelGod 2:99b1cb0d9f5e 35 * Write the contents of a buffer to the file
SquirrelGod 2:99b1cb0d9f5e 36 *
SquirrelGod 2:99b1cb0d9f5e 37 * Parameters
SquirrelGod 2:99b1cb0d9f5e 38 * buffer - the buffer to write from
SquirrelGod 2:99b1cb0d9f5e 39 * length - the number of characters to write
SquirrelGod 2:99b1cb0d9f5e 40 *
SquirrelGod 2:99b1cb0d9f5e 41 * Returns
SquirrelGod 2:99b1cb0d9f5e 42 * The number of characters written (possibly 0) on success, -1 on error.
SquirrelGod 2:99b1cb0d9f5e 43 */
SquirrelGod 2:99b1cb0d9f5e 44 virtual ssize_t write(const void* buffer, size_t length) = 0;
SquirrelGod 2:99b1cb0d9f5e 45
SquirrelGod 2:99b1cb0d9f5e 46 /* Function close
SquirrelGod 2:99b1cb0d9f5e 47 * Close the file
SquirrelGod 2:99b1cb0d9f5e 48 *
SquirrelGod 2:99b1cb0d9f5e 49 * Returns
SquirrelGod 2:99b1cb0d9f5e 50 * Zero on success, -1 on error.
SquirrelGod 2:99b1cb0d9f5e 51 */
SquirrelGod 2:99b1cb0d9f5e 52 virtual int close() = 0;
SquirrelGod 2:99b1cb0d9f5e 53
SquirrelGod 2:99b1cb0d9f5e 54 /* Function read
SquirrelGod 2:99b1cb0d9f5e 55 * Reads the contents of the file into a buffer
SquirrelGod 2:99b1cb0d9f5e 56 *
SquirrelGod 2:99b1cb0d9f5e 57 * Parameters
SquirrelGod 2:99b1cb0d9f5e 58 * buffer - the buffer to read in to
SquirrelGod 2:99b1cb0d9f5e 59 * length - the number of characters to read
SquirrelGod 2:99b1cb0d9f5e 60 *
SquirrelGod 2:99b1cb0d9f5e 61 * Returns
SquirrelGod 2:99b1cb0d9f5e 62 * The number of characters read (zero at end of file) on success, -1 on error.
SquirrelGod 2:99b1cb0d9f5e 63 */
SquirrelGod 2:99b1cb0d9f5e 64 virtual ssize_t read(void* buffer, size_t length) = 0;
SquirrelGod 2:99b1cb0d9f5e 65
SquirrelGod 2:99b1cb0d9f5e 66 /* Function isatty
SquirrelGod 2:99b1cb0d9f5e 67 * Check if the handle is for a interactive terminal device
SquirrelGod 2:99b1cb0d9f5e 68 *
SquirrelGod 2:99b1cb0d9f5e 69 * If so, line buffered behaviour is used by default
SquirrelGod 2:99b1cb0d9f5e 70 *
SquirrelGod 2:99b1cb0d9f5e 71 * Returns
SquirrelGod 2:99b1cb0d9f5e 72 * 1 if it is a terminal, 0 otherwise
SquirrelGod 2:99b1cb0d9f5e 73 */
SquirrelGod 2:99b1cb0d9f5e 74 virtual int isatty() = 0 ;
SquirrelGod 2:99b1cb0d9f5e 75
SquirrelGod 2:99b1cb0d9f5e 76 /* Function lseek
SquirrelGod 2:99b1cb0d9f5e 77 * Move the file position to a given offset from a given location.
SquirrelGod 2:99b1cb0d9f5e 78 *
SquirrelGod 2:99b1cb0d9f5e 79 * Parameters
SquirrelGod 2:99b1cb0d9f5e 80 * offset - The offset from whence to move to
SquirrelGod 2:99b1cb0d9f5e 81 * whence - SEEK_SET for the start of the file, SEEK_CUR for the
SquirrelGod 2:99b1cb0d9f5e 82 * current file position, or SEEK_END for the end of the file.
SquirrelGod 2:99b1cb0d9f5e 83 *
SquirrelGod 2:99b1cb0d9f5e 84 * Returns
SquirrelGod 2:99b1cb0d9f5e 85 * New file position on success, -1 on failure or unsupported
SquirrelGod 2:99b1cb0d9f5e 86 */
SquirrelGod 2:99b1cb0d9f5e 87 virtual off_t lseek(off_t offset, int whence) = 0;
SquirrelGod 2:99b1cb0d9f5e 88
SquirrelGod 2:99b1cb0d9f5e 89 /* Function fsync
SquirrelGod 2:99b1cb0d9f5e 90 * Flush any buffers associated with the FileHandle, ensuring it
SquirrelGod 2:99b1cb0d9f5e 91 * is up to date on disk
SquirrelGod 2:99b1cb0d9f5e 92 *
SquirrelGod 2:99b1cb0d9f5e 93 * Returns
SquirrelGod 2:99b1cb0d9f5e 94 * 0 on success or un-needed, -1 on error
SquirrelGod 2:99b1cb0d9f5e 95 */
SquirrelGod 2:99b1cb0d9f5e 96 virtual int fsync() = 0;
SquirrelGod 2:99b1cb0d9f5e 97
SquirrelGod 2:99b1cb0d9f5e 98 virtual off_t flen() {
SquirrelGod 2:99b1cb0d9f5e 99 /* remember our current position */
SquirrelGod 2:99b1cb0d9f5e 100 off_t pos = lseek(0, SEEK_CUR);
SquirrelGod 2:99b1cb0d9f5e 101 if(pos == -1) return -1;
SquirrelGod 2:99b1cb0d9f5e 102 /* seek to the end to get the file length */
SquirrelGod 2:99b1cb0d9f5e 103 off_t res = lseek(0, SEEK_END);
SquirrelGod 2:99b1cb0d9f5e 104 /* return to our old position */
SquirrelGod 2:99b1cb0d9f5e 105 lseek(pos, SEEK_SET);
SquirrelGod 2:99b1cb0d9f5e 106 return res;
SquirrelGod 2:99b1cb0d9f5e 107 }
SquirrelGod 2:99b1cb0d9f5e 108
SquirrelGod 2:99b1cb0d9f5e 109 };
SquirrelGod 2:99b1cb0d9f5e 110
SquirrelGod 2:99b1cb0d9f5e 111 } // namespace mbed
SquirrelGod 2:99b1cb0d9f5e 112
SquirrelGod 2:99b1cb0d9f5e 113 #endif
SquirrelGod 2:99b1cb0d9f5e 114