diff projects/basic_analog_output/render.cpp @ 108:3068421c0737 ultra-staging

Merged default into ultra-staging
author Giulio Moro <giuliomoro@yahoo.it>
date Tue, 18 Aug 2015 00:35:15 +0100
parents 3c3a1357657d
children ac8eb07afcf5
line wrap: on
line diff
--- a/projects/basic_analog_output/render.cpp	Mon Jun 08 01:07:48 2015 +0100
+++ b/projects/basic_analog_output/render.cpp	Tue Aug 18 00:35:15 2015 +0100
@@ -6,20 +6,20 @@
  */
 
 
-#include "../../include/render.h"
-#include "../../include/Utilities.h"
+#include <BeagleRT.h>
+#include <Utilities.h>
 #include <rtdk.h>
 #include <cmath>
 
 // Set range for analog outputs designed for driving LEDs
-const float kMinimumAmplitude = (1.5 / 5.0) * MATRIX_MAX;
-const float kAmplitudeRange = MATRIX_MAX - kMinimumAmplitude;
+const float kMinimumAmplitude = (1.5 / 5.0);
+const float kAmplitudeRange = 1.0 - kMinimumAmplitude;
 
 float gFrequency;
 float gPhase;
 float gInverseSampleRate;
 
-// initialise_render() is called once before the audio rendering starts.
+// 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.
 //
@@ -28,21 +28,17 @@
 //
 // Return true on success; returning false halts the program.
 
-bool initialise_render(int numMatrixChannels, int numAudioChannels,
-					   int numMatrixFramesPerPeriod,
-					   int numAudioFramesPerPeriod,
-					   float matrixSampleRate, float audioSampleRate,
-					   void *userData)
+bool setup(BeagleRTContext *context, void *userData)
 {
 	// Retrieve a parameter passed in from the initAudio() call
 	gFrequency = *(float *)userData;
 
-	if(numMatrixFramesPerPeriod == 0) {
+	if(context->analogFrames == 0) {
 		rt_printf("Error: this example needs the matrix enabled\n");
 		return false;
 	}
 
-	gInverseSampleRate = 1.0 / matrixSampleRate;
+	gInverseSampleRate = 1.0 / context->analogSampleRate;
 	gPhase = 0.0;
 
 	return true;
@@ -53,18 +49,15 @@
 // ADCs and DACs (if available). If only audio is available, numMatrixFrames
 // will be 0.
 
-void render(int numMatrixFrames, int numAudioFrames, float *audioIn, float *audioOut,
-			uint16_t *matrixIn, uint16_t *matrixOut)
+void render(BeagleRTContext *context, void *userData)
 {
-	for(int n = 0; n < numMatrixFrames; n++) {
+	for(unsigned int n = 0; n < context->analogFrames; n++) {
 		// Set LED to different phase for each matrix channel
 		float relativePhase = 0.0;
-		for(int channel = 0; channel < gNumMatrixChannels; channel++) {
+		for(unsigned int channel = 0; channel < context->analogChannels; channel++) {
 			float out = kMinimumAmplitude + kAmplitudeRange * 0.5f * (1.0f + sinf(gPhase + relativePhase));
-			if(out > MATRIX_MAX)
-				out = MATRIX_MAX;
 
-			analogWrite(channel, n, out);
+			analogWriteFrame(context, n, channel, out);
 
 			// Advance by pi/4 (1/8 of a full rotation) for each channel
 			relativePhase += M_PI * 0.25;
@@ -76,10 +69,10 @@
 	}
 }
 
-// cleanup_render() is called once at the end, after the audio has stopped.
-// Release any resources that were allocated in initialise_render().
+// cleanup() is called once at the end, after the audio has stopped.
+// Release any resources that were allocated in setup().
 
-void cleanup_render()
+void cleanup(BeagleRTContext *context, void *userData)
 {
 
 }