41 UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize); |
41 UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize); |
42 |
42 |
43 |
43 |
44 static void send_consise_dcf_loop(CO_Data* d,UNS8 nodeId); |
44 static void send_consise_dcf_loop(CO_Data* d,UNS8 nodeId); |
45 |
45 |
|
46 /* Seek to next NodeID's DCF */ |
|
47 #define SEEK_NEXT_DCF() \ |
|
48 nodeId=(nodeId+1) % d->dcf_odentry->bSubCount; \ |
|
49 if(nodeId==0) nodeId=1; \ |
|
50 d->dcf_cursor = NULL; |
|
51 |
46 /** |
52 /** |
47 ** |
53 ** |
48 ** |
54 ** |
49 ** @param d |
55 ** @param d |
50 ** @param nodeId |
56 ** @param nodeId |
51 */ |
57 */ |
52 static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId) |
58 static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId) |
53 { |
59 { |
54 UNS32 abortCode; |
60 UNS32 abortCode = 0; |
55 |
61 |
56 if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED) |
62 if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED) |
57 { |
63 { |
58 MSG_ERR(0x1A01, "SDO error in consise DCF", abortCode); |
64 MSG_ERR(0x1A01, "SDO error in consise DCF", abortCode); |
59 MSG_WAR(0x2A02, "server node : ", nodeId); |
65 MSG_WAR(0x2A02, "server node : ", nodeId); |
60 } |
66 } |
61 |
67 |
62 closeSDOtransfer(d, nodeId, SDO_CLIENT); |
68 closeSDOtransfer(d, nodeId, SDO_CLIENT); |
|
69 /* Timedout ? */ |
|
70 if(abortCode == SDOABT_TIMED_OUT){ |
|
71 /* Node may not be ready, try another one */ |
|
72 /* Warning, this might leed to endless attempts */ |
|
73 /* if node does never answer */ |
|
74 SEEK_NEXT_DCF() |
|
75 } |
63 send_consise_dcf_loop(d,nodeId); |
76 send_consise_dcf_loop(d,nodeId); |
64 } |
77 } |
65 |
78 |
66 |
79 |
67 /** |
80 /** |