bool MICCD::Connect() { uint32_t cap = 0; if (isSimulation()) { LOGF_INFO("Connected to %s", name); cap = CCD_CAN_SUBFRAME | CCD_CAN_ABORT | CCD_CAN_BIN | CCD_HAS_SHUTTER | CCD_HAS_COOLER; SetCCDCapability(cap); numFilters = 5; return true; } if (!cameraHandle) { if (isEth) cameraHandle = gxccd_initialize_eth(cameraId); else cameraHandle = gxccd_initialize_usb(cameraId); } if (!cameraHandle) { LOGF_ERROR("Error connecting to %s.", name); return false; } LOGF_INFO("Connected to %s.", name); bool value; cap = CCD_CAN_ABORT | CCD_CAN_BIN; gxccd_get_boolean_parameter(cameraHandle, GBP_SUB_FRAME, &value); if (value) cap |= CCD_CAN_SUBFRAME; gxccd_get_boolean_parameter(cameraHandle, GBP_GUIDE, &value); if (value) cap |= CCD_HAS_ST4_PORT; gxccd_get_boolean_parameter(cameraHandle, GBP_SHUTTER, &value); if (value) cap |= CCD_HAS_SHUTTER; gxccd_get_boolean_parameter(cameraHandle, GBP_COOLER, &value); if (value) cap |= CCD_HAS_COOLER; gxccd_get_boolean_parameter(cameraHandle, GBP_GAIN, &hasGain); gxccd_get_boolean_parameter(cameraHandle, GBP_PREFLASH, &canDoPreflash); SetCCDCapability(cap); return true; }
bool MICCD::Connect() { uint32_t cap = 0; if (isSimulation()) { DEBUGF(INDI::Logger::DBG_SESSION, "Connected to %s", name); cap = CCD_CAN_SUBFRAME | CCD_CAN_ABORT | CCD_CAN_BIN | CCD_HAS_SHUTTER | CCD_HAS_COOLER; SetCCDCapability(cap); numFilters = 5; return true; } if (!cameraHandle) { if (isEth) cameraHandle = gxccd_initialize_eth(cameraId); else cameraHandle = gxccd_initialize_usb(cameraId); } if (!cameraHandle) { DEBUGF(INDI::Logger::DBG_ERROR, "Error connecting to %s.", name); return false; } DEBUGF(INDI::Logger::DBG_SESSION, "Connected to %s.", name); bool value; cap = CCD_CAN_ABORT | CCD_CAN_BIN; gxccd_get_boolean_parameter(cameraHandle, GBP_SUB_FRAME, &value); if (value) cap |= CCD_CAN_SUBFRAME; gxccd_get_boolean_parameter(cameraHandle, GBP_GUIDE, &value); if (value) cap |= CCD_HAS_ST4_PORT; gxccd_get_boolean_parameter(cameraHandle, GBP_SHUTTER, &value); if (value) cap |= CCD_HAS_SHUTTER; gxccd_get_boolean_parameter(cameraHandle, GBP_COOLER, &value); if (value) cap |= CCD_HAS_COOLER; gxccd_get_boolean_parameter(cameraHandle, GBP_GAIN, &hasGain); SetCCDCapability(cap); return true; }
MICCD::MICCD(int camId, bool eth) : FilterInterface(this) { cameraId = camId; isEth = eth; if (isEth) cameraHandle = gxccd_initialize_eth(cameraId); else cameraHandle = gxccd_initialize_usb(cameraId); if (!cameraHandle) IDLog("Error connecting MI camera!\n"); char sp[MAXINDINAME]; if (gxccd_get_string_parameter(cameraHandle, GSP_CAMERA_DESCRIPTION, sp, sizeof(sp)) < 0) { gxccd_get_last_error(cameraHandle, sp, sizeof(sp)); IDLog("Error getting MI camera info: %s.\n", sp); strncpy(name, "MI CCD", MAXINDIDEVICE); } else { // trim trailing spaces char *end = sp + strlen(sp) - 1; while (end > sp && isspace(*end)) end--; *(end + 1) = '\0'; snprintf(name, MAXINDINAME, "MI CCD %s", sp); IDLog("Detected camera: %s.\n", name); } gxccd_get_integer_parameter(cameraHandle, GIP_READ_MODES, &numReadModes); gxccd_get_integer_parameter(cameraHandle, GIP_FILTERS, &numFilters); gxccd_get_integer_parameter(cameraHandle, GIP_MAX_FAN, &maxFanValue); gxccd_get_integer_parameter(cameraHandle, GIP_MAX_WINDOW_HEATING, &maxHeatingValue); gxccd_release(cameraHandle); cameraHandle = nullptr; hasGain = false; useShutter = true; canDoPreflash = false; setDeviceName(name); setVersion(INDI_MI_VERSION_MAJOR, INDI_MI_VERSION_MINOR); }