⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpia.c

📁 自己根据lkd和情境分析
💻 C
📖 第 1 页 / 共 5 页
字号:
					command_flags |= COMMAND_SETEXPOSURE;				} else					retval = -EINVAL;			}		} else if (MATCH("green1_comp")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val >= 214 && val <= 255) {					new_params.exposure.green1Comp = val;					command_flags |= COMMAND_SETEXPOSURE;				} else					retval = -EINVAL;			}		} else if (MATCH("green2_comp")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val >= 214 && val <= 255) {					new_params.exposure.green2Comp = val;					command_flags |= COMMAND_SETEXPOSURE;				} else					retval = -EINVAL;			}		} else if (MATCH("blue_comp")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val >= 230 && val <= 255) {					new_params.exposure.blueComp = val;					command_flags |= COMMAND_SETEXPOSURE;				} else					retval = -EINVAL;			}		} else if (MATCH("apcor_gain1")) {			if (!retval)				val = VALUE;			if (!retval) {				command_flags |= COMMAND_SETAPCOR;				if (val <= 0xff)					new_params.apcor.gain1 = val;				else					retval = -EINVAL;			}		} else if (MATCH("apcor_gain2")) {			if (!retval)				val = VALUE;			if (!retval) {				command_flags |= COMMAND_SETAPCOR;				if (val <= 0xff)					new_params.apcor.gain2 = val;				else					retval = -EINVAL;			}		} else if (MATCH("apcor_gain4")) {			if (!retval)				val = VALUE;			if (!retval) {				command_flags |= COMMAND_SETAPCOR;				if (val <= 0xff)					new_params.apcor.gain4 = val;				else					retval = -EINVAL;			}		} else if (MATCH("apcor_gain8")) {			if (!retval)				val = VALUE;			if (!retval) {				command_flags |= COMMAND_SETAPCOR;				if (val <= 0xff)					new_params.apcor.gain8 = val;				else					retval = -EINVAL;			}		} else if (MATCH("vl_offset_gain1")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.vlOffset.gain1 = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETVLOFFSET;		} else if (MATCH("vl_offset_gain2")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.vlOffset.gain2 = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETVLOFFSET;		} else if (MATCH("vl_offset_gain4")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.vlOffset.gain4 = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETVLOFFSET;		} else if (MATCH("vl_offset_gain8")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.vlOffset.gain8 = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETVLOFFSET;		} else if (MATCH("flicker_control")) {			if (!retval && MATCH("on")) {				new_params.flickerControl.flickerMode = 1;				new_params.exposure.expMode = 2;				command_flags |= COMMAND_SETEXPOSURE;			} else if (!retval && MATCH("off"))				new_params.flickerControl.flickerMode = 0;			else				retval = -EINVAL;			command_flags |= COMMAND_SETFLICKERCTRL;		} else if (MATCH("mains_frequency")) {			if (!retval && MATCH("50")) {				new_mains = 0;				new_params.flickerControl.coarseJump = 					flicker_jumps[new_mains]					[new_params.sensorFps.baserate]					[new_params.sensorFps.divisor];				if (new_params.flickerControl.flickerMode)					command_flags |= COMMAND_SETFLICKERCTRL;			} else if (!retval && MATCH("60")) {				new_mains = 1;				new_params.flickerControl.coarseJump = 					flicker_jumps[new_mains]					[new_params.sensorFps.baserate]					[new_params.sensorFps.divisor];				if (new_params.flickerControl.flickerMode)					command_flags |= COMMAND_SETFLICKERCTRL;			} else				retval = -EINVAL;		} else if (MATCH("allowable_overexposure")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff) {					new_params.flickerControl.						allowableOverExposure = val;					command_flags |= COMMAND_SETFLICKERCTRL;				} else					retval = -EINVAL;			}		} else if (MATCH("compression_mode")) {			if (!retval && MATCH("none"))				new_params.compression.mode =					CPIA_COMPRESSION_NONE;			else if (!retval && MATCH("auto"))				new_params.compression.mode =					CPIA_COMPRESSION_AUTO;			else if (!retval && MATCH("manual"))				new_params.compression.mode =					CPIA_COMPRESSION_MANUAL;			else				retval = -EINVAL;			command_flags |= COMMAND_SETCOMPRESSION;		} else if (MATCH("decimation_enable")) {			if (!retval && MATCH("off"))				new_params.compression.decimation = 0;			else				retval = -EINVAL;			command_flags |= COMMAND_SETCOMPRESSION;		} else if (MATCH("compression_target")) {			if (!retval && MATCH("quality"))				new_params.compressionTarget.frTargeting = 					CPIA_COMPRESSION_TARGET_QUALITY;			else if (!retval && MATCH("framerate"))				new_params.compressionTarget.frTargeting = 					CPIA_COMPRESSION_TARGET_FRAMERATE;			else				retval = -EINVAL;			command_flags |= COMMAND_SETCOMPRESSIONTARGET;		} else if (MATCH("target_framerate")) {			if (!retval)				val = VALUE;			if (!retval)				new_params.compressionTarget.targetFR = val;			command_flags |= COMMAND_SETCOMPRESSIONTARGET;		} else if (MATCH("target_quality")) {			if (!retval)				val = VALUE;			if (!retval)				new_params.compressionTarget.targetQ = val;			command_flags |= COMMAND_SETCOMPRESSIONTARGET;		} else if (MATCH("y_threshold")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val < 32)					new_params.yuvThreshold.yThreshold = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETYUVTHRESH;		} else if (MATCH("uv_threshold")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val < 32)					new_params.yuvThreshold.uvThreshold = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETYUVTHRESH;		} else if (MATCH("hysteresis")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.hysteresis = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("threshold_max")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.threshMax = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("small_step")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.smallStep = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("large_step")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.largeStep = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("decimation_hysteresis")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.decimationHysteresis = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("fr_diff_step_thresh")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.frDiffStepThresh = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("q_diff_step_thresh")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.qDiffStepThresh = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else if (MATCH("decimation_thresh_mod")) {			if (!retval)				val = VALUE;			if (!retval) {				if (val <= 0xff)					new_params.compressionParams.decimationThreshMod = val;				else					retval = -EINVAL;			}			command_flags |= COMMAND_SETCOMPRESSIONPARAMS;		} else {			DBG("No match found\n");			retval = -EINVAL;		}		if (!retval) {			while (count && isspace(*buffer) && *buffer != '\n') {				--count;				++buffer;			}			if (count) {				if (*buffer != '\n' && *buffer != ';')					retval = -EINVAL;				else {					--count;					++buffer;				}			}		}	}#undef MATCH	#undef FIRMWARE_VERSION#undef VALUE#undef FIND_VALUE#undef FIND_END	if (!retval) {		if (command_flags & COMMAND_SETCOLOURPARAMS) {			/* Adjust cam->vp to reflect these changes */			cam->vp.brightness =				new_params.colourParams.brightness*65535/100;			cam->vp.contrast =				new_params.colourParams.contrast*65535/100;			cam->vp.colour =				new_params.colourParams.saturation*65535/100;		}				memcpy(&cam->params, &new_params, sizeof(struct cam_params));		cam->mainsFreq = new_mains;		cam->cmd_queue |= command_flags;		retval = size;	} else		DBG("error: %d\n", retval);		up(&cam->param_lock);		return retval;#endif}static void create_proc_cpia_cam(struct cam_data *cam){	char name[7];	struct proc_dir_entry *ent;		if (!cpia_proc_root || !cam)		return;	sprintf(name, "video%d", cam->vdev.minor);		ent = create_proc_entry(name, S_IFREG|S_IRUGO|S_IWUSR, cpia_proc_root);	if (!ent)		return;	ent->data = cam;	ent->read_proc = cpia_read_proc;	ent->write_proc = cpia_write_proc;	ent->size = 3626;	cam->proc_entry = ent;}static void destroy_proc_cpia_cam(struct cam_data *cam){	char name[7];		if (!cam || !cam->proc_entry)		return;		sprintf(name, "video%d", cam->vdev.minor);	remove_proc_entry(name, cpia_proc_root);	cam->proc_entry = NULL;}static void proc_cpia_create(void){	cpia_proc_root = create_proc_entry("cpia", S_IFDIR, 0);	if (cpia_proc_root)		cpia_proc_root->owner = THIS_MODULE;	else		LOG("Unable to initialise /proc/cpia\n");}static void proc_cpia_destroy(void){	remove_proc_entry("cpia", 0);}#endif /* CONFIG_PROC_FS *//* ----------------------- debug functions ---------------------- */#define printstatus(cam) \  DBG("%02x %02x %02x %02x %02x %02x %02x %02x\n",\	cam->params.status.systemState, cam->params.status.grabState, \	cam->params.status.streamState, cam->params.status.fatalError, \	cam->params.status.cmdError, cam->params.status.debugFlags, \	cam->params.status.vpStatus, cam->params.status.errorCode);/* ----------------------- v4l helpers -------------------------- *//* supported frame palettes and depths */static inline int valid_mode(u16 palette, u16 depth){	return (palette == VIDEO_PALETTE_GREY && depth == 8) ||	       (palette == VIDEO_PALETTE_RGB555 && depth == 16) ||	       (palette == VIDEO_PALETTE_RGB565 && depth == 16) ||	       (palette == VIDEO_PALETTE_RGB24 && depth == 24) ||	       (palette == VIDEO_PALETTE_RGB32 && depth == 32) ||	       (palette == VIDEO_PALETTE_YUV422 && depth == 16) ||	       (palette == VIDEO_PALETTE_YUYV && depth == 16) ||	       (palette == VIDEO_PALETTE_UYVY && depth == 16);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -