annotate modules/bluespec/Pygar/core/AudioCoreRRR.cpp @ 25:220c14f5963c pygar svn.26

[svn r26] Not fully connected but passes audio successfully
author punk
date Wed, 28 Apr 2010 12:01:37 -0400
parents 90197e3375e2
children 2c8166d205d5
rev   line source
punk@13 1 #include <cstdio>
punk@13 2 #include <cstdlib>
punk@13 3 #include <iostream>
punk@13 4 #include <iomanip>
punk@13 5 #include <stdio.h>
punk@13 6 #include <sys/stat.h>
punk@13 7
punk@13 8 #include "asim/rrr/service_ids.h"
punk@13 9
punk@13 10 #include "asim/provides/connected_application.h"
punk@13 11
punk@13 12 using namespace std;
punk@13 13
punk@13 14 // ===== service instantiation =====
punk@13 15 AUDIOCORERRR_SERVER_CLASS AUDIOCORERRR_SERVER_CLASS::instance;
punk@13 16
punk@13 17 // constructor
punk@13 18 AUDIOCORERRR_SERVER_CLASS::AUDIOCORERRR_SERVER_CLASS() :
punk@15 19 serverStub(new AUDIOCORERRR_SERVER_STUB_CLASS(this))
punk@13 20 {
punk@13 21 // instantiate stub
rlm@23 22
rlm@23 23 printf("rlm: init called\n\n");
punk@13 24 outputFile = NULL;
punk@13 25 memory = NULL;
punk@13 26 fflush(stdout);
punk@13 27 }
punk@13 28
punk@13 29 // destructor
punk@13 30 AUDIOCORERRR_SERVER_CLASS::~AUDIOCORERRR_SERVER_CLASS()
punk@13 31 {
rlm@23 32 printf("rlm: AUDIOCORERRR_SERVER_CLASS::~AUDIOCORERRR_SERVER_CLASS()\n");
punk@13 33 Cleanup();
punk@13 34 }
punk@13 35
punk@13 36 // init
punk@13 37 void
punk@13 38 AUDIOCORERRR_SERVER_CLASS::Init(PLATFORMS_MODULE p)
punk@13 39 {
rlm@23 40 printf("rlm: AUDIOCORERRR_SERVER_CLASS::Init(PLATFORMS_MODULE p)\n");
rlm@23 41 parent = p;
punk@13 42 }
punk@13 43
punk@13 44 // uninit
punk@13 45 void
punk@13 46 AUDIOCORERRR_SERVER_CLASS::Uninit()
punk@13 47 {
rlm@23 48 printf("rlm: AUDIOCORERRR_SERVER_CLASS::Uninit()\n");
rlm@23 49 Cleanup();
punk@13 50 }
punk@13 51
punk@13 52 // cleanup
punk@13 53 void
punk@13 54 AUDIOCORERRR_SERVER_CLASS::Cleanup()
punk@13 55 {
rlm@23 56 printf("rlm: AUDIOCORERRR_SERVER_CLASS::Cleanup() \n\n");
rlm@23 57 delete serverStub;
punk@13 58 }
punk@13 59
punk@13 60
punk@13 61 //
punk@13 62 // RRR service methods
punk@13 63 //
punk@13 64
punk@13 65 UINT32
punk@13 66 AUDIOCORERRR_SERVER_CLASS::MemoryRequestLoad (UINT32 address)
punk@13 67 {
punk@13 68 UINT32 returnVal;
rlm@23 69 printf("rlm: AUDIOCORERRR_SERVER_CLASS::MemoryRequestLoad (UINT32 address)\n");
punk@13 70 if(memory == NULL) {
punk@13 71 memory = new FUNCP_SIMULATED_MEMORY_CLASS();
punk@13 72 }
punk@13 73
punk@13 74
punk@13 75 memory->Read(0,(UINT64) address, sizeof(UINT32), &returnVal);
punk@13 76 return returnVal;
punk@13 77 }
punk@13 78
punk@13 79 void
punk@13 80 AUDIOCORERRR_SERVER_CLASS::MemoryRequestStore (UINT32 address, UINT32 data)
punk@13 81 {
rlm@23 82 printf("rlm: AUDIOCORERRR_SERVER_CLASS::MemoryRequestStore (UINT32 address, UINT32 data)\n");
punk@13 83 if(memory == NULL) {
punk@13 84 memory = new FUNCP_SIMULATED_MEMORY_CLASS();
punk@13 85 }
punk@13 86
punk@13 87 memory->Write(0,(UINT64) address, sizeof(UINT32), &data);
punk@22 88 }
punk@13 89
punk@13 90 void
punk@13 91
punk@13 92 AUDIOCORERRR_SERVER_CLASS::SendProcessedStream(UINT16 control, UINT16 data)
punk@13 93 {
punk@13 94
punk@25 95 // printf("rlm: SendProcessedStream called,\n");
punk@13 96 AudioProcessorControl audioProcessorControl = (AudioProcessorControl) control;
punk@13 97 switch(control) {
punk@13 98 case EndOfFile:
punk@13 99 if(outputFile != NULL) {
rlm@23 100 printf("rlm: FILE is NULL\n");
punk@13 101 fflush(outputFile);
punk@13 102 fclose(outputFile);
punk@13 103 outputFile = NULL;
punk@13 104 } else {
rlm@23 105 printf("rlm: Opening file for output.\n");
punk@13 106 outputFile = fopen("out_hw.pcm","w");
punk@13 107 assert(outputFile);
punk@13 108 fflush(outputFile);
punk@13 109 fclose(outputFile);
punk@13 110 }
punk@13 111
punk@13 112 // Long term this should be in the data portion. But until I have code running, keep it here.
punk@13 113 CONNECTED_APPLICATION_CLASS::EndSimulation();
punk@13 114 break;
punk@13 115
punk@13 116 case Data:
punk@13 117 if(outputFile == NULL) {
punk@13 118 outputFile = fopen("out_hw.pcm","w");
punk@13 119 assert(outputFile);
punk@13 120 }
punk@13 121
rlm@23 122 CONNECTED_APPLICATION_CLASS::UpdateSemaphore();
punk@25 123 // printf("rlm: writing data to out_hw.pcm\n");
punk@13 124 fwrite(&data, 2,1 , outputFile);
punk@13 125 break;
punk@13 126 }
punk@13 127 }