src/states.c
changeset 53 73bc47a0db55
parent 14 1fbdf88163b3
child 71 95cd3376cc9f
equal deleted inserted replaced
52:1dc256e8e49a 53:73bc47a0db55
    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;