From: oremeq Date: Mon, 22 May 2006 23:15:22 +0000 (+0000) Subject: Modification of the dictionnary to support NVRAM. X-Git-Tag: Root_BRANCH_3_0_RC2~17 X-Git-Url: https://rtime.felk.cvut.cz/gitweb/CanFestival-3.git/commitdiff_plain/29d844d21dfcb7b6b216b996a7c39267a78014a4 Modification of the dictionnary to support NVRAM. (Object 0x1010, 0x1011.) --- diff --git a/examples/TestMasterSlave/TestMaster.c b/examples/TestMasterSlave/TestMaster.c index abcd58b..8470d99 100644 --- a/examples/TestMasterSlave/TestMaster.c +++ b/examples/TestMasterSlave/TestMaster.c @@ -63,21 +63,21 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ /* index 0x1000 : Device Type. */ - UNS32 TestMaster_obj1000 = 0x12D; + UNS32 TestMaster_obj1000 = 0x12D; // 301 subindex TestMaster_Index1000[] = { { RO, uint32, sizeof (UNS32), (void*)&TestMaster_obj1000 } }; /* index 0x1001 : Error Register. */ - UNS8 TestMaster_obj1001 = 0x0; + UNS8 TestMaster_obj1001 = 0x0; // 0 subindex TestMaster_Index1001[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_obj1001 } }; /* index 0x1005 : SYNC COB ID. */ - UNS32 TestMaster_obj1005 = 0x40000080; + UNS32 TestMaster_obj1005 = 0x40000080; // 1073741952 ODCallback_t TestMaster_Index1005_callbacks[] = { NULL, @@ -88,7 +88,7 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; }; /* index 0x1006 : Communication / Cycle Period. */ - UNS32 TestMaster_obj1006 = 0xC350; + UNS32 TestMaster_obj1006 = 0xC350; // 50000 ODCallback_t TestMaster_Index1006_callbacks[] = { NULL, @@ -98,11 +98,57 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1006 } }; +/* index 0x1010 : Store parameters. */ + UNS8 TestMaster_highestSubIndex_obj1010 = 4; // number of subindex - 1 + UNS32 TestMaster_obj1010_Save_All_Parameters = 0x0; // 0 + UNS32 TestMaster_obj1010_Save_Communication_Parameters = 0x0; // 0 + UNS32 TestMaster_obj1010_Save_Application_Parameters = 0x0; // 0 + UNS32 TestMaster_obj1010_Save_Manufacturer_Parameters = 0x0; // 0 + ODCallback_t TestMaster_Index1010_callbacks[] = + { + NULL, + NULL, + NULL, + NULL, + NULL, + }; + subindex TestMaster_Index1010[] = + { + { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1010 }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1010_Save_All_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1010_Save_Communication_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1010_Save_Application_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1010_Save_Manufacturer_Parameters } + }; + +/* index 0x1011 : Restore Default Parameters. */ + UNS8 TestMaster_highestSubIndex_obj1011 = 4; // number of subindex - 1 + UNS32 TestMaster_obj1011_Restore_All_Default_Parameters = 0x0; // 0 + UNS32 TestMaster_obj1011_Restore_Communication_Default_Parameters = 0x0; // 0 + UNS32 TestMaster_obj1011_Restore_Application_Default_Parameters = 0x0; // 0 + UNS32 TestMaster_obj1011_Restore_Manufacturer_Default_Parameters = 0x0; // 0 + ODCallback_t TestMaster_Index1011_callbacks[] = + { + NULL, + NULL, + NULL, + NULL, + NULL, + }; + subindex TestMaster_Index1011[] = + { + { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1011 }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1011_Restore_All_Default_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1011_Restore_Communication_Default_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1011_Restore_Application_Default_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1011_Restore_Manufacturer_Default_Parameters } + }; + /* index 0x1016 : Consumer Heartbeat Time. */ UNS8 TestMaster_highestSubIndex_obj1016 = 1; // number of subindex - 1 UNS32 TestMaster_obj1016[] = { - 133122 + 0x20802 // 133122 }; subindex TestMaster_Index1016[] = { @@ -111,14 +157,14 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; }; /* index 0x1017 : Producer Heartbeat Time */ - UNS16 TestMaster_obj1017 = 0; + UNS16 TestMaster_obj1017 = 0x0; // 0 /* index 0x1018 : Identity. */ UNS8 TestMaster_highestSubIndex_obj1018 = 4; // number of subindex - 1 - UNS32 TestMaster_obj1018_Vendor_ID = 0x0; - UNS32 TestMaster_obj1018_Product_Code = 0x0; - UNS32 TestMaster_obj1018_Revision_Number = 0x0; - UNS32 TestMaster_obj1018_Serial_Number = 0x0; + UNS32 TestMaster_obj1018_Vendor_ID = 0x0; // 0 + UNS32 TestMaster_obj1018_Product_Code = 0x0; // 0 + UNS32 TestMaster_obj1018_Revision_Number = 0x0; // 0 + UNS32 TestMaster_obj1018_Serial_Number = 0x0; // 0 subindex TestMaster_Index1018[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1018 }, @@ -130,9 +176,9 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; /* index 0x1280 : Client SDO 1 Parameter. */ UNS8 TestMaster_highestSubIndex_obj1280 = 3; // number of subindex - 1 - UNS32 TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO = 0x602; - UNS32 TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO = 0x582; - UNS32 TestMaster_obj1280_Node_ID_of_the_SDO_Server = 0x2; + UNS32 TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO = 0x602; // 1538 + UNS32 TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO = 0x582; // 1410 + UNS32 TestMaster_obj1280_Node_ID_of_the_SDO_Server = 0x2; // 2 subindex TestMaster_Index1280[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1280 }, @@ -143,11 +189,11 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; /* index 0x1400 : Receive PDO 1 Parameter. */ UNS8 TestMaster_highestSubIndex_obj1400 = 5; // number of subindex - 1 - UNS32 TestMaster_obj1400_COB_ID_used_by_PDO = 0x182; - UNS8 TestMaster_obj1400_Transmission_Type = 0x1; - UNS16 TestMaster_obj1400_Inhibit_Time = 0x0; - UNS16 TestMaster_obj1400_Compatibility_Entry = 0x0; - UNS16 TestMaster_obj1400_Event_Timer = 0x0; + UNS32 TestMaster_obj1400_COB_ID_used_by_PDO = 0x182; // 386 + UNS8 TestMaster_obj1400_Transmission_Type = 0x1; // 1 + UNS16 TestMaster_obj1400_Inhibit_Time = 0x0; // 0 + UNS16 TestMaster_obj1400_Compatibility_Entry = 0x0; // 0 + UNS16 TestMaster_obj1400_Event_Timer = 0x0; // 0 subindex TestMaster_Index1400[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1400 }, @@ -160,11 +206,11 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; /* index 0x1401 : Receive PDO 2 Parameter. */ UNS8 TestMaster_highestSubIndex_obj1401 = 5; // number of subindex - 1 - UNS32 TestMaster_obj1401_COB_ID_used_by_PDO = 0x282; - UNS8 TestMaster_obj1401_Transmission_Type = 0x1; - UNS16 TestMaster_obj1401_Inhibit_Time = 0x0; - UNS16 TestMaster_obj1401_Compatibility_Entry = 0x0; - UNS16 TestMaster_obj1401_Event_Timer = 0x0; + UNS32 TestMaster_obj1401_COB_ID_used_by_PDO = 0x282; // 642 + UNS8 TestMaster_obj1401_Transmission_Type = 0x1; // 1 + UNS16 TestMaster_obj1401_Inhibit_Time = 0x0; // 0 + UNS16 TestMaster_obj1401_Compatibility_Entry = 0x0; // 0 + UNS16 TestMaster_obj1401_Event_Timer = 0x0; // 0 subindex TestMaster_Index1401[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1401 }, @@ -179,8 +225,8 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; UNS8 TestMaster_highestSubIndex_obj1600 = 2; // number of subindex - 1 UNS32 TestMaster_obj1600[] = { - 536870920, - 536936456 + 0x20000008, // 536870920 + 0x20010008 // 536936456 }; subindex TestMaster_Index1600[] = { @@ -193,8 +239,8 @@ TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,}; UNS8 TestMaster_highestSubIndex_obj1601 = 2; // number of subindex - 1 UNS32 TestMaster_obj1601[] = { - 537001992, - 537067528 + 0x20020008, // 537001992 + 0x20030008 // 537067528 }; subindex TestMaster_Index1601[] = { @@ -237,6 +283,8 @@ const indextable TestMaster_objdict[] = { (subindex*)TestMaster_Index1001,sizeof(TestMaster_Index1001)/sizeof(TestMaster_Index1001[0]), 0x1001}, { (subindex*)TestMaster_Index1005,sizeof(TestMaster_Index1005)/sizeof(TestMaster_Index1005[0]), 0x1005}, { (subindex*)TestMaster_Index1006,sizeof(TestMaster_Index1006)/sizeof(TestMaster_Index1006[0]), 0x1006}, + { (subindex*)TestMaster_Index1010,sizeof(TestMaster_Index1010)/sizeof(TestMaster_Index1010[0]), 0x1010}, + { (subindex*)TestMaster_Index1011,sizeof(TestMaster_Index1011)/sizeof(TestMaster_Index1011[0]), 0x1011}, { (subindex*)TestMaster_Index1016,sizeof(TestMaster_Index1016)/sizeof(TestMaster_Index1016[0]), 0x1016}, { (subindex*)TestMaster_Index1018,sizeof(TestMaster_Index1018)/sizeof(TestMaster_Index1018[0]), 0x1018}, { (subindex*)TestMaster_Index1280,sizeof(TestMaster_Index1280)/sizeof(TestMaster_Index1280[0]), 0x1280}, @@ -253,22 +301,25 @@ const indextable TestMaster_objdict[] = const indextable * TestMaster_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks) { int i; + *callbacks = NULL; switch(wIndex){ - case 0x1000: i = 0; *callbacks = NULL; break; - case 0x1001: i = 1; *callbacks = NULL; break; - case 0x1005: i = 2; *callbacks = TestMaster_Index1005_callbacks; break; - case 0x1006: i = 3; *callbacks = TestMaster_Index1006_callbacks; break; - case 0x1016: i = 4; *callbacks = NULL; break; - case 0x1018: i = 5; *callbacks = NULL; break; - case 0x1280: i = 6; *callbacks = NULL; break; - case 0x1400: i = 7; *callbacks = NULL; break; - case 0x1401: i = 8; *callbacks = NULL; break; - case 0x1600: i = 9; *callbacks = NULL; break; - case 0x1601: i = 10; *callbacks = NULL; break; - case 0x2000: i = 11; *callbacks = MasterMap1_callbacks; break; - case 0x2001: i = 12; *callbacks = NULL; break; - case 0x2002: i = 13; *callbacks = NULL; break; - case 0x2003: i = 14; *callbacks = NULL; break; + case 0x1000: i = 0;break; + case 0x1001: i = 1;break; + case 0x1005: i = 2;*callbacks = TestMaster_Index1005_callbacks; break; + case 0x1006: i = 3;*callbacks = TestMaster_Index1006_callbacks; break; + case 0x1010: i = 4;*callbacks = TestMaster_Index1010_callbacks; break; + case 0x1011: i = 5;*callbacks = TestMaster_Index1011_callbacks; break; + case 0x1016: i = 6;break; + case 0x1018: i = 7;break; + case 0x1280: i = 8;break; + case 0x1400: i = 9;break; + case 0x1401: i = 10;break; + case 0x1600: i = 11;break; + case 0x1601: i = 12;break; + case 0x2000: i = 13;*callbacks = MasterMap1_callbacks; break; + case 0x2001: i = 14;break; + case 0x2002: i = 15;break; + case 0x2003: i = 16;break; default: *errorCode = OD_NO_SUCH_OBJECT; return NULL; @@ -284,18 +335,18 @@ UNS8 TestMaster_count_sync[1] = {0,}; quick_index TestMaster_firstIndex = { SDO_SVR : 0, - SDO_CLT : 6, - PDO_RCV : 7, - PDO_RCV_MAP : 9, + SDO_CLT : 8, + PDO_RCV : 9, + PDO_RCV_MAP : 11, PDO_TRS : 0, PDO_TRS_MAP : 0 }; quick_index TestMaster_lastIndex = { SDO_SVR : 0, - SDO_CLT : 6, - PDO_RCV : 8, - PDO_RCV_MAP : 10, + SDO_CLT : 8, + PDO_RCV : 10, + PDO_RCV_MAP : 12, PDO_TRS : 0, PDO_TRS_MAP : 0 }; diff --git a/examples/TestMasterSlave/TestMaster.h b/examples/TestMasterSlave/TestMaster.h index 663bf13..313192e 100644 --- a/examples/TestMasterSlave/TestMaster.h +++ b/examples/TestMasterSlave/TestMaster.h @@ -41,6 +41,8 @@ void TestMaster_post_TPDO(); // Master node data struct extern CO_Data TestMaster_Data; +extern ODCallback_t Store_parameters_callbacks[]; // Callbacks of index0x1010 +extern ODCallback_t Restore_Default_Parameters_callbacks[]; // Callbacks of index0x1011 extern UNS8 MasterMap1; // Mapped at index 0x2000, subindex 0x00 extern ODCallback_t MasterMap1_callbacks[]; // Callbacks of index0x2000 extern UNS8 MasterMap2; // Mapped at index 0x2001, subindex 0x00 diff --git a/examples/TestMasterSlave/TestMaster.od b/examples/TestMasterSlave/TestMaster.od index 7f51143..1c46975 100644 --- a/examples/TestMasterSlave/TestMaster.od +++ b/examples/TestMasterSlave/TestMaster.od @@ -1,10 +1,10 @@ - - + + - + @@ -22,8 +22,14 @@ - - + + + + + + + + @@ -34,9 +40,13 @@ - - - + + + + + + + @@ -44,42 +54,52 @@ - - + + + + + + + - - - + + + + + + + + + + + + + + - + - - - - - - - - + + - + - + @@ -87,20 +107,36 @@ - - - - - + + + - + - + - + + + + + + + + + + + + + + + + + + + @@ -108,18 +144,18 @@ - + - + - - + + @@ -151,15 +187,15 @@ - + - - + + @@ -191,15 +227,15 @@ - + - - + + @@ -231,15 +267,15 @@ - + - - + + @@ -270,7 +306,7 @@ - + diff --git a/examples/TestMasterSlave/TestSlave.c b/examples/TestMasterSlave/TestSlave.c index f41f624..c4dcaa5 100644 --- a/examples/TestMasterSlave/TestSlave.c +++ b/examples/TestMasterSlave/TestSlave.c @@ -63,21 +63,21 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ /* index 0x1000 : Device Type. */ - UNS32 TestSlave_obj1000 = 0x12D; + UNS32 TestSlave_obj1000 = 0x12D; // 301 subindex TestSlave_Index1000[] = { { RO, uint32, sizeof (UNS32), (void*)&TestSlave_obj1000 } }; /* index 0x1001 : Error Register. */ - UNS8 TestSlave_obj1001 = 0x0; + UNS8 TestSlave_obj1001 = 0x0; // 0 subindex TestSlave_Index1001[] = { { RO, uint8, sizeof (UNS8), (void*)&TestSlave_obj1001 } }; /* index 0x1005 : SYNC COB ID. */ - UNS32 TestSlave_obj1005 = 0x80; + UNS32 TestSlave_obj1005 = 0x80; // 128 ODCallback_t TestSlave_Index1005_callbacks[] = { NULL, @@ -88,7 +88,7 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; }; /* index 0x1006 : Communication / Cycle Period. */ - UNS32 TestSlave_obj1006 = 0x0; + UNS32 TestSlave_obj1006 = 0x0; // 0 ODCallback_t TestSlave_Index1006_callbacks[] = { NULL, @@ -98,13 +98,59 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1006 } }; +/* index 0x1010 : Store parameters. */ + UNS8 TestSlave_highestSubIndex_obj1010 = 4; // number of subindex - 1 + UNS32 TestSlave_obj1010_Save_All_Parameters = 0x0; // 0 + UNS32 TestSlave_obj1010_Save_Communication_Parameters = 0x0; // 0 + UNS32 TestSlave_obj1010_Save_Application_Parameters = 0x0; // 0 + UNS32 TestSlave_obj1010_Save_Manufacturer_Parameters = 0x0; // 0 + ODCallback_t TestSlave_Index1010_callbacks[] = + { + NULL, + NULL, + NULL, + NULL, + NULL, + }; + subindex TestSlave_Index1010[] = + { + { RO, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1010 }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1010_Save_All_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1010_Save_Communication_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1010_Save_Application_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1010_Save_Manufacturer_Parameters } + }; + +/* index 0x1011 : Restore Default Parameters. */ + UNS8 TestSlave_highestSubIndex_obj1011 = 4; // number of subindex - 1 + UNS32 TestSlave_obj1011_Restore_All_Default_Parameters = 0x0; // 0 + UNS32 TestSlave_obj1011_Restore_Communication_Default_Parameters = 0x0; // 0 + UNS32 TestSlave_obj1011_Restore_Application_Default_Parameters = 0x0; // 0 + UNS32 TestSlave_obj1011_Restore_Manufacturer_Default_Parameters = 0x0; // 0 + ODCallback_t TestSlave_Index1011_callbacks[] = + { + NULL, + NULL, + NULL, + NULL, + NULL, + }; + subindex TestSlave_Index1011[] = + { + { RO, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1011 }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1011_Restore_All_Default_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1011_Restore_Communication_Default_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1011_Restore_Application_Default_Parameters }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1011_Restore_Manufacturer_Default_Parameters } + }; + /* index 0x1016 : Consumer Heartbeat Time */ UNS8 TestSlave_highestSubIndex_obj1016 = 0; UNS32 TestSlave_obj1016[0]; subindex TestSlave_Index1016[0]; /* index 0x1017 : Producer Heartbeat Time. */ - UNS16 TestSlave_obj1017 = 0x3E8; + UNS16 TestSlave_obj1017 = 0x3E8; // 1000 subindex TestSlave_Index1017[] = { { RW, uint16, sizeof (UNS16), (void*)&TestSlave_obj1017 } @@ -112,10 +158,10 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; /* index 0x1018 : Identity. */ UNS8 TestSlave_highestSubIndex_obj1018 = 4; // number of subindex - 1 - UNS32 TestSlave_obj1018_Vendor_ID = 0x0; - UNS32 TestSlave_obj1018_Product_Code = 0x0; - UNS32 TestSlave_obj1018_Revision_Number = 0x0; - UNS32 TestSlave_obj1018_Serial_Number = 0x0; + UNS32 TestSlave_obj1018_Vendor_ID = 0x0; // 0 + UNS32 TestSlave_obj1018_Product_Code = 0x0; // 0 + UNS32 TestSlave_obj1018_Revision_Number = 0x0; // 0 + UNS32 TestSlave_obj1018_Serial_Number = 0x0; // 0 subindex TestSlave_Index1018[] = { { RO, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1018 }, @@ -127,8 +173,8 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; /* index 0x1200 : Server SDO Parameter. */ UNS8 TestSlave_highestSubIndex_obj1200 = 2; // number of subindex - 1 - UNS32 TestSlave_obj1200_COB_ID_Client_to_Server_Receive_SDO = 0x601; - UNS32 TestSlave_obj1200_COB_ID_Server_to_Client_Transmit_SDO = 0x581; + UNS32 TestSlave_obj1200_COB_ID_Client_to_Server_Receive_SDO = 0x601; // 1537 + UNS32 TestSlave_obj1200_COB_ID_Server_to_Client_Transmit_SDO = 0x581; // 1409 subindex TestSlave_Index1200[] = { { RO, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1200 }, @@ -138,11 +184,11 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; /* index 0x1800 : Transmit PDO 1 Parameter. */ UNS8 TestSlave_highestSubIndex_obj1800 = 5; // number of subindex - 1 - UNS32 TestSlave_obj1800_COB_ID_used_by_PDO = 0x182; - UNS8 TestSlave_obj1800_Transmission_Type = 0x1; - UNS16 TestSlave_obj1800_Inhibit_Time = 0x0; - UNS16 TestSlave_obj1800_Compatibility_Entry = 0x0; - UNS16 TestSlave_obj1800_Event_Timer = 0x0; + UNS32 TestSlave_obj1800_COB_ID_used_by_PDO = 0x182; // 386 + UNS8 TestSlave_obj1800_Transmission_Type = 0x1; // 1 + UNS16 TestSlave_obj1800_Inhibit_Time = 0x0; // 0 + UNS16 TestSlave_obj1800_Compatibility_Entry = 0x0; // 0 + UNS16 TestSlave_obj1800_Event_Timer = 0x0; // 0 subindex TestSlave_Index1800[] = { { RO, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1800 }, @@ -155,11 +201,11 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; /* index 0x1801 : Transmit PDO 2 Parameter. */ UNS8 TestSlave_highestSubIndex_obj1801 = 5; // number of subindex - 1 - UNS32 TestSlave_obj1801_COB_ID_used_by_PDO = 0x282; - UNS8 TestSlave_obj1801_Transmission_Type = 0x1; - UNS16 TestSlave_obj1801_Inhibit_Time = 0x0; - UNS16 TestSlave_obj1801_Compatibility_Entry = 0x0; - UNS16 TestSlave_obj1801_Event_Timer = 0x0; + UNS32 TestSlave_obj1801_COB_ID_used_by_PDO = 0x282; // 642 + UNS8 TestSlave_obj1801_Transmission_Type = 0x1; // 1 + UNS16 TestSlave_obj1801_Inhibit_Time = 0x0; // 0 + UNS16 TestSlave_obj1801_Compatibility_Entry = 0x0; // 0 + UNS16 TestSlave_obj1801_Event_Timer = 0x0; // 0 subindex TestSlave_Index1801[] = { { RO, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1801 }, @@ -174,8 +220,8 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; UNS8 TestSlave_highestSubIndex_obj1A00 = 2; // number of subindex - 1 UNS32 TestSlave_obj1A00[] = { - 536870920, - 536936456 + 0x20000008, // 536870920 + 0x20010008 // 536936456 }; subindex TestSlave_Index1A00[] = { @@ -188,8 +234,8 @@ TIMER_HANDLE TestSlave_heartBeatTimers[0]; UNS8 TestSlave_highestSubIndex_obj1A01 = 2; // number of subindex - 1 UNS32 TestSlave_obj1A01[] = { - 537001992, - 537067528 + 0x20020008, // 537001992 + 0x20030008 // 537067528 }; subindex TestSlave_Index1A01[] = { @@ -228,6 +274,8 @@ const indextable TestSlave_objdict[] = { (subindex*)TestSlave_Index1001,sizeof(TestSlave_Index1001)/sizeof(TestSlave_Index1001[0]), 0x1001}, { (subindex*)TestSlave_Index1005,sizeof(TestSlave_Index1005)/sizeof(TestSlave_Index1005[0]), 0x1005}, { (subindex*)TestSlave_Index1006,sizeof(TestSlave_Index1006)/sizeof(TestSlave_Index1006[0]), 0x1006}, + { (subindex*)TestSlave_Index1010,sizeof(TestSlave_Index1010)/sizeof(TestSlave_Index1010[0]), 0x1010}, + { (subindex*)TestSlave_Index1011,sizeof(TestSlave_Index1011)/sizeof(TestSlave_Index1011[0]), 0x1011}, { (subindex*)TestSlave_Index1017,sizeof(TestSlave_Index1017)/sizeof(TestSlave_Index1017[0]), 0x1017}, { (subindex*)TestSlave_Index1018,sizeof(TestSlave_Index1018)/sizeof(TestSlave_Index1018[0]), 0x1018}, { (subindex*)TestSlave_Index1200,sizeof(TestSlave_Index1200)/sizeof(TestSlave_Index1200[0]), 0x1200}, @@ -244,22 +292,25 @@ const indextable TestSlave_objdict[] = const indextable * TestSlave_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks) { int i; + *callbacks = NULL; switch(wIndex){ - case 0x1000: i = 0; *callbacks = NULL; break; - case 0x1001: i = 1; *callbacks = NULL; break; - case 0x1005: i = 2; *callbacks = TestSlave_Index1005_callbacks; break; - case 0x1006: i = 3; *callbacks = TestSlave_Index1006_callbacks; break; - case 0x1017: i = 4; *callbacks = NULL; break; - case 0x1018: i = 5; *callbacks = NULL; break; - case 0x1200: i = 6; *callbacks = NULL; break; - case 0x1800: i = 7; *callbacks = NULL; break; - case 0x1801: i = 8; *callbacks = NULL; break; - case 0x1A00: i = 9; *callbacks = NULL; break; - case 0x1A01: i = 10; *callbacks = NULL; break; - case 0x2000: i = 11; *callbacks = NULL; break; - case 0x2001: i = 12; *callbacks = NULL; break; - case 0x2002: i = 13; *callbacks = NULL; break; - case 0x2003: i = 14; *callbacks = NULL; break; + case 0x1000: i = 0;break; + case 0x1001: i = 1;break; + case 0x1005: i = 2;*callbacks = TestSlave_Index1005_callbacks; break; + case 0x1006: i = 3;*callbacks = TestSlave_Index1006_callbacks; break; + case 0x1010: i = 4;*callbacks = TestSlave_Index1010_callbacks; break; + case 0x1011: i = 5;*callbacks = TestSlave_Index1011_callbacks; break; + case 0x1017: i = 6;break; + case 0x1018: i = 7;break; + case 0x1200: i = 8;break; + case 0x1800: i = 9;break; + case 0x1801: i = 10;break; + case 0x1A00: i = 11;break; + case 0x1A01: i = 12;break; + case 0x2000: i = 13;break; + case 0x2001: i = 14;break; + case 0x2002: i = 15;break; + case 0x2003: i = 16;break; default: *errorCode = OD_NO_SUCH_OBJECT; return NULL; @@ -274,21 +325,21 @@ const indextable * TestSlave_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCal UNS8 TestSlave_count_sync[2] = {0,}; quick_index TestSlave_firstIndex = { - SDO_SVR : 6, + SDO_SVR : 8, SDO_CLT : 0, PDO_RCV : 0, PDO_RCV_MAP : 0, - PDO_TRS : 7, - PDO_TRS_MAP : 9 + PDO_TRS : 9, + PDO_TRS_MAP : 11 }; quick_index TestSlave_lastIndex = { - SDO_SVR : 6, + SDO_SVR : 8, SDO_CLT : 0, PDO_RCV : 0, PDO_RCV_MAP : 0, - PDO_TRS : 8, - PDO_TRS_MAP : 10 + PDO_TRS : 10, + PDO_TRS_MAP : 12 }; UNS16 TestSlave_ObjdictSize = sizeof(TestSlave_objdict)/sizeof(TestSlave_objdict[0]); diff --git a/examples/TestMasterSlave/TestSlave.h b/examples/TestMasterSlave/TestSlave.h index 6fad287..30020d3 100644 --- a/examples/TestMasterSlave/TestSlave.h +++ b/examples/TestMasterSlave/TestSlave.h @@ -41,6 +41,8 @@ void TestSlave_post_TPDO(); // Master node data struct extern CO_Data TestSlave_Data; +extern ODCallback_t Store_parameters_callbacks[]; // Callbacks of index0x1010 +extern ODCallback_t Restore_Default_Parameters_callbacks[]; // Callbacks of index0x1011 extern UNS8 SlaveMap1; // Mapped at index 0x2000, subindex 0x00 extern UNS8 SlaveMap2; // Mapped at index 0x2001, subindex 0x00 extern UNS8 SlaveMap3; // Mapped at index 0x2002, subindex 0x00 diff --git a/examples/TestMasterSlave/TestSlave.od b/examples/TestMasterSlave/TestSlave.od index f17de09..e4cf105 100644 --- a/examples/TestMasterSlave/TestSlave.od +++ b/examples/TestMasterSlave/TestSlave.od @@ -1,10 +1,10 @@ - - + + - + @@ -23,7 +23,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -53,23 +53,41 @@ + + + + + + + + + + + + + + + + + + - + - + - + @@ -80,7 +98,7 @@ - + @@ -92,31 +110,49 @@ - + - + - + + + + + + + + + + + + + + + + + + + - + - + - - + + @@ -148,15 +184,15 @@ - + - - + + @@ -188,15 +224,15 @@ - + - - + + @@ -228,15 +264,15 @@ - + - - + + @@ -267,7 +303,7 @@ - +