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

Reply via email to