annotate projects/basic_blink/render.cpp @ 74:0598731d3bef

Added basic_blink
author Giulio Moro <giuliomoro@yahoo.it>
date Fri, 17 Jul 2015 20:23:38 +0100
parents
children 8bd351ca8b46
rev   line source
giuliomoro@74 1 /*
giuliomoro@74 2 *
giuliomoro@74 3 * Andrew McPherson and Victor Zappi
giuliomoro@74 4 * Queen Mary, University of London
giuliomoro@74 5 */
giuliomoro@74 6
giuliomoro@74 7 #include <BeagleRT.h>
giuliomoro@74 8 #include <Utilities.h>
giuliomoro@74 9 #include <cmath>
giuliomoro@74 10 #include <rtdk.h>
giuliomoro@74 11
giuliomoro@74 12 // setup() is called once before the audio rendering starts.
giuliomoro@74 13 // Use it to perform any initialisation and allocation which is dependent
giuliomoro@74 14 // on the period size or sample rate.
giuliomoro@74 15 //
giuliomoro@74 16 // userData holds an opaque pointer to a data structure that was passed
giuliomoro@74 17 // in from the call to initAudio().
giuliomoro@74 18 //
giuliomoro@74 19 // Return true on success; returning false halts the program.
giuliomoro@74 20
giuliomoro@74 21 bool setup(BeagleRTContext *context, void *userData)
giuliomoro@74 22 {
giuliomoro@74 23 return true;
giuliomoro@74 24 }
giuliomoro@74 25
giuliomoro@74 26 // render() is called regularly at the highest priority by the audio engine.
giuliomoro@74 27 // Input and output are given from the audio hardware and the other
giuliomoro@74 28 // ADCs and DACs (if available). If only audio is available, numAnalogFrames
giuliomoro@74 29 // will be 0.
giuliomoro@74 30
giuliomoro@74 31 void render(BeagleRTContext *context, void *userData)
giuliomoro@74 32 {
giuliomoro@74 33 //connect an LED in series with a 470ohm resistor between P8_07 and ground
giuliomoro@74 34 static int count=0; //counts elapsed samples
giuliomoro@74 35 float interval=0.5; //how often to toggle the LED (in seconds)
giuliomoro@74 36 static int status=GPIO_LOW;
giuliomoro@74 37 for(unsigned int n=0; n<context->digitalFrames; n++){
giuliomoro@74 38 if(count==context->digitalSampleRate*interval){ //if enough samples have elapsed
giuliomoro@74 39 count=0; //reset the counter
giuliomoro@74 40 // status=digitalReadFrame(context, 0, P8_07);
giuliomoro@74 41 if(status==GPIO_LOW) //toggle the status
giuliomoro@74 42 status=GPIO_HIGH;
giuliomoro@74 43 else
giuliomoro@74 44 status=GPIO_LOW;
giuliomoro@74 45 pinModeFrame(context, 0, P8_07, OUTPUT);
giuliomoro@74 46 digitalWriteFrame(context, n, P8_07, status); //write the status to the LED
giuliomoro@74 47 // rt_printf("there %d\n", context->digital[n]);
giuliomoro@74 48 }
giuliomoro@74 49 context->digital[n]=status*0x00010000;
giuliomoro@74 50 count++;
giuliomoro@74 51 }
giuliomoro@74 52 }
giuliomoro@74 53
giuliomoro@74 54 // cleanup() is called once at the end, after the audio has stopped.
giuliomoro@74 55 // Release any resources that were allocated in setup().
giuliomoro@74 56
giuliomoro@74 57 void cleanup(BeagleRTContext *context, void *userData)
giuliomoro@74 58 {
giuliomoro@74 59 // Nothing to do here
giuliomoro@74 60 }