int RAMPSXYStage::Initialize() { LogMessage("XYStage: initialize"); RAMPSHub* pHub = static_cast<RAMPSHub*>(GetParentHub()); if (pHub) { char hubLabel[MM::MaxStrLength]; pHub->GetLabel(hubLabel); SetParentID(hubLabel); // for backward comp. } else LogMessage(NoHubError); if (initialized_) return DEVICE_OK; // set property list // ----------------- // Name int ret = CreateStringProperty(MM::g_Keyword_Name, g_XYStageDeviceName, true); if (DEVICE_OK != ret) return ret; // Description ret = CreateStringProperty(MM::g_Keyword_Description, "RAMPS XY stage driver", true); if (DEVICE_OK != ret) return ret; CPropertyAction* pAct = new CPropertyAction (this, &RAMPSXYStage::OnStepSize); CreateProperty(g_StepSizeProp, CDeviceUtils::ConvertToString(stepSize_um_), MM::Float, false, pAct); // Update lower and upper limits. These values are cached, so if they change during a session, the adapter will need to be re-initialized ret = UpdateStatus(); if (ret != DEVICE_OK) return ret; initialized_ = true; return DEVICE_OK; }