annotate modules/bluespec/Pygar/core/AudioCoreRRR.cpp @ 52:49049f97312c pygar svn.53

[svn r53] sends to two cores (but has issues)
author punk
date Thu, 06 May 2010 08:57:53 -0400
parents 2c8166d205d5
children 2991344775f8
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@52 27 count = 0;
punk@13 28 }
punk@13 29
punk@13 30 // destructor
punk@13 31 AUDIOCORERRR_SERVER_CLASS::~AUDIOCORERRR_SERVER_CLASS()
punk@13 32 {
rlm@23 33 printf("rlm: AUDIOCORERRR_SERVER_CLASS::~AUDIOCORERRR_SERVER_CLASS()\n");
punk@13 34 Cleanup();
punk@13 35 }
punk@13 36
punk@13 37 // init
punk@13 38 void
punk@13 39 AUDIOCORERRR_SERVER_CLASS::Init(PLATFORMS_MODULE p)
punk@13 40 {
rlm@23 41 printf("rlm: AUDIOCORERRR_SERVER_CLASS::Init(PLATFORMS_MODULE p)\n");
rlm@23 42 parent = p;
punk@13 43 }
punk@13 44
punk@13 45 // uninit
punk@13 46 void
punk@13 47 AUDIOCORERRR_SERVER_CLASS::Uninit()
punk@13 48 {
rlm@23 49 printf("rlm: AUDIOCORERRR_SERVER_CLASS::Uninit()\n");
rlm@23 50 Cleanup();
punk@13 51 }
punk@13 52
punk@13 53 // cleanup
punk@13 54 void
punk@13 55 AUDIOCORERRR_SERVER_CLASS::Cleanup()
punk@13 56 {
rlm@23 57 printf("rlm: AUDIOCORERRR_SERVER_CLASS::Cleanup() \n\n");
rlm@23 58 delete serverStub;
punk@13 59 }
punk@13 60
punk@13 61
punk@13 62 //
punk@13 63 // RRR service methods
punk@13 64 //
punk@13 65
punk@33 66 /* Not used by scratchpad
punk@13 67 UINT32
punk@13 68 AUDIOCORERRR_SERVER_CLASS::MemoryRequestLoad (UINT32 address)
punk@13 69 {
punk@13 70 UINT32 returnVal;
rlm@23 71 printf("rlm: AUDIOCORERRR_SERVER_CLASS::MemoryRequestLoad (UINT32 address)\n");
punk@13 72 if(memory == NULL) {
punk@13 73 memory = new FUNCP_SIMULATED_MEMORY_CLASS();
punk@13 74 }
punk@13 75
punk@13 76
punk@13 77 memory->Read(0,(UINT64) address, sizeof(UINT32), &returnVal);
punk@13 78 return returnVal;
punk@13 79 }
punk@13 80
punk@13 81 void
punk@13 82 AUDIOCORERRR_SERVER_CLASS::MemoryRequestStore (UINT32 address, UINT32 data)
punk@13 83 {
rlm@23 84 printf("rlm: AUDIOCORERRR_SERVER_CLASS::MemoryRequestStore (UINT32 address, UINT32 data)\n");
punk@13 85 if(memory == NULL) {
punk@13 86 memory = new FUNCP_SIMULATED_MEMORY_CLASS();
punk@13 87 }
punk@13 88
punk@13 89 memory->Write(0,(UINT64) address, sizeof(UINT32), &data);
punk@22 90 }
punk@33 91 */
punk@13 92
punk@13 93 void
punk@52 94 AUDIOCORERRR_SERVER_CLASS::SendTerminate(UINT32 flag)
punk@52 95 {
punk@52 96 printf("lsp: Received Process Termination\n");
punk@52 97 CONNECTED_APPLICATION_CLASS::EndSimulation();
punk@52 98 }
punk@52 99
punk@52 100 void
punk@13 101
punk@13 102 AUDIOCORERRR_SERVER_CLASS::SendProcessedStream(UINT16 control, UINT16 data)
punk@13 103 {
punk@13 104
punk@25 105 // printf("rlm: SendProcessedStream called,\n");
punk@13 106 AudioProcessorControl audioProcessorControl = (AudioProcessorControl) control;
punk@13 107 switch(control) {
punk@13 108 case EndOfFile:
punk@13 109 if(outputFile != NULL) {
rlm@23 110 printf("rlm: FILE is NULL\n");
punk@13 111 fflush(outputFile);
punk@13 112 fclose(outputFile);
punk@13 113 outputFile = NULL;
punk@13 114 } else {
rlm@23 115 printf("rlm: Opening file for output.\n");
punk@13 116 outputFile = fopen("out_hw.pcm","w");
punk@13 117 assert(outputFile);
punk@13 118 fflush(outputFile);
punk@13 119 fclose(outputFile);
punk@13 120 }
punk@13 121
punk@13 122 // Long term this should be in the data portion. But until I have code running, keep it here.
punk@52 123 count++;
punk@52 124 if (count == 2)
punk@52 125 CONNECTED_APPLICATION_CLASS::EndSimulation();
punk@13 126 break;
punk@13 127
punk@13 128 case Data:
punk@13 129 if(outputFile == NULL) {
punk@13 130 outputFile = fopen("out_hw.pcm","w");
punk@13 131 assert(outputFile);
punk@13 132 }
punk@13 133
rlm@23 134 CONNECTED_APPLICATION_CLASS::UpdateSemaphore();
punk@25 135 // printf("rlm: writing data to out_hw.pcm\n");
punk@13 136 fwrite(&data, 2,1 , outputFile);
punk@13 137 break;
punk@13 138 }
punk@13 139 }