If a SDO client receives an unexpected SDO server reply, it calls failedSDO() and sets the corresponding "SDO line" to SDO_ABORTED_INTERNAL state. The "SDO line" is not reset (closed) and as a result of this any further SDO client request to the same SDO server will fail in getSDOlineOnUse().
The following failedSDO() patch uses the "SDO line" Callback() functionality to notify the user application about the unexpected SDO server reply. The Callback() is responsible to reset the failed "SDO line". 305a306 > UNS8 result = 0; 318,319c319 < err = sendSDOabort(d, whoami, nodeId, index, subIndex, abortCode); < if (err) { --- > if (sendSDOabort(d, whoami, nodeId, index, subIndex, abortCode)) { 321c321 < return 0xFF; --- > result = 0xFF; 323c323,327 < return 0; --- > /* Call the user function to inform about the problem. */ > if(!err && (whoami == SDO_CLIENT) && d->transfers[line].Callback) > /* If there is a callback, it is responsible to close the SDO > transfer */ > (*d->transfers[line].Callback)(d, d->transfers[line].nodeId); > return result; Vlad Apostolov Software Engineer Rail Technology International 9 Commercial Drive | Lynbrook | Victoria 3975 | Australia Office: +61 3 8768 6000 | Fax: +61 3 8787 8000 Direct: +61 3 8768 6030 | M: 0411 350 700 Web: www.rti-group.com<http://www.rti-group.com/> | E: vaposto...@rti-group.com<mailto:vaposto...@rti-group.com>
------------------------------------------------------------------------------
_______________________________________________ Canfestival-devel mailing list Canfestival-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/canfestival-devel