Revision: 9009
          http://playerstage.svn.sourceforge.net/playerstage/?rev=9009&view=rev
Author:   jpgr87
Date:     2010-12-13 21:01:32 +0000 (Mon, 13 Dec 2010)

Log Message:
-----------
Rangertolaser now publishes range and intensity measurements in the same 
messages

Modified Paths:
--------------
    code/player/trunk/server/drivers/ranger/rangertolaser.cc

Modified: code/player/trunk/server/drivers/ranger/rangertolaser.cc
===================================================================
--- code/player/trunk/server/drivers/ranger/rangertolaser.cc    2010-12-12 
20:15:49 UTC (rev 9008)
+++ code/player/trunk/server/drivers/ranger/rangertolaser.cc    2010-12-13 
21:01:32 UTC (rev 9009)
@@ -112,7 +112,10 @@
 
                bool receivedCfgResp, receivedIntnsResp, setConfigFailed;
                player_laser_config_t config;
+               player_laser_data_scanpose_t scanData;
+
                bool startup;
+
 };
 
 // Initialisation function
@@ -171,12 +174,27 @@
        // Request the ranger device's configuration
        inputDevice->PutMsg (InQueue, PLAYER_MSGTYPE_REQ, 
PLAYER_RANGER_REQ_GET_CONFIG, NULL, 0, NULL);
 
+
+       memset (&scanData, 0, sizeof (scanData));
+       scanData.scan.ranges = NULL;
+       scanData.scan.intensity = NULL;
+
        return 0;
 }
 
 // Shutdown function
 int RangerToLaser::Shutdown (void)
 {
+       if (scanData.scan.ranges)
+       {
+               delete[] scanData.scan.ranges;
+               scanData.scan.ranges = NULL;
+       }
+       if (scanData.scan.intensity)
+       {
+               delete[] scanData.scan.intensity;
+               scanData.scan.intensity = NULL;
+       }
        // Unsubscribe from the ranger device
        inputDevice->Unsubscribe (InQueue);
 
@@ -190,13 +208,10 @@
 
 int RangerToLaser::ConvertData (player_msghdr *hdr, void *data)
 {
-       player_laser_data_scanpose_t scanData;
        double *rangeData = NULL, *intensityData = NULL;
        int rangeCount = 0, intensityCount = 0;
        player_ranger_geom_t *pose = NULL;
 
-       memset (&scanData, 0, sizeof (scanData));
-
        switch (hdr->subtype)
        {
                case PLAYER_RANGER_DATA_RANGE:
@@ -237,6 +252,11 @@
        // Copy the data into the laser message format
        if (rangeData != NULL)
        {
+               if (scanData.scan.ranges != NULL)
+               {
+                       delete[] scanData.scan.ranges;
+                       scanData.scan.ranges = NULL;
+               }
                scanData.scan.ranges_count = rangeCount;
                if ((scanData.scan.ranges = new float[rangeCount]) == NULL)
                {
@@ -248,6 +268,11 @@
        }
        if (intensityData != NULL)
        {
+               if (scanData.scan.intensity != NULL)
+               {
+                       delete[] scanData.scan.intensity;
+                       scanData.scan.intensity = NULL;
+               }
                scanData.scan.intensity_count = intensityCount;
                if ((scanData.scan.intensity = new uint8_t[intensityCount]) == 
NULL)
                {
@@ -275,13 +300,10 @@
        if (pose != NULL)
                Publish (device_addr, PLAYER_MSGTYPE_DATA, 
PLAYER_LASER_DATA_SCANPOSE, reinterpret_cast<void*> (&scanData), sizeof 
(scanData), NULL);
        else
+       {
                Publish (device_addr, PLAYER_MSGTYPE_DATA, 
PLAYER_LASER_DATA_SCAN, reinterpret_cast<void*> (&scanData.scan), sizeof 
(scanData.scan), NULL);
+       }
 
-       if (scanData.scan.ranges != NULL)
-               delete[] scanData.scan.ranges;
-       if (scanData.scan.intensity != NULL)
-               delete[] scanData.scan.intensity;
-
        return 0;
 }
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to