aboutsummaryrefslogtreecommitdiffstats
path: root/src/gadc
diff options
context:
space:
mode:
authorAndrew Hannam <andrewh@inmarket.com.au>2013-03-01 09:04:52 +1000
committerAndrew Hannam <andrewh@inmarket.com.au>2013-03-01 09:04:52 +1000
commit6ee8b005ae3ee2bc48ea6ac972b0d3b2a2949608 (patch)
tree2ea08726aae7357443420ce45100c8118923dfdd /src/gadc
parent9bec5967b293d6c23c9d7e9338d8ece4873f6eac (diff)
downloaduGFX-6ee8b005ae3ee2bc48ea6ac972b0d3b2a2949608.tar.gz
uGFX-6ee8b005ae3ee2bc48ea6ac972b0d3b2a2949608.tar.bz2
uGFX-6ee8b005ae3ee2bc48ea6ac972b0d3b2a2949608.zip
GAUDIN implemented with GADC driver
Diffstat (limited to 'src/gadc')
-rw-r--r--src/gadc/gadc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gadc/gadc.c b/src/gadc/gadc.c
index 509557d3..8a3cfb8d 100644
--- a/src/gadc/gadc.c
+++ b/src/gadc/gadc.c
@@ -83,6 +83,7 @@ static struct hsdev {
size_t remaining;
BinarySemaphore *bsem;
GEventADC *pEvent;
+ GADCISRCallbackFunction isrfn;
} hs;
static struct lsdev {
@@ -181,6 +182,11 @@ void GADC_ISR_CompleteI(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
hs.pEvent->buffer = hs.lastbuffer;
hs.pEvent->flags = hs.lastflags;
}
+
+ /* Our three signalling mechanisms */
+ if (hs.isrfn)
+ hs.isrfn(buffer, n);
+
if (hs.bsem)
chBSemSignalI(hs.bsem);
@@ -344,6 +350,7 @@ void gadcHighSpeedInit(uint32_t physdev, uint32_t frequency, adcsample_t *buffer
hs.remaining = bufcount;
hs.bsem = 0;
hs.pEvent = 0;
+ hs.isrfn = 0;
}
#if GFX_USE_GEVENT
@@ -356,6 +363,10 @@ void gadcHighSpeedInit(uint32_t physdev, uint32_t frequency, adcsample_t *buffer
}
#endif
+void gadcHighSpeedSetISRCallback(GADCISRCallbackFunction isrfn) {
+ hs.isrfn = isrfn;
+}
+
void gadcHighSpeedSetBSem(BinarySemaphore *pbsem, GEventADC *pEvent) {
DoInit();