|
From: <mor...@us...> - 2008-04-03 08:57:05
|
Revision: 84
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=84&view=rev
Author: morgan_quigley
Date: 2008-04-03 01:57:10 -0700 (Thu, 03 Apr 2008)
Log Message:
-----------
further debugging of camera parameter set/get for iris and focus. seems to be working fine now.
Modified Paths:
--------------
pkg/trunk/axis_cam/include/axis_cam/axis_cam.h
pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp
Modified: pkg/trunk/axis_cam/include/axis_cam/axis_cam.h
===================================================================
--- pkg/trunk/axis_cam/include/axis_cam/axis_cam.h 2008-04-03 08:55:48 UTC (rev 83)
+++ pkg/trunk/axis_cam/include/axis_cam/axis_cam.h 2008-04-03 08:57:10 UTC (rev 84)
@@ -46,7 +46,7 @@
bool set_ptz(double pan, double tilt, double zoom, bool relative = false);
bool set_focus(int focus = 0, bool relative = false); // zero for autofocus
int get_focus();
- bool set_iris(int iris = 0, bool relative = false); // zero for autoiris
+ bool set_iris(int iris = 0, bool relative = false, bool blocking = true);
int get_iris();
private:
Modified: pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp
===================================================================
--- pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp 2008-04-03 08:55:48 UTC (rev 83)
+++ pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp 2008-04-03 08:57:10 UTC (rev 84)
@@ -91,13 +91,18 @@
printf("woah! bad input parameters\n");
return false; // don't make me crash
}
- jpeg_file_size = 0;
CURLcode code;
- if (code = curl_easy_perform(jpeg_curl))
+ do
{
- printf("woah! curl error: [%s]\n", curl_easy_strerror(code));
- return false;
- }
+ jpeg_file_size = 0;
+ if (code = curl_easy_perform(jpeg_curl))
+ {
+ printf("woah! curl error: [%s]\n", curl_easy_strerror(code));
+ return false;
+ }
+ if (jpeg_buf[0] == 0 && jpeg_buf[1] == 0)
+ printf("[axis_cam] ODD...first two bytes are zero...\n");
+ } while (jpeg_buf[0] == 0 && jpeg_buf[1] == 0);
*fetch_jpeg_buf = jpeg_buf;
*fetch_buf_size = jpeg_file_size;
return true;
@@ -112,7 +117,7 @@
{
// overalloc
a->jpeg_buf_size = 2 * (a->jpeg_file_size + (size*nmemb));
- printf("jpeg_buf_size is now %d\n", a->jpeg_buf_size);
+ //printf("jpeg_buf_size is now %d\n", a->jpeg_buf_size);
if (a->jpeg_buf)
delete[] a->jpeg_buf;
a->jpeg_buf = new uint8_t[a->jpeg_buf_size];
@@ -163,6 +168,19 @@
return last_focus;
}
+int AxisCam::get_iris()
+{
+ if (last_autoiris_enabled)
+ {
+ set_iris(0, true); // manual focus but don't move it
+ query_params();
+ set_iris(0); // re-enable autofocus
+ return last_iris;
+ }
+ query_params();
+ return last_iris;
+}
+
bool AxisCam::set_focus(int focus, bool relative)
{
ostringstream oss;
@@ -177,15 +195,25 @@
return send_params(oss.str());
}
-bool AxisCam::set_iris(int iris, bool relative)
+bool AxisCam::set_iris(int iris, bool relative, bool blocking)
{
ostringstream oss;
- if (iris == 0)
+ int target_iris = iris;
+ if (relative)
+ target_iris = get_iris() + iris;
+ printf("target iris = %d\n", target_iris);
+
+ if (iris == 0 && !relative)
oss << "autoiris=on";
else
oss << string("autoiris=off&")
<< (relative ? "r" : "") << string("iris=") << iris;
- return send_params(oss.str());
+ if (!send_params(oss.str()))
+ return false;
+ if (!blocking || iris == 0)
+ return true;
+ get_iris(); // this appears to force a block on the camera side
+ return true;
}
bool AxisCam::send_params(string params)
@@ -218,7 +246,7 @@
return false;
}
ptz_ss_mutex.lock();
- printf("%d-byte response:\n%s\n", ptz_ss.str().length(), ptz_ss.str().c_str());
+ //printf("%d-byte response:\n%s\n", ptz_ss.str().length(), ptz_ss.str().c_str());
while (ptz_ss.good())
{
string line;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|