diff --git a/devices/viacuda.cpp b/devices/viacuda.cpp index f9db5ed..a8b2601 100644 --- a/devices/viacuda.cpp +++ b/devices/viacuda.cpp @@ -18,7 +18,7 @@ using namespace std; -ViaCuda::ViaCuda(std::string pram_file, uint32_t pram_size) +ViaCuda::ViaCuda() { /* FIXME: is this the correct VIA initialization? */ @@ -30,13 +30,15 @@ ViaCuda::ViaCuda(std::string pram_file, uint32_t pram_size) this->via_regs[VIA_IER] = 0x7F; //PRAM Pre-Initialization - this->pram_obj = NVram("pram.bin", 256); + this->pram_obj = new NVram("pram.bin", 256); this->cuda_init(); } -ViaCuda::~ViaCuda() { - this->pram_obj.~NVram(); +ViaCuda::~ViaCuda() +{ + if (this->pram_obj) + delete (this->pram_obj); } void ViaCuda::cuda_init() @@ -249,11 +251,11 @@ void ViaCuda::cuda_pseudo_command(int cmd, int data_count) switch(cmd) { case CUDA_READ_PRAM: cuda_response_header(CUDA_PKT_PSEUDO, 0); - this->pram_obj.read_byte(this->in_buf[2]); + this->pram_obj->read_byte(this->in_buf[2]); break; case CUDA_WRITE_PRAM: cuda_response_header(CUDA_PKT_PSEUDO, 0); - this->pram_obj.write_byte(this->in_buf[2], this->in_buf[3]); + this->pram_obj->write_byte(this->in_buf[2], this->in_buf[3]); break; case CUDA_READ_WRITE_I2C: cuda_response_header(CUDA_PKT_PSEUDO, 0); @@ -339,4 +341,4 @@ void ViaCuda::i2c_comb_transaction(uint8_t dev_addr, uint8_t sub_addr, cout << "Unsupported I2C device 0x" << hex << (int)dev_addr1 << endl; cuda_error_response(CUDA_ERR_I2C); } -} \ No newline at end of file +} diff --git a/devices/viacuda.h b/devices/viacuda.h index ac65358..e333e96 100644 --- a/devices/viacuda.h +++ b/devices/viacuda.h @@ -88,7 +88,7 @@ enum { class ViaCuda { public: - ViaCuda(std::string pram_file = "pram.bin", uint32_t pram_size = 256); + ViaCuda(); ~ViaCuda(); uint8_t read(int reg); @@ -107,7 +107,7 @@ private: int32_t out_count; int32_t out_pos; - NVram pram_obj; + NVram *pram_obj; void print_enabled_ints(); /* print enabled VIA interrupts and their sources */