Mercurial > hg > beaglert
annotate core/PulseIn.cpp @ 500:b935f890e512 prerelease
Updated Doxy to 1.8.11
Amended example titles in render.cpp and file locations in Doxy file.
| author | Robert Jack <robert.h.jack@gmail.com> |
|---|---|
| date | Wed, 22 Jun 2016 00:27:13 +0100 |
| parents | 493a07f6ec09 |
| children |
| rev | line source |
|---|---|
| giuliomoro@193 | 1 /* |
| giuliomoro@193 | 2 * PulseIn.cpp |
| giuliomoro@193 | 3 * |
| giuliomoro@193 | 4 * Created on: 4 Feb 2016 |
| giuliomoro@193 | 5 * Author: giulio |
| giuliomoro@193 | 6 */ |
| giuliomoro@193 | 7 |
| giuliomoro@193 | 8 #include "../include/PulseIn.h" |
| giuliomoro@193 | 9 |
| giuliomoro@301 | 10 void PulseIn::init(BelaContext* context, unsigned int digitalInput, int direction){ |
| giuliomoro@193 | 11 _digitalInput = digitalInput; |
| giuliomoro@193 | 12 _pulseIsOn = false; |
| giuliomoro@193 | 13 _pulseOnState = direction == 1 ? 1 : 0; |
| giuliomoro@193 | 14 _array.resize(context->digitalFrames); |
| giuliomoro@193 | 15 _lastContext = (uint64_t)-1; |
| andrewm@310 | 16 pinMode(context, 0, digitalInput, INPUT); //context is used to allocate the number of elements in the array |
| giuliomoro@193 | 17 } |
| giuliomoro@193 | 18 |
| giuliomoro@301 | 19 void PulseIn::check(BelaContext* context){ |
| giuliomoro@193 | 20 if(_digitalInput == -1){ //must be init'ed before calling check(); |
| giuliomoro@193 | 21 throw(1); |
| giuliomoro@193 | 22 } |
| giuliomoro@193 | 23 for(unsigned int n = 0; n < context->digitalFrames; n++){ |
| giuliomoro@193 | 24 _array[n] = 0; //maybe a few of these will be overwritten below |
| giuliomoro@193 | 25 } |
| giuliomoro@193 | 26 for(unsigned int n = 0; n < context->digitalFrames; n++){ |
| giuliomoro@193 | 27 if(_pulseIsOn == false){ // look for start edge |
| andrewm@308 | 28 if(digitalRead(context, n, _digitalInput) == _pulseOnState){ |
| andrewm@311 | 29 _pulseStart = context->audioFramesElapsed + n; // store location of start edge |
| giuliomoro@193 | 30 _pulseIsOn = true; |
| giuliomoro@193 | 31 } |
| giuliomoro@193 | 32 } else { // _pulseIsOn == true; |
| andrewm@308 | 33 if(digitalRead(context, n, _digitalInput) == !_pulseOnState){ // look for stop edge |
| andrewm@311 | 34 _array[n] = context->audioFramesElapsed + n - _pulseStart; // compute and store pulse duration |
| giuliomoro@193 | 35 _pulseIsOn = false; |
| giuliomoro@193 | 36 } |
| giuliomoro@193 | 37 } |
| giuliomoro@193 | 38 } |
| andrewm@311 | 39 _lastContext = context->audioFramesElapsed; |
| giuliomoro@193 | 40 }; |
| giuliomoro@193 | 41 |
| giuliomoro@193 | 42 PulseIn::~PulseIn() { |
| giuliomoro@193 | 43 // TODO Auto-generated destructor stub |
| giuliomoro@193 | 44 } |
| giuliomoro@193 | 45 |
