A simple library to access the DMA functionality.

Fork of SimpleDMA by Erik -

Revision:
2:fe2fcaa72434
Parent:
1:0b73b00bcee8
Child:
3:34f5bf8adfa0
diff -r 0b73b00bcee8 -r fe2fcaa72434 SimpleDMA.h
--- a/SimpleDMA.h	Fri Dec 20 20:48:17 2013 +0000
+++ b/SimpleDMA.h	Sun Dec 22 21:42:49 2013 +0000
@@ -1,8 +1,11 @@
 #ifndef SIMPLEDMA_H
 #define SIMPLEDMA_H
 
+#ifdef RTOS_H
+#include "rtos.h"
+#endif
+
 #include "mbed.h"
-#include "rtos.h"
 #include "SimpleDMA_KL25.h"
 
 
@@ -35,7 +38,7 @@
 */
 template<typename Type>
 int source(Type* pointer, bool autoinc, int size = sizeof(Type*)) {
-    return setMemory((uint32_t)pointer, size, true, autoinc);
+    return setAddress((uint32_t)pointer, size, true, autoinc);
 }
 
 /**
@@ -56,7 +59,7 @@
 */
 template<typename Type>
 int destination(Type* pointer, bool autoinc, int size = sizeof(Type*)) {
-    return setMemory((uint32_t)pointer, size, false, autoinc);
+    return setAddress((uint32_t)pointer, size, false, autoinc);
 }
 
 /**
@@ -102,13 +105,14 @@
         _callback.attach(object, member);
     }
 
-void wait(void) {
+#ifdef RTOS_H
+void wait(int length) {
     id = Thread::gettid();
     this->attach(this, &SimpleDMA::waitCallback);
-    this->start(8);
+    this->start(length);
     Thread::signal_wait(0x1);
 }
-
+#endif
 
 protected:
 /**
@@ -117,15 +121,17 @@
 * @param chan - DMA channel to use
 */
 void channel(int chan);
+int setAddress(uint32_t address, int wordsize, bool source, bool autoinc);
 
-int setMemory(uint32_t address, int wordsize, bool source, bool autoinc);
 int _channel;
+uint32_t SAR, DAR, DSR, DCR;
+uint8_t CHCFG;
+
+//IRQ handlers
 FunctionPointer _callback;
 bool irq_en;
 void irq_handler(void);
 
-//IRQ handlers
-
 static SimpleDMA *irq_owner[4];
 
 static void irq_handler0( void ) {
@@ -144,14 +150,14 @@
     if (irq_owner[3]!=NULL)
         irq_owner[3]->irq_handler();
 }
-public:
+
+
+#ifdef RTOS_H
 osThreadId id;
 void waitCallback(void) {
-
-    //id = Thread::gettid();
-    osSignalSet(id, 0x1);
-    
+    osSignalSet(id, 0x1);    
 }
+#endif
 
 };
 #endif
\ No newline at end of file