punk@26: #include punk@26: #include punk@26: #include punk@26: #include punk@26: #include punk@26: #include punk@26: punk@26: #include "asim/rrr/service_ids.h" punk@26: punk@26: #include "asim/provides/connected_application.h" punk@26: punk@26: using namespace std; punk@26: punk@26: // ===== service instantiation ===== punk@26: AUDIOCORERRR_SERVER_CLASS AUDIOCORERRR_SERVER_CLASS::instance; punk@26: punk@26: // constructor punk@26: AUDIOCORERRR_SERVER_CLASS::AUDIOCORERRR_SERVER_CLASS() : punk@26: serverStub(new AUDIOCORERRR_SERVER_STUB_CLASS(this)) punk@26: { punk@26: // instantiate stub punk@26: printf("AUDIOCORERRR init called\n"); punk@26: outputFile = NULL; punk@26: memory = NULL; punk@26: fflush(stdout); punk@26: } punk@26: punk@26: // destructor punk@26: AUDIOCORERRR_SERVER_CLASS::~AUDIOCORERRR_SERVER_CLASS() punk@26: { punk@26: Cleanup(); punk@26: } punk@26: punk@26: // init punk@26: void punk@26: AUDIOCORERRR_SERVER_CLASS::Init(PLATFORMS_MODULE p) punk@26: { punk@26: parent = p; punk@26: } punk@26: punk@26: // uninit punk@26: void punk@26: AUDIOCORERRR_SERVER_CLASS::Uninit() punk@26: { punk@26: Cleanup(); punk@26: } punk@26: punk@26: // cleanup punk@26: void punk@26: AUDIOCORERRR_SERVER_CLASS::Cleanup() punk@26: { punk@26: delete serverStub; punk@26: } punk@26: punk@26: punk@26: // punk@26: // RRR service methods punk@26: // punk@26: punk@26: UINT32 punk@26: AUDIOCORERRR_SERVER_CLASS::MemoryRequestLoad (UINT32 address) punk@26: { punk@26: UINT32 returnVal; punk@26: punk@26: if(memory == NULL) { punk@26: memory = new FUNCP_SIMULATED_MEMORY_CLASS(); punk@26: } punk@26: punk@26: punk@26: memory->Read(0,(UINT64) address, sizeof(UINT32), &returnVal); punk@26: return returnVal; punk@26: } punk@26: punk@26: void punk@26: AUDIOCORERRR_SERVER_CLASS::MemoryRequestStore (UINT32 address, UINT32 data) punk@26: { punk@26: if(memory == NULL) { punk@26: memory = new FUNCP_SIMULATED_MEMORY_CLASS(); punk@26: } punk@26: punk@26: memory->Write(0,(UINT64) address, sizeof(UINT32), &data); punk@26: } punk@26: punk@26: void punk@26: AUDIOCORERRR_SERVER_CLASS::SendProcessedStream(UINT16 control, UINT16 data) punk@26: { punk@26: punk@26: AudioProcessorControl audioProcessorControl = (AudioProcessorControl) control; punk@26: switch(control) { punk@26: case EndOfFile: punk@26: if(outputFile != NULL) { punk@26: fflush(outputFile); punk@26: fclose(outputFile); punk@26: outputFile = NULL; punk@26: } else { punk@26: outputFile = fopen("out_hw.pcm","w"); punk@26: assert(outputFile); punk@26: fflush(outputFile); punk@26: fclose(outputFile); punk@26: } punk@26: punk@26: // Long term this should be in the data portion. But until I have code running, keep it here. punk@26: CONNECTED_APPLICATION_CLASS::EndSimulation(); punk@26: break; punk@26: punk@26: case Data: punk@26: if(outputFile == NULL) { punk@26: outputFile = fopen("out_hw.pcm","w"); punk@26: assert(outputFile); punk@26: } punk@26: punk@26: CONNECTED_APPLICATION_CLASS::UpdateSemaphore(); punk@26: fwrite(&data, 2,1 , outputFile); punk@26: break; punk@26: } punk@26: }