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

Reply via email to