[cpia] CPiA colour balance problem [patch]

rich@annexia.org rich@annexia.org
Sun, 5 Mar 2000 14:58:56 +0000


--uAKRQypu60I7Lcqm
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

On Sun, Mar 05, 2000 at 02:25:44PM +0000, rich@annexia.org wrote:
[...]

By popular demand, I've updated the patch to be against version
0.7.3 of the CPiA driver.

Rich.

-- 
rich@annexia.org | Is your school part of http://www.schoolmaster.net ?
BiblioTech Ltd, Unit 2 Piper Centre, 50 Carnwath Road, London, SW6 3EG.
+44 20 7384 6917 | Click here to play XRacer: http://xracer.annexia.org
Copyright © 2000 Richard Jones | GnuPG/PGP key from www.annexia.org

--uAKRQypu60I7Lcqm
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="cpia-cb-fix.patch"

diff -ur cpia-0.7.3/module/cpia.c cpia-0.7.3-cb-fix/module/cpia.c
--- cpia-0.7.3/module/cpia.c	Fri Mar  3 07:44:09 2000
+++ cpia-0.7.3-cb-fix/module/cpia.c	Sun Mar  5 14:54:55 2000
@@ -419,17 +419,10 @@
 	               cam->params.ecpTiming ? "slow" : "normal", "slow",
 		       "normal", "normal");
 
-	switch(cam->params.colourBalance.balanceMode) {
-	case 1:
-	// FIXME case 3:
-		sprintf(tmpstr, "manual");
-		break;
-	case 2:
+	if (cam->params.colourBalance.balanceModeIsAuto) {
 		sprintf(tmpstr, "auto");
-		break;
-	default:
-		sprintf(tmpstr, "unknown");
-		break;
+	} else {
+		sprintf(tmpstr, "manual");
 	}
 	out += sprintf(out, "color_balance_mode:     %8s  %8s  %8s"
 		       "  %8s\n",  tmpstr, "manual", "auto", "auto");
@@ -763,9 +756,9 @@
 			command_flags |= COMMAND_SETECPTIMING;
 		} else if (MATCH("color_balance_mode")) {
 			if (!retval && MATCH("manual"))
-				new_params.colourBalance.balanceMode=1;
+				new_params.colourBalance.balanceModeIsAuto = 0;
 			else if (!retval && MATCH("auto"))
-				new_params.colourBalance.balanceMode=2;
+				new_params.colourBalance.balanceModeIsAuto = 1;
 			else
 				retval = -EINVAL;
 
@@ -2102,12 +2095,20 @@
 		                    cam->params.exposure.green2Comp,
 		                    cam->params.exposure.blueComp);
 
-	if (cam->cmd_queue & COMMAND_SETCOLOURBALANCE)
-		do_command(cam, CPIA_COMMAND_SetColourBalance,
-		           cam->params.colourBalance.balanceMode,
-		           cam->params.colourBalance.redGain,
-		           cam->params.colourBalance.greenGain,
-		           cam->params.colourBalance.blueGain);
+	if (cam->cmd_queue & COMMAND_SETCOLOURBALANCE) {
+		if (cam->params.colourBalance.balanceModeIsAuto) {
+			do_command(cam, CPIA_COMMAND_SetColourBalance,
+				   2, 0, 0, 0);
+		} else {
+			do_command(cam, CPIA_COMMAND_SetColourBalance,
+				   1,
+				   cam->params.colourBalance.redGain,
+				   cam->params.colourBalance.greenGain,
+				   cam->params.colourBalance.blueGain);
+			do_command(cam, CPIA_COMMAND_SetColourBalance,
+				   3, 0, 0, 0);
+		}
+	}
 
 	if (cam->cmd_queue & COMMAND_SETSENSORFPS)
 		do_command(cam, CPIA_COMMAND_SetSensorFPS,
@@ -2340,16 +2341,19 @@
 
 static void set_camera_state(struct cam_data *cam)
 {
-	if (cam->params.colourBalance.balanceMode != 1) {
+	if(cam->params.colourBalance.balanceModeIsAuto) {
+		do_command(cam, CPIA_COMMAND_SetColourBalance, 
+	        	   2, 0, 0, 0);
+	} else {
 		do_command(cam, CPIA_COMMAND_SetColourBalance, 
 	        	   1,
 	        	   cam->params.colourBalance.redGain,
 	        	   cam->params.colourBalance.greenGain,
 	        	   cam->params.colourBalance.blueGain);
+		do_command(cam, CPIA_COMMAND_SetColourBalance, 
+	        	   3, 0, 0, 0);
 	}
 
-	if (!cam->params.colourBalance.balanceMode)
-		cam->params.colourBalance.balanceMode = 2;
 
 	do_command_extended(cam, CPIA_COMMAND_SetExposure,
 			    cam->params.exposure.gainMode, 1, 1,
@@ -3105,7 +3109,7 @@
 	cam->params.exposure.green1Comp = 214;
 	cam->params.exposure.green2Comp = 214;
 	cam->params.exposure.blueComp = 230;
-	cam->params.colourBalance.balanceMode = 2;	/* auto color balance */
+	cam->params.colourBalance.balanceModeIsAuto = 1;
 	cam->params.colourBalance.redGain = 32;
 	cam->params.colourBalance.greenGain = 6;
 	cam->params.colourBalance.blueGain = 92;
diff -ur cpia-0.7.3/module/cpia.h cpia-0.7.3-cb-fix/module/cpia.h
--- cpia-0.7.3/module/cpia.h	Fri Mar  3 07:44:23 2000
+++ cpia-0.7.3-cb-fix/module/cpia.h	Sun Mar  5 14:52:05 2000
@@ -150,7 +150,7 @@
 		u8 blueComp;
 	} exposure;
 	struct {
-		u8 balanceMode;
+		u8 balanceModeIsAuto;
 		u8 redGain;
 		u8 greenGain;
 		u8 blueGain;

--uAKRQypu60I7Lcqm--