]> rtime.felk.cvut.cz Git - CanFestival-3.git/blobdiff - include/data.h
FastScan review
[CanFestival-3.git] / include / data.h
index 4f736ea344aa844819538f6f0d352957f87cb028..0cd0a43845b4a40ff73cfca67ba97dfce2ebf040 100644 (file)
@@ -42,8 +42,12 @@ typedef struct struct_CO_Data CO_Data;
 #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 */
 struct struct_CO_Data {
@@ -51,9 +55,9 @@ struct struct_CO_Data {
        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;
        
@@ -68,7 +72,9 @@ struct struct_CO_Data {
        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;
@@ -85,10 +91,11 @@ struct struct_CO_Data {
        /*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; 
        
@@ -96,6 +103,7 @@ struct struct_CO_Data {
     const indextable* dcf_odentry;
        UNS8* dcf_cursor;
        UNS32 dcf_entries_count;
+       UNS8 dcf_request;
        
        /* EMCY */
        e_errorState error_state;
@@ -107,6 +115,11 @@ struct struct_CO_Data {
        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,
@@ -133,6 +146,47 @@ struct struct_CO_Data {
        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 */
@@ -161,12 +215,15 @@ struct struct_CO_Data {
                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 */\
@@ -186,6 +243,7 @@ struct struct_CO_Data {
        /*& NODE_PREFIX ## _obj1007, */            /* Sync_window_length */\
        _post_sync,                 /* post_sync */\
        _post_TPDO,                 /* post_TPDO */\
+       _post_SlaveBootup,                      /* post_SlaveBootup */\
        \
        /* General */\
        0,                                         /* toggle */\
@@ -196,6 +254,7 @@ struct struct_CO_Data {
     NULL,       /*dcf_odentry*/\
        NULL,           /*dcf_cursor*/\
        1,              /*dcf_entries_count*/\
+       0,              /* dcf_request*/\
        \
        /* EMCY */\
        Error_free,                      /* error_state */\
@@ -208,7 +267,9 @@ struct struct_CO_Data {
        {\
        REPEAT_EMCY_MAX_ERRORS_TIMES(ERROR_DATA_INITIALIZER)\
        },\
-       _post_emcy              /* post_emcy */\
+       _post_emcy,              /* post_emcy */\
+       /* LSS */\
+       lss_Initializer\
 }
 
 #ifdef __cplusplus