MODSERIAL with support for more devices

Fork of MODSERIAL by Erik -

Files at this revision

API Documentation at this revision

Comitter:
Gary Servin
Date:
Tue Nov 17 12:11:44 2015 -0300
Parent:
40:6ffa97119f4f
Child:
42:4737f8a5b018
Commit message:
Add Support for Inforce's mbed PAC shield (based on the STM32F401RB)

Changed in this revision

Device/MODSERIAL_PAC_F401RB.cpp Show annotated file Show diff for this revision Revisions of this file
Device/MODSERIAL_PAC_F401RB.h Show annotated file Show diff for this revision Revisions of this file
MACROS.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Device/MODSERIAL_PAC_F401RB.cpp	Tue Nov 17 12:11:44 2015 -0300
@@ -0,0 +1,20 @@
+#ifdef TARGET_PAC_F401RB
+#include "MODSERIAL.h"
+
+void MODSERIAL::setBase(void ) {
+switch( _serial.index ) {
+        case 0: _base = USART1; _IRQ = USART1_IRQn; break;
+        case 1: _base = USART2; _IRQ = USART2_IRQn; break;
+        case 2: _base = USART6; _IRQ = USART6_IRQn; break;
+        default: _base = NULL; _IRQ = (IRQn_Type)NULL; break;
+    }
+}
+
+void MODSERIAL::initDevice(void) {};
+
+bool MODSERIAL::txIsBusy( void ) 
+{ 
+    return ( (((USART_TypeDef*)_base)->SR & ( 1UL << 6 )) == 0 ) ? true : false; 
+} 
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Device/MODSERIAL_PAC_F401RB.h	Tue Nov 17 12:11:44 2015 -0300
@@ -0,0 +1,20 @@
+#if defined(TARGET_PAC_F401RB)
+
+#define MODSERIAL_IRQ_REG ((USART_TypeDef*)_base)->CR1
+#define DISABLE_TX_IRQ MODSERIAL_IRQ_REG &= ~USART_CR1_TXEIE
+#define DISABLE_RX_IRQ MODSERIAL_IRQ_REG &= ~USART_CR1_RXNEIE
+#define ENABLE_TX_IRQ MODSERIAL_IRQ_REG |= USART_CR1_TXEIE
+#define ENABLE_RX_IRQ MODSERIAL_IRQ_REG |= USART_CR1_RXNEIE
+
+#define MODSERIAL_READ_REG ((USART_TypeDef*)_base)->DR
+#define MODSERIAL_WRITE_REG ((USART_TypeDef*)_base)->DR
+#define MODSERIAL_READABLE ((((USART_TypeDef*)_base)->SR & USART_SR_RXNE) != 0)
+#define MODSERIAL_WRITABLE ((((USART_TypeDef*)_base)->SR & USART_SR_TXE) != 0)
+
+#define RESET_TX_FIFO while(0 == 1)
+#define RESET_RX_FIFO while(MODSERIAL_READABLE) char dummy = MODSERIAL_READ_REG
+
+#define RX_IRQ_ENABLED ((MODSERIAL_IRQ_REG & USART_CR1_RXNEIE) != 0)
+#define TX_IRQ_ENABLED ((MODSERIAL_IRQ_REG & USART_CR1_TXEIE) != 0)
+
+#endif
--- a/MACROS.h	Sun Sep 20 02:56:47 2015 +0000
+++ b/MACROS.h	Tue Nov 17 12:11:44 2015 -0300
@@ -1,38 +1,39 @@
-/*
-    Copyright (c) 2010 Andy Kirkham
- 
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
- 
-    The above copyright notice and this permission notice shall be included in
-    all copies or substantial portions of the Software.
- 
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-    THE SOFTWARE.
-*/
-
-#ifndef MODSERIAL_MACROS_H
-#define MODSERIAL_MACROS_H
-
-#include "MODSERIAL_LPC1768.h"
-#include "MODSERIAL_LPC11U24.h"
-#include "MODSERIAL_KL25Z.h"
-#include "MODSERIAL_KL05Z.h"
-#include "MODSERIAL_KSDK.h"
-#include "MODSERIAL_NUCLEO_F401RE.h"
-
-#define MODSERIAL_TX_BUFFER_EMPTY (buffer_count[TxIrq]==0)
-#define MODSERIAL_RX_BUFFER_EMPTY (buffer_count[RxIrq]==0)
-#define MODSERIAL_TX_BUFFER_FULL  (buffer_count[TxIrq]==buffer_size[TxIrq])
-#define MODSERIAL_RX_BUFFER_FULL  (buffer_count[RxIrq]==buffer_size[RxIrq])
-
-#endif
\ No newline at end of file
+/*
+    Copyright (c) 2010 Andy Kirkham
+ 
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+ 
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+ 
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+*/
+
+#ifndef MODSERIAL_MACROS_H
+#define MODSERIAL_MACROS_H
+
+#include "MODSERIAL_LPC1768.h"
+#include "MODSERIAL_LPC11U24.h"
+#include "MODSERIAL_KL25Z.h"
+#include "MODSERIAL_KL05Z.h"
+#include "MODSERIAL_KSDK.h"
+#include "MODSERIAL_NUCLEO_F401RE.h"
+#include "MODSERIAL_PAC_F401RB.h"
+
+#define MODSERIAL_TX_BUFFER_EMPTY (buffer_count[TxIrq]==0)
+#define MODSERIAL_RX_BUFFER_EMPTY (buffer_count[RxIrq]==0)
+#define MODSERIAL_TX_BUFFER_FULL  (buffer_count[TxIrq]==buffer_size[TxIrq])
+#define MODSERIAL_RX_BUFFER_FULL  (buffer_count[RxIrq]==buffer_size[RxIrq])
+
+#endif