29 #include "led.h" |
29 #include "led.h" |
30 #else |
30 #else |
31 #define led_set_state(a,b) |
31 #define led_set_state(a,b) |
32 #endif |
32 #endif |
33 |
33 |
34 |
34 // Prototypes for internals functions |
|
35 void switchCommunicationState(CO_Data* d, |
|
36 s_state_communication *newCommunicationState); |
|
37 |
|
38 /*****************************************************************************/ |
35 e_nodeState getState(CO_Data* d) |
39 e_nodeState getState(CO_Data* d) |
36 { |
40 { |
37 return d->nodeState; |
41 return d->nodeState; |
38 } |
42 } |
39 |
43 |
|
44 /*****************************************************************************/ |
40 void canDispatch(CO_Data* d, Message *m) |
45 void canDispatch(CO_Data* d, Message *m) |
41 { |
46 { |
42 switch(m->cob_id.w >> 7) |
47 switch(m->cob_id.w >> 7) |
43 { |
48 { |
44 case SYNC: |
49 case SYNC: |
90 MSG_ERR(0x9999,#FuncStop, 9999);\ |
95 MSG_ERR(0x9999,#FuncStop, 9999);\ |
91 d->CurrentCommunicationState.CommType = 0;\ |
96 d->CurrentCommunicationState.CommType = 0;\ |
92 FuncStop;\ |
97 FuncStop;\ |
93 } |
98 } |
94 #define None |
99 #define None |
95 |
100 |
|
101 /*****************************************************************************/ |
96 void switchCommunicationState(CO_Data* d, s_state_communication *newCommunicationState) |
102 void switchCommunicationState(CO_Data* d, s_state_communication *newCommunicationState) |
97 { |
103 { |
98 StartOrStop(csSDO, None, resetSDO(d)) |
104 StartOrStop(csSDO, None, resetSDO(d)) |
99 StartOrStop(csSYNC, startSYNC(d), stopSYNC(d)) |
105 StartOrStop(csSYNC, startSYNC(d), stopSYNC(d)) |
100 StartOrStop(csHeartbeat, heartbeatInit(d), heartbeatStop(d)) |
106 StartOrStop(csHeartbeat, heartbeatInit(d), heartbeatStop(d)) |
101 // StartOrStop(Emergency,,) |
107 // StartOrStop(Emergency,,) |
102 StartOrStop(csPDO, None, None) |
108 StartOrStop(csPDO, None, None) |
103 StartOrStop(csBoot_Up, None, slaveSendBootUp(d)) |
109 StartOrStop(csBoot_Up, None, slaveSendBootUp(d)) |
104 } |
110 } |
105 |
111 |
|
112 /*****************************************************************************/ |
106 UNS8 setState(CO_Data* d, e_nodeState newState) |
113 UNS8 setState(CO_Data* d, e_nodeState newState) |
107 { |
114 { |
108 while(newState != d->nodeState){ |
115 while(newState != d->nodeState){ |
109 switch( newState ){ |
116 switch( newState ){ |
110 case Initialisation: |
117 case Initialisation: |
182 led_set_state(d, newState); |
189 led_set_state(d, newState); |
183 } |
190 } |
184 return 0; |
191 return 0; |
185 } |
192 } |
186 |
193 |
|
194 /*****************************************************************************/ |
187 UNS8 getNodeId(CO_Data* d) |
195 UNS8 getNodeId(CO_Data* d) |
188 { |
196 { |
189 return *d->bDeviceNodeId; |
197 return *d->bDeviceNodeId; |
190 } |
198 } |
191 |
199 |
|
200 /*****************************************************************************/ |
192 void setNodeId(CO_Data* d, UNS8 nodeId) |
201 void setNodeId(CO_Data* d, UNS8 nodeId) |
193 { |
202 { |
194 UNS16 offset = d->firstIndex->SDO_SVR; |
203 UNS16 offset = d->firstIndex->SDO_SVR; |
195 if(offset){ |
204 if(offset){ |
196 //cob_id_client = 0x600 + nodeId; |
205 //cob_id_client = 0x600 + nodeId; |