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