src/sdo.c
changeset 495 b2d6307a89fa
parent 481 9dd36e4453ae
child 499 061f12bd838b
equal deleted inserted replaced
494:aa36efce6e78 495:b2d6307a89fa
  1507 {
  1507 {
  1508 	return _readNetworkDict (d, nodeId, index, subIndex, dataType, Callback);
  1508 	return _readNetworkDict (d, nodeId, index, subIndex, dataType, Callback);
  1509 }
  1509 }
  1510 
  1510 
  1511 /*!                                                                                                
  1511 /*!                                                                                                
  1512 **                                                                                                 
  1512 **
  1513 **                                                                                                 
  1513 **
  1514 ** @param d                                                                                        
  1514 ** @param d
  1515 ** @param nodeId                                                                                   
  1515 ** @param nodeId
  1516 ** @param data                                                                                     
  1516 ** @param data
  1517 ** @param size                                                                                     
  1517 ** @param size pointer to expected size, changed into returned size. Expected size will be truncated to transfered data size 
  1518 ** @param abortCode                                                                                
  1518 ** @param abortCode
  1519 **                                                                                                 
  1519 **
  1520 ** @return                                                                                         
  1520 ** @return
  1521 **/   
  1521 **/   
  1522 UNS8 getReadResultNetworkDict (CO_Data* d, UNS8 nodeId, void* data, UNS8 *size, 
  1522 UNS8 getReadResultNetworkDict (CO_Data* d, UNS8 nodeId, void* data, UNS8 *size, 
  1523 			       UNS32 * abortCode)
  1523 			       UNS32 * abortCode)
  1524 {
  1524 {
  1525   UNS8 i;
  1525   UNS8 i;
  1535   }
  1535   }
  1536   if (d->transfers[line].state != SDO_FINISHED)
  1536   if (d->transfers[line].state != SDO_FINISHED)
  1537     return d->transfers[line].state;
  1537     return d->transfers[line].state;
  1538 
  1538 
  1539   /* Transfert is finished. Put the value in the data. */
  1539   /* Transfert is finished. Put the value in the data. */
  1540   * size = (UNS8)d->transfers[line].count;
  1540   /* use transfers[line].count as max size */
       
  1541   if( (UNS8)d->transfers[line].count < *size )
       
  1542   	*size = (UNS8)d->transfers[line].count;
  1541   for  ( i = 0 ; i < *size ; i++) {
  1543   for  ( i = 0 ; i < *size ; i++) {
  1542 # ifdef CANOPEN_BIG_ENDIAN
  1544 # ifdef CANOPEN_BIG_ENDIAN
  1543     if (d->transfers[line].dataType != visible_string)
  1545     if (d->transfers[line].dataType != visible_string)
  1544       ( (char *) data)[*size - 1 - i] = d->transfers[line].data[i];
  1546       ( (char *) data)[*size - 1 - i] = d->transfers[line].data[i];
  1545     else /* String of bytes. */
  1547     else /* String of bytes. */