#include "Slave.h"
#include "TestMasterSlave.h"
+extern s_BOARD MasterBoard;
/*****************************************************************************/
-void TestMaster_heartbeatError(UNS8 heartbeatID)
+void TestMaster_heartbeatError(CO_Data* d, UNS8 heartbeatID)
{
eprintf("TestMaster_heartbeatError %d\n", heartbeatID);
}
* - setup master RPDO 1 to receive TPDO 1 from id 2
* - setup master RPDO 2 to receive TPDO 2 from id 2
********************************************************/
-void TestMaster_initialisation()
+void TestMaster_initialisation(CO_Data* d)
{
UNS32 PDO1_COBID = 0x0182;
UNS32 PDO2_COBID = 0x0282;
UNS8 size = sizeof(UNS32);
+ UNS32 SINC_cicle=0;
+ UNS8 data_type = 0;
eprintf("TestMaster_initialisation\n");
&PDO2_COBID, /*void * pSourceData,*/
&size, /* UNS8 * pExpectedSize*/
RW); /* UNS8 checkAccess */
+
}
// Step counts number of times ConfigureSlaveNode is called
-static init_step = 0;
+static int init_step = 0;
/*Froward declaration*/
static void ConfigureSlaveNode(CO_Data* d, UNS8 nodeId);
/********************************************************
* ConfigureSlaveNode is responsible to
- * - setup slave TPDO 1 transmit time
- * - setup slave TPDO 2 transmit time
+ * - setup slave TPDO 1 transmit type
+ * - setup slave TPDO 2 transmit type
* - switch to operational mode
* - send NMT to slave
********************************************************
* Network Dictionary Access (SDO) with Callback
* Slave node state change request (NMT)
********************************************************
- * This is called first by TestMaster_preOperational
+ * This is called first by TestMaster_post_SlaveBootup
* then it called again each time a SDO exchange is
* finished.
********************************************************/
}
}
-void TestMaster_preOperational()
-{
+void TestMaster_preOperational(CO_Data* d)
+{
eprintf("TestMaster_preOperational\n");
- ConfigureSlaveNode(&TestMaster_Data, 0x02);
-
}
-void TestMaster_operational()
+void TestMaster_operational(CO_Data* d)
{
eprintf("TestMaster_operational\n");
}
-void TestMaster_stopped()
+void TestMaster_stopped(CO_Data* d)
{
eprintf("TestMaster_stopped\n");
}
-void TestMaster_post_sync()
+void TestMaster_post_sync(CO_Data* d)
{
eprintf("TestMaster_post_sync\n");
- eprintf("Master: %d %d %d %d %d %d %d %d %d %x %x\n",MasterMap1,MasterMap2 ,MasterMap3, MasterMap4,MasterMap5,MasterMap6,MasterMap7,MasterMap8,MasterMap9,MasterMap10,MasterMap11);
+ eprintf("Master: %d %d %d %d %d %d %d %d %d %x %x %d %d\n",
+ MasterMap1,
+ MasterMap2,
+ MasterMap3,
+ MasterMap4,
+ MasterMap5,
+ MasterMap6,
+ MasterMap7,
+ MasterMap8,
+ MasterMap9,
+ MasterMap10,
+ MasterMap11,
+ MasterMap12,
+ MasterMap13);
+}
+
+void TestMaster_post_emcy(CO_Data* d, UNS8 nodeID, UNS16 errCode, UNS8 errReg)
+{
+ eprintf("Master received EMCY message. Node: %2.2x ErrorCode: %4.4x ErrorRegister: %2.2x\n", nodeID, errCode, errReg);
}
char query_result = 0;
char waiting_answer = 0;
-void TestMaster_post_TPDO()
+static void CheckSDO(CO_Data* d, UNS8 nodeId)
+{
+ UNS32 abortCode;
+ if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED)
+ eprintf("Master : Failed in changing Slave's transmit type AbortCode :%4.4x \n", abortCode);
+
+ /* Finalise last SDO transfer with this node */
+ closeSDOtransfer(&TestMaster_Data, nodeId, SDO_CLIENT);
+}
+
+
+static int MasterSyncCount = 0;
+void TestMaster_post_TPDO(CO_Data* d)
{
- eprintf("TestMaster_post_TPDO\n");
+ eprintf("TestMaster_post_TPDO MasterSyncCount = %d \n", MasterSyncCount);
//
// {
// char zero = 0;
// }
// }
+#if 0
if(waiting_answer){
UNS32 abortCode;
- UNS8 size;
+ UNS8 size = 1;
switch(getReadResultNetworkDict (
&TestMaster_Data,
0x02,
case SDO_UPLOAD_IN_PROGRESS:
break;
}
- }else if(MasterMap1 % 10 == 0){
+ }else if(MasterSyncCount % 10 == 0){
readNetworkDict (
&TestMaster_Data,
0x02,
0);
waiting_answer = 1;
}
+#endif
+ if(MasterSyncCount % 17 == 0){
+ eprintf("Master : Ask RTR PDO (0x1402)\n");
+ sendPDOrequest(&TestMaster_Data, 0x1402 );
+ sendPDOrequest(&TestMaster_Data, 0x1403 );
+ }
+ if(MasterSyncCount % 50 == 0){
+ eprintf("Master : Change slave's transmit type to 0xFF\n");
+ UNS8 transmitiontype = 0xFF;
+ writeNetworkDictCallBack (&TestMaster_Data, /*CO_Data* d*/
+ 2, /*UNS8 nodeId*/
+ 0x1802, /*UNS16 index*/
+ 0x02, /*UNS16 index*/
+ 1, /*UNS8 count*/
+ 0, /*UNS8 dataType*/
+ &transmitiontype,/*void *data*/
+ CheckSDO); /*SDOCallback_t Callback*/
+ }
+ if(MasterSyncCount % 50 == 25){
+ eprintf("Master : Change slave's transmit type to 0x00\n");
+ UNS8 transmitiontype = 0x00;
+ writeNetworkDictCallBack (&TestMaster_Data, /*CO_Data* d*/
+ 2, /*UNS8 nodeId*/
+ 0x1802, /*UNS16 index*/
+ 0x02, /*UNS16 index*/
+ 1, /*UNS8 count*/
+ 0, /*UNS8 dataType*/
+ &transmitiontype,/*void *data*/
+ CheckSDO); /*SDOCallback_t Callback*/
+ }
+ MasterSyncCount++;
+}
+
+void TestMaster_post_SlaveBootup(CO_Data* d, UNS8 nodeid)
+{
+ eprintf("TestMaster_post_SlaveBootup %x\n", nodeid);
+
+ ConfigureSlaveNode(d, nodeid);
}