view 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
line wrap: on
line source
    /*
 *
 * Andrew McPherson and Victor Zappi
 * Queen Mary, University of London
 */

#include <BeagleRT.h>
#include <Utilities.h>
#include <cmath>
#include <rtdk.h>

// setup() is called once before the audio rendering starts.
// Use it to perform any initialisation and allocation which is dependent
// on the period size or sample rate.
//
// userData holds an opaque pointer to a data structure that was passed
// in from the call to initAudio().
//
// Return true on success; returning false halts the program.

bool setup(BeagleRTContext *context, void *userData)
{
	return true;
}

// render() is called regularly at the highest priority by the audio engine.
// Input and output are given from the audio hardware and the other
// ADCs and DACs (if available). If only audio is available, numAnalogFrames
// will be 0.

void render(BeagleRTContext *context, void *userData)
{
  //connect an LED in series with a 470ohm resistor between P8_07 and ground
  static int count=0; //counts elapsed samples
  float interval=0.5; //how often to toggle the LED (in seconds)
  static int status=GPIO_LOW;
	for(unsigned int n=0; n<context->digitalFrames; n++){
    if(count==context->digitalSampleRate*interval){ //if enough samples have elapsed
      count=0; //reset the counter
    // status=digitalReadFrame(context, 0, P8_07);
      if(status==GPIO_LOW) //toggle the status
        status=GPIO_HIGH;
      else
        status=GPIO_LOW;
      pinModeFrame(context, 0, P8_07, OUTPUT);
      digitalWriteFrame(context, n, P8_07, status); //write the status to the LED
    // rt_printf("there %d\n", context->digital[n]);
    }
    context->digital[n]=status*0x00010000;
    count++;
  }
}

// cleanup() is called once at the end, after the audio has stopped.
// Release any resources that were allocated in setup().

void cleanup(BeagleRTContext *context, void *userData)
{
	// Nothing to do here
}