59 &PDO2_COBID, /*void * pSourceData,*/ |
59 &PDO2_COBID, /*void * pSourceData,*/ |
60 &size, /* UNS8 * pExpectedSize*/ |
60 &size, /* UNS8 * pExpectedSize*/ |
61 RW); /* UNS8 checkAccess */ |
61 RW); /* UNS8 checkAccess */ |
62 } |
62 } |
63 |
63 |
|
64 // Step counts number of times ConfigureSlaveNode is called |
|
65 static init_step = 0; |
|
66 |
|
67 /*Froward declaration*/ |
|
68 static void ConfigureSlaveNode(CO_Data* d, UNS8 nodeId); |
|
69 |
|
70 /**/ |
|
71 static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId) |
|
72 { |
|
73 UNS32 abortCode; |
|
74 if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED) |
|
75 eprintf("Master : Failed in initializing slave %2.2x, step %d, AbortCode :%4.4x \n", nodeId, init_step, abortCode); |
|
76 |
|
77 /* Finalise last SDO transfer with this node */ |
|
78 closeSDOtransfer(&TestMaster_Data, nodeId, SDO_CLIENT); |
|
79 |
|
80 ConfigureSlaveNode(d, nodeId); |
|
81 } |
|
82 |
64 /******************************************************** |
83 /******************************************************** |
65 * ConfigureSlaveNode is responsible to |
84 * ConfigureSlaveNode is responsible to |
66 * - setup slave TPDO 1 transmit time |
85 * - setup slave TPDO 1 transmit time |
67 * - setup slave TPDO 2 transmit time |
86 * - setup slave TPDO 2 transmit time |
68 * - switch to operational mode |
87 * - switch to operational mode |
74 ******************************************************** |
93 ******************************************************** |
75 * This is called first by TestMaster_preOperational |
94 * This is called first by TestMaster_preOperational |
76 * then it called again each time a SDO exchange is |
95 * then it called again each time a SDO exchange is |
77 * finished. |
96 * finished. |
78 ********************************************************/ |
97 ********************************************************/ |
|
98 |
79 static void ConfigureSlaveNode(CO_Data* d, UNS8 nodeId) |
99 static void ConfigureSlaveNode(CO_Data* d, UNS8 nodeId) |
80 { |
100 { |
81 // Step counts number of times ConfigureSlaveNode is called |
101 /* Master configure heartbeat producer time at 1000 ms |
82 static step = 1; |
102 * for slave node-id 0x02 by DCF concise */ |
83 |
103 |
84 UNS8 Transmission_Type = 0x01; |
104 UNS8 Transmission_Type = 0x01; |
85 UNS32 abortCode; |
105 UNS32 abortCode; |
86 UNS8 res; |
106 UNS8 res; |
87 eprintf("Master : ConfigureSlaveNode %2.2x\n", nodeId); |
107 eprintf("Master : ConfigureSlaveNode %2.2x\n", nodeId); |
88 |
108 |
89 switch(step++){ |
109 switch(++init_step){ |
90 case 1: /*First step : setup Slave's TPDO 1 to be transmitted on SYNC*/ |
110 case 1: /*First step : setup Slave's TPDO 1 to be transmitted on SYNC*/ |
91 eprintf("Master : set slave %2.2x TPDO 1 transmit type\n", nodeId); |
111 eprintf("Master : set slave %2.2x TPDO 1 transmit type\n", nodeId); |
92 res = writeNetworkDictCallBack (d, /*CO_Data* d*/ |
112 res = writeNetworkDictCallBack (d, /*CO_Data* d*/ |
93 *TestSlave_Data.bDeviceNodeId, /*UNS8 nodeId*/ |
113 nodeId, /*UNS8 nodeId*/ |
94 0x1800, /*UNS16 index*/ |
114 0x1800, /*UNS16 index*/ |
95 0x02, /*UNS8 subindex*/ |
115 0x02, /*UNS8 subindex*/ |
96 1, /*UNS8 count*/ |
116 1, /*UNS8 count*/ |
97 0, /*UNS8 dataType*/ |
117 0, /*UNS8 dataType*/ |
98 &Transmission_Type,/*void *data*/ |
118 &Transmission_Type,/*void *data*/ |
99 ConfigureSlaveNode); /*SDOCallback_t Callback*/ break; |
119 CheckSDOAndContinue); /*SDOCallback_t Callback*/ |
|
120 break; |
|
121 |
100 case 2: /*Second step*/ |
122 case 2: /*Second step*/ |
101 /*check and warn for previous slave OD access error*/ |
|
102 if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED) |
|
103 eprintf("Master : Couldn't set slave %2.2x TPDO 1 transmit type. AbortCode :%4.4x \n", nodeId, abortCode); |
|
104 |
|
105 /* Finalise last SDO transfer with this node */ |
|
106 closeSDOtransfer(&TestMaster_Data, |
|
107 *TestSlave_Data.bDeviceNodeId, |
|
108 SDO_CLIENT); |
|
109 |
|
110 /*Setup Slave's TPDO 1 to be transmitted on SYNC*/ |
|
111 eprintf("Master : set slave %2.2x TPDO 2 transmit type\n", nodeId); |
123 eprintf("Master : set slave %2.2x TPDO 2 transmit type\n", nodeId); |
112 writeNetworkDictCallBack (d, /*CO_Data* d*/ |
124 writeNetworkDictCallBack (d, /*CO_Data* d*/ |
113 *TestSlave_Data.bDeviceNodeId, /*UNS8 nodeId*/ |
125 nodeId, /*UNS8 nodeId*/ |
114 0x1801, /*UNS16 index*/ |
126 0x1801, /*UNS16 index*/ |
115 0x02, /*UNS16 index*/ |
127 0x02, /*UNS16 index*/ |
116 1, /*UNS8 count*/ |
128 1, /*UNS8 count*/ |
117 0, /*UNS8 dataType*/ |
129 0, /*UNS8 dataType*/ |
118 &Transmission_Type,/*void *data*/ |
130 &Transmission_Type,/*void *data*/ |
119 ConfigureSlaveNode); /*SDOCallback_t Callback*/ |
131 CheckSDOAndContinue); /*SDOCallback_t Callback*/ |
120 break; |
132 break; |
121 case 3: /*Last step*/ |
133 case 3: |
122 /*check and warn for previous slave OD access error*/ |
134 |
123 if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED) |
135 /****************************** START *******************************/ |
124 eprintf("Master : Couldn't set slave %2.2x TPDO 2 transmit type. AbortCode :%4.4x \n", nodeId, abortCode); |
136 |
125 |
|
126 /* Finalise last SDO transfer with this node */ |
|
127 closeSDOtransfer(&TestMaster_Data, |
|
128 *TestSlave_Data.bDeviceNodeId, |
|
129 SDO_CLIENT); |
|
130 |
|
131 /* Put the master in operational mode */ |
137 /* Put the master in operational mode */ |
132 setState(d, Operational); |
138 setState(d, Operational); |
133 |
139 |
134 /* Ask slave node to go in operational mode */ |
140 /* Ask slave node to go in operational mode */ |
135 masterSendNMTstateChange (d, nodeId, NMT_Start_Node); |
141 masterSendNMTstateChange (d, nodeId, NMT_Start_Node); |
|
142 |
136 } |
143 } |
137 |
|
138 } |
144 } |
139 |
145 |
140 void TestMaster_preOperational() |
146 void TestMaster_preOperational() |
141 { |
147 { |
142 |
148 |
143 eprintf("TestMaster_preOperational\n"); |
149 eprintf("TestMaster_preOperational\n"); |
144 ConfigureSlaveNode(&TestMaster_Data, 2); |
150 ConfigureSlaveNode(&TestMaster_Data, 0x02); |
145 |
151 |
146 } |
152 } |
147 |
153 |
148 void TestMaster_operational() |
154 void TestMaster_operational() |
149 { |
155 { |