diff options
author | William Chang <william@factual.com> | 2019-11-20 22:17:07 -0800 |
---|---|---|
committer | William Chang <william@factual.com> | 2019-11-20 22:17:07 -0800 |
commit | e7f4d56592b3975c38af329e77b4efd9108495e8 (patch) | |
tree | 0a416bccbf70bfdbdb9ffcdb3bf136b47378c014 /lib/lufa/LUFA/Drivers/Misc | |
parent | 71493b2f9bbd5f3d18373c518fa14ccafcbf48fc (diff) | |
parent | 8416a94ad27b3ff058576f09f35f0704a8b39ff3 (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'lib/lufa/LUFA/Drivers/Misc')
m--------- | lib/lufa | 0 | ||||
-rw-r--r-- | lib/lufa/LUFA/Drivers/Misc/AT45DB321C.h | 100 | ||||
-rw-r--r-- | lib/lufa/LUFA/Drivers/Misc/AT45DB642D.h | 116 | ||||
-rw-r--r-- | lib/lufa/LUFA/Drivers/Misc/RingBuffer.h | 308 | ||||
-rw-r--r-- | lib/lufa/LUFA/Drivers/Misc/TerminalCodes.h | 231 |
5 files changed, 0 insertions, 755 deletions
diff --git a/lib/lufa b/lib/lufa new file mode 160000 +Subproject ce10f7642b0459e409839b23cc91498945119b4 diff --git a/lib/lufa/LUFA/Drivers/Misc/AT45DB321C.h b/lib/lufa/LUFA/Drivers/Misc/AT45DB321C.h deleted file mode 100644 index e354ca47be..0000000000 --- a/lib/lufa/LUFA/Drivers/Misc/AT45DB321C.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Command constants for the Atmel AT45DB321C Dataflash. - * \copydetails Group_AT45DB321C - */ - -/** \ingroup Group_MiscDrivers - * \defgroup Group_AT45DB321C Atmel AT45DB321C Dataflash Commands - LUFA/Drivers/Misc/AT45DB321C.h - * \brief Command constants for the Atmel AT45DB321C Dataflash. - * - * Dataflash command constants for the Atmel AT45DB321C Dataflash IC. - * - * @{ - */ - -#ifndef __AT45DB321C_CMDS_H__ -#define __AT45DB321C_CMDS_H__ - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** \name Dataflash Status Values */ - //@{ - #define DF_STATUS_READY (1 << 7) - #define DF_STATUS_COMPMISMATCH (1 << 6) - #define DF_STATUS_SECTORPROTECTION_ON (1 << 1) - //@} - - /** \name Dataflash Commands */ - //@{ - #define DF_CMD_GETSTATUS 0xD7 - - #define DF_CMD_MAINMEMTOBUFF1 0x53 - #define DF_CMD_MAINMEMTOBUFF2 0x55 - #define DF_CMD_MAINMEMTOBUFF1COMP 0x60 - #define DF_CMD_MAINMEMTOBUFF2COMP 0x61 - #define DF_CMD_AUTOREWRITEBUFF1 0x58 - #define DF_CMD_AUTOREWRITEBUFF2 0x59 - - #define DF_CMD_MAINMEMPAGEREAD 0xD2 - #define DF_CMD_CONTARRAYREAD_LF 0xE8 - #define DF_CMD_BUFF1READ_LF 0xD4 - #define DF_CMD_BUFF2READ_LF 0xD6 - - #define DF_CMD_BUFF1WRITE 0x84 - #define DF_CMD_BUFF2WRITE 0x87 - #define DF_CMD_BUFF1TOMAINMEMWITHERASE 0x83 - #define DF_CMD_BUFF2TOMAINMEMWITHERASE 0x86 - #define DF_CMD_BUFF1TOMAINMEM 0x88 - #define DF_CMD_BUFF2TOMAINMEM 0x89 - #define DF_CMD_MAINMEMPAGETHROUGHBUFF1 0x82 - #define DF_CMD_MAINMEMPAGETHROUGHBUFF2 0x85 - - #define DF_CMD_PAGEERASE 0x81 - #define DF_CMD_BLOCKERASE 0x50 - - #define DF_CMD_SECTORPROTECTIONOFF ((char[]){0x3D, 0x2A, 0x7F, 0xCF}) - #define DF_CMD_SECTORPROTECTIONOFF_BYTE1 0x3D - #define DF_CMD_SECTORPROTECTIONOFF_BYTE2 0x2A - #define DF_CMD_SECTORPROTECTIONOFF_BYTE3 0x7F - #define DF_CMD_SECTORPROTECTIONOFF_BYTE4 0xCF - - #define DF_CMD_READMANUFACTURERDEVICEINFO 0x9F - //@} - - /** Manufacturer code for Atmel Corporation, returned by Atmel Dataflash ICs in response to the \c DF_CMD_READMANUFACTURERDEVICEINFO command. */ - #define DF_MANUFACTURER_ATMEL 0x1F - -#endif - -/** @} */ - diff --git a/lib/lufa/LUFA/Drivers/Misc/AT45DB642D.h b/lib/lufa/LUFA/Drivers/Misc/AT45DB642D.h deleted file mode 100644 index 76a7a5cb6c..0000000000 --- a/lib/lufa/LUFA/Drivers/Misc/AT45DB642D.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Command constants for the Atmel AT45DB642D Dataflash. - * \copydetails Group_AT45DB642D - */ - -/** \ingroup Group_MiscDrivers - * \defgroup Group_AT45DB642D Atmel AT45DB642D Dataflash Commands - LUFA/Drivers/Misc/AT45DB642D.h - * \brief Command constants for the Atmel AT45DB642D Dataflash. - * - * Dataflash command constants for the Atmel AT45DB642D Dataflash IC. - * - * @{ - */ - -#ifndef __AT45DB642D_CMDS_H__ -#define __AT45DB642D_CMDS_H__ - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** \name Dataflash Status Values */ - //@{ - #define DF_STATUS_READY (1 << 7) - #define DF_STATUS_COMPMISMATCH (1 << 6) - #define DF_STATUS_SECTORPROTECTION_ON (1 << 1) - #define DF_STATUS_BINARYPAGESIZE_ON (1 << 0) - //@} - - /** \name Dataflash Commands */ - //@{ - #define DF_CMD_GETSTATUS 0xD7 - #define DF_CMD_POWERDOWN 0xB9 - #define DF_CMD_WAKEUP 0xAB - - #define DF_CMD_MAINMEMTOBUFF1 0x53 - #define DF_CMD_MAINMEMTOBUFF2 0x55 - #define DF_CMD_MAINMEMTOBUFF1COMP 0x60 - #define DF_CMD_MAINMEMTOBUFF2COMP 0x61 - #define DF_CMD_AUTOREWRITEBUFF1 0x58 - #define DF_CMD_AUTOREWRITEBUFF2 0x59 - - #define DF_CMD_MAINMEMPAGEREAD 0xD2 - #define DF_CMD_CONTARRAYREAD_LF 0x03 - #define DF_CMD_BUFF1READ_LF 0xD1 - #define DF_CMD_BUFF2READ_LF 0xD3 - - #define DF_CMD_BUFF1WRITE 0x84 - #define DF_CMD_BUFF2WRITE 0x87 - #define DF_CMD_BUFF1TOMAINMEMWITHERASE 0x83 - #define DF_CMD_BUFF2TOMAINMEMWITHERASE 0x86 - #define DF_CMD_BUFF1TOMAINMEM 0x88 - #define DF_CMD_BUFF2TOMAINMEM 0x89 - #define DF_CMD_MAINMEMPAGETHROUGHBUFF1 0x82 - #define DF_CMD_MAINMEMPAGETHROUGHBUFF2 0x85 - - #define DF_CMD_PAGEERASE 0x81 - #define DF_CMD_BLOCKERASE 0x50 - #define DF_CMD_SECTORERASE 0x7C - - #define DF_CMD_CHIPERASE ((char[]){0xC7, 0x94, 0x80, 0x9A}) - #define DF_CMD_CHIPERASE_BYTE1 0xC7 - #define DF_CMD_CHIPERASE_BYTE2 0x94 - #define DF_CMD_CHIPERASE_BYTE3 0x80 - #define DF_CMD_CHIPERASE_BYTE4 0x9A - - #define DF_CMD_SECTORPROTECTIONOFF ((char[]){0x3D, 0x2A, 0x7F, 0x9A}) - #define DF_CMD_SECTORPROTECTIONOFF_BYTE1 0x3D - #define DF_CMD_SECTORPROTECTIONOFF_BYTE2 0x2A - #define DF_CMD_SECTORPROTECTIONOFF_BYTE3 0x7F - #define DF_CMD_SECTORPROTECTIONOFF_BYTE4 0x9A - - #define DF_CMD_BINARYPAGESIZEMODEON ((char[]){0x3D, 0x2A, 0x80, 0xA6}) - #define DF_CMD_BINARYPAGESIZEMODEON_BYTE1 0x3D - #define DF_CMD_BINARYPAGESIZEMODEON_BYTE2 0x2A - #define DF_CMD_BINARYPAGESIZEMODEON_BYTE3 0x80 - #define DF_CMD_BINARYPAGESIZEMODEON_BYTE4 0xA6 - - #define DF_CMD_READMANUFACTURERDEVICEINFO 0x9F - //@} - - /** Manufacturer code for Atmel Corporation, returned by Atmel Dataflash ICs in response to the \c DF_CMD_READMANUFACTURERDEVICEINFO command. */ - #define DF_MANUFACTURER_ATMEL 0x1F - -#endif - -/** @} */ - diff --git a/lib/lufa/LUFA/Drivers/Misc/RingBuffer.h b/lib/lufa/LUFA/Drivers/Misc/RingBuffer.h deleted file mode 100644 index 0e76a0779a..0000000000 --- a/lib/lufa/LUFA/Drivers/Misc/RingBuffer.h +++ /dev/null @@ -1,308 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Lightweight ring (circular) buffer, for fast insertion/deletion of bytes. - * - * Lightweight ring buffer, for fast insertion/deletion. Multiple buffers can be created of - * different sizes to suit different needs. - * - * Note that for each buffer, insertion and removal operations may occur at the same time (via - * a multi-threaded ISR based system) however the same kind of operation (two or more insertions - * or deletions) must not overlap. If there is possibility of two or more of the same kind of - * operating occurring at the same point in time, atomic (mutex) locking should be used. - */ - -/** \ingroup Group_MiscDrivers - * \defgroup Group_RingBuff Generic Byte Ring Buffer - LUFA/Drivers/Misc/RingBuffer.h - * \brief Lightweight ring buffer, for fast insertion/deletion of bytes. - * - * \section Sec_RingBuff_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - None - * - * \section Sec_RingBuff_ModDescription Module Description - * Lightweight ring buffer, for fast insertion/deletion. Multiple buffers can be created of - * different sizes to suit different needs. - * - * Note that for each buffer, insertion and removal operations may occur at the same time (via - * a multi-threaded ISR based system) however the same kind of operation (two or more insertions - * or deletions) must not overlap. If there is possibility of two or more of the same kind of - * operating occurring at the same point in time, atomic (mutex) locking should be used. - * - * \section Sec_RingBuff_ExampleUsage Example Usage - * The following snippet is an example of how this module may be used within a typical - * application. - * - * \code - * // Create the buffer structure and its underlying storage array - * RingBuffer_t Buffer; - * uint8_t BufferData[128]; - * - * // Initialize the buffer with the created storage array - * RingBuffer_InitBuffer(&Buffer, BufferData, sizeof(BufferData)); - * - * // Insert some data into the buffer - * RingBuffer_Insert(&Buffer, 'H'); - * RingBuffer_Insert(&Buffer, 'E'); - * RingBuffer_Insert(&Buffer, 'L'); - * RingBuffer_Insert(&Buffer, 'L'); - * RingBuffer_Insert(&Buffer, 'O'); - * - * // Cache the number of stored bytes in the buffer - * uint16_t BufferCount = RingBuffer_GetCount(&Buffer); - * - * // Printer stored data length - * printf("Buffer Length: %d, Buffer Data: \r\n", BufferCount); - * - * // Print contents of the buffer one character at a time - * while (BufferCount--) - * putc(RingBuffer_Remove(&Buffer)); - * \endcode - * - * @{ - */ - -#ifndef __RING_BUFFER_H__ -#define __RING_BUFFER_H__ - - /* Includes: */ - #include "../../Common/Common.h" - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Type Defines: */ - /** \brief Ring Buffer Management Structure. - * - * Type define for a new ring buffer object. Buffers should be initialized via a call to - * \ref RingBuffer_InitBuffer() before use. - */ - typedef struct - { - uint8_t* In; /**< Current storage location in the circular buffer. */ - uint8_t* Out; /**< Current retrieval location in the circular buffer. */ - uint8_t* Start; /**< Pointer to the start of the buffer's underlying storage array. */ - uint8_t* End; /**< Pointer to the end of the buffer's underlying storage array. */ - uint16_t Size; /**< Size of the buffer's underlying storage array. */ - uint16_t Count; /**< Number of bytes currently stored in the buffer. */ - } RingBuffer_t; - - /* Inline Functions: */ - /** Initializes a ring buffer ready for use. Buffers must be initialized via this function - * before any operations are called upon them. Already initialized buffers may be reset - * by re-initializing them using this function. - * - * \param[out] Buffer Pointer to a ring buffer structure to initialize. - * \param[out] DataPtr Pointer to a global array that will hold the data stored into the ring buffer. - * \param[out] Size Maximum number of bytes that can be stored in the underlying data array. - */ - static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer, - uint8_t* const DataPtr, - const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer, - uint8_t* const DataPtr, - const uint16_t Size) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->In = DataPtr; - Buffer->Out = DataPtr; - Buffer->Start = &DataPtr[0]; - Buffer->End = &DataPtr[Size]; - Buffer->Size = Size; - Buffer->Count = 0; - - SetGlobalInterruptMask(CurrentGlobalInt); - } - - /** Retrieves the current number of bytes stored in a particular buffer. This value is computed - * by entering an atomic lock on the buffer, so that the buffer cannot be modified while the - * computation takes place. This value should be cached when reading out the contents of the buffer, - * so that as small a time as possible is spent in an atomic lock. - * - * \note The value returned by this function is guaranteed to only be the minimum number of bytes - * stored in the given buffer; this value may change as other threads write new data, thus - * the returned number should be used only to determine how many successive reads may safely - * be performed on the buffer. - * - * \param[in] Buffer Pointer to a ring buffer structure whose count is to be computed. - * - * \return Number of bytes currently stored in the buffer. - */ - static inline uint16_t RingBuffer_GetCount(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1); - static inline uint16_t RingBuffer_GetCount(RingBuffer_t* const Buffer) - { - uint16_t Count; - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Count = Buffer->Count; - - SetGlobalInterruptMask(CurrentGlobalInt); - return Count; - } - - /** Retrieves the free space in a particular buffer. This value is computed by entering an atomic lock - * on the buffer, so that the buffer cannot be modified while the computation takes place. - * - * \note The value returned by this function is guaranteed to only be the maximum number of bytes - * free in the given buffer; this value may change as other threads write new data, thus - * the returned number should be used only to determine how many successive writes may safely - * be performed on the buffer when there is a single writer thread. - * - * \param[in] Buffer Pointer to a ring buffer structure whose free count is to be computed. - * - * \return Number of free bytes in the buffer. - */ - static inline uint16_t RingBuffer_GetFreeCount(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1); - static inline uint16_t RingBuffer_GetFreeCount(RingBuffer_t* const Buffer) - { - return (Buffer->Size - RingBuffer_GetCount(Buffer)); - } - - /** Atomically determines if the specified ring buffer contains any data. This should - * be tested before removing data from the buffer, to ensure that the buffer does not - * underflow. - * - * If the data is to be removed in a loop, store the total number of bytes stored in the - * buffer (via a call to the \ref RingBuffer_GetCount() function) in a temporary variable - * to reduce the time spent in atomicity locks. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to insert into. - * - * \return Boolean \c true if the buffer contains no free space, \c false otherwise. - */ - static inline bool RingBuffer_IsEmpty(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1); - static inline bool RingBuffer_IsEmpty(RingBuffer_t* const Buffer) - { - return (RingBuffer_GetCount(Buffer) == 0); - } - - /** Atomically determines if the specified ring buffer contains any free space. This should - * be tested before storing data to the buffer, to ensure that no data is lost due to a - * buffer overrun. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to insert into. - * - * \return Boolean \c true if the buffer contains no free space, \c false otherwise. - */ - static inline bool RingBuffer_IsFull(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1); - static inline bool RingBuffer_IsFull(RingBuffer_t* const Buffer) - { - return (RingBuffer_GetCount(Buffer) == Buffer->Size); - } - - /** Inserts an element into the ring buffer. - * - * \warning Only one execution thread (main program thread or an ISR) may insert into a single buffer - * otherwise data corruption may occur. Insertion and removal may occur from different execution - * threads. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to insert into. - * \param[in] Data Data element to insert into the buffer. - */ - static inline void RingBuffer_Insert(RingBuffer_t* Buffer, - const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1); - static inline void RingBuffer_Insert(RingBuffer_t* Buffer, - const uint8_t Data) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - - *Buffer->In = Data; - - if (++Buffer->In == Buffer->End) - Buffer->In = Buffer->Start; - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->Count++; - - SetGlobalInterruptMask(CurrentGlobalInt); - } - - /** Removes an element from the ring buffer. - * - * \warning Only one execution thread (main program thread or an ISR) may remove from a single buffer - * otherwise data corruption may occur. Insertion and removal may occur from different execution - * threads. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to retrieve from. - * - * \return Next data element stored in the buffer. - */ - static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) ATTR_NON_NULL_PTR_ARG(1); - static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - - uint8_t Data = *Buffer->Out; - - if (++Buffer->Out == Buffer->End) - Buffer->Out = Buffer->Start; - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->Count--; - - SetGlobalInterruptMask(CurrentGlobalInt); - - return Data; - } - - /** Returns the next element stored in the ring buffer, without removing it. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to retrieve from. - * - * \return Next data element stored in the buffer. - */ - static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1); - static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) - { - return *Buffer->Out; - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - diff --git a/lib/lufa/LUFA/Drivers/Misc/TerminalCodes.h b/lib/lufa/LUFA/Drivers/Misc/TerminalCodes.h deleted file mode 100644 index b12a247ed1..0000000000 --- a/lib/lufa/LUFA/Drivers/Misc/TerminalCodes.h +++ /dev/null @@ -1,231 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief ANSI terminal special escape code macros. - * - * ANSI terminal compatible escape sequences. These escape sequences are designed to be concatenated with existing - * strings to modify their display on a compatible terminal application. - */ - -/** \ingroup Group_MiscDrivers - * \defgroup Group_Terminal ANSI Terminal Escape Codes - LUFA/Drivers/Misc/TerminalCodes.h - * \brief ANSI terminal special escape code macros. - * - * \section Sec_Terminal_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - None - * - * \section Sec_Terminal_ModDescription Module Description - * Escape code macros for ANSI compliant text terminals. - * - * \note If desired, the macro \c DISABLE_TERMINAL_CODES can be defined in the project makefile and passed to the GCC - * compiler via the -D switch to disable the terminal codes without modifying the source, for use with non - * compatible terminals (any terminal codes then equate to empty strings). - * - * \section Sec_Terminal_ExampleUsage Example Usage - * The following snippet is an example of how this module may be used within a typical - * application. - * - * \code - * printf("Normal String, " - * ESC_BOLD_ON "Bold String, " - * ESC_UNDERLINE_ON "Bold and Underlined String" - * ESC_RESET ESC_FG_BLUE ESC_BG_YELLOW "Normal Blue-on-Yellow String"); - * \endcode - * - * @{ - */ - -#ifndef __TERMINALCODES_H__ -#define __TERMINALCODES_H__ - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - #if !defined(DISABLE_TERMINAL_CODES) - /** Creates an ANSI escape sequence with the specified payload. - * - * \param[in] EscapeSeq Payload to encode as an ANSI escape sequence, a \c ESC_* mask. - */ - #define ANSI_ESCAPE_SEQUENCE(EscapeSeq) "\33[" EscapeSeq - #else - #define ANSI_ESCAPE_SEQUENCE(EscapeSeq) - #endif - - /** \name Text Display Modifier Control Sequences */ - //@{ - /** Turns on bold so that any following text is printed to the terminal in bold. */ - #define ESC_BOLD_ON ANSI_ESCAPE_SEQUENCE("1m") - - /** Turns on italics so that any following text is printed to the terminal in italics. */ - #define ESC_ITALICS_ON ANSI_ESCAPE_SEQUENCE("3m") - - /** Turns on underline so that any following text is printed to the terminal underlined. */ - #define ESC_UNDERLINE_ON ANSI_ESCAPE_SEQUENCE("4m") - - /** Turns on inverse so that any following text is printed to the terminal in inverted colours. */ - #define ESC_INVERSE_ON ANSI_ESCAPE_SEQUENCE("7m") - - /** Turns on strike-through so that any following text is printed to the terminal with a line through the - * center. - */ - #define ESC_STRIKETHROUGH_ON ANSI_ESCAPE_SEQUENCE("9m") - - /** Turns off bold so that any following text is printed to the terminal in non bold. */ - #define ESC_BOLD_OFF ANSI_ESCAPE_SEQUENCE("22m") - - /** Turns off italics so that any following text is printed to the terminal in non italics. */ - #define ESC_ITALICS_OFF ANSI_ESCAPE_SEQUENCE("23m") - - /** Turns off underline so that any following text is printed to the terminal non underlined. */ - #define ESC_UNDERLINE_OFF ANSI_ESCAPE_SEQUENCE("24m") - - /** Turns off inverse so that any following text is printed to the terminal in non inverted colours. */ - #define ESC_INVERSE_OFF ANSI_ESCAPE_SEQUENCE("27m") - - /** Turns off strike-through so that any following text is printed to the terminal without a line through - * the center. - */ - #define ESC_STRIKETHROUGH_OFF ANSI_ESCAPE_SEQUENCE("29m") - //@} - - /** \name Text Colour Control Sequences */ - //@{ - /** Sets the foreground (text) colour to black. */ - #define ESC_FG_BLACK ANSI_ESCAPE_SEQUENCE("30m") - - /** Sets the foreground (text) colour to red. */ - #define ESC_FG_RED ANSI_ESCAPE_SEQUENCE("31m") - - /** Sets the foreground (text) colour to green. */ - #define ESC_FG_GREEN ANSI_ESCAPE_SEQUENCE("32m") - - /** Sets the foreground (text) colour to yellow. */ - #define ESC_FG_YELLOW ANSI_ESCAPE_SEQUENCE("33m") - - /** Sets the foreground (text) colour to blue. */ - #define ESC_FG_BLUE ANSI_ESCAPE_SEQUENCE("34m") - - /** Sets the foreground (text) colour to magenta. */ - #define ESC_FG_MAGENTA ANSI_ESCAPE_SEQUENCE("35m") - - /** Sets the foreground (text) colour to cyan. */ - #define ESC_FG_CYAN ANSI_ESCAPE_SEQUENCE("36m") - - /** Sets the foreground (text) colour to white. */ - #define ESC_FG_WHITE ANSI_ESCAPE_SEQUENCE("37m") - - /** Sets the foreground (text) colour to the terminal's default. */ - #define ESC_FG_DEFAULT ANSI_ESCAPE_SEQUENCE("39m") - - /** Sets the text background colour to black. */ - #define ESC_BG_BLACK ANSI_ESCAPE_SEQUENCE("40m") - - /** Sets the text background colour to red. */ - #define ESC_BG_RED ANSI_ESCAPE_SEQUENCE("41m") - - /** Sets the text background colour to green. */ - #define ESC_BG_GREEN ANSI_ESCAPE_SEQUENCE("42m") - - /** Sets the text background colour to yellow. */ - #define ESC_BG_YELLOW ANSI_ESCAPE_SEQUENCE("43m") - - /** Sets the text background colour to blue. */ - #define ESC_BG_BLUE ANSI_ESCAPE_SEQUENCE("44m") - - /** Sets the text background colour to magenta. */ - #define ESC_BG_MAGENTA ANSI_ESCAPE_SEQUENCE("45m") - - /** Sets the text background colour to cyan. */ - #define ESC_BG_CYAN ANSI_ESCAPE_SEQUENCE("46m") - - /** Sets the text background colour to white. */ - #define ESC_BG_WHITE ANSI_ESCAPE_SEQUENCE("47m") - - /** Sets the text background colour to the terminal's default. */ - #define ESC_BG_DEFAULT ANSI_ESCAPE_SEQUENCE("49m") - //@} - - /** \name Cursor Positioning Control Sequences */ - //@{ - /** Saves the current cursor position so that it may be restored with \ref ESC_CURSOR_POS_RESTORE. */ - #define ESC_CURSOR_POS_SAVE ANSI_ESCAPE_SEQUENCE("s") - - /** Restores the cursor position to the last position saved with \ref ESC_CURSOR_POS_SAVE. */ - #define ESC_CURSOR_POS_RESTORE ANSI_ESCAPE_SEQUENCE("u") - - /** Sets the cursor position to the given line and column. - * - * \param[in] Line Line number to position the cursor at. - * \param[in] Column Column number to position the cursor at. - */ - #define ESC_CURSOR_POS(Line, Column) ANSI_ESCAPE_SEQUENCE(#Line ";" #Column "H") - - /** Moves the cursor up the given number of lines. - * - * \param[in] Lines Number of lines to move the cursor position - */ - #define ESC_CURSOR_UP(Lines) ANSI_ESCAPE_SEQUENCE(#Lines "A") - - /** Moves the cursor down the given number of lines. - * - * \param[in] Lines Number of lines to move the cursor position - */ - #define ESC_CURSOR_DOWN(Lines) ANSI_ESCAPE_SEQUENCE(#Lines "B") - - /** Moves the cursor to the right the given number of columns. - * - * \param[in] Columns Number of columns to move the cursor position - */ - #define ESC_CURSOR_FORWARD(Columns) ANSI_ESCAPE_SEQUENCE(#Columns "C") - - /** Moves the cursor to the left the given number of columns. - * - * \param[in] Columns Number of columns to move the cursor position - */ - #define ESC_CURSOR_BACKWARD(Columns) ANSI_ESCAPE_SEQUENCE(#Columns "D") - //@} - - /** \name Miscellaneous Control Sequences */ - //@{ - /** Resets any escape sequence modifiers back to their defaults. */ - #define ESC_RESET ANSI_ESCAPE_SEQUENCE("0m") - - /** Erases the entire display, returning the cursor to the top left. */ - #define ESC_ERASE_DISPLAY ANSI_ESCAPE_SEQUENCE("2J") - - /** Erases the current line, returning the cursor to the far left. */ - #define ESC_ERASE_LINE ANSI_ESCAPE_SEQUENCE("K") - //@} - -#endif - -/** @} */ - |