include/data.h
author fbeaulier
Tue, 16 Aug 2011 14:15:52 +0200
changeset 663 70fc3603e36f
parent 636 033fe6f1ec3c
child 664 a03f0aa7d219
permissions -rwxr-xr-x
timers_unix.c : remove sigint and sigterm catch
sdo : Allow multiple servers
The sdo transfer struct is not anymore referenced by server's node id but by
client or server number in the OD. Node id is not relevant in SDO transfert.
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
#ifndef __data_h__
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    24
#define __data_h__
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    25
251
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
    26
#ifdef __cplusplus
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
    27
extern "C" {
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
    28
#endif
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
    29
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    30
/* declaration of CO_Data type let us include all necessary headers
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    31
 struct struct_CO_Data can then be defined later
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    32
 */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    33
typedef struct struct_CO_Data CO_Data;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    34
145
e747d2e26af0 Win32 Native support and dynamicaly loaded CAN drivers for Linux, Cygwin and Win32.
etisserant
parents: 91
diff changeset
    35
#include "applicfg.h"
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    36
#include "def.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    37
#include "can.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    38
#include "objdictdef.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    39
#include "objacces.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    40
#include "sdo.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    41
#include "pdo.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
#include "states.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    43
#include "lifegrd.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    44
#include "sync.h"
383
7d8afedb8769 Fixed missing includes causing warnings
etisserant
parents: 381
diff changeset
    45
#include "nmtSlave.h"
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    46
#include "nmtMaster.h"
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
    47
#include "emcy.h"
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
    48
#ifdef CO_ENABLE_LSS
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
    49
#include "lss.h"
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
    50
#endif
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    51
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 517
diff changeset
    52
/**
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 517
diff changeset
    53
 * @ingroup od
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 528
diff changeset
    54
 * @brief This structure contains all necessary informations to define a CANOpen node 
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 517
diff changeset
    55
 */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    56
struct struct_CO_Data {
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    57
	/* Object dictionary */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    58
	UNS8 *bDeviceNodeId;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    59
	const indextable *objdict;
235
f812bf6b7237 Preliminary implementation of Event Timer and Inhibit Timer driven TPDO
etisserant
parents: 204
diff changeset
    60
	s_PDO_status *PDO_status;
475
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
    61
	const quick_index *firstIndex;
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
    62
	const quick_index *lastIndex;
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
    63
	const UNS16 *ObjdictSize;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    64
	const UNS8 *iam_a_slave;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    65
	valueRangeTest_t valueRangeTest;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    66
	
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    67
	/* SDO */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    68
	s_transfer transfers[SDO_MAX_SIMULTANEOUS_TRANSFERTS];
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    69
	/* s_sdo_parameter *sdo_parameters; */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    70
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    71
	/* State machine */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    72
	e_nodeState nodeState;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    73
	s_state_communication CurrentCommunicationState;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    74
	initialisation_t initialisation;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    75
	preOperational_t preOperational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    76
	operational_t operational;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    77
	stopped_t stopped;
475
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
    78
     void (*NMT_Slave_Node_Reset_Callback)(CO_Data*);
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
    79
     void (*NMT_Slave_Communications_Reset_Callback)(CO_Data*);
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
    80
     
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    81
	/* NMT-heartbeat */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    82
	UNS8 *ConsumerHeartbeatCount;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    83
	UNS32 *ConsumerHeartbeatEntries;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    84
	TIMER_HANDLE *ConsumerHeartBeatTimers;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    85
	UNS16 *ProducerHeartBeatTime;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    86
	TIMER_HANDLE ProducerHeartBeatTimer;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    87
	heartbeatError_t heartbeatError;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    88
	e_nodeState NMTable[NMT_MAX_NODE_ID]; 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    89
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    90
	/* SYNC */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    91
	TIMER_HANDLE syncTimer;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    92
	UNS32 *COB_ID_Sync;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    93
	UNS32 *Sync_Cycle_Period;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
    94
	/*UNS32 *Sync_window_length;;*/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    95
	post_sync_t post_sync;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    96
	post_TPDO_t post_TPDO;
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
    97
	post_SlaveBootup_t post_SlaveBootup;
635
30a0e926bb2e ADDED: - new callback post_SlaveStateChange so that a master can monitor the state of its slave nodes using a heartbeat.
Christian Taedcke
parents: 561
diff changeset
    98
  post_SlaveStateChange_t post_SlaveStateChange;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    99
	
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
   100
	/* General */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   101
	UNS8 toggle;
405
487b37176423 Changed CAN_HANDLE into CAN_PORT in data.h and lss.h. More semanticaly correct.
etisserant
parents: 384
diff changeset
   102
	CAN_PORT canHandle;	
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   103
	scanIndexOD_t scanIndexOD;
161
c4908cc776a9 SetODEntry now call CO_data->storeODSubEntry(Index,SubIndex) for variables to be Stored (when column Save==True in GUI)
etisserant
parents: 149
diff changeset
   104
	storeODSubIndex_t storeODSubIndex; 
178
01d81faa3350 Add concise DCF support
greg
parents: 172
diff changeset
   105
	
01d81faa3350 Add concise DCF support
greg
parents: 172
diff changeset
   106
	/* DCF concise */
322
78615d6a8ddd One more compilation warning fixed.
etisserant
parents: 320
diff changeset
   107
    const indextable* dcf_odentry;
204
44ce74232ccb Some fixes for visual studio C compiler compatiblity.
etisserant
parents: 178
diff changeset
   108
	UNS8* dcf_cursor;
320
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 314
diff changeset
   109
	UNS32 dcf_entries_count;
349
1e6dd4ef46b9 fixed the DCF-LSS conflict
groke6
parents: 343
diff changeset
   110
	UNS8 dcf_request;
178
01d81faa3350 Add concise DCF support
greg
parents: 172
diff changeset
   111
	
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   112
	/* EMCY */
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   113
	e_errorState error_state;
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   114
	UNS8 error_history_size;
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   115
	UNS8* error_number;
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   116
	UNS32* error_first_element;
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   117
	UNS8* error_register;
314
68e83c3ffbb5 Better EMCY support. Now EMCY COB-ID depend on OD 1014h entry, as told in DS-301.
etisserant
parents: 284
diff changeset
   118
    UNS32* error_cobid;
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   119
	s_errors error_data[EMCY_MAX_ERRORS];
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   120
	post_emcy_t post_emcy;
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   121
	
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   122
#ifdef CO_ENABLE_LSS
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   123
	/* LSS */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   124
	lss_transfer_t lss_transfer;
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   125
	lss_StoreConfiguration_t lss_StoreConfiguration;
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   126
#endif	
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   127
};
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   128
91
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   129
#define NMTable_Initializer Unknown_state,
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   130
636
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   131
#ifdef SDO_DYNAMIC_BUFFER_ALLOCATION
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   132
#define s_transfer_Initializer {\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   133
		0,          /* nodeId */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   134
		0,          /* wohami */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   135
		SDO_RESET,  /* state */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   136
		0,          /* toggle */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   137
		0,          /* abortCode */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   138
		0,          /* index */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   139
		0,          /* subIndex */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   140
		0,          /* count */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   141
		0,          /* offset */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   142
		{0},        /* data (static use, so that all the table is initialize at 0)*/\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   143
    NULL,       /* dynamicData */ \
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   144
    0,          /* dynamicDataSize */ \
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   145
		0,          /* dataType */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   146
		-1,         /* timer */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   147
		NULL        /* Callback */\
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   148
	  },
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   149
#else
91
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   150
#define s_transfer_Initializer {\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   151
		0,          /* nodeId */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   152
		0,          /* wohami */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   153
		SDO_RESET,  /* state */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   154
		0,          /* toggle */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   155
		0,          /* abortCode */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   156
		0,          /* index */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   157
		0,          /* subIndex */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   158
		0,          /* count */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   159
		0,          /* offset */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   160
		{0},        /* data (static use, so that all the table is initialize at 0)*/\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   161
		0,          /* dataType */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   162
		-1,         /* timer */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   163
		NULL        /* Callback */\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   164
	  },
636
033fe6f1ec3c ADDED: - dynamic memory allocation for sdo transfer using malloc and free
Christian Taedcke
parents: 635
diff changeset
   165
#endif //SDO_DYNAMIC_BUFFER_ALLOCATION
91
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   166
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   167
#define ERROR_DATA_INITIALIZER \
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   168
	{\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   169
	0, /* errCode */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   170
	0, /* errRegMask */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   171
	0 /* active */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   172
	},
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   173
	
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   174
#ifdef CO_ENABLE_LSS
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   175
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   176
#ifdef CO_ENABLE_LSS_FS	
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   177
#define lss_fs_Initializer \
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   178
		,0,						/* IDNumber */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   179
  		128, 					/* BitChecked */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   180
  		0,						/* LSSSub */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   181
  		0, 						/* LSSNext */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   182
  		0, 						/* LSSPos */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   183
  		LSS_FS_RESET,			/* FastScan_SM */\
517
003679edc437 FastScan review
groke6
parents: 475
diff changeset
   184
  		-1,						/* timerFS */\
003679edc437 FastScan review
groke6
parents: 475
diff changeset
   185
  		{{0,0,0,0},{0,0,0,0}}   /* lss_fs_transfer */
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   186
#else
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   187
#define lss_fs_Initializer
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   188
#endif		
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   189
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   190
#define lss_Initializer {\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   191
		LSS_RESET,  			/* state */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   192
		0,						/* command */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   193
		LSS_WAITING_MODE, 		/* mode */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   194
		0,						/* dat1 */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   195
		0,						/* dat2 */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   196
		0,          			/* NodeID */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   197
		0,          			/* addr_sel_match */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   198
		0,          			/* addr_ident_match */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   199
		"none",         		/* BaudRate */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   200
		0,          			/* SwitchDelay */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   201
		SDELAY_OFF,   			/* SwitchDelayState */\
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   202
		NULL,					/* canHandle_t */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   203
		-1,						/* TimerMSG */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   204
		-1,          			/* TimerSDELAY */\
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   205
		NULL,        			/* Callback */\
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   206
		0						/* LSSanswer */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   207
		lss_fs_Initializer		/*FastScan service initialization */\
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   208
	  },\
384
83793fc7ce48 added canChangeBaudRate to the driver interface
groke6
parents: 383
diff changeset
   209
	  NULL 	/* _lss_StoreConfiguration*/
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   210
#else
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   211
#define lss_Initializer
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   212
#endif
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   213
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   214
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
   215
/* A macro to initialize the data in client app.*/
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   216
/* CO_Data structure */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   217
#define CANOPEN_NODE_DATA_INITIALIZER(NODE_PREFIX) {\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   218
	/* Object dictionary*/\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   219
	& NODE_PREFIX ## _bDeviceNodeId,     /* bDeviceNodeId */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   220
	NODE_PREFIX ## _objdict,             /* objdict  */\
235
f812bf6b7237 Preliminary implementation of Event Timer and Inhibit Timer driven TPDO
etisserant
parents: 204
diff changeset
   221
	NODE_PREFIX ## _PDO_status,          /* PDO_status */\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   222
	& NODE_PREFIX ## _firstIndex,        /* firstIndex */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   223
	& NODE_PREFIX ## _lastIndex,         /* lastIndex */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   224
	& NODE_PREFIX ## _ObjdictSize,       /* ObjdictSize */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   225
	& NODE_PREFIX ## _iam_a_slave,       /* iam_a_slave */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   226
	NODE_PREFIX ## _valueRangeTest,      /* valueRangeTest */\
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   227
	\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   228
	/* SDO, structure s_transfer */\
91
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   229
	{\
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   230
          REPEAT_SDO_MAX_SIMULTANEOUS_TRANSFERTS_TIMES(s_transfer_Initializer)\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   231
	},\
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   232
	\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   233
	/* State machine*/\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   234
	Unknown_state,      /* nodeState */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   235
	/* structure s_state_communication */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   236
	{\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   237
		0,          /* csBoot_Up */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   238
		0,          /* csSDO */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   239
		0,          /* csEmergency */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   240
		0,          /* csSYNC */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   241
		0,          /* csHeartbeat */\
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   242
		0,           /* csPDO */\
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   243
		0           /* csLSS */\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   244
	},\
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   245
	_initialisation,     /* initialisation */\
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   246
	_preOperational,     /* preOperational */\
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   247
	_operational,        /* operational */\
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   248
	_stopped,            /* stopped */\
475
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
   249
	NULL,                /* NMT node reset callback */\
4b63ea646964 Added NMT reset callbacks, patch from Edward
etisserant
parents: 405
diff changeset
   250
	NULL,                /* NMT communications reset callback */\
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   251
	\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   252
	/* NMT-heartbeat */\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   253
	& NODE_PREFIX ## _highestSubIndex_obj1016, /* ConsumerHeartbeatCount */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   254
	NODE_PREFIX ## _obj1016,                   /* ConsumerHeartbeatEntries */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   255
	NODE_PREFIX ## _heartBeatTimers,           /* ConsumerHeartBeatTimers  */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   256
	& NODE_PREFIX ## _obj1017,                 /* ProducerHeartBeatTime */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   257
	TIMER_NONE,                                /* ProducerHeartBeatTimer */\
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   258
	_heartbeatError,           /* heartbeatError */\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   259
	\
91
ed2612282988 - Better array initialization in data.h CANOPEN_NODE_DATA_INITIALIZER macro. Use a little hack with configure and config.h to create the "pure Ansi C" initializer.
etisserant
parents: 78
diff changeset
   260
	{REPEAT_NMT_MAX_NODE_ID_TIMES(NMTable_Initializer)},\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   261
                                                   /* is  well initialized at "Unknown_state". Is it ok ? (FD)*/\
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   262
	\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   263
	/* SYNC */\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   264
	TIMER_NONE,                                /* syncTimer */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   265
	& NODE_PREFIX ## _obj1005,                 /* COB_ID_Sync */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   266
	& NODE_PREFIX ## _obj1006,                 /* Sync_Cycle_Period */\
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   267
	/*& NODE_PREFIX ## _obj1007, */            /* Sync_window_length */\
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   268
	_post_sync,                 /* post_sync */\
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   269
	_post_TPDO,                 /* post_TPDO */\
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   270
	_post_SlaveBootup,			/* post_SlaveBootup */\
635
30a0e926bb2e ADDED: - new callback post_SlaveStateChange so that a master can monitor the state of its slave nodes using a heartbeat.
Christian Taedcke
parents: 561
diff changeset
   271
  _post_SlaveStateChange,			/* post_SlaveStateChange */\
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   272
	\
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   273
	/* General */\
78
ac05410cc1b8 compilers compatibility
frdupin
parents: 71
diff changeset
   274
	0,                                         /* toggle */\
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 161
diff changeset
   275
	NULL,                   /* canSend */\
161
c4908cc776a9 SetODEntry now call CO_data->storeODSubEntry(Index,SubIndex) for variables to be Stored (when column Save==True in GUI)
etisserant
parents: 149
diff changeset
   276
	NODE_PREFIX ## _scanIndexOD,                /* scanIndexOD */\
178
01d81faa3350 Add concise DCF support
greg
parents: 172
diff changeset
   277
	_storeODSubIndex,                /* storeODSubIndex */\
320
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 314
diff changeset
   278
    /* DCF concise */\
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 314
diff changeset
   279
    NULL,       /*dcf_odentry*/\
178
01d81faa3350 Add concise DCF support
greg
parents: 172
diff changeset
   280
	NULL,		/*dcf_cursor*/\
320
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 314
diff changeset
   281
	1,		/*dcf_entries_count*/\
349
1e6dd4ef46b9 fixed the DCF-LSS conflict
groke6
parents: 343
diff changeset
   282
	0,		/* dcf_request*/\
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   283
	\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   284
	/* EMCY */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   285
	Error_free,                      /* error_state */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   286
	sizeof(NODE_PREFIX ## _obj1003) / sizeof(NODE_PREFIX ## _obj1003[0]),      /* error_history_size */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   287
	& NODE_PREFIX ## _highestSubIndex_obj1003,    /* error_number */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   288
	& NODE_PREFIX ## _obj1003[0],    /* error_first_element */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   289
	& NODE_PREFIX ## _obj1001,       /* error_register */\
314
68e83c3ffbb5 Better EMCY support. Now EMCY COB-ID depend on OD 1014h entry, as told in DS-301.
etisserant
parents: 284
diff changeset
   290
    & NODE_PREFIX ## _obj1014,       /* error_cobid */\
284
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   291
	/* error_data: structure s_errors */\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   292
	{\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   293
	REPEAT_EMCY_MAX_ERRORS_TIMES(ERROR_DATA_INITIALIZER)\
24bf3d692993 Implemented EMCY objects.
luis
parents: 251
diff changeset
   294
	},\
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   295
	_post_emcy,              /* post_emcy */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   296
	/* LSS */\
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 322
diff changeset
   297
	lss_Initializer\
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   298
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   299
251
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
   300
#ifdef __cplusplus
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
   301
};
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
   302
#endif
cab66ef3e68e Some fixes for C++
etisserant
parents: 235
diff changeset
   303
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 32
diff changeset
   304
#endif /* __data_h__ */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   305
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   306