Update of /cvsroot/playerstage/code/player/server/drivers/ranger
In directory
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22150/server/drivers/ranger
Modified Files:
lasertoranger.cc sonartoranger.cc
Log Message:
Fixed some bugs in the ranger interface and drivers
Index: sonartoranger.cc
===================================================================
RCS file:
/cvsroot/playerstage/code/player/server/drivers/ranger/sonartoranger.cc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sonartoranger.cc 20 May 2007 00:30:15 -0000 1.1
--- sonartoranger.cc 23 Jun 2007 03:25:46 -0000 1.2
***************
*** 286,289 ****
--- 286,298 ----
return 0;
}
+ // Config get request
+ else if (Message::MatchMessage (hdr, PLAYER_MSGTYPE_REQ,
PLAYER_RANGER_REQ_GET_CONFIG, device_addr))
+ {
+ // No config for this device, so send back a pile of zeroes
+ player_ranger_config_t resp;
+ memset (&resp, 0, sizeof (resp));
+ Publish (device_addr, ret_queue, PLAYER_MSGTYPE_RESP_ACK,
PLAYER_RANGER_REQ_GET_CONFIG, &resp, sizeof (resp), NULL);
+ return 0;
+ }
Index: lasertoranger.cc
===================================================================
RCS file:
/cvsroot/playerstage/code/player/server/drivers/ranger/lasertoranger.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** lasertoranger.cc 17 Jun 2007 00:28:01 -0000 1.2
--- lasertoranger.cc 23 Jun 2007 03:25:46 -0000 1.3
***************
*** 110,114 ****
bool HandleGeomRequest (player_laser_geom_t *geom);
// Handle config values
! void HandleGetConfigResp (player_laser_config_t *data);
player_laser_config_t laserConfig; // Stored laser config
--- 110,114 ----
bool HandleGeomRequest (player_laser_geom_t *geom);
// Handle config values
! void HandleConfigResp (player_ranger_config_t *dest,
player_laser_config_t *data);
player_laser_config_t laserConfig; // Stored laser config
***************
*** 315,318 ****
--- 315,331 ----
}
+ void LaserToRanger::HandleConfigResp (player_ranger_config_t *dest,
player_laser_config_t *data)
+ {
+ // Save a copy of the laser config, we need it to set intensity and/or
config later
+ memcpy (&laserConfig, data, sizeof (player_laser_config_t));
+ // Copy it into the destination
+ dest->min_angle = data->min_angle;
+ dest->max_angle = data->max_angle;
+ dest->resolution = data->resolution;
+ dest->max_range = data->max_range;
+ dest->range_res = data->range_res;
+ dest->frequency = data->scanning_frequency;
+ }
+
int LaserToRanger::ProcessMessage (MessageQueue *respQueue, player_msghdr
*hdr, void *data)
{
***************
*** 325,328 ****
--- 338,343 ----
HANDLE_CAPABILITY_REQUEST (device_addr, respQueue, hdr, data,
PLAYER_MSGTYPE_REQ, PLAYER_RANGER_REQ_INTNS);
HANDLE_CAPABILITY_REQUEST (device_addr, respQueue, hdr, data,
PLAYER_MSGTYPE_REQ, PLAYER_RANGER_REQ_GET_GEOM);
+ HANDLE_CAPABILITY_REQUEST (device_addr, respQueue, hdr, data,
PLAYER_MSGTYPE_REQ, PLAYER_RANGER_REQ_SET_CONFIG);
+ HANDLE_CAPABILITY_REQUEST (device_addr, respQueue, hdr, data,
PLAYER_MSGTYPE_REQ, PLAYER_RANGER_REQ_GET_CONFIG);
// Messages from the ranger interface
***************
*** 345,348 ****
--- 360,364 ----
inputDevice->PutMsg (InQueue, PLAYER_MSGTYPE_REQ,
PLAYER_LASER_REQ_SET_CONFIG, &laserConfig, sizeof (laserConfig), 0);
lastReqType = PLAYER_RANGER_REQ_INTNS;
+ ret_queue = respQueue;
return 0;
}
***************
*** 368,371 ****
--- 384,388 ----
inputDevice->PutMsg (InQueue, PLAYER_MSGTYPE_REQ,
PLAYER_LASER_REQ_SET_CONFIG, &laserConfig, sizeof (laserConfig), 0);
lastReqType = PLAYER_RANGER_REQ_SET_CONFIG;
+ ret_queue = respQueue;
return 0;
}
***************
*** 376,379 ****
--- 393,397 ----
inputDevice->PutMsg (InQueue, PLAYER_MSGTYPE_REQ,
PLAYER_LASER_REQ_GET_CONFIG, NULL, 0, NULL);
lastReqType = PLAYER_RANGER_REQ_GET_CONFIG;
+ ret_queue = respQueue;
return 0;
}
***************
*** 391,396 ****
{
// Set config may have been triggered by either a ranger set
config request or a ranger set intensity request
! memcpy (&laserConfig, data, sizeof (player_laser_config_t));
! Publish (device_addr, ret_queue, PLAYER_MSGTYPE_RESP_ACK,
lastReqType, &laserConfig, sizeof (laserConfig), NULL);
return 0;
}
--- 409,418 ----
{
// Set config may have been triggered by either a ranger set
config request or a ranger set intensity request
! player_ranger_config_t resp;
! HandleConfigResp (&resp,
reinterpret_cast<player_laser_config_t*> (data));
! if (lastReqType == PLAYER_RANGER_REQ_SET_CONFIG)
! Publish (device_addr, ret_queue,
PLAYER_MSGTYPE_RESP_ACK, PLAYER_RANGER_REQ_SET_CONFIG, &resp, sizeof (resp),
NULL);
! else if (lastReqType == PLAYER_RANGER_REQ_INTNS)
! Publish (device_addr, ret_queue,
PLAYER_MSGTYPE_RESP_ACK, PLAYER_RANGER_REQ_INTNS, NULL, 0, NULL);
return 0;
}
***************
*** 398,404 ****
{
// Only way to get a get config response from the laser is via
a ranger get config request, or in startup
! memcpy (&laserConfig, data, sizeof (player_laser_config_t));
if (lastReqType == PLAYER_RANGER_REQ_GET_CONFIG &&
startupComplete)
! Publish (device_addr, ret_queue,
PLAYER_MSGTYPE_RESP_ACK, PLAYER_RANGER_REQ_GET_CONFIG, &laserConfig, sizeof
(laserConfig), NULL);
else if (!startupComplete)
{
--- 420,432 ----
{
// Only way to get a get config response from the laser is via
a ranger get config request, or in startup
! /* printf ("Got laser config from device:\nmin_angle =
%f\tmax_angle = %f\tresolution = %f\tmax_range = %f\trange_res = %f\tintensity
= %d\tscanning_frequency = %f\n",
! reinterpret_cast<player_laser_config_t*>
(data)->min_angle, reinterpret_cast<player_laser_config_t*> (data)->max_angle,
! reinterpret_cast<player_laser_config_t*>
(data)->resolution, reinterpret_cast<player_laser_config_t*> (data)->max_range,
! reinterpret_cast<player_laser_config_t*>
(data)->range_res, reinterpret_cast<player_laser_config_t*> (data)->intensity,
! reinterpret_cast<player_laser_config_t*>
(data)->scanning_frequency);*/
! player_ranger_config_t resp;
! HandleConfigResp (&resp,
reinterpret_cast<player_laser_config_t*> (data));
if (lastReqType == PLAYER_RANGER_REQ_GET_CONFIG &&
startupComplete)
! Publish (device_addr, ret_queue,
PLAYER_MSGTYPE_RESP_ACK, PLAYER_RANGER_REQ_GET_CONFIG, &resp, sizeof (resp),
NULL);
else if (!startupComplete)
{
***************
*** 415,418 ****
--- 443,447 ----
else
Publish (device_addr, ret_queue,
PLAYER_MSGTYPE_RESP_NACK, PLAYER_RANGER_REQ_GET_GEOM, NULL, 0, NULL);
+ return 0;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit