Mike Panetta / Mbed 2 deprecated BeaconAvoid

Dependencies:   MODSERIAL PiSlingers m3pi mbed

Committer:
mpanetta
Date:
Wed Apr 04 17:07:49 2012 +0000
Revision:
0:9ac4a91b71fa
Initial commit.  Avoidance code complete, beacon code still needs to be added.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mpanetta 0:9ac4a91b71fa 1 /* $Id:$
mpanetta 0:9ac4a91b71fa 2
mpanetta 0:9ac4a91b71fa 3 1.21 10 May 2011
mpanetta 0:9ac4a91b71fa 4
mpanetta 0:9ac4a91b71fa 5 * http://mbed.org/forum/mbed/topic/2264
mpanetta 0:9ac4a91b71fa 6
mpanetta 0:9ac4a91b71fa 7 1.20 26 April 2011
mpanetta 0:9ac4a91b71fa 8
mpanetta 0:9ac4a91b71fa 9 * Bug fix, not blocking on transmit
mpanetta 0:9ac4a91b71fa 10 by Erik Petrich, http://mbed.org/forum/bugs-suggestions/topic/2200
mpanetta 0:9ac4a91b71fa 11
mpanetta 0:9ac4a91b71fa 12 1.19 20 April 2011
mpanetta 0:9ac4a91b71fa 13
mpanetta 0:9ac4a91b71fa 14 * Fixed some doxygen comment bugs.
mpanetta 0:9ac4a91b71fa 15
mpanetta 0:9ac4a91b71fa 16 1.18 20 April 2011
mpanetta 0:9ac4a91b71fa 17
mpanetta 0:9ac4a91b71fa 18 * All callbacks now use MODSERIAL_callback (rather than Mbed's FunctionPointer[1] type)
mpanetta 0:9ac4a91b71fa 19 to store and invoke it's callbacks. This allows MODSERIAL to pass a parameter
mpanetta 0:9ac4a91b71fa 20 to callbacks. The function prototype is now void func(MODSERIAL_IRQ_INFO *q).
mpanetta 0:9ac4a91b71fa 21 * Callbacks now pass a pointer to a MODSERIAL_IRQ_INFO class type.
mpanetta 0:9ac4a91b71fa 22 This class holds a pointer to the MODSERIAL object that invoked the callback
mpanetta 0:9ac4a91b71fa 23 thus freeing callbacks need to use the global variable of the original
mpanetta 0:9ac4a91b71fa 24 MODSERIAL instance.
mpanetta 0:9ac4a91b71fa 25 * MODSERIAL_IRQ_INFO also declares public functions that are protected within MODSERIAL
mpanetta 0:9ac4a91b71fa 26 thus allowing certain functions to be restricted to callback context only.
mpanetta 0:9ac4a91b71fa 27 * New function MODSERIAL_IRQ_INFO::rxDiscardLastChar() allows an rxCallback function
mpanetta 0:9ac4a91b71fa 28 to remove the character that was just placed into the RX buffer.
mpanetta 0:9ac4a91b71fa 29
mpanetta 0:9ac4a91b71fa 30 [1] http://mbed.org/users/AjK/libraries/FPointer/latest/docs/
mpanetta 0:9ac4a91b71fa 31
mpanetta 0:9ac4a91b71fa 32 1.17 08/Mar/2011
mpanetta 0:9ac4a91b71fa 33 Fixed a memory leak in the DMA code.
mpanetta 0:9ac4a91b71fa 34
mpanetta 0:9ac4a91b71fa 35 1.16 - 12 Feb 2011
mpanetta 0:9ac4a91b71fa 36
mpanetta 0:9ac4a91b71fa 37 * Missed one, doh!
mpanetta 0:9ac4a91b71fa 38
mpanetta 0:9ac4a91b71fa 39 1.15 - 12 Feb 2011
mpanetta 0:9ac4a91b71fa 40
mpanetta 0:9ac4a91b71fa 41 * Fixed some typos.
mpanetta 0:9ac4a91b71fa 42
mpanetta 0:9ac4a91b71fa 43 1.14 - 7 Feb 2011
mpanetta 0:9ac4a91b71fa 44
mpanetta 0:9ac4a91b71fa 45 * Fixed a bug in __putc() that caused the output buffer pointer to
mpanetta 0:9ac4a91b71fa 46 become corrupted.
mpanetta 0:9ac4a91b71fa 47
mpanetta 0:9ac4a91b71fa 48 1.13 - 20/01/2011
mpanetta 0:9ac4a91b71fa 49
mpanetta 0:9ac4a91b71fa 50 * Added extra documentation.
mpanetta 0:9ac4a91b71fa 51 * Fixed some typos.
mpanetta 0:9ac4a91b71fa 52
mpanetta 0:9ac4a91b71fa 53 1.12 - 20/01/2011
mpanetta 0:9ac4a91b71fa 54
mpanetta 0:9ac4a91b71fa 55 * Added new "autoDetectChar()" function. To use:-
mpanetta 0:9ac4a91b71fa 56 1st: Add a callback to invoke when the char is detected:-
mpanetta 0:9ac4a91b71fa 57 .attach(&detectedChar, MODSERIAL::RxAutoDetect);
mpanetta 0:9ac4a91b71fa 58 2nd: Send the char to detect.
mpanetta 0:9ac4a91b71fa 59 .autoDectectChar('\n');
mpanetta 0:9ac4a91b71fa 60 Whenever that char goes into the RX buffer your callback will be invoked.
mpanetta 0:9ac4a91b71fa 61 Added example2.cpp to demo a simple messaging system using this auto feature.
mpanetta 0:9ac4a91b71fa 62
mpanetta 0:9ac4a91b71fa 63
mpanetta 0:9ac4a91b71fa 64 1.11 - 23/11/2010
mpanetta 0:9ac4a91b71fa 65
mpanetta 0:9ac4a91b71fa 66 * Fixed a minor issue with 1.10 missed an alteration of name change.
mpanetta 0:9ac4a91b71fa 67
mpanetta 0:9ac4a91b71fa 68 1.10 - 23/11/2010
mpanetta 0:9ac4a91b71fa 69
mpanetta 0:9ac4a91b71fa 70 * Rename the DMA callback from attach_dma_complete() to attach_dmaSendComplete()
mpanetta 0:9ac4a91b71fa 71
mpanetta 0:9ac4a91b71fa 72 1.9 - 23/11/2010
mpanetta 0:9ac4a91b71fa 73
mpanetta 0:9ac4a91b71fa 74 * Added support for DMA sending of characters. Required is
mpanetta 0:9ac4a91b71fa 75 the MODDMA library module:-
mpanetta 0:9ac4a91b71fa 76 http://mbed.org/users/AjK/libraries/MODDMA/latest
mpanetta 0:9ac4a91b71fa 77 See example_dma.cpp for more information.
mpanetta 0:9ac4a91b71fa 78
mpanetta 0:9ac4a91b71fa 79 1.8 - 22/11/2010
mpanetta 0:9ac4a91b71fa 80
mpanetta 0:9ac4a91b71fa 81 * Added code so that if a buffer is set to zero length then
mpanetta 0:9ac4a91b71fa 82 MODSERIAL defaults to just using the FIFO for that stream
mpanetta 0:9ac4a91b71fa 83 thus making the library "fall back" to teh same operation
mpanetta 0:9ac4a91b71fa 84 that the Mbed Serial library performs.
mpanetta 0:9ac4a91b71fa 85 * Removed dmaSend() function that should have been removed
mpanetta 0:9ac4a91b71fa 86 at 1.7
mpanetta 0:9ac4a91b71fa 87
mpanetta 0:9ac4a91b71fa 88 1.7 - 21/11/2010
mpanetta 0:9ac4a91b71fa 89
mpanetta 0:9ac4a91b71fa 90 * Remove the DMA enum from MODSERIAL.h as it's not currently
mpanetta 0:9ac4a91b71fa 91 ready for release.
mpanetta 0:9ac4a91b71fa 92 * Added page doxygen comments.
mpanetta 0:9ac4a91b71fa 93
mpanetta 0:9ac4a91b71fa 94 1.6 - 21/11/2010
mpanetta 0:9ac4a91b71fa 95
mpanetta 0:9ac4a91b71fa 96 * Version 1.5 solved a blocking problem on putc() when called
mpanetta 0:9ac4a91b71fa 97 from another ISR. However, isr_tx() invokes a callback of it's
mpanetta 0:9ac4a91b71fa 98 own when a byte is tranferred from TX buffer to TX FIFO. User
mpanetta 0:9ac4a91b71fa 99 programs may interpret that as an IRQ callback. That's an ISR
mpanetta 0:9ac4a91b71fa 100 call from within an existing ISR which is not good. So the
mpanetta 0:9ac4a91b71fa 101 TxIrq callback from isr_tx is now conditional. It will only
mpanetta 0:9ac4a91b71fa 102 be called when isr_tx() is actually within it's own ISR and
mpanetta 0:9ac4a91b71fa 103 not when called from alternate ISR handlers.
mpanetta 0:9ac4a91b71fa 104
mpanetta 0:9ac4a91b71fa 105 1.5 - 21/11/2010
mpanetta 0:9ac4a91b71fa 106
mpanetta 0:9ac4a91b71fa 107 * Calling putc() (or any derived function that uses it like
mpanetta 0:9ac4a91b71fa 108 printf()) while inside an interrupt service routine can
mpanetta 0:9ac4a91b71fa 109 cause the system to lock up if the TX buffer is full. This
mpanetta 0:9ac4a91b71fa 110 is because bytes are only transferred from the TX buffer to
mpanetta 0:9ac4a91b71fa 111 the TX FIFO via the TX ISR. If we are, say in an RX ISR already,
mpanetta 0:9ac4a91b71fa 112 then the TX ISR will never trigger. The TX buffer stays full and
mpanetta 0:9ac4a91b71fa 113 there is never space to putc() the byte. So, while putc() blocks
mpanetta 0:9ac4a91b71fa 114 waiting for space it calls isr_tx() to ensure if TX FIFO space
mpanetta 0:9ac4a91b71fa 115 becomes available it will move bytes from the TX buffer to TX
mpanetta 0:9ac4a91b71fa 116 FIFO thus removing the blocking condition within putc().
mpanetta 0:9ac4a91b71fa 117
mpanetta 0:9ac4a91b71fa 118 1.4 - 21/11/2010
mpanetta 0:9ac4a91b71fa 119
mpanetta 0:9ac4a91b71fa 120 * Removed all the new DMA code. I wish mbed.org had proper SVN
mpanetta 0:9ac4a91b71fa 121 versioning, I'm use to working in HEAD and BRANCHES after I've
mpanetta 0:9ac4a91b71fa 122 released a project. Getting bug reports in current releases
mpanetta 0:9ac4a91b71fa 123 while trying to dev new code is hard to manage without source
mpanetta 0:9ac4a91b71fa 124 control of some type!
mpanetta 0:9ac4a91b71fa 125
mpanetta 0:9ac4a91b71fa 126 1.3 - 21/11/2010
mpanetta 0:9ac4a91b71fa 127
mpanetta 0:9ac4a91b71fa 128 * Fixed a macro problem with txIsBusy()
mpanetta 0:9ac4a91b71fa 129 * Started adding code to use "block data" sending using DMA
mpanetta 0:9ac4a91b71fa 130 * Removed #include "IOMACROS.h"
mpanetta 0:9ac4a91b71fa 131
mpanetta 0:9ac4a91b71fa 132 1.2 - 21/11/2010
mpanetta 0:9ac4a91b71fa 133
mpanetta 0:9ac4a91b71fa 134 * Removed unsed variables from flushBuffer()
mpanetta 0:9ac4a91b71fa 135 * Fixed a bug where both RX AND TX fifos are cleared/reset
mpanetta 0:9ac4a91b71fa 136 when just TX OR RX should be cleared.
mpanetta 0:9ac4a91b71fa 137 * Fixed a bug that cleared IIR when in fact it should be left
mpanetta 0:9ac4a91b71fa 138 alone so that any pending interrupt after flush is handled.
mpanetta 0:9ac4a91b71fa 139 * Merged setBase() into init() as it wasn't required anywhere else.
mpanetta 0:9ac4a91b71fa 140 * Changed init() to enforce _uidx is set by Serial to define the _base
mpanetta 0:9ac4a91b71fa 141 address of the Uart in use.
mpanetta 0:9ac4a91b71fa 142
mpanetta 0:9ac4a91b71fa 143 1.1 - 20/11/2010
mpanetta 0:9ac4a91b71fa 144
mpanetta 0:9ac4a91b71fa 145 * Added this file
mpanetta 0:9ac4a91b71fa 146 * Removed cruft from GETC.cpp
mpanetta 0:9ac4a91b71fa 147 * "teh" should be "the", why do my fingers do that?
mpanetta 0:9ac4a91b71fa 148
mpanetta 0:9ac4a91b71fa 149 1.0 - 20/11/2010
mpanetta 0:9ac4a91b71fa 150
mpanetta 0:9ac4a91b71fa 151 * First release.
mpanetta 0:9ac4a91b71fa 152
mpanetta 0:9ac4a91b71fa 153 */