int vmesysreset(int p) { if (s3100_control_write(p, 0x100 /*offset*/, 0x2 /*data*/) != 0x0) return -1 ; usleep(500000); /* 500ms (min. 200ms) */ if (s3100_control_write(p, 0x100 /*offset*/, 0x20000 /*data*/) != 0x0) return -1 ; return 0 ; }
int Sis3100Module::setOutput2(bool enable) { int ret = 0; if(enable) ret = s3100_control_write(m_device,SIS3104_IO,sis3104_set_nim_out2); else ret = s3100_control_write(m_device,SIS3104_IO,sis3104_clear_nim_out2); return ret; }
int Sis3100Module::open() { Sis3100UI* ui = dynamic_cast<Sis3100UI*>(getUI ()); m_device = ::open(devicePath.toStdString().c_str(), O_RDWR, 0); if(m_device < 0) { ui->outputText("failed to open SIS1100/3104\n"); return -1; } else { ui->outputText("open and init SIS1100/3104 OK\n"); deviceOpen = true; } c_device = ::open(controlPath.toStdString().c_str(), O_RDWR, 0); if(c_device < 0) { ui->outputText("failed to open SIS1100/3104 control\n"); return -1; } else { ui->outputText("opened control device for SIS1100/3104\n"); } // Set disable VME IRQ s3100_control_write(m_device,SIS3104_IRQ,(1 << 16)); // Read Type/Version uint32_t opt_vme_type_version = 0; s3100_control_read(m_device,0x0,&opt_vme_type_version); ui->outputText(tr("opt/vme type/version: 0x%1\n").arg(opt_vme_type_version,8,16)); // Read Master status uint32_t opt_vme_master_status = 0; s3100_control_read(m_device,0x100,&opt_vme_master_status); ui->outputText(tr("opt/vme master status: 0x%1\n").arg(opt_vme_master_status,8,16)); // Read interrupt status uint32_t opt_vme_interrupt_status = 0; s3100_control_read(m_device,SIS3104_IRQ,&opt_vme_interrupt_status); ui->outputText(tr("opt/vme interrupt status: 0x%1\n").arg(opt_vme_interrupt_status,8,16)); // Set BERR timeout to 100 us //s3100_control_write(m_device,0x100,(1<<15)); //s3100_control_write(m_device,SIS3104_VME_MASTER,vme_berr_timer); return 0; }