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