src/states.c
author etisserant
Fri, 13 Apr 2007 10:57:03 +0200
changeset 158 b505f7116a1c
parent 152 5e14844e5756
child 178 01d81faa3350
permissions -rw-r--r--
Moved DS-301 PDF into objdictgen. Fixed installation on linux. Now TestMasterSlave is also installed in $PREFIX/bin.
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     1
/*
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     3
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     4
Copyright (C): Edouard TISSERANT and Francis DUPIN
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     5
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     6
See COPYING file for copyrights details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     7
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     8
This library is free software; you can redistribute it and/or
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    10
License as published by the Free Software Foundation; either
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    12
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    13
This library is distributed in the hope that it will be useful,
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    16
Lesser General Public License for more details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    17
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    19
License along with this library; if not, write to the Free Software
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    21
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    22
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    23
#include "states.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    24
#include "def.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    25
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    26
#include "nmtSlave.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    27
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
    28
/* Prototypes for internals functions */
53
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    29
void switchCommunicationState(CO_Data* d, 
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    30
	s_state_communication *newCommunicationState);
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    31
	
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    32
/*****************************************************************************/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    33
e_nodeState getState(CO_Data* d)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    34
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    35
  return d->nodeState;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    36
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    37
53
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    38
/*****************************************************************************/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    39
void canDispatch(CO_Data* d, Message *m)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    40
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    41
	 switch(m->cob_id.w >> 7)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
	{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    43
		case SYNC:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    44
			if(d->CurrentCommunicationState.csSYNC)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    45
				proceedSYNC(d,m);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    46
			break;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
    47
		/* case TIME_STAMP: */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    48
		case PDO1tx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    49
		case PDO1rx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    50
		case PDO2tx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    51
		case PDO2rx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    52
		case PDO3tx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    53
		case PDO3rx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    54
		case PDO4tx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    55
		case PDO4rx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    56
			if (d->CurrentCommunicationState.csPDO)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    57
				proceedPDO(d,m);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    58
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    59
		case SDOtx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    60
		case SDOrx:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    61
			if (d->CurrentCommunicationState.csSDO)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    62
				proceedSDO(d,m);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    63
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    64
		case NODE_GUARD:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    65
			if (d->CurrentCommunicationState.csHeartbeat)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    66
				proceedNODE_GUARD(d,m);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    67
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    68
		case NMT:
88
b6e0b91d073a pointer bogue for *(d->iam_a_slave)
frdupin
parents: 71
diff changeset
    69
			if (*(d->iam_a_slave))
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    70
			{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    71
				proceedNMTstateChange(d,m);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    72
			}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    73
	}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    74
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    75
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    76
#define StartOrStop(CommType, FuncStart, FuncStop) \
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    77
	if(newCommunicationState->CommType && !d->CurrentCommunicationState.CommType){\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    78
		MSG_ERR(0x9999,#FuncStart, 9999);\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    79
		d->CurrentCommunicationState.CommType = 1;\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    80
		FuncStart;\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    81
	}else if(!newCommunicationState->CommType && d->CurrentCommunicationState.CommType){\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    82
		MSG_ERR(0x9999,#FuncStop, 9999);\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    83
		d->CurrentCommunicationState.CommType = 0;\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    84
		FuncStop;\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    85
	}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    86
#define None
53
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    87
	
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    88
/*****************************************************************************/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    89
void switchCommunicationState(CO_Data* d, s_state_communication *newCommunicationState)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    90
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    91
	StartOrStop(csSDO,	None,		resetSDO(d))
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    92
	StartOrStop(csSYNC,	startSYNC(d),		stopSYNC(d))
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    93
	StartOrStop(csHeartbeat,	heartbeatInit(d),	heartbeatStop(d))
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
    94
/*	StartOrStop(Emergency,,) */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    95
	StartOrStop(csPDO,	None,	None)
14
1fbdf88163b3 d?placement de l'envoi du bootup
dejoigny
parents: 0
diff changeset
    96
	StartOrStop(csBoot_Up,	None,	slaveSendBootUp(d))
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    97
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    98
53
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
    99
/*****************************************************************************/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   100
UNS8 setState(CO_Data* d, e_nodeState newState)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   101
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   102
	while(newState != d->nodeState){
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   103
		switch( newState ){
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   104
			case Initialisation:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   105
			{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   106
				s_state_communication newCommunicationState = {1, 0, 0, 0, 0, 0};
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   107
				/* This will force a second loop for the state switch */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   108
				d->nodeState = Initialisation;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   109
				newState = Pre_operational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   110
				switchCommunicationState(d, &newCommunicationState);
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   111
				/* call user app related state func. */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   112
				(*d->initialisation)();
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   113
			}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   114
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   115
								
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   116
			case Pre_operational:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   117
			{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   118
				s_state_communication newCommunicationState = {0, 1, 1, 1, 1, 0};
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   119
				d->nodeState = Pre_operational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   120
				newState = Pre_operational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   121
				switchCommunicationState(d, &newCommunicationState);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   122
				(*d->preOperational)();
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   123
			}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   124
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   125
								
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   126
			case Operational:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   127
			if(d->nodeState == Initialisation) return 0xFF;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   128
			{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   129
				s_state_communication newCommunicationState = {0, 1, 1, 1, 1, 1};
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   130
				d->nodeState = Operational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   131
				newState = Operational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   132
				switchCommunicationState(d, &newCommunicationState);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   133
				(*d->operational)();
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   134
			}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   135
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   136
						
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   137
			case Stopped:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   138
			if(d->nodeState == Initialisation) return 0xFF;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   139
			{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   140
				s_state_communication newCommunicationState = {0, 0, 0, 0, 1, 0};
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   141
				d->nodeState = Stopped;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   142
				newState = Stopped;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   143
				switchCommunicationState(d, &newCommunicationState);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   144
				(*d->stopped)();
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   145
			}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   146
			break;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   147
			
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   148
			default:
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   149
				return 0xFF;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   150
		}/* end switch case */
94
bdf4c86be6b2 Removed all non-supported and uncontrolled source code. Please refer to CVS version "Before_..." to see old code.
etisserant
parents: 88
diff changeset
   151
	
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   152
	}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   153
	return 0;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   154
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   155
53
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
   156
/*****************************************************************************/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   157
UNS8 getNodeId(CO_Data* d)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   158
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   159
  return *d->bDeviceNodeId;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   160
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   161
53
73bc47a0db55 Add prototypes
frdupin
parents: 14
diff changeset
   162
/*****************************************************************************/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   163
void setNodeId(CO_Data* d, UNS8 nodeId)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   164
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   165
  UNS16 offset = d->firstIndex->SDO_SVR;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   166
  if(offset){
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   167
      /* cob_id_client = 0x600 + nodeId; */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   168
      *(UNS32*)d->objdict[offset].pSubindex[1].pObject = 0x600 + nodeId;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   169
      /* cob_id_server = 0x580 + nodeId; */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   170
      *(UNS32*)d->objdict[offset].pSubindex[2].pObject = 0x580 + nodeId;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   171
      /* node Id client. As we do not know the value, we put the node Id Server */
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   172
      /* *(UNS8*)d->objdict[offset].pSubindex[3].pObject = nodeId; */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   173
  }
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   174
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   175
  /* ** Initialize the server(s) SDO parameters */
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   176
  /* Remember that only one SDO server is allowed, defined at index 0x1200 */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   177
 
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   178
  /* ** Initialize the client(s) SDO parameters  */
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   179
  /* Nothing to initialize (no default values required by the DS 401) */
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   180
  /* ** Initialize the receive PDO communication parameters. Only for 0x1400 to 0x1403 */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   181
  {
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   182
    UNS8 i = 0;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   183
    UNS16 offset = d->firstIndex->PDO_RCV;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   184
    UNS16 lastIndex = d->lastIndex->PDO_RCV;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   185
    UNS32 cobID[] = {0x200, 0x300, 0x400, 0x500};
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   186
    if( offset ) while( (offset <= lastIndex) && (i < 4)) {
152
5e14844e5756 Now, setNodeId does change TPDO and RPDO CobId without testing previous CobId in order to avoid confusion. Standard does not says when 'default value' should be applied. See DS301 - Object 1400h - 15FFh: Receive PDO Communication Parameter page 108.
etisserant
parents: 149
diff changeset
   187
      //if(*(UNS32*)d->objdict[offset].pSubindex[1].pObject == cobID[i] + *d->bDeviceNodeId)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   188
	      *(UNS32*)d->objdict[offset].pSubindex[1].pObject = cobID[i] + nodeId;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   189
      i ++;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   190
      offset ++;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   191
    }
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   192
  }
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   193
  /* ** Initialize the transmit PDO communication parameters. Only for 0x1800 to 0x1803 */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   194
  {
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   195
    UNS8 i = 0;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   196
    UNS16 offset = d->firstIndex->PDO_TRS;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   197
    UNS16 lastIndex = d->lastIndex->PDO_TRS;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   198
    UNS32 cobID[] = {0x180, 0x280, 0x380, 0x480};
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   199
    i = 0;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   200
    if( offset ) while ((offset <= lastIndex) && (i < 4)) {
152
5e14844e5756 Now, setNodeId does change TPDO and RPDO CobId without testing previous CobId in order to avoid confusion. Standard does not says when 'default value' should be applied. See DS301 - Object 1400h - 15FFh: Receive PDO Communication Parameter page 108.
etisserant
parents: 149
diff changeset
   201
      //if(*(UNS32*)d->objdict[offset].pSubindex[1].pObject == cobID[i] + *d->bDeviceNodeId)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   202
	      *(UNS32*)d->objdict[offset].pSubindex[1].pObject = cobID[i] + nodeId;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   203
      i ++;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   204
      offset ++;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   205
    }
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   206
  }
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 53
diff changeset
   207
  /* bDeviceNodeId is defined in the object dictionary. */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   208
  *d->bDeviceNodeId = nodeId;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   209
}
149
fe50ada8020b Changes in the API:
etisserant
parents: 94
diff changeset
   210
fe50ada8020b Changes in the API:
etisserant
parents: 94
diff changeset
   211
void _initialisation(){}
fe50ada8020b Changes in the API:
etisserant
parents: 94
diff changeset
   212
void _preOperational(){}
fe50ada8020b Changes in the API:
etisserant
parents: 94
diff changeset
   213
void _operational(){}
fe50ada8020b Changes in the API:
etisserant
parents: 94
diff changeset
   214
void _stopped(){}