#include "states.h"
#include "lifegrd.h"
#include "sync.h"
+#include "nmtSlave.h"
#include "nmtMaster.h"
#include "emcy.h"
+#ifdef CO_ENABLE_LSS
+#include "lss.h"
+#endif
-/* This structurs contains all necessary information for a CanOpen node */
+/**
+ * @ingroup od
+ * @brief This structure contains all necessary information for a CanOpen node
+ */
struct struct_CO_Data {
/* Object dictionary */
UNS8 *bDeviceNodeId;
const indextable *objdict;
s_PDO_status *PDO_status;
- quick_index *firstIndex;
- quick_index *lastIndex;
- UNS16 *ObjdictSize;
+ const quick_index *firstIndex;
+ const quick_index *lastIndex;
+ const UNS16 *ObjdictSize;
const UNS8 *iam_a_slave;
valueRangeTest_t valueRangeTest;
preOperational_t preOperational;
operational_t operational;
stopped_t stopped;
-
+ void (*NMT_Slave_Node_Reset_Callback)(CO_Data*);
+ void (*NMT_Slave_Communications_Reset_Callback)(CO_Data*);
+
/* NMT-heartbeat */
UNS8 *ConsumerHeartbeatCount;
UNS32 *ConsumerHeartbeatEntries;
/*UNS32 *Sync_window_length;;*/
post_sync_t post_sync;
post_TPDO_t post_TPDO;
+ post_SlaveBootup_t post_SlaveBootup;
/* General */
UNS8 toggle;
- CAN_HANDLE canHandle;
+ CAN_PORT canHandle;
scanIndexOD_t scanIndexOD;
storeODSubIndex_t storeODSubIndex;
/* DCF concise */
+ const indextable* dcf_odentry;
UNS8* dcf_cursor;
- UNS32 dcf_count_targets;
+ UNS32 dcf_entries_count;
+ UNS8 dcf_request;
/* EMCY */
e_errorState error_state;
s_errors error_data[EMCY_MAX_ERRORS];
post_emcy_t post_emcy;
+#ifdef CO_ENABLE_LSS
+ /* LSS */
+ lss_transfer_t lss_transfer;
+ lss_StoreConfiguration_t lss_StoreConfiguration;
+#endif
};
#define NMTable_Initializer Unknown_state,
0, /* errRegMask */\
0 /* active */\
},
+
+#ifdef CO_ENABLE_LSS
+
+#ifdef CO_ENABLE_LSS_FS
+#define lss_fs_Initializer \
+ ,0, /* IDNumber */\
+ 128, /* BitChecked */\
+ 0, /* LSSSub */\
+ 0, /* LSSNext */\
+ 0, /* LSSPos */\
+ LSS_FS_RESET, /* FastScan_SM */\
+ -1, /* timerFS */\
+ {{0,0,0,0},{0,0,0,0}} /* lss_fs_transfer */
+#else
+#define lss_fs_Initializer
+#endif
+
+#define lss_Initializer {\
+ LSS_RESET, /* state */\
+ 0, /* command */\
+ LSS_WAITING_MODE, /* mode */\
+ 0, /* dat1 */\
+ 0, /* dat2 */\
+ 0, /* NodeID */\
+ 0, /* addr_sel_match */\
+ 0, /* addr_ident_match */\
+ "none", /* BaudRate */\
+ 0, /* SwitchDelay */\
+ SDELAY_OFF, /* SwitchDelayState */\
+ NULL, /* canHandle_t */\
+ -1, /* TimerMSG */\
+ -1, /* TimerSDELAY */\
+ NULL, /* Callback */\
+ 0 /* LSSanswer */\
+ lss_fs_Initializer /*FastScan service initialization */\
+ },\
+ NULL /* _lss_StoreConfiguration*/
+#else
+#define lss_Initializer
+#endif
+
/* A macro to initialize the data in client app.*/
/* CO_Data structure */
0, /* csEmergency */\
0, /* csSYNC */\
0, /* csHeartbeat */\
- 0 /* csPDO */\
+ 0, /* csPDO */\
+ 0 /* csLSS */\
},\
_initialisation, /* initialisation */\
_preOperational, /* preOperational */\
_operational, /* operational */\
_stopped, /* stopped */\
+ NULL, /* NMT node reset callback */\
+ NULL, /* NMT communications reset callback */\
\
/* NMT-heartbeat */\
& NODE_PREFIX ## _highestSubIndex_obj1016, /* ConsumerHeartbeatCount */\
/*& NODE_PREFIX ## _obj1007, */ /* Sync_window_length */\
_post_sync, /* post_sync */\
_post_TPDO, /* post_TPDO */\
+ _post_SlaveBootup, /* post_SlaveBootup */\
\
/* General */\
0, /* toggle */\
NULL, /* canSend */\
NODE_PREFIX ## _scanIndexOD, /* scanIndexOD */\
_storeODSubIndex, /* storeODSubIndex */\
+ /* DCF concise */\
+ NULL, /*dcf_odentry*/\
NULL, /*dcf_cursor*/\
- 1, /*dcf_count_targets*/\
+ 1, /*dcf_entries_count*/\
+ 0, /* dcf_request*/\
\
/* EMCY */\
Error_free, /* error_state */\
{\
REPEAT_EMCY_MAX_ERRORS_TIMES(ERROR_DATA_INITIALIZER)\
},\
- _post_emcy /* post_emcy */\
+ _post_emcy, /* post_emcy */\
+ /* LSS */\
+ lss_Initializer\
}
#ifdef __cplusplus