|
From: <mor...@us...> - 2008-04-03 01:52:23
|
Revision: 79
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=79&view=rev
Author: morgan_quigley
Date: 2008-04-02 18:52:29 -0700 (Wed, 02 Apr 2008)
Log Message:
-----------
bug fixes in the camera parameter get/set code (not resetting the state of the stringstream). next up is to be able to turn the white balance on/off...
Modified Paths:
--------------
pkg/trunk/axis_cam/include/axis_cam/axis_cam.h
pkg/trunk/axis_cam/manifest.xml
pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp
pkg/trunk/axis_cam/test/test_camcontrol/Makefile
pkg/trunk/axis_cam/test/test_camcontrol/test_camcontrol.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 01:06:55 UTC (rev 78)
+++ pkg/trunk/axis_cam/include/axis_cam/axis_cam.h 2008-04-03 01:52:29 UTC (rev 79)
@@ -33,6 +33,7 @@
#include <curl/curl.h>
#include <string>
#include <sstream>
+#include "thread_utils/mutex.h"
using namespace std;
class AxisCam
@@ -55,6 +56,7 @@
CURL *jpeg_curl, *getptz_curl, *setptz_curl;
char *image_url, *ptz_url;
stringstream ptz_ss; // need to mutex this someday...
+ ThreadUtils::Mutex ptz_ss_mutex;
inline double clamp(double d, double low, double high)
{
return (d < low ? low : (d > high ? high : d));
Modified: pkg/trunk/axis_cam/manifest.xml
===================================================================
--- pkg/trunk/axis_cam/manifest.xml 2008-04-03 01:06:55 UTC (rev 78)
+++ pkg/trunk/axis_cam/manifest.xml 2008-04-03 01:52:29 UTC (rev 79)
@@ -13,6 +13,7 @@
<url>http://stair.stanford.edu</url>
<depend package="common_flows"/>
<depend package="image_viewer"/>
+<depend package="thread_utils"/>
<depend package="string_utils"/>
</package>
Modified: pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp
===================================================================
--- pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp 2008-04-03 01:06:55 UTC (rev 78)
+++ pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp 2008-04-03 01:52:29 UTC (rev 79)
@@ -68,10 +68,6 @@
printf("Getting images from [%s]\n", oss.str().c_str());
if (!query_params())
printf("sad! I couldn't query the camera parameters.\n");
- if (!query_params())
- printf("sad! I couldn't query the camera parameters.\n");
- if (!query_params())
- printf("sad! I couldn't query the camera parameters.\n");
}
AxisCam::~AxisCam()
@@ -131,8 +127,11 @@
if (size * nmemb == 0)
return 0;
AxisCam *a = (AxisCam *)userp;
+ a->ptz_ss_mutex.lock();
a->ptz_ss << string((char *)buf, size*nmemb);
- printf("%d bytes\n", size*nmemb);
+ //printf("writing %d bytes\n", size*nmemb);
+ //cout << a->ptz_ss.str() << endl;
+ a->ptz_ss_mutex.unlock();
//cout << string((char *)buf, size*nmemb);
return size*nmemb;
}
@@ -191,7 +190,11 @@
bool AxisCam::send_params(string params)
{
+// stringstream ss;
+ ptz_ss_mutex.lock();
+ ptz_ss.clear(); // reset stringstream state so we can insert into it again
ptz_ss.str("");
+ ptz_ss_mutex.unlock();
curl_easy_setopt(setptz_curl, CURLOPT_POSTFIELDS, params.c_str());
CURLcode code;
if (code = curl_easy_perform(setptz_curl))
@@ -204,14 +207,18 @@
bool AxisCam::query_params()
{
+ ptz_ss_mutex.lock();
+ ptz_ss.clear(); // reset stringstream state so we can insert into it again
ptz_ss.str("");
+ ptz_ss_mutex.unlock();
CURLcode code;
if (code = curl_easy_perform(getptz_curl))
{
printf("woah! curl error: [%s]\n", curl_easy_strerror(code));
return false;
}
- printf("response:\n%s\n", ptz_ss.str().c_str());
+ ptz_ss_mutex.lock();
+ printf("%d-byte response:\n%s\n", ptz_ss.str().length(), ptz_ss.str().c_str());
while (ptz_ss.good())
{
string line;
@@ -241,6 +248,7 @@
printf("\n");
*/
}
+ ptz_ss_mutex.unlock();
return true;
}
Modified: pkg/trunk/axis_cam/test/test_camcontrol/Makefile
===================================================================
--- pkg/trunk/axis_cam/test/test_camcontrol/Makefile 2008-04-03 01:06:55 UTC (rev 78)
+++ pkg/trunk/axis_cam/test/test_camcontrol/Makefile 2008-04-03 01:52:29 UTC (rev 79)
@@ -1,6 +1,6 @@
SRC = test_camcontrol.cpp kbhit.cpp
OUT = test_camcontrol
-LFLAGS = -L../../lib -laxis_cam -lcurl -lstring_utils
+LFLAGS = -L../../lib -lcurl
LIBDEPS = ../../lib/libaxis_cam.a
PKG = axis_cam
include $(shell $(ROS_ROOT)/rospack find roscpp)/make_include/node.mk
Modified: pkg/trunk/axis_cam/test/test_camcontrol/test_camcontrol.cpp
===================================================================
--- pkg/trunk/axis_cam/test/test_camcontrol/test_camcontrol.cpp 2008-04-03 01:06:55 UTC (rev 78)
+++ pkg/trunk/axis_cam/test/test_camcontrol/test_camcontrol.cpp 2008-04-03 01:52:29 UTC (rev 79)
@@ -28,6 +28,7 @@
// POSSIBILITY OF SUCH DAMAGE.
#include <cstdio>
+#include <iostream>
#include "axis_cam/axis_cam.h"
#include "kbhit.h"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|