Update of /cvsroot/playerstage/code/player/server/drivers/wsn
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv481
Modified Files:
rcore_xbridge.cc
Log Message:
Added support for the stack SSIMP TeCo for Particles code.
Index: rcore_xbridge.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/wsn/rcore_xbridge.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** rcore_xbridge.cc 4 Sep 2006 13:37:56 -0000 1.2
--- rcore_xbridge.cc 6 Sep 2006 15:10:40 -0000 1.3
***************
*** 78,82 ****
- Default: 8.
- How many readings does the Particle send in one packet? (using multiple
readings
! per packet, will increase the sample rate).
@par Example
--- 78,83 ----
- Default: 8.
- How many readings does the Particle send in one packet? (using multiple
readings
! per packet, will increase the sample rate). Note: Use 0 as a special
value for
! enabling the standard TeCo SSIMP mode (multiple tuples).
@par Example
***************
*** 181,185 ****
NodeCalibrationValues FindNodeValues (unsigned int nodeID);
! short ParseTuple (short b1, short b2);
player_wsn_data_t DecodePacket (struct p_packet *pkt);
float ConvertAccel (unsigned short raw_accel, int neg_1g, int pos_1g,
--- 182,186 ----
NodeCalibrationValues FindNodeValues (unsigned int nodeID);
! short ParseTuple (unsigned char b1, unsigned char b2);
player_wsn_data_t DecodePacket (struct p_packet *pkt);
float ConvertAccel (unsigned short raw_accel, int neg_1g, int pos_1g,
***************
*** 323,330 ****
player_wsn_datatype_config *datatype =
(player_wsn_datatype_config*)data;
!
! if ((datatype->value > -1) && (datatype->value < 3))
{
! raw_or_converted = datatype->value;
Publish (device_addr, resp_queue, PLAYER_MSGTYPE_RESP_ACK,
hdr->subtype);
--- 324,332 ----
player_wsn_datatype_config *datatype =
(player_wsn_datatype_config*)data;
! unsigned int val = datatype->value;
!
! if ((val >= 0) && (val < 3))
{
! raw_or_converted = val;
Publish (device_addr, resp_queue, PLAYER_MSGTYPE_RESP_ACK,
hdr->subtype);
***************
*** 373,377 ****
////////////////////////////////////////////////////////////////////////////////
// ParseTuple function - return the value of a tuple
! short RCore_XBridge::ParseTuple (short b1, short b2)
{
long value;
--- 375,379 ----
////////////////////////////////////////////////////////////////////////////////
// ParseTuple function - return the value of a tuple
! short RCore_XBridge::ParseTuple (unsigned char b1, unsigned char b2)
{
long value;
***************
*** 407,424 ****
tuple = p_acl_first(pkt);
! // Parse all the tuples
! for (tuple = p_acl_first (pkt); tuple != NULL; tuple = p_acl_next (pkt,
tuple))
! {
! acl_type = p_acl_get_type (tuple);
! acl_len = p_acl_get_data (tuple, &acl_data);
! if ((acl_type[0] == 234) && (acl_type[1] == 128)) // SGX
! for (i = 0; i < readppacket; i++)
! {
! accelX[i] = ParseTuple (acl_data[0+(i*6)], acl_data[1+(i*6)]);
! accelY[i] = ParseTuple (acl_data[2+(i*6)], acl_data[3+(i*6)]);
! accelZ[i] = ParseTuple (acl_data[4+(i*6)], acl_data[5+(i*6)]);
! }
! }
!
temp_data.data_packet.light = -1;
temp_data.data_packet.mic = -1;
--- 409,417 ----
tuple = p_acl_first(pkt);
! // Standard TeCO SSIMP software includes the following tuples:
! // sgx, sgy, sgz = acceleration values for X, Y and Z axis
! // sli = sensor light
! // ste = sensor temperatures
! // svc = sensor voltage
temp_data.data_packet.light = -1;
temp_data.data_packet.mic = -1;
***************
*** 429,458 ****
temp_data.data_packet.battery = -1;
! for (i = 0; i < readppacket; i++)
{
! if (raw_or_converted != 0)
! {
! node_values = FindNodeValues (temp_data.node_id);
! temp_data.data_packet.accel_x = ConvertAccel (accelX[i],
node_values.c_values[0], node_values.c_values[1],
raw_or_converted);
! temp_data.data_packet.accel_y = ConvertAccel (accelY[i],
node_values.c_values[2], node_values.c_values[3],
raw_or_converted);
! temp_data.data_packet.accel_z = ConvertAccel (accelZ[i],
node_values.c_values[4], node_values.c_values[5],
raw_or_converted);
! }
! else
! {
! temp_data.data_packet.accel_x = accelX[i];
! temp_data.data_packet.accel_y = accelY[i];
! temp_data.data_packet.accel_z = accelZ[i];
! }
! // Publish the WSN data (each packet goes separately)
! Publish (device_addr, NULL, PLAYER_MSGTYPE_DATA, PLAYER_WSN_DATA,
&temp_data, sizeof (player_wsn_data_t), NULL);
! }
p_pkt_free (packet);
--- 422,491 ----
temp_data.data_packet.battery = -1;
! // Parse all the tuples
! for (tuple = p_acl_first (pkt); tuple != NULL; tuple = p_acl_next (pkt,
tuple))
{
! acl_type = p_acl_get_type (tuple);
! acl_len = p_acl_get_data (tuple, &acl_data);
!
! if (readppacket == 0) // Assume normal, standard SSIMP mode
! {
! if ((acl_type[0] == 234) && (acl_type[1] == 128)) // SGX
! temp_data.data_packet.accel_x = ParseTuple (acl_data[0],
acl_data[1]);
! if ((acl_type[0] == 240) && (acl_type[1] == 192)) // SGY
! temp_data.data_packet.accel_y = ParseTuple (acl_data[0],
acl_data[1]);
! if ((acl_type[0] == 247) && (acl_type[1] == 0)) // SGZ
! temp_data.data_packet.accel_z = ParseTuple (acl_data[0],
acl_data[1]);
! if ((acl_type[0] == 141) && (acl_type[1] == 136)) // SLI
! temp_data.data_packet.light = acl_data[1];
! if ((acl_type[0] == 117) && (acl_type[1] == 200)) // STE
! temp_data.data_packet.temperature = acl_data[0];
! if ((acl_type[0] == 105) && (acl_type[1] == 152)) // SVC
! temp_data.data_packet.battery = ParseTuple (acl_data[0],
acl_data[1]);
! if ((acl_type[0] == 214) && (acl_type[1] == 208)) // SAU
! temp_data.data_packet.mic = acl_data[1];
! }
! else // Using a single tuple, defaulting to SGX
! if ((acl_type[0] == 234) && (acl_type[1] == 128)) // SGX
! for (i = 0; i < readppacket; i++)
! {
! accelX[i] = ParseTuple (acl_data[0+(i*6)], acl_data[1+(i*6)]);
! accelY[i] = ParseTuple (acl_data[2+(i*6)], acl_data[3+(i*6)]);
! accelZ[i] = ParseTuple (acl_data[4+(i*6)], acl_data[5+(i*6)]);
! }
! }
!
! // If multiple tuples/single packet mode enabled...
! if (readppacket == 0)
! // Publish the WSN data
! Publish (device_addr, NULL, PLAYER_MSGTYPE_DATA, PLAYER_WSN_DATA,
! &temp_data, sizeof (player_wsn_data_t), NULL);
! else
! // If single tuple/multiple packets mode enabled...
! for (i = 0; i < readppacket; i++)
! {
! if (raw_or_converted != 0)
! {
! node_values = FindNodeValues (temp_data.node_id);
! temp_data.data_packet.accel_x = ConvertAccel (accelX[i],
node_values.c_values[0], node_values.c_values[1],
raw_or_converted);
! temp_data.data_packet.accel_y = ConvertAccel (accelY[i],
node_values.c_values[2], node_values.c_values[3],
raw_or_converted);
! temp_data.data_packet.accel_z = ConvertAccel (accelZ[i],
node_values.c_values[4], node_values.c_values[5],
raw_or_converted);
! }
! else
! {
! temp_data.data_packet.accel_x = accelX[i];
! temp_data.data_packet.accel_y = accelY[i];
! temp_data.data_packet.accel_z = accelZ[i];
! }
! // Publish the WSN data (each packet goes separately)
! Publish (device_addr, NULL, PLAYER_MSGTYPE_DATA, PLAYER_WSN_DATA,
&temp_data, sizeof (player_wsn_data_t), NULL);
! }
p_pkt_free (packet);
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit