/** * Get an instance of an Digital Module. * Singleton digital module creation where a module is allocated on the first use * and the same module is returned on subsequent uses. */ DigitalModule* DigitalModule::GetInstance(UINT32 slot) { CheckDigitalModule(slot); if (m_modules[slot] == NULL) { m_modules[slot] = new DigitalModule(slot); } return (DigitalModule*)m_modules[slot]; }
/** * Get an instance of an Digital Module. * Singleton digital module creation where a module is allocated on the first use * and the same module is returned on subsequent uses. * * @param moduleNumber The digital module to get (1 or 2). */ DigitalModule* DigitalModule::GetInstance(uint8_t moduleNumber) { if (CheckDigitalModule(moduleNumber)) { return (DigitalModule *)GetModule(nLoadOut::kModuleType_Digital, moduleNumber); } // If this wasn't caught before now, make sure we say what's wrong before we crash char buf[64]; sprintf(buf, "Digital Module %d", moduleNumber); wpi_setGlobalWPIErrorWithContext(ModuleIndexOutOfRange, buf); return NULL; }
/** * Create an instance of a DigitalInput. * Creates a digital input given a slot and channel. Common creation routine * for all constructors. */ void DigitalInput::InitDigitalInput(uint8_t moduleNumber, uint32_t channel) { m_table = NULL; char buf[64]; Resource::CreateResourceObject(&interruptsResource, tInterrupt::kNumSystems); if (!CheckDigitalModule(moduleNumber)) { snprintf(buf, 64, "Digital Module %d", moduleNumber); wpi_setWPIErrorWithContext(ModuleIndexOutOfRange, buf); return; } if (!CheckDigitalChannel(channel)) { snprintf(buf, 64, "Digital Channel %d", channel); wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf); return; } m_channel = channel; m_module = DigitalModule::GetInstance(moduleNumber); m_module->AllocateDIO(channel, true); nUsageReporting::report(nUsageReporting::kResourceType_DigitalInput, channel, moduleNumber - 1); }
/** * Check that the digital module number is valid. * Module numbers are the slot number that they are inserted in. */ bool SensorBase::CheckPWMModule(UINT32 slot) { return CheckDigitalModule(slot); }