Update of /cvsroot/playerstage/code/player/server/drivers/laser
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10946/server/drivers/laser

Modified Files:
        RS4LeuzeLaserDriver.cc lasercspace.cc lasercutter.cc 
        laserrescan.cc lms400_cola.cc pbs_driver.cc sicklms200.cc 
        sicklms400.cc sickpls.cc sicks3000.cc urglaserdriver.cc 
Log Message:
applied Toby's patch to replace fixed-size arrays

Index: sicks3000.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/sicks3000.cc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** sicks3000.cc        21 Sep 2007 03:31:50 -0000      1.5
--- sicks3000.cc        1 Nov 2007 22:16:19 -0000       1.6
***************
*** 676,679 ****
--- 676,680 ----
            int data_count = (size - 22) / 2;
            data_packet.ranges_count = data_count;
+           data_packet.ranges = new float [data_count];
            for (int ii = 0; ii < data_count; ++ii)
            {
***************
*** 687,691 ****
                          PLAYER_MSGTYPE_DATA,
                          PLAYER_LASER_DATA_SCAN,
!                         (void*)&data_packet, sizeof(data_packet), NULL);
            
          }
--- 688,693 ----
                          PLAYER_MSGTYPE_DATA,
                          PLAYER_LASER_DATA_SCAN,
!                         (void*)&data_packet);
!           delete [] data_packet.ranges;
            
          }

Index: pbs_driver.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/pbs_driver.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pbs_driver.cc       21 Sep 2007 03:31:50 -0000      1.3
--- pbs_driver.cc       1 Nov 2007 22:16:19 -0000       1.4
***************
*** 234,239 ****
    data_packet.max_range = 3.5;
    data_packet.ranges_count = NUMBER_OF_RANGE_READINGS;
    data_packet.intensity_count = 0;
!   data_packet.intensity[0] = 0;
    data_packet.id = 1;
  
--- 234,240 ----
    data_packet.max_range = 3.5;
    data_packet.ranges_count = NUMBER_OF_RANGE_READINGS;
+   data_packet.ranges = new float [NUMBER_OF_RANGE_READINGS];
    data_packet.intensity_count = 0;
!   data_packet.intensity = NULL;
    data_packet.id = 1;
  
***************
*** 253,257 ****
  PBSDriver::~PBSDriver()
  {
! 
  }
  
--- 254,258 ----
  PBSDriver::~PBSDriver()
  {
!   delete [] data_packet.ranges;
  }
  

Index: urglaserdriver.cc
===================================================================
RCS file: 
/cvsroot/playerstage/code/player/server/drivers/laser/urglaserdriver.cc,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** urglaserdriver.cc   23 Aug 2007 19:58:44 -0000      1.13
--- urglaserdriver.cc   1 Nov 2007 22:16:19 -0000       1.14
***************
*** 337,340 ****
--- 337,341 ----
      Data.resolution   = Conf.resolution;
      Data.ranges_count = (max_i - min_i) + 1;
+     Data.ranges = new float [Data.ranges_count];
      
      for (unsigned int i = 0; i < Data.ranges_count; ++i)
***************
*** 345,353 ****
      }
      Publish (device_addr, PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!              &Data, sizeof(player_laser_data_t), NULL);
! 
!     // Sleep (you might, for example, block on a read() instead)
!     //usleep(10);
!     }
  }
  
--- 346,352 ----
      }
      Publish (device_addr, PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!              &Data);
!     delete [] Data.ranges;
!   }
  }
  

Index: sicklms200.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/sicklms200.cc,v
retrieving revision 1.64
retrieving revision 1.65
diff -C2 -d -r1.64 -r1.65
*** sicklms200.cc       21 Sep 2007 03:31:50 -0000      1.64
--- sicklms200.cc       1 Nov 2007 22:16:19 -0000       1.65
***************
*** 503,507 ****
  
    PLAYER_MSG0(2, "laser ready");
! 
    // Start the device thread
    StartThread();
--- 503,508 ----
  
    PLAYER_MSG0(2, "laser ready");
!   //memset(data, 0, sizeof(data));
!   
    // Start the device thread
    StartThread();
***************
*** 524,528 ****
    
    CloseTerm();
! 
    PLAYER_MSG0(2, "laser shutdown");
    
--- 525,531 ----
    
    CloseTerm();
!   //delete [] data.ranges;
!   //delete [] data.intensity;
!   
    PLAYER_MSG0(2, "laser shutdown");
    
***************
*** 659,664 ****
      
      // Process incoming data
!     uint16_t mm_ranges[PLAYER_LASER_MAX_SAMPLES];
!     if (ReadLaserData(mm_ranges, PLAYER_LASER_MAX_SAMPLES) == 0)
      {
        player_laser_data_t data;
--- 662,667 ----
      
      // Process incoming data
!     uint16_t mm_ranges[1024];
!     if (ReadLaserData(mm_ranges, 1024) == 0)
      {
        player_laser_data_t data;
***************
*** 687,692 ****
--- 690,704 ----
        }
        data.resolution = DTOR(this->scan_res / 1e2);
+       double old_count = data.ranges_count; 
        data.ranges_count = data.intensity_count = 
                this->scan_max_segment - this->scan_min_segment + 1;
+       if (old_count < data.ranges_count)
+       {
+         delete [] data.ranges;
+         delete [] data.intensity;
+         data.ranges = new float[data.ranges_count];
+         data.intensity = new uint8_t[data.intensity_count];
+   
+       }
        for (int i = 0; i < this->scan_max_segment - this->scan_min_segment + 
1; i++)
        {
***************
*** 720,723 ****
--- 732,737 ----
                      PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
                      (void*)&data, sizeof(data), &time);
+       delete [] data.ranges;
+       delete [] data.intensity;
      }
    }

Index: lasercutter.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/lasercutter.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** lasercutter.cc      23 Aug 2007 19:58:44 -0000      1.3
--- lasercutter.cc      1 Nov 2007 22:16:19 -0000       1.4
***************
*** 106,109 ****
--- 106,110 ----
    // Constructor
    public: LaserCutter( ConfigFile* cf, int section);
+   ~LaserCutter();
  
    // Process laser data.  Returns non-zero if the laser data has been
***************
*** 112,115 ****
--- 113,117 ----
  
    double min_angle, max_angle;
+   unsigned int allocated_ranges;
  };
  
***************
*** 135,138 ****
--- 137,142 ----
  {
    // Settings.
+   allocated_ranges = 0;
+   data.ranges = NULL;
    this->max_angle = cf->ReadAngle(section, "max_angle", M_PI/2.0);
    this->min_angle = cf->ReadAngle(section, "min_angle", -M_PI/2.0);
***************
*** 141,144 ****
--- 145,152 ----
  }
  
+ LaserCutter::~LaserCutter()
+ {
+   free(data.ranges);
+ }
  
  
***************
*** 161,164 ****
--- 169,174 ----
    
    current_angle = data->min_angle;
+   if (data->ranges_count+1 > allocated_ranges)
+     data->ranges = 
(float*)realloc(data->ranges,sizeof(data->ranges[0])*(data->ranges_count+1));
    for (i = 0; i < data->ranges_count; i++)
    {

Index: lms400_cola.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/lms400_cola.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** lms400_cola.cc      1 Mar 2007 20:41:46 -0000       1.2
--- lms400_cola.cc      1 Nov 2007 22:16:19 -0000       1.3
***************
*** 435,438 ****
--- 435,441 ----
    player_data.intensity_count = meas_header.NumberMeasuredValues;
    player_data.id              = 0;
+   player_data.ranges = new float[  player_data.ranges_count];
+   player_data.intensity = new uint8_t[  player_data.intensity_count];
+   
    memcpy (&player_data.id, &buffer[sizeof(MeasurementHeader_t) + 
                                   meas_header.NumberMeasuredValues * 3 + 

Index: RS4LeuzeLaserDriver.cc
===================================================================
RCS file: 
/cvsroot/playerstage/code/player/server/drivers/laser/RS4LeuzeLaserDriver.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** RS4LeuzeLaserDriver.cc      23 Aug 2007 19:58:44 -0000      1.2
--- RS4LeuzeLaserDriver.cc      1 Nov 2007 22:16:19 -0000       1.3
***************
*** 297,301 ****
  
        myLaser=new Claser(ScanPoints);
! ;
      return;
  }
--- 297,301 ----
  
        myLaser=new Claser(ScanPoints);
!       Data.ranges = new float[ScanPoints];
      return;
  }
***************
*** 305,308 ****
--- 305,309 ----
        //Reading are erased
        delete myLaser; 
+       delete [] Data.ranges;
        //delete Readings;
  }

Index: laserrescan.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/laserrescan.cc,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** laserrescan.cc      23 Aug 2007 19:58:44 -0000      1.8
--- laserrescan.cc      1 Nov 2007 22:16:19 -0000       1.9
***************
*** 157,160 ****
--- 157,161 ----
    this->data.max_angle = (max_angle);
    this->data.ranges_count = scan_count;
+   this->data.ranges = new float[scan_count];
    this->data.max_range = data->max_range;
    
***************
*** 193,198 ****
    this->Publish(this->device_addr,  
                  PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                 &this->data, sizeof(this->data), NULL);
! 
    return 1;
  }
--- 194,199 ----
    this->Publish(this->device_addr,  
                  PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                 &this->data);
!   delete [] this->data.ranges;
    return 1;
  }

Index: sicklms400.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/sicklms400.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** sicklms400.cc       23 Aug 2007 19:58:44 -0000      1.3
--- sicklms400.cc       1 Nov 2007 22:16:19 -0000       1.4
***************
*** 183,186 ****
--- 183,187 ----
  
  #include <libplayercore/playercore.h>
+ #include <libplayerxdr/playerxdr.h>
  
  // The SICK LMS 400 laser device class.
***************
*** 668,675 ****
        player_laser_data_t data = lms400->ReadMeasurement ();
    
        if (data.ranges_count != (unsigned int)-1)
!         // Make data available
!         Publish (device_addr, PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                  &data, sizeof (data), NULL);
      }
    }
--- 669,676 ----
        player_laser_data_t data = lms400->ReadMeasurement ();
    
+       // Make data available
        if (data.ranges_count != (unsigned int)-1)
!         Publish (device_addr, PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN, 
&data);
!       player_laser_data_t_cleanup(&data);
      }
    }

Index: lasercspace.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/lasercspace.cc,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** lasercspace.cc      23 Aug 2007 19:58:44 -0000      1.24
--- lasercspace.cc      1 Nov 2007 22:16:19 -0000       1.25
***************
*** 136,140 ****
  
    // Lookup table for precomputations
!   private: double lu[PLAYER_LASER_MAX_SAMPLES][4];
  
  };
--- 136,140 ----
  
    // Lookup table for precomputations
!   private: double (*lu)[4];
  
  };
***************
*** 179,182 ****
--- 179,184 ----
    this->data.max_range = data->max_range;
    this->data.ranges_count = data->ranges_count;
+   this->data.ranges = new float [data->ranges_count];
+   this->lu = new double[data->ranges_count][4];
  
    // Do some precomputations to save time
***************
*** 189,193 ****
    this->Publish(this->device_addr,  
                  PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                 (void*)&this->data, sizeof(this->data), NULL);
  
    return 1;
--- 191,197 ----
    this->Publish(this->device_addr,  
                  PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                 (void*)&this->data);
!   delete [] this->data.ranges;
!   delete [] this->lu;
  
    return 1;

Index: sickpls.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/sickpls.cc,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** sickpls.cc  23 Aug 2007 19:58:44 -0000      1.13
--- sickpls.cc  1 Nov 2007 22:16:19 -0000       1.14
***************
*** 161,164 ****
--- 161,165 ----
  
  #include <libplayercore/playercore.h>
+ #include <libplayerxdr/playerxdr.h>
  #include <replace/replace.h>
  
***************
*** 503,508 ****
      // Process incoming data
      player_laser_data_t data;
!     uint16_t * TempData = new uint16_t[sizeof(data.ranges) / 
sizeof(data.ranges[0])];
!     if (ReadLaserData(TempData, sizeof(data.ranges) / sizeof(data.ranges[0])) 
== 0)
      {
        // Prepare packet 
--- 504,513 ----
      // Process incoming data
      player_laser_data_t data;
!     data.ranges_count = (this->scan_max_segment - this->scan_min_segment + 1);
!     data.intensity_count = data.ranges_count;
!     data.ranges = new float [data.ranges_count];
!     data.intensity = new uint8_t [data.intensity_count];
!     uint16_t * TempData = new uint16_t[data.ranges_count];
!     if (ReadLaserData(TempData, data.ranges_count) == 0)
      {
        // Prepare packet 
***************
*** 510,514 ****
        data.max_angle = (this->scan_max_segment * this->scan_res - 
this->scan_width * 50);
        data.resolution = (this->scan_res);
-       data.ranges_count = (this->scan_max_segment - this->scan_min_segment + 
1);
  //      data.range_res = (this->range_res);
        for (int i = 0; i < this->scan_max_segment - this->scan_min_segment + 
1; i++)
--- 515,518 ----
***************
*** 540,546 ****
        this->Publish(this->device_addr,  
                      PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                     (void*)&data, sizeof(data), NULL);
      }
      delete TempData;
    }
  }
--- 544,551 ----
        this->Publish(this->device_addr,  
                      PLAYER_MSGTYPE_DATA, PLAYER_LASER_DATA_SCAN,
!                     (void*)&data);
      }
      delete TempData;
+     player_laser_data_t_cleanup(&data);
    }
  }


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to