Aukie Hooglugt / MODSERIAL-

Fork of MODSERIAL by Erik -

Committer:
Hooglugt
Date:
Fri Oct 03 09:16:32 2014 +0000
Revision:
36:f6cba765d331
Parent:
32:f42def64c4ee
changed method to check if script works (led display, certain light activating at selection to pc.printf, text display in realterm)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AjK 1:b7e435fbfe8e 1 /* $Id:$
Sissors 32:f42def64c4ee 2 1.32 12th October 2013
Sissors 32:f42def64c4ee 3 * Improved claim documentation: http://mbed.org/questions/1817/Redirect-stdout-via-MODSERIAL-is-this-po/ by http://mbed.org/users/WiredHome/
Sissors 32:f42def64c4ee 4
Sissors 31:b90b20f78f04 5 1.31 11th October 2013
Sissors 31:b90b20f78f04 6 * Added claim function to redirect for example stdout
Sissors 31:b90b20f78f04 7
Sissors 30:b04ce87dc424 8 1.30 1st September 2013
Sissors 30:b04ce87dc424 9 * Removed all DMA related code (not supported in this version currently)
Sissors 30:b04ce87dc424 10 * Minor bug fix
Sissors 30:b04ce87dc424 11
Sissors 29:9a41078f0488 12 1.29 12th July 2013
Sissors 29:9a41078f0488 13 * Added KL25Z support + split code in device dependent and independent part
Sissors 29:9a41078f0488 14
Sissors 26:91e4dba7ebe2 15 1.26 10th June 2013
Sissors 26:91e4dba7ebe2 16 * _uidx reference in DMA code replaced by _serial.index
AjK 2:b936b4acbd92 17
AjK 25:ae0408ebdd68 18 1.25 8th January 2013
AjK 25:ae0408ebdd68 19
AjK 25:ae0408ebdd68 20 * Bring back into line with MBed libraries.
AjK 25:ae0408ebdd68 21 * Credits:
AjK 25:ae0408ebdd68 22 Erik Olieman : http://mbed.org/users/Sissors/code/MODSERIAL/rev/3ba4341d74d6
AjK 25:ae0408ebdd68 23 Erik Olieman : http://mbed.org/users/Sissors/code/MODSERIAL/rev/a469aa702bab
AjK 25:ae0408ebdd68 24
AjK 25:ae0408ebdd68 25
AjK 24:9c456e647a8f 26 1.24 6th Dec 2012
AjK 25:ae0408ebdd68 27
AjK 25:ae0408ebdd68 28 * Beta release for new Mbed library.
AjK 24:9c456e647a8f 29
AjK 23:5c45c21f36b7 30 1.23 25th July 2012
AjK 23:5c45c21f36b7 31
AjK 23:5c45c21f36b7 32 * LPC1768 code as was. This release includes "alpha" support for the LPC11U24
AjK 23:5c45c21f36b7 33
AjK 22:c11ea36f17f9 34 1.22 19th April 2012
AjK 22:c11ea36f17f9 35
AjK 22:c11ea36f17f9 36 * http://mbed.org/forum/bugs-suggestions/topic/2936/
AjK 22:c11ea36f17f9 37 * Bug fix, protect important buffer pointers from IRQ corruption.
AjK 25:ae0408ebdd68 38 * Credits:
AjK 22:c11ea36f17f9 39 Anthony Wieser http://mbed.org/users/WieserSoftwareLtd/ for the fix.
AjK 22:c11ea36f17f9 40 BlazeX http://mbed.org/users/BlazeX/ for the alert that a fix was needed!
AjK 22:c11ea36f17f9 41
AjK 21:af2af4c61c2f 42 1.21 10 May 2011
AjK 21:af2af4c61c2f 43
AjK 21:af2af4c61c2f 44 * http://mbed.org/forum/mbed/topic/2264
AjK 21:af2af4c61c2f 45
AjK 20:59c74aaedda2 46 1.20 26 April 2011
AjK 20:59c74aaedda2 47
AjK 20:59c74aaedda2 48 * Bug fix, not blocking on transmit
AjK 20:59c74aaedda2 49 by Erik Petrich, http://mbed.org/forum/bugs-suggestions/topic/2200
AjK 20:59c74aaedda2 50
AjK 20:59c74aaedda2 51 1.19 20 April 2011
AjK 20:59c74aaedda2 52
AjK 20:59c74aaedda2 53 * Fixed some doxygen comment bugs.
AjK 20:59c74aaedda2 54
AjK 18:21ef26402365 55 1.18 20 April 2011
AjK 18:21ef26402365 56
AjK 18:21ef26402365 57 * All callbacks now use MODSERIAL_callback (rather than Mbed's FunctionPointer[1] type)
AjK 18:21ef26402365 58 to store and invoke it's callbacks. This allows MODSERIAL to pass a parameter
AjK 18:21ef26402365 59 to callbacks. The function prototype is now void func(MODSERIAL_IRQ_INFO *q).
AjK 18:21ef26402365 60 * Callbacks now pass a pointer to a MODSERIAL_IRQ_INFO class type.
AjK 18:21ef26402365 61 This class holds a pointer to the MODSERIAL object that invoked the callback
AjK 18:21ef26402365 62 thus freeing callbacks need to use the global variable of the original
AjK 18:21ef26402365 63 MODSERIAL instance.
AjK 18:21ef26402365 64 * MODSERIAL_IRQ_INFO also declares public functions that are protected within MODSERIAL
AjK 18:21ef26402365 65 thus allowing certain functions to be restricted to callback context only.
AjK 18:21ef26402365 66 * New function MODSERIAL_IRQ_INFO::rxDiscardLastChar() allows an rxCallback function
AjK 18:21ef26402365 67 to remove the character that was just placed into the RX buffer.
AjK 18:21ef26402365 68
AjK 18:21ef26402365 69 [1] http://mbed.org/users/AjK/libraries/FPointer/latest/docs/
AjK 18:21ef26402365 70
AjK 17:6c9b57c14868 71 1.17 08/Mar/2011
AjK 17:6c9b57c14868 72 Fixed a memory leak in the DMA code.
AjK 17:6c9b57c14868 73
AjK 16:8b1dbf4cce4e 74 1.16 - 12 Feb 2011
AjK 16:8b1dbf4cce4e 75
AjK 16:8b1dbf4cce4e 76 * Missed one, doh!
AjK 16:8b1dbf4cce4e 77
AjK 15:a1d9e745d71e 78 1.15 - 12 Feb 2011
AjK 15:a1d9e745d71e 79
AjK 15:a1d9e745d71e 80 * Fixed some typos.
AjK 15:a1d9e745d71e 81
AjK 14:3c3b87617bfe 82 1.14 - 7 Feb 2011
AjK 14:3c3b87617bfe 83
AjK 14:3c3b87617bfe 84 * Fixed a bug in __putc() that caused the output buffer pointer to
AjK 14:3c3b87617bfe 85 become corrupted.
AjK 14:3c3b87617bfe 86
AjK 13:70bb7c1769fa 87 1.13 - 20/01/2011
AjK 13:70bb7c1769fa 88
AjK 13:70bb7c1769fa 89 * Added extra documentation.
AjK 13:70bb7c1769fa 90 * Fixed some typos.
AjK 13:70bb7c1769fa 91
AjK 12:8c7394e2ae7f 92 1.12 - 20/01/2011
AjK 12:8c7394e2ae7f 93
AjK 12:8c7394e2ae7f 94 * Added new "autoDetectChar()" function. To use:-
AjK 12:8c7394e2ae7f 95 1st: Add a callback to invoke when the char is detected:-
AjK 12:8c7394e2ae7f 96 .attach(&detectedChar, MODSERIAL::RxAutoDetect);
AjK 12:8c7394e2ae7f 97 2nd: Send the char to detect.
AjK 12:8c7394e2ae7f 98 .autoDectectChar('\n');
AjK 12:8c7394e2ae7f 99 Whenever that char goes into the RX buffer your callback will be invoked.
AjK 12:8c7394e2ae7f 100 Added example2.cpp to demo a simple messaging system using this auto feature.
AjK 12:8c7394e2ae7f 101
AjK 12:8c7394e2ae7f 102
AjK 11:a93a62eeeb9d 103 1.11 - 23/11/2010
AjK 11:a93a62eeeb9d 104
AjK 11:a93a62eeeb9d 105 * Fixed a minor issue with 1.10 missed an alteration of name change.
AjK 11:a93a62eeeb9d 106
AjK 10:725fe81aa9ff 107 1.10 - 23/11/2010
AjK 10:725fe81aa9ff 108
AjK 18:21ef26402365 109 * Rename the DMA callback from attach_dma_complete() to attach_dmaSendComplete()
AjK 10:725fe81aa9ff 110
AjK 9:b3cdae80e7a9 111 1.9 - 23/11/2010
AjK 9:b3cdae80e7a9 112
AjK 9:b3cdae80e7a9 113 * Added support for DMA sending of characters. Required is
AjK 9:b3cdae80e7a9 114 the MODDMA library module:-
AjK 9:b3cdae80e7a9 115 http://mbed.org/users/AjK/libraries/MODDMA/latest
AjK 9:b3cdae80e7a9 116 See example_dma.cpp for more information.
AjK 9:b3cdae80e7a9 117
AjK 8:775f860e94d3 118 1.8 - 22/11/2010
AjK 8:775f860e94d3 119
AjK 8:775f860e94d3 120 * Added code so that if a buffer is set to zero length then
AjK 8:775f860e94d3 121 MODSERIAL defaults to just using the FIFO for that stream
AjK 8:775f860e94d3 122 thus making the library "fall back" to teh same operation
AjK 8:775f860e94d3 123 that the Mbed Serial library performs.
AjK 8:775f860e94d3 124 * Removed dmaSend() function that should have been removed
AjK 8:775f860e94d3 125 at 1.7
AjK 8:775f860e94d3 126
AjK 7:ffa4a7cb7f8d 127 1.7 - 21/11/2010
AjK 7:ffa4a7cb7f8d 128
AjK 7:ffa4a7cb7f8d 129 * Remove the DMA enum from MODSERIAL.h as it's not currently
AjK 7:ffa4a7cb7f8d 130 ready for release.
AjK 7:ffa4a7cb7f8d 131 * Added page doxygen comments.
AjK 7:ffa4a7cb7f8d 132
AjK 6:c8f77fe1cc10 133 1.6 - 21/11/2010
AjK 6:c8f77fe1cc10 134
AjK 6:c8f77fe1cc10 135 * Version 1.5 solved a blocking problem on putc() when called
AjK 6:c8f77fe1cc10 136 from another ISR. However, isr_tx() invokes a callback of it's
AjK 6:c8f77fe1cc10 137 own when a byte is tranferred from TX buffer to TX FIFO. User
AjK 6:c8f77fe1cc10 138 programs may interpret that as an IRQ callback. That's an ISR
AjK 6:c8f77fe1cc10 139 call from within an existing ISR which is not good. So the
AjK 6:c8f77fe1cc10 140 TxIrq callback from isr_tx is now conditional. It will only
AjK 6:c8f77fe1cc10 141 be called when isr_tx() is actually within it's own ISR and
AjK 6:c8f77fe1cc10 142 not when called from alternate ISR handlers.
AjK 6:c8f77fe1cc10 143
AjK 5:8365c4cf8f33 144 1.5 - 21/11/2010
AjK 5:8365c4cf8f33 145
AjK 5:8365c4cf8f33 146 * Calling putc() (or any derived function that uses it like
AjK 5:8365c4cf8f33 147 printf()) while inside an interrupt service routine can
AjK 5:8365c4cf8f33 148 cause the system to lock up if the TX buffer is full. This
AjK 5:8365c4cf8f33 149 is because bytes are only transferred from the TX buffer to
AjK 5:8365c4cf8f33 150 the TX FIFO via the TX ISR. If we are, say in an RX ISR already,
AjK 5:8365c4cf8f33 151 then the TX ISR will never trigger. The TX buffer stays full and
AjK 5:8365c4cf8f33 152 there is never space to putc() the byte. So, while putc() blocks
AjK 5:8365c4cf8f33 153 waiting for space it calls isr_tx() to ensure if TX FIFO space
AjK 5:8365c4cf8f33 154 becomes available it will move bytes from the TX buffer to TX
AjK 5:8365c4cf8f33 155 FIFO thus removing the blocking condition within putc().
AjK 5:8365c4cf8f33 156
AjK 4:28de979b77cf 157 1.4 - 21/11/2010
AjK 4:28de979b77cf 158
AjK 4:28de979b77cf 159 * Removed all the new DMA code. I wish mbed.org had proper SVN
AjK 4:28de979b77cf 160 versioning, I'm use to working in HEAD and BRANCHES after I've
AjK 4:28de979b77cf 161 released a project. Getting bug reports in current releases
AjK 4:28de979b77cf 162 while trying to dev new code is hard to manage without source
AjK 4:28de979b77cf 163 control of some type!
AjK 4:28de979b77cf 164
AjK 2:b936b4acbd92 165 1.3 - 21/11/2010
AjK 2:b936b4acbd92 166
AjK 2:b936b4acbd92 167 * Fixed a macro problem with txIsBusy()
AjK 2:b936b4acbd92 168 * Started adding code to use "block data" sending using DMA
AjK 3:0f10f536456e 169 * Removed #include "IOMACROS.h"
AjK 1:b7e435fbfe8e 170
AjK 2:b936b4acbd92 171 1.2 - 21/11/2010
AjK 2:b936b4acbd92 172
AjK 2:b936b4acbd92 173 * Removed unsed variables from flushBuffer()
AjK 2:b936b4acbd92 174 * Fixed a bug where both RX AND TX fifos are cleared/reset
AjK 2:b936b4acbd92 175 when just TX OR RX should be cleared.
AjK 2:b936b4acbd92 176 * Fixed a bug that cleared IIR when in fact it should be left
AjK 2:b936b4acbd92 177 alone so that any pending interrupt after flush is handled.
AjK 2:b936b4acbd92 178 * Merged setBase() into init() as it wasn't required anywhere else.
AjK 2:b936b4acbd92 179 * Changed init() to enforce _uidx is set by Serial to define the _base
AjK 2:b936b4acbd92 180 address of the Uart in use.
AjK 2:b936b4acbd92 181
AjK 1:b7e435fbfe8e 182 1.1 - 20/11/2010
AjK 1:b7e435fbfe8e 183
AjK 1:b7e435fbfe8e 184 * Added this file
AjK 1:b7e435fbfe8e 185 * Removed cruft from GETC.cpp
AjK 1:b7e435fbfe8e 186 * "teh" should be "the", why do my fingers do that?
AjK 1:b7e435fbfe8e 187
AjK 1:b7e435fbfe8e 188 1.0 - 20/11/2010
AjK 1:b7e435fbfe8e 189
AjK 1:b7e435fbfe8e 190 * First release.
AjK 1:b7e435fbfe8e 191
AjK 1:b7e435fbfe8e 192 */