adapted to Keil uVision
Fork of MODSERIAL by
Embed:
(wiki syntax)
Show/hide line numbers
ChangeLog.c
00001 /* $Id:$ 00002 00003 1.25 8th January 2013 00004 00005 * Bring back into line with MBed libraries. 00006 * Credits: 00007 Erik Olieman : http://mbed.org/users/Sissors/code/MODSERIAL/rev/3ba4341d74d6 00008 Erik Olieman : http://mbed.org/users/Sissors/code/MODSERIAL/rev/a469aa702bab 00009 00010 00011 1.24 6th Dec 2012 00012 00013 * Beta release for new Mbed library. 00014 00015 1.23 25th July 2012 00016 00017 * LPC1768 code as was. This release includes "alpha" support for the LPC11U24 00018 00019 1.22 19th April 2012 00020 00021 * http://mbed.org/forum/bugs-suggestions/topic/2936/ 00022 * Bug fix, protect important buffer pointers from IRQ corruption. 00023 * Credits: 00024 Anthony Wieser http://mbed.org/users/WieserSoftwareLtd/ for the fix. 00025 BlazeX http://mbed.org/users/BlazeX/ for the alert that a fix was needed! 00026 00027 1.21 10 May 2011 00028 00029 * http://mbed.org/forum/mbed/topic/2264 00030 00031 1.20 26 April 2011 00032 00033 * Bug fix, not blocking on transmit 00034 by Erik Petrich, http://mbed.org/forum/bugs-suggestions/topic/2200 00035 00036 1.19 20 April 2011 00037 00038 * Fixed some doxygen comment bugs. 00039 00040 1.18 20 April 2011 00041 00042 * All callbacks now use MODSERIAL_callback (rather than Mbed's FunctionPointer[1] type) 00043 to store and invoke it's callbacks. This allows MODSERIAL to pass a parameter 00044 to callbacks. The function prototype is now void func(MODSERIAL_IRQ_INFO *q). 00045 * Callbacks now pass a pointer to a MODSERIAL_IRQ_INFO class type. 00046 This class holds a pointer to the MODSERIAL object that invoked the callback 00047 thus freeing callbacks need to use the global variable of the original 00048 MODSERIAL instance. 00049 * MODSERIAL_IRQ_INFO also declares public functions that are protected within MODSERIAL 00050 thus allowing certain functions to be restricted to callback context only. 00051 * New function MODSERIAL_IRQ_INFO::rxDiscardLastChar() allows an rxCallback function 00052 to remove the character that was just placed into the RX buffer. 00053 00054 [1] http://mbed.org/users/AjK/libraries/FPointer/latest/docs/ 00055 00056 1.17 08/Mar/2011 00057 Fixed a memory leak in the DMA code. 00058 00059 1.16 - 12 Feb 2011 00060 00061 * Missed one, doh! 00062 00063 1.15 - 12 Feb 2011 00064 00065 * Fixed some typos. 00066 00067 1.14 - 7 Feb 2011 00068 00069 * Fixed a bug in __putc() that caused the output buffer pointer to 00070 become corrupted. 00071 00072 1.13 - 20/01/2011 00073 00074 * Added extra documentation. 00075 * Fixed some typos. 00076 00077 1.12 - 20/01/2011 00078 00079 * Added new "autoDetectChar()" function. To use:- 00080 1st: Add a callback to invoke when the char is detected:- 00081 .attach(&detectedChar, MODSERIAL::RxAutoDetect); 00082 2nd: Send the char to detect. 00083 .autoDectectChar('\n'); 00084 Whenever that char goes into the RX buffer your callback will be invoked. 00085 Added example2.cpp to demo a simple messaging system using this auto feature. 00086 00087 00088 1.11 - 23/11/2010 00089 00090 * Fixed a minor issue with 1.10 missed an alteration of name change. 00091 00092 1.10 - 23/11/2010 00093 00094 * Rename the DMA callback from attach_dma_complete() to attach_dmaSendComplete() 00095 00096 1.9 - 23/11/2010 00097 00098 * Added support for DMA sending of characters. Required is 00099 the MODDMA library module:- 00100 http://mbed.org/users/AjK/libraries/MODDMA/latest 00101 See example_dma.cpp for more information. 00102 00103 1.8 - 22/11/2010 00104 00105 * Added code so that if a buffer is set to zero length then 00106 MODSERIAL defaults to just using the FIFO for that stream 00107 thus making the library "fall back" to teh same operation 00108 that the Mbed Serial library performs. 00109 * Removed dmaSend() function that should have been removed 00110 at 1.7 00111 00112 1.7 - 21/11/2010 00113 00114 * Remove the DMA enum from MODSERIAL.h as it's not currently 00115 ready for release. 00116 * Added page doxygen comments. 00117 00118 1.6 - 21/11/2010 00119 00120 * Version 1.5 solved a blocking problem on putc() when called 00121 from another ISR. However, isr_tx() invokes a callback of it's 00122 own when a byte is tranferred from TX buffer to TX FIFO. User 00123 programs may interpret that as an IRQ callback. That's an ISR 00124 call from within an existing ISR which is not good. So the 00125 TxIrq callback from isr_tx is now conditional. It will only 00126 be called when isr_tx() is actually within it's own ISR and 00127 not when called from alternate ISR handlers. 00128 00129 1.5 - 21/11/2010 00130 00131 * Calling putc() (or any derived function that uses it like 00132 printf()) while inside an interrupt service routine can 00133 cause the system to lock up if the TX buffer is full. This 00134 is because bytes are only transferred from the TX buffer to 00135 the TX FIFO via the TX ISR. If we are, say in an RX ISR already, 00136 then the TX ISR will never trigger. The TX buffer stays full and 00137 there is never space to putc() the byte. So, while putc() blocks 00138 waiting for space it calls isr_tx() to ensure if TX FIFO space 00139 becomes available it will move bytes from the TX buffer to TX 00140 FIFO thus removing the blocking condition within putc(). 00141 00142 1.4 - 21/11/2010 00143 00144 * Removed all the new DMA code. I wish mbed.org had proper SVN 00145 versioning, I'm use to working in HEAD and BRANCHES after I've 00146 released a project. Getting bug reports in current releases 00147 while trying to dev new code is hard to manage without source 00148 control of some type! 00149 00150 1.3 - 21/11/2010 00151 00152 * Fixed a macro problem with txIsBusy() 00153 * Started adding code to use "block data" sending using DMA 00154 * Removed #include "IOMACROS.h" 00155 00156 1.2 - 21/11/2010 00157 00158 * Removed unsed variables from flushBuffer() 00159 * Fixed a bug where both RX AND TX fifos are cleared/reset 00160 when just TX OR RX should be cleared. 00161 * Fixed a bug that cleared IIR when in fact it should be left 00162 alone so that any pending interrupt after flush is handled. 00163 * Merged setBase() into init() as it wasn't required anywhere else. 00164 * Changed init() to enforce _uidx is set by Serial to define the _base 00165 address of the Uart in use. 00166 00167 1.1 - 20/11/2010 00168 00169 * Added this file 00170 * Removed cruft from GETC.cpp 00171 * "teh" should be "the", why do my fingers do that? 00172 00173 1.0 - 20/11/2010 00174 00175 * First release. 00176 00177 */
Generated on Tue Jul 12 2022 21:30:50 by 1.7.2