src/sdo.c
changeset 172 0248c2b148bb
parent 166 b6fbc1c59a44
child 174 cd1638bc0cb0
equal deleted inserted replaced
171:db7a030babb2 172:0248c2b148bb
    96     MSG_WAR(0x2A02, "server node : ", d->transfers[id].nodeId);
    96     MSG_WAR(0x2A02, "server node : ", d->transfers[id].nodeId);
    97     MSG_WAR(0x2A02, "      index : ", d->transfers[id].index);
    97     MSG_WAR(0x2A02, "      index : ", d->transfers[id].index);
    98     MSG_WAR(0x2A02, "   subIndex : ", d->transfers[id].subIndex); 
    98     MSG_WAR(0x2A02, "   subIndex : ", d->transfers[id].subIndex); 
    99     /* Reset timer handler */
    99     /* Reset timer handler */
   100     d->transfers[id].timer = TIMER_NONE;
   100     d->transfers[id].timer = TIMER_NONE;
   101     /* Call the user function to inform of the problem.*/
   101     /*Set aborted state*/
   102     (*d->SDOtimeoutError)((UNS8)id);
   102     d->transfers[id].state = SDO_ABORTED_INTERNAL;
   103     /* Sending a SDO abort */
   103     /* Sending a SDO abort */
   104     sendSDOabort(d, d->transfers[id].whoami, 
   104     sendSDOabort(d, d->transfers[id].whoami, 
   105 		 d->transfers[id].index, d->transfers[id].subIndex, SDOABT_TIMED_OUT);
   105 		 d->transfers[id].index, d->transfers[id].subIndex, SDOABT_TIMED_OUT);
   106     /* Reset the line*/
   106     d->transfers[id].abortCode = SDOABT_TIMED_OUT;
   107     resetSDOline(d, (UNS8)id);
   107     /* Call the user function to inform of the problem.*/
       
   108     if(d->transfers[id].Callback)
       
   109     	/*If ther is a callback, it is responsible to close SDO transfer (client)*/
       
   110     	(*d->transfers[id].Callback)(d,d->transfers[id].nodeId);
       
   111     else if(d->transfers[id].whoami == SDO_SERVER)
       
   112     	/*Else, if server, reset the line*/
       
   113     	resetSDOline(d, (UNS8)id);
   108 }
   114 }
   109 
   115 
   110 #define StopSDO_TIMER(id) \
   116 #define StopSDO_TIMER(id) \
   111 MSG_WAR(0x3A05, "StopSDO_TIMER for line : ", line);\
   117 MSG_WAR(0x3A05, "StopSDO_TIMER for line : ", line);\
   112 d->transfers[id].timer = DelAlarm(d->transfers[id].timer);
   118 d->transfers[id].timer = DelAlarm(d->transfers[id].timer);
  1333     return SDO_ABORTED_INTERNAL;
  1339     return SDO_ABORTED_INTERNAL;
  1334   }
  1340   }
  1335   * abortCode = d->transfers[line].abortCode;
  1341   * abortCode = d->transfers[line].abortCode;
  1336   return d->transfers[line].state;
  1342   return d->transfers[line].state;
  1337 }
  1343 }
  1338 
       
  1339 void _SDOtimeoutError (UNS8 line){}