# HG changeset patch # User greg # Date 1179317824 -7200 # Node ID 2966cd34162a0fc5ab2d2f5d88f61f182ef41bb8 # Parent 930be51ddc24705f063f364f5ed6bca9395f23a0 Boolean variable mapped in PDO diff -r 930be51ddc24 -r 2966cd34162a doc/manual/en/manual.odt Binary file doc/manual/en/manual.odt has changed diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterMicroMod/TestMaster.c --- a/examples/TestMasterMicroMod/TestMaster.c Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterMicroMod/TestMaster.c Wed May 16 14:17:04 2007 +0200 @@ -7,19 +7,14 @@ /* Declaration of the mapped variables */ /**************************************************************************/ UNS8 DO = 0x0; /* Mapped at index 0x2000, subindex 0x00 */ -UNS8 AO1 = 0x0; /* Mapped at index 0x2001, subindex 0x00 */ -UNS8 AO2 = 0x0; /* Mapped at index 0x2002, subindex 0x00 */ -UNS8 AO3 = 0x0; /* Mapped at index 0x2003, subindex 0x00 */ -UNS8 DI = 0x0; /* Mapped at index 0x2004, subindex 0x00 */ -UNS8 AI1 = 0x0; /* Mapped at index 0x2005, subindex 0x00 */ -UNS8 AI2 = 0x0; /* Mapped at index 0x2006, subindex 0x00 */ -UNS8 AI3 = 0x0; /* Mapped at index 0x2007, subindex 0x00 */ -UNS8 AI4 = 0x0; /* Mapped at index 0x2008, subindex 0x00 */ -UNS8 AI5 = 0x0; /* Mapped at index 0x2009, subindex 0x00 */ -UNS8 AI6 = 0x0; /* Mapped at index 0x200A, subindex 0x00 */ -UNS8 AI7 = 0x0; /* Mapped at index 0x200B, subindex 0x00 */ -UNS8 AI8 = 0x0; /* Mapped at index 0x200C, subindex 0x00 */ -UNS8 AO4 = 0x0; /* Mapped at index 0x200D, subindex 0x00 */ +UNS8 DI1 = 0x0; /* Mapped at index 0x200F, subindex 0x00 */ +UNS8 DI2 = 0x0; /* Mapped at index 0x2010, subindex 0x00 */ +UNS8 DI3 = 0x0; /* Mapped at index 0x2011, subindex 0x00 */ +UNS8 DI4 = 0x0; /* Mapped at index 0x2012, subindex 0x00 */ +UNS8 DI5 = 0x0; /* Mapped at index 0x2013, subindex 0x00 */ +UNS8 DI6 = 0x0; /* Mapped at index 0x2014, subindex 0x00 */ +UNS8 DI7 = 0x0; /* Mapped at index 0x2015, subindex 0x00 */ +UNS8 DI8 = 0x0; /* Mapped at index 0x2016, subindex 0x00 */ /**************************************************************************/ /* Declaration of the value range types */ @@ -123,13 +118,13 @@ UNS8 TestMaster_highestSubIndex_obj1280 = 3; /* number of subindex - 1*/ UNS32 TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO = 0x640; /* 1600 */ UNS32 TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO = 0x5C0; /* 1472 */ - UNS32 TestMaster_obj1280_Node_ID_of_the_SDO_Server = 0x40; /* 64 */ + INTEGER32 TestMaster_obj1280_Node_ID_of_the_SDO_Server = 0x40; /* 64 */ subindex TestMaster_Index1280[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1280 }, { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO }, { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_Node_ID_of_the_SDO_Server } + { RW, int32, sizeof (INTEGER32), (void*)&TestMaster_obj1280_Node_ID_of_the_SDO_Server } }; /* index 0x1400 : Receive PDO 1 Parameter. */ @@ -137,7 +132,7 @@ UNS32 TestMaster_obj1400_COB_ID_used_by_PDO = 0x220; /* 544 */ UNS8 TestMaster_obj1400_Transmission_Type = 0x1; /* 1 */ UNS16 TestMaster_obj1400_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestMaster_obj1400_Compatibility_Entry = 0x0; /* 0 */ + UNS8 TestMaster_obj1400_Compatibility_Entry = 0x0; /* 0 */ UNS16 TestMaster_obj1400_Event_Timer = 0x0; /* 0 */ subindex TestMaster_Index1400[] = { @@ -145,90 +140,34 @@ { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1400_COB_ID_used_by_PDO }, { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1400_Transmission_Type }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Compatibility_Entry }, + { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1400_Compatibility_Entry }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Event_Timer } }; -/* index 0x1401 : Receive PDO 2 Parameter. */ - UNS8 TestMaster_highestSubIndex_obj1401 = 5; /* number of subindex - 1*/ - UNS32 TestMaster_obj1401_COB_ID_used_by_PDO = 0x320; /* 800 */ - 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 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1401_COB_ID_used_by_PDO }, - { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1401_Transmission_Type }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Compatibility_Entry }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Event_Timer } - }; - -/* index 0x1402 : Receive PDO 3 Parameter. */ - UNS8 TestMaster_highestSubIndex_obj1402 = 5; /* number of subindex - 1*/ - UNS32 TestMaster_obj1402_COB_ID_used_by_PDO = 0x420; /* 1056 */ - UNS8 TestMaster_obj1402_Transmission_Type = 0x1; /* 1 */ - UNS16 TestMaster_obj1402_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestMaster_obj1402_Compatibility_Entry = 0x0; /* 0 */ - UNS16 TestMaster_obj1402_Event_Timer = 0x0; /* 0 */ - subindex TestMaster_Index1402[] = - { - { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1402 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1402_COB_ID_used_by_PDO }, - { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1402_Transmission_Type }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1402_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1402_Compatibility_Entry }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1402_Event_Timer } - }; - /* index 0x1600 : Receive PDO 1 Mapping. */ - UNS8 TestMaster_highestSubIndex_obj1600 = 1; /* number of subindex - 1*/ + UNS8 TestMaster_highestSubIndex_obj1600 = 8; /* number of subindex - 1*/ UNS32 TestMaster_obj1600[] = { - 0x20040008 /* 537133064 */ + 0x200F0001, /* 537853953 */ + 0x20100001, /* 537919489 */ + 0x20110001, /* 537985025 */ + 0x20120001, /* 538050561 */ + 0x20130001, /* 538116097 */ + 0x20140001, /* 538181633 */ + 0x20150001, /* 538247169 */ + 0x20160001 /* 538312705 */ }; subindex TestMaster_Index1600[] = { { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1600 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[0] } - }; - -/* index 0x1601 : Receive PDO 2 Mapping. */ - UNS8 TestMaster_highestSubIndex_obj1601 = 4; /* number of subindex - 1*/ - UNS32 TestMaster_obj1601[] = - { - 0x20050008, /* 537198600 */ - 0x20060008, /* 537264136 */ - 0x20070008, /* 537329672 */ - 0x20080008 /* 537395208 */ - }; - subindex TestMaster_Index1601[] = - { - { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1601 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[1] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[2] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[3] } - }; - -/* index 0x1602 : Receive PDO 3 Mapping. */ - UNS8 TestMaster_highestSubIndex_obj1602 = 4; /* number of subindex - 1*/ - UNS32 TestMaster_obj1602[] = - { - 0x20090008, /* 537460744 */ - 0x200A0008, /* 537526280 */ - 0x200B0008, /* 537591816 */ - 0x200C0008 /* 537657352 */ - }; - subindex TestMaster_Index1602[] = - { - { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1602 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[1] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[2] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[3] } + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[0] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[1] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[2] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[3] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[4] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[5] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[6] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[7] } }; /* index 0x1800 : Transmit PDO 1 Parameter. */ @@ -236,7 +175,7 @@ UNS32 TestMaster_obj1800_COB_ID_used_by_PDO = 0x240; /* 576 */ UNS8 TestMaster_obj1800_Transmission_Type = 0x1; /* 1 */ UNS16 TestMaster_obj1800_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestMaster_obj1800_Compatibility_Entry = 0x0; /* 0 */ + UNS8 TestMaster_obj1800_Compatibility_Entry = 0x0; /* 0 */ UNS16 TestMaster_obj1800_Event_Timer = 0x0; /* 0 */ subindex TestMaster_Index1800[] = { @@ -244,27 +183,10 @@ { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1800_COB_ID_used_by_PDO }, { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1800_Transmission_Type }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1800_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1800_Compatibility_Entry }, + { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1800_Compatibility_Entry }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1800_Event_Timer } }; -/* index 0x1801 : Transmit PDO 2 Parameter. */ - UNS8 TestMaster_highestSubIndex_obj1801 = 5; /* number of subindex - 1*/ - UNS32 TestMaster_obj1801_COB_ID_used_by_PDO = 0x0; /* 0 */ - UNS8 TestMaster_obj1801_Transmission_Type = 0x0; /* 0 */ - UNS16 TestMaster_obj1801_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestMaster_obj1801_Compatibility_Entry = 0x0; /* 0 */ - UNS16 TestMaster_obj1801_Event_Timer = 0x0; /* 0 */ - subindex TestMaster_Index1801[] = - { - { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1801 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1801_COB_ID_used_by_PDO }, - { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1801_Transmission_Type }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1801_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1801_Compatibility_Entry }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1801_Event_Timer } - }; - /* index 0x1A00 : Transmit PDO 1 Mapping. */ UNS8 TestMaster_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/ UNS32 TestMaster_obj1A00[] = @@ -277,106 +199,58 @@ { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A00[0] } }; -/* index 0x1A01 : Transmit PDO 2 Mapping. */ - UNS8 TestMaster_highestSubIndex_obj1A01 = 4; /* number of subindex - 1*/ - UNS32 TestMaster_obj1A01[] = - { - 0x20010008, /* 536936456 */ - 0x20020008, /* 537001992 */ - 0x20030008, /* 537067528 */ - 0x200D0008 /* 537722888 */ - }; - subindex TestMaster_Index1A01[] = - { - { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1A01 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[1] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[2] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[3] } - }; - /* index 0x2000 : Mapped variable DO */ subindex TestMaster_Index2000[] = { { RW, uint8, sizeof (UNS8), (void*)&DO } }; -/* index 0x2001 : Mapped variable AO1 */ - subindex TestMaster_Index2001[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AO1 } - }; - -/* index 0x2002 : Mapped variable AO2 */ - subindex TestMaster_Index2002[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AO2 } - }; - -/* index 0x2003 : Mapped variable AO3 */ - subindex TestMaster_Index2003[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AO3 } - }; - -/* index 0x2004 : Mapped variable DI */ - subindex TestMaster_Index2004[] = - { - { RW, uint8, sizeof (UNS8), (void*)&DI } - }; - -/* index 0x2005 : Mapped variable AI1 */ - subindex TestMaster_Index2005[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI1 } - }; - -/* index 0x2006 : Mapped variable AI2 */ - subindex TestMaster_Index2006[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI2 } - }; - -/* index 0x2007 : Mapped variable AI3 */ - subindex TestMaster_Index2007[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI3 } - }; - -/* index 0x2008 : Mapped variable AI4 */ - subindex TestMaster_Index2008[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI4 } - }; - -/* index 0x2009 : Mapped variable AI5 */ - subindex TestMaster_Index2009[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI5 } - }; - -/* index 0x200A : Mapped variable AI6 */ - subindex TestMaster_Index200A[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI6 } - }; - -/* index 0x200B : Mapped variable AI7 */ - subindex TestMaster_Index200B[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI7 } - }; - -/* index 0x200C : Mapped variable AI8 */ - subindex TestMaster_Index200C[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AI8 } - }; - -/* index 0x200D : Mapped variable AO4 */ - subindex TestMaster_Index200D[] = - { - { RW, uint8, sizeof (UNS8), (void*)&AO4 } +/* index 0x200F : Mapped variable DI1 */ + subindex TestMaster_Index200F[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI1 } + }; + +/* index 0x2010 : Mapped variable DI2 */ + subindex TestMaster_Index2010[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI2 } + }; + +/* index 0x2011 : Mapped variable DI3 */ + subindex TestMaster_Index2011[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI3 } + }; + +/* index 0x2012 : Mapped variable DI4 */ + subindex TestMaster_Index2012[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI4 } + }; + +/* index 0x2013 : Mapped variable DI5 */ + subindex TestMaster_Index2013[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI5 } + }; + +/* index 0x2014 : Mapped variable DI6 */ + subindex TestMaster_Index2014[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI6 } + }; + +/* index 0x2015 : Mapped variable DI7 */ + subindex TestMaster_Index2015[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI7 } + }; + +/* index 0x2016 : Mapped variable DI8 */ + subindex TestMaster_Index2016[] = + { + { RW, boolean, sizeof (UNS8), (void*)&DI8 } }; const indextable TestMaster_objdict[] = @@ -389,29 +263,18 @@ { (subindex*)TestMaster_Index1018,sizeof(TestMaster_Index1018)/sizeof(TestMaster_Index1018[0]), 0x1018}, { (subindex*)TestMaster_Index1280,sizeof(TestMaster_Index1280)/sizeof(TestMaster_Index1280[0]), 0x1280}, { (subindex*)TestMaster_Index1400,sizeof(TestMaster_Index1400)/sizeof(TestMaster_Index1400[0]), 0x1400}, - { (subindex*)TestMaster_Index1401,sizeof(TestMaster_Index1401)/sizeof(TestMaster_Index1401[0]), 0x1401}, - { (subindex*)TestMaster_Index1402,sizeof(TestMaster_Index1402)/sizeof(TestMaster_Index1402[0]), 0x1402}, { (subindex*)TestMaster_Index1600,sizeof(TestMaster_Index1600)/sizeof(TestMaster_Index1600[0]), 0x1600}, - { (subindex*)TestMaster_Index1601,sizeof(TestMaster_Index1601)/sizeof(TestMaster_Index1601[0]), 0x1601}, - { (subindex*)TestMaster_Index1602,sizeof(TestMaster_Index1602)/sizeof(TestMaster_Index1602[0]), 0x1602}, { (subindex*)TestMaster_Index1800,sizeof(TestMaster_Index1800)/sizeof(TestMaster_Index1800[0]), 0x1800}, - { (subindex*)TestMaster_Index1801,sizeof(TestMaster_Index1801)/sizeof(TestMaster_Index1801[0]), 0x1801}, { (subindex*)TestMaster_Index1A00,sizeof(TestMaster_Index1A00)/sizeof(TestMaster_Index1A00[0]), 0x1A00}, - { (subindex*)TestMaster_Index1A01,sizeof(TestMaster_Index1A01)/sizeof(TestMaster_Index1A01[0]), 0x1A01}, { (subindex*)TestMaster_Index2000,sizeof(TestMaster_Index2000)/sizeof(TestMaster_Index2000[0]), 0x2000}, - { (subindex*)TestMaster_Index2001,sizeof(TestMaster_Index2001)/sizeof(TestMaster_Index2001[0]), 0x2001}, - { (subindex*)TestMaster_Index2002,sizeof(TestMaster_Index2002)/sizeof(TestMaster_Index2002[0]), 0x2002}, - { (subindex*)TestMaster_Index2003,sizeof(TestMaster_Index2003)/sizeof(TestMaster_Index2003[0]), 0x2003}, - { (subindex*)TestMaster_Index2004,sizeof(TestMaster_Index2004)/sizeof(TestMaster_Index2004[0]), 0x2004}, - { (subindex*)TestMaster_Index2005,sizeof(TestMaster_Index2005)/sizeof(TestMaster_Index2005[0]), 0x2005}, - { (subindex*)TestMaster_Index2006,sizeof(TestMaster_Index2006)/sizeof(TestMaster_Index2006[0]), 0x2006}, - { (subindex*)TestMaster_Index2007,sizeof(TestMaster_Index2007)/sizeof(TestMaster_Index2007[0]), 0x2007}, - { (subindex*)TestMaster_Index2008,sizeof(TestMaster_Index2008)/sizeof(TestMaster_Index2008[0]), 0x2008}, - { (subindex*)TestMaster_Index2009,sizeof(TestMaster_Index2009)/sizeof(TestMaster_Index2009[0]), 0x2009}, - { (subindex*)TestMaster_Index200A,sizeof(TestMaster_Index200A)/sizeof(TestMaster_Index200A[0]), 0x200A}, - { (subindex*)TestMaster_Index200B,sizeof(TestMaster_Index200B)/sizeof(TestMaster_Index200B[0]), 0x200B}, - { (subindex*)TestMaster_Index200C,sizeof(TestMaster_Index200C)/sizeof(TestMaster_Index200C[0]), 0x200C}, - { (subindex*)TestMaster_Index200D,sizeof(TestMaster_Index200D)/sizeof(TestMaster_Index200D[0]), 0x200D}, + { (subindex*)TestMaster_Index200F,sizeof(TestMaster_Index200F)/sizeof(TestMaster_Index200F[0]), 0x200F}, + { (subindex*)TestMaster_Index2010,sizeof(TestMaster_Index2010)/sizeof(TestMaster_Index2010[0]), 0x2010}, + { (subindex*)TestMaster_Index2011,sizeof(TestMaster_Index2011)/sizeof(TestMaster_Index2011[0]), 0x2011}, + { (subindex*)TestMaster_Index2012,sizeof(TestMaster_Index2012)/sizeof(TestMaster_Index2012[0]), 0x2012}, + { (subindex*)TestMaster_Index2013,sizeof(TestMaster_Index2013)/sizeof(TestMaster_Index2013[0]), 0x2013}, + { (subindex*)TestMaster_Index2014,sizeof(TestMaster_Index2014)/sizeof(TestMaster_Index2014[0]), 0x2014}, + { (subindex*)TestMaster_Index2015,sizeof(TestMaster_Index2015)/sizeof(TestMaster_Index2015[0]), 0x2015}, + { (subindex*)TestMaster_Index2016,sizeof(TestMaster_Index2016)/sizeof(TestMaster_Index2016[0]), 0x2016}, }; const indextable * TestMaster_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks) @@ -427,29 +290,18 @@ case 0x1018: i = 5;break; case 0x1280: i = 6;break; case 0x1400: i = 7;break; - case 0x1401: i = 8;break; - case 0x1402: i = 9;break; - case 0x1600: i = 10;break; - case 0x1601: i = 11;break; - case 0x1602: i = 12;break; - case 0x1800: i = 13;break; - case 0x1801: i = 14;break; - case 0x1A00: i = 15;break; - case 0x1A01: i = 16;break; - case 0x2000: i = 17;break; - case 0x2001: i = 18;break; - case 0x2002: i = 19;break; - case 0x2003: i = 20;break; - case 0x2004: i = 21;break; - case 0x2005: i = 22;break; - case 0x2006: i = 23;break; - case 0x2007: i = 24;break; - case 0x2008: i = 25;break; - case 0x2009: i = 26;break; - case 0x200A: i = 27;break; - case 0x200B: i = 28;break; - case 0x200C: i = 29;break; - case 0x200D: i = 30;break; + case 0x1600: i = 8;break; + case 0x1800: i = 9;break; + case 0x1A00: i = 10;break; + case 0x2000: i = 11;break; + case 0x200F: i = 12;break; + case 0x2010: i = 13;break; + case 0x2011: i = 14;break; + case 0x2012: i = 15;break; + case 0x2013: i = 16;break; + case 0x2014: i = 17;break; + case 0x2015: i = 18;break; + case 0x2016: i = 19;break; default: *errorCode = OD_NO_SUCH_OBJECT; return NULL; @@ -462,24 +314,24 @@ * Even if no pdoTransmit are defined, at least one entry is computed * for compilations issues. */ -UNS8 TestMaster_count_sync[2] = {0,}; +UNS8 TestMaster_count_sync[1] = {0,}; quick_index TestMaster_firstIndex = { 0, /* SDO_SVR */ 6, /* SDO_CLT */ 7, /* PDO_RCV */ - 10, /* PDO_RCV_MAP */ - 13, /* PDO_TRS */ - 15 /* PDO_TRS_MAP */ + 8, /* PDO_RCV_MAP */ + 9, /* PDO_TRS */ + 10 /* PDO_TRS_MAP */ }; quick_index TestMaster_lastIndex = { 0, /* SDO_SVR */ 6, /* SDO_CLT */ - 9, /* PDO_RCV */ - 12, /* PDO_RCV_MAP */ - 14, /* PDO_TRS */ - 16 /* PDO_TRS_MAP */ + 7, /* PDO_RCV */ + 8, /* PDO_RCV_MAP */ + 9, /* PDO_TRS */ + 10 /* PDO_TRS_MAP */ }; UNS16 TestMaster_ObjdictSize = sizeof(TestMaster_objdict)/sizeof(TestMaster_objdict[0]); diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterMicroMod/TestMaster.h --- a/examples/TestMasterMicroMod/TestMaster.h Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterMicroMod/TestMaster.h Wed May 16 14:17:04 2007 +0200 @@ -11,16 +11,11 @@ extern CO_Data TestMaster_Data; extern UNS8 DO; /* Mapped at index 0x2000, subindex 0x00*/ -extern UNS8 AO1; /* Mapped at index 0x2001, subindex 0x00*/ -extern UNS8 AO2; /* Mapped at index 0x2002, subindex 0x00*/ -extern UNS8 AO3; /* Mapped at index 0x2003, subindex 0x00*/ -extern UNS8 DI; /* Mapped at index 0x2004, subindex 0x00*/ -extern UNS8 AI1; /* Mapped at index 0x2005, subindex 0x00*/ -extern UNS8 AI2; /* Mapped at index 0x2006, subindex 0x00*/ -extern UNS8 AI3; /* Mapped at index 0x2007, subindex 0x00*/ -extern UNS8 AI4; /* Mapped at index 0x2008, subindex 0x00*/ -extern UNS8 AI5; /* Mapped at index 0x2009, subindex 0x00*/ -extern UNS8 AI6; /* Mapped at index 0x200A, subindex 0x00*/ -extern UNS8 AI7; /* Mapped at index 0x200B, subindex 0x00*/ -extern UNS8 AI8; /* Mapped at index 0x200C, subindex 0x00*/ -extern UNS8 AO4; /* Mapped at index 0x200D, subindex 0x00*/ +extern UNS8 DI1; /* Mapped at index 0x200F, subindex 0x00*/ +extern UNS8 DI2; /* Mapped at index 0x2010, subindex 0x00*/ +extern UNS8 DI3; /* Mapped at index 0x2011, subindex 0x00*/ +extern UNS8 DI4; /* Mapped at index 0x2012, subindex 0x00*/ +extern UNS8 DI5; /* Mapped at index 0x2013, subindex 0x00*/ +extern UNS8 DI6; /* Mapped at index 0x2014, subindex 0x00*/ +extern UNS8 DI7; /* Mapped at index 0x2015, subindex 0x00*/ +extern UNS8 DI8; /* Mapped at index 0x2016, subindex 0x00*/ diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterMicroMod/TestMaster.od --- a/examples/TestMasterMicroMod/TestMaster.od Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterMicroMod/TestMaster.od Wed May 16 14:17:04 2007 +0200 @@ -1,10 +1,10 @@ - - + + TestMaster - + @@ -14,24 +14,6 @@ - - - - - - - - - - - - - - - - - - @@ -40,53 +22,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -95,27 +70,15 @@ - + - - - - - - - - - - - - - + @@ -128,22 +91,21 @@ - - - - - - - - - - - + + + + + + + + + + - + @@ -152,60 +114,28 @@ - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + @@ -236,527 +166,327 @@ - - - - - - - - - - - - - - - - - - - - - - - - - AO1 - - - - - - - AO1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AO2 - - - - - - - AO2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AO3 - - - - - - - AO3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DI - - - - - - - DI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI1 - - - - - - - AI1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI2 - - - - - - - AI2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI3 - - - - - - - AI3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI4 - - - - - - - AI4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI5 - - - - - - - AI5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI6 - - - - - - - AI6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI7 - - - - - - - AI7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AI8 - - - - - - - AI8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AO4 - - - - - - - AO4 - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + DI1 + + + + + + + DI1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI2 + + + + + + + DI2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI3 + + + + + + + DI3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI4 + + + + + + + DI4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI5 + + + + + + + DI5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI6 + + + + + + + DI6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI7 + + + + + + + DI7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DI8 + + + + + + + DI8 + + + + + + + + + master diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterMicroMod/TestMasterMicroMod.c --- a/examples/TestMasterMicroMod/TestMasterMicroMod.c Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterMicroMod/TestMasterMicroMod.c Wed May 16 14:17:04 2007 +0200 @@ -323,7 +323,8 @@ void TestMaster_post_sync() { DO++; - eprintf("MicroMod Digital Out: %2.2x In: %2.2d\n",DO,DI); + eprintf("MicroMod Digital Out: %2.2x\n",DO); + eprintf("MicroMod Digital In (by bit): DI1: %2.2x DI2: %2.2x DI3: %2.2x DI4: %2.2x DI5: %2.2x DI6: %2.2x DI7: %2.2x DI8: %2.2x\n",DI1,DI2,DI3,DI4,DI5,DI6,DI7,DI8); } void TestMaster_post_TPDO() @@ -359,6 +360,7 @@ printf("* - send periodic SYNC *\n"); printf("* - send periodic RPDO 1 to Micromod (digital output) *\n"); printf("* - listen Micromod's TPDO 1 (digital input) *\n"); + printf("* - Mapping RPDO 1 bit per bit (digital input) *\n"); printf("* *\n"); printf("* Usage: *\n"); printf("* ./TestMasterMicroMod [OPTIONS] *\n"); diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/Master.c --- a/examples/TestMasterSlave/Master.c Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/Master.c Wed May 16 14:17:04 2007 +0200 @@ -164,7 +164,7 @@ void TestMaster_post_sync() { eprintf("TestMaster_post_sync\n"); - eprintf("Master: %d %d %d %d\n",MasterMap1, MasterMap2, MasterMap3, MasterMap4); + 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); } char query_result = 0; @@ -193,7 +193,7 @@ UNS8 size; switch(getReadResultNetworkDict ( &TestMaster_Data, - *TestSlave_Data.bDeviceNodeId, + 0x02, &query_result, &size, &abortCode)) @@ -207,7 +207,7 @@ waiting_answer = 0; closeSDOtransfer( &TestMaster_Data, - *TestSlave_Data. bDeviceNodeId, + 0x02, SDO_CLIENT); break; case SDO_DOWNLOAD_IN_PROGRESS: @@ -217,7 +217,7 @@ }else if(MasterMap1 % 10 == 0){ readNetworkDict ( &TestMaster_Data, - *TestSlave_Data.bDeviceNodeId, + 0x02, 0x2002, 0x00, 0); diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/Slave.c --- a/examples/TestMasterSlave/Slave.c Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/Slave.c Wed May 16 14:17:04 2007 +0200 @@ -53,11 +53,19 @@ void TestSlave_post_sync() { eprintf("TestSlave_post_sync\n"); - SlaveMap1+=1; - SlaveMap2+=2; - SlaveMap3+=3; - SlaveMap4+=4; - eprintf("Slave: %d %d %d %d\n",SlaveMap1, SlaveMap2, SlaveMap3, SlaveMap4); + + SlaveMap1=1; + SlaveMap2=1; + SlaveMap3=0; + SlaveMap4=0; + SlaveMap5=1; + SlaveMap6=0; + SlaveMap7=1; + SlaveMap8=0; + SlaveMap9=16; + SlaveMap10 = 0xff00ff00; + SlaveMap11 = 0xabcd; + eprintf("Slave: %d %d %d %d %d %d %d %d %d %x %x\n",SlaveMap1, SlaveMap2, SlaveMap3, SlaveMap4, SlaveMap5, SlaveMap6, SlaveMap7, SlaveMap8, SlaveMap9, SlaveMap10,SlaveMap11); } void TestSlave_post_TPDO() diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/TestMaster.c --- a/examples/TestMasterSlave/TestMaster.c Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/TestMaster.c Wed May 16 14:17:04 2007 +0200 @@ -10,6 +10,13 @@ UNS8 MasterMap2 = 0x0; /* Mapped at index 0x2001, subindex 0x00 */ UNS8 MasterMap3 = 0x0; /* Mapped at index 0x2002, subindex 0x00 */ UNS8 MasterMap4 = 0x0; /* Mapped at index 0x2003, subindex 0x00 */ +UNS8 MasterMap5 = 0x0; /* Mapped at index 0x2004, subindex 0x00 */ +UNS8 MasterMap6 = 0x0; /* Mapped at index 0x2005, subindex 0x00 */ +UNS8 MasterMap7 = 0x0; /* Mapped at index 0x2006, subindex 0x00 */ +UNS8 MasterMap8 = 0x0; /* Mapped at index 0x2007, subindex 0x00 */ +UNS8 MasterMap9 = 0x0; /* Mapped at index 0x2008, subindex 0x00 */ +UNS32 MasterMap10 = 0x0; /* Mapped at index 0x2009, subindex 0x00 */ +UNS16 MasterMap11 = 0x0; /* Mapped at index 0x200A, subindex 0x00 */ /**************************************************************************/ /* Declaration of the value range types */ @@ -113,7 +120,7 @@ UNS8 TestMaster_highestSubIndex_obj1016 = 1; /* number of subindex - 1*/ UNS32 TestMaster_obj1016[] = { - 0x5DC /* 1500 */ + 0x205DC /* 132572 */ }; subindex TestMaster_Index1016[] = { @@ -143,13 +150,13 @@ UNS8 TestMaster_highestSubIndex_obj1280 = 3; /* number of subindex - 1*/ 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 */ + INTEGER32 TestMaster_obj1280_Node_ID_of_the_SDO_Server = 0x2; /* 2 */ subindex TestMaster_Index1280[] = { { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1280 }, { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO }, { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_Node_ID_of_the_SDO_Server } + { RW, int32, sizeof (INTEGER32), (void*)&TestMaster_obj1280_Node_ID_of_the_SDO_Server } }; /* index 0x1400 : Receive PDO 1 Parameter. */ @@ -157,7 +164,7 @@ 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 */ + UNS8 TestMaster_obj1400_Compatibility_Entry = 0x0; /* 0 */ UNS16 TestMaster_obj1400_Event_Timer = 0x0; /* 0 */ subindex TestMaster_Index1400[] = { @@ -165,16 +172,16 @@ { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1400_COB_ID_used_by_PDO }, { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1400_Transmission_Type }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Compatibility_Entry }, + { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1400_Compatibility_Entry }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Event_Timer } }; /* index 0x1401 : Receive PDO 2 Parameter. */ UNS8 TestMaster_highestSubIndex_obj1401 = 5; /* number of subindex - 1*/ - UNS32 TestMaster_obj1401_COB_ID_used_by_PDO = 0x282; /* 642 */ - UNS8 TestMaster_obj1401_Transmission_Type = 0x1; /* 1 */ + UNS32 TestMaster_obj1401_COB_ID_used_by_PDO = 0x0; /* 0 */ + UNS8 TestMaster_obj1401_Transmission_Type = 0x0; /* 0 */ UNS16 TestMaster_obj1401_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestMaster_obj1401_Compatibility_Entry = 0x0; /* 0 */ + UNS8 TestMaster_obj1401_Compatibility_Entry = 0x0; /* 0 */ UNS16 TestMaster_obj1401_Event_Timer = 0x0; /* 0 */ subindex TestMaster_Index1401[] = { @@ -182,36 +189,50 @@ { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1401_COB_ID_used_by_PDO }, { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1401_Transmission_Type }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Compatibility_Entry }, + { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1401_Compatibility_Entry }, { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Event_Timer } }; /* index 0x1600 : Receive PDO 1 Mapping. */ - UNS8 TestMaster_highestSubIndex_obj1600 = 2; /* number of subindex - 1*/ + UNS8 TestMaster_highestSubIndex_obj1600 = 10; /* number of subindex - 1*/ UNS32 TestMaster_obj1600[] = { - 0x20000008, /* 536870920 */ - 0x20010008 /* 536936456 */ + 0x20000001, /* 536870913 */ + 0x20010001, /* 536936449 */ + 0x20020001, /* 537001985 */ + 0x20030001, /* 537067521 */ + 0x20040001, /* 537133057 */ + 0x20050001, /* 537198593 */ + 0x20060001, /* 537264129 */ + 0x20070001, /* 537329665 */ + 0x20080008, /* 537395208 */ + 0x20090020 /* 537460768 */ }; subindex TestMaster_Index1600[] = { { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1600 }, { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[1] } + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[1] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[2] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[3] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[4] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[5] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[6] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[7] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[8] }, + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[9] } }; /* index 0x1601 : Receive PDO 2 Mapping. */ - UNS8 TestMaster_highestSubIndex_obj1601 = 2; /* number of subindex - 1*/ + UNS8 TestMaster_highestSubIndex_obj1601 = 1; /* number of subindex - 1*/ UNS32 TestMaster_obj1601[] = { - 0x20020008, /* 537001992 */ - 0x20030008 /* 537067528 */ + 0x200A0010 /* 537526288 */ }; subindex TestMaster_Index1601[] = { { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1601 }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[1] } + { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[0] } }; /* index 0x1F22 : Concise DCF. */ @@ -231,25 +252,67 @@ /* index 0x2000 : Mapped variable MasterMap1 */ subindex TestMaster_Index2000[] = { - { RW, uint8, sizeof (UNS8), (void*)&MasterMap1 } + { RW, boolean, sizeof (UNS8), (void*)&MasterMap1 } }; /* index 0x2001 : Mapped variable MasterMap2 */ subindex TestMaster_Index2001[] = { - { RW, uint8, sizeof (UNS8), (void*)&MasterMap2 } + { RW, boolean, sizeof (UNS8), (void*)&MasterMap2 } }; /* index 0x2002 : Mapped variable MasterMap3 */ subindex TestMaster_Index2002[] = { - { RW, uint8, sizeof (UNS8), (void*)&MasterMap3 } + { RW, boolean, sizeof (UNS8), (void*)&MasterMap3 } }; /* index 0x2003 : Mapped variable MasterMap4 */ subindex TestMaster_Index2003[] = { - { RW, uint8, sizeof (UNS8), (void*)&MasterMap4 } + { RW, boolean, sizeof (UNS8), (void*)&MasterMap4 } + }; + +/* index 0x2004 : Mapped variable MasterMap5 */ + subindex TestMaster_Index2004[] = + { + { RW, boolean, sizeof (UNS8), (void*)&MasterMap5 } + }; + +/* index 0x2005 : Mapped variable MasterMap6 */ + subindex TestMaster_Index2005[] = + { + { RW, boolean, sizeof (UNS8), (void*)&MasterMap6 } + }; + +/* index 0x2006 : Mapped variable MasterMap7 */ + subindex TestMaster_Index2006[] = + { + { RW, boolean, sizeof (UNS8), (void*)&MasterMap7 } + }; + +/* index 0x2007 : Mapped variable MasterMap8 */ + subindex TestMaster_Index2007[] = + { + { RW, boolean, sizeof (UNS8), (void*)&MasterMap8 } + }; + +/* index 0x2008 : Mapped variable MasterMap9 */ + subindex TestMaster_Index2008[] = + { + { RW, uint8, sizeof (UNS8), (void*)&MasterMap9 } + }; + +/* index 0x2009 : Mapped variable MasterMap10 */ + subindex TestMaster_Index2009[] = + { + { RW, uint32, sizeof (UNS32), (void*)&MasterMap10 } + }; + +/* index 0x200A : Mapped variable MasterMap11 */ + subindex TestMaster_Index200A[] = + { + { RW, uint16, sizeof (UNS16), (void*)&MasterMap11 } }; const indextable TestMaster_objdict[] = @@ -272,6 +335,13 @@ { (subindex*)TestMaster_Index2001,sizeof(TestMaster_Index2001)/sizeof(TestMaster_Index2001[0]), 0x2001}, { (subindex*)TestMaster_Index2002,sizeof(TestMaster_Index2002)/sizeof(TestMaster_Index2002[0]), 0x2002}, { (subindex*)TestMaster_Index2003,sizeof(TestMaster_Index2003)/sizeof(TestMaster_Index2003[0]), 0x2003}, + { (subindex*)TestMaster_Index2004,sizeof(TestMaster_Index2004)/sizeof(TestMaster_Index2004[0]), 0x2004}, + { (subindex*)TestMaster_Index2005,sizeof(TestMaster_Index2005)/sizeof(TestMaster_Index2005[0]), 0x2005}, + { (subindex*)TestMaster_Index2006,sizeof(TestMaster_Index2006)/sizeof(TestMaster_Index2006[0]), 0x2006}, + { (subindex*)TestMaster_Index2007,sizeof(TestMaster_Index2007)/sizeof(TestMaster_Index2007[0]), 0x2007}, + { (subindex*)TestMaster_Index2008,sizeof(TestMaster_Index2008)/sizeof(TestMaster_Index2008[0]), 0x2008}, + { (subindex*)TestMaster_Index2009,sizeof(TestMaster_Index2009)/sizeof(TestMaster_Index2009[0]), 0x2009}, + { (subindex*)TestMaster_Index200A,sizeof(TestMaster_Index200A)/sizeof(TestMaster_Index200A[0]), 0x200A}, }; const indextable * TestMaster_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks) @@ -297,6 +367,13 @@ case 0x2001: i = 15;break; case 0x2002: i = 16;break; case 0x2003: i = 17;break; + case 0x2004: i = 18;break; + case 0x2005: i = 19;break; + case 0x2006: i = 20;break; + case 0x2007: i = 21;break; + case 0x2008: i = 22;break; + case 0x2009: i = 23;break; + case 0x200A: i = 24;break; default: *errorCode = OD_NO_SUCH_OBJECT; return NULL; diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/TestMaster.h --- a/examples/TestMasterSlave/TestMaster.h Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/TestMaster.h Wed May 16 14:17:04 2007 +0200 @@ -14,3 +14,10 @@ extern UNS8 MasterMap2; /* Mapped at index 0x2001, subindex 0x00*/ extern UNS8 MasterMap3; /* Mapped at index 0x2002, subindex 0x00*/ extern UNS8 MasterMap4; /* Mapped at index 0x2003, subindex 0x00*/ +extern UNS8 MasterMap5; /* Mapped at index 0x2004, subindex 0x00*/ +extern UNS8 MasterMap6; /* Mapped at index 0x2005, subindex 0x00*/ +extern UNS8 MasterMap7; /* Mapped at index 0x2006, subindex 0x00*/ +extern UNS8 MasterMap8; /* Mapped at index 0x2007, subindex 0x00*/ +extern UNS8 MasterMap9; /* Mapped at index 0x2008, subindex 0x00*/ +extern UNS32 MasterMap10; /* Mapped at index 0x2009, subindex 0x00*/ +extern UNS16 MasterMap11; /* Mapped at index 0x200A, subindex 0x00*/ diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/TestMaster.od --- a/examples/TestMasterSlave/TestMaster.od Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/TestMaster.od Wed May 16 14:17:04 2007 +0200 @@ -1,25 +1,641 @@ - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -27,75 +643,181 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + @@ -107,181 +829,57 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -293,6 +891,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -304,269 +1026,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581,564 +1077,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1160,7 +1098,7 @@ - + @@ -1175,26 +1113,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -1230,33 +1168,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -1292,33 +1230,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -1354,33 +1292,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -1416,33 +1354,157 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1468,105 +1530,105 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1592,116 +1654,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -1716,43 +1716,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1778,43 +1778,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1840,43 +1840,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1902,43 +1902,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1964,43 +1964,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2026,43 +2026,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2088,68 +2088,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2160,7 +2098,7 @@ - + @@ -2175,26 +2113,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -2230,33 +2168,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -2292,44 +2230,44 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -2353,70 +2291,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2431,26 +2369,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -2465,7 +2403,7 @@ - + @@ -2480,39 +2418,39 @@ - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -2548,7 +2486,7 @@ - + @@ -2563,26 +2501,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -2617,34 +2555,96 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2659,18 +2659,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -2680,7 +2680,7 @@ - + @@ -2695,26 +2695,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -2750,33 +2750,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -2812,33 +2812,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -2874,33 +2874,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -2936,33 +2936,219 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2977,6 +3163,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2988,178 +3422,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3174,17 +3586,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -3199,15 +3611,95 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3215,458 +3707,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -3681,26 +3743,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -3715,7 +3777,7 @@ - + @@ -3730,101 +3792,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -3860,33 +3860,95 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3901,68 +3963,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3983,8 +3983,8 @@ - - + + @@ -3999,26 +3999,26 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -4033,7 +4033,7 @@ - + @@ -4048,13 +4048,13 @@ - + - + @@ -4069,26 +4069,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -4124,36 +4124,98 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4165,6 +4227,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4176,7 +4300,131 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4186,33 +4434,33 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -4247,34 +4495,96 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4289,214 +4599,90 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4511,26 +4697,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -4545,7 +4731,7 @@ - + @@ -4560,112 +4746,112 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4680,192 +4866,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4876,44 +4876,44 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -4938,7 +4938,7 @@ - + @@ -4953,26 +4953,26 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -5007,8 +5007,8 @@ -TestMaster - + + @@ -5026,22 +5026,96 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -5050,84 +5124,45 @@ - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - + @@ -5136,9 +5171,9 @@ - + - + @@ -5147,31 +5182,31 @@ - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -5192,26 +5227,26 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -5232,26 +5267,26 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -5272,26 +5307,26 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -5310,22 +5345,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap5 + + + + + + + MasterMap5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap6 + + + + + + + MasterMap6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap7 + + + + + + + MasterMap7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap8 + + + + + + + MasterMap8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap9 + + + + + + + MasterMap9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap10 + + + + + + + MasterMap10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MasterMap11 + + + + + + + MasterMap11 + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5337,134 +5732,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -5502,4 +5817,5 @@ DS-401 master +TestMaster diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/TestSlave.c --- a/examples/TestMasterSlave/TestSlave.c Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/TestSlave.c Wed May 16 14:17:04 2007 +0200 @@ -10,6 +10,13 @@ UNS8 SlaveMap2 = 0x0; /* Mapped at index 0x2001, subindex 0x00 */ UNS8 SlaveMap3 = 0x0; /* Mapped at index 0x2002, subindex 0x00 */ UNS8 SlaveMap4 = 0x0; /* Mapped at index 0x2003, subindex 0x00 */ +UNS8 SlaveMap5 = 0x0; /* Mapped at index 0x2004, subindex 0x00 */ +UNS8 SlaveMap6 = 0x0; /* Mapped at index 0x2005, subindex 0x00 */ +UNS8 SlaveMap7 = 0x0; /* Mapped at index 0x2006, subindex 0x00 */ +UNS8 SlaveMap8 = 0x0; /* Mapped at index 0x2007, subindex 0x00 */ +UNS8 SlaveMap9 = 0x0; /* Mapped at index 0x2008, subindex 0x00 */ +UNS32 SlaveMap10 = 0x0; /* Mapped at index 0x2009, subindex 0x00 */ +UNS16 SlaveMap11 = 0x0; /* Mapped at index 0x200A, subindex 0x00 */ /**************************************************************************/ /* Declaration of the value range types */ @@ -171,7 +178,7 @@ UNS32 TestSlave_obj1800_COB_ID_used_by_PDO = 0x182; /* 386 */ UNS8 TestSlave_obj1800_Transmission_Type = 0x0; /* 0 */ UNS16 TestSlave_obj1800_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestSlave_obj1800_Compatibility_Entry = 0x0; /* 0 */ + UNS8 TestSlave_obj1800_Compatibility_Entry = 0x0; /* 0 */ UNS16 TestSlave_obj1800_Event_Timer = 0x0; /* 0 */ subindex TestSlave_Index1800[] = { @@ -179,16 +186,16 @@ { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1800_COB_ID_used_by_PDO }, { RW|TO_BE_SAVE, uint8, sizeof (UNS8), (void*)&TestSlave_obj1800_Transmission_Type }, { RW|TO_BE_SAVE, uint16, sizeof (UNS16), (void*)&TestSlave_obj1800_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestSlave_obj1800_Compatibility_Entry }, + { RW, uint8, sizeof (UNS8), (void*)&TestSlave_obj1800_Compatibility_Entry }, { RW, uint16, sizeof (UNS16), (void*)&TestSlave_obj1800_Event_Timer } }; /* index 0x1801 : Transmit PDO 2 Parameter. */ UNS8 TestSlave_highestSubIndex_obj1801 = 5; /* number of subindex - 1*/ - UNS32 TestSlave_obj1801_COB_ID_used_by_PDO = 0x282; /* 642 */ + UNS32 TestSlave_obj1801_COB_ID_used_by_PDO = 0x0; /* 0 */ UNS8 TestSlave_obj1801_Transmission_Type = 0x0; /* 0 */ UNS16 TestSlave_obj1801_Inhibit_Time = 0x0; /* 0 */ - UNS16 TestSlave_obj1801_Compatibility_Entry = 0x0; /* 0 */ + UNS8 TestSlave_obj1801_Compatibility_Entry = 0x0; /* 0 */ UNS16 TestSlave_obj1801_Event_Timer = 0x0; /* 0 */ subindex TestSlave_Index1801[] = { @@ -196,60 +203,116 @@ { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1801_COB_ID_used_by_PDO }, { RW, uint8, sizeof (UNS8), (void*)&TestSlave_obj1801_Transmission_Type }, { RW, uint16, sizeof (UNS16), (void*)&TestSlave_obj1801_Inhibit_Time }, - { RW, uint16, sizeof (UNS16), (void*)&TestSlave_obj1801_Compatibility_Entry }, + { RW, uint8, sizeof (UNS8), (void*)&TestSlave_obj1801_Compatibility_Entry }, { RW, uint16, sizeof (UNS16), (void*)&TestSlave_obj1801_Event_Timer } }; /* index 0x1A00 : Transmit PDO 1 Mapping. */ - UNS8 TestSlave_highestSubIndex_obj1A00 = 2; /* number of subindex - 1*/ + UNS8 TestSlave_highestSubIndex_obj1A00 = 10; /* number of subindex - 1*/ UNS32 TestSlave_obj1A00[] = { - 0x20000008, /* 536870920 */ - 0x20010008 /* 536936456 */ + 0x20000001, /* 536870913 */ + 0x20010001, /* 536936449 */ + 0x20020001, /* 537001985 */ + 0x20030001, /* 537067521 */ + 0x20040001, /* 537133057 */ + 0x20050001, /* 537198593 */ + 0x20060001, /* 537264129 */ + 0x20070001, /* 537329665 */ + 0x20080008, /* 537395208 */ + 0x20090020 /* 537460768 */ }; subindex TestSlave_Index1A00[] = { { RW, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1A00 }, { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[1] } + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[1] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[2] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[3] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[4] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[5] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[6] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[7] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[8] }, + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A00[9] } }; /* index 0x1A01 : Transmit PDO 2 Mapping. */ - UNS8 TestSlave_highestSubIndex_obj1A01 = 2; /* number of subindex - 1*/ + UNS8 TestSlave_highestSubIndex_obj1A01 = 1; /* number of subindex - 1*/ UNS32 TestSlave_obj1A01[] = { - 0x20020008, /* 537001992 */ - 0x20030008 /* 537067528 */ + 0x200A0010 /* 537526288 */ }; subindex TestSlave_Index1A01[] = { { RW, uint8, sizeof (UNS8), (void*)&TestSlave_highestSubIndex_obj1A01 }, - { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A01[0] }, - { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A01[1] } + { RW, uint32, sizeof (UNS32), (void*)&TestSlave_obj1A01[0] } }; /* index 0x2000 : Mapped variable SlaveMap1 */ subindex TestSlave_Index2000[] = { - { RW, uint8, sizeof (UNS8), (void*)&SlaveMap1 } + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap1 } }; /* index 0x2001 : Mapped variable SlaveMap2 */ subindex TestSlave_Index2001[] = { - { RW, uint8, sizeof (UNS8), (void*)&SlaveMap2 } + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap2 } }; /* index 0x2002 : Mapped variable SlaveMap3 */ subindex TestSlave_Index2002[] = { - { RW, uint8, sizeof (UNS8), (void*)&SlaveMap3 } + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap3 } }; /* index 0x2003 : Mapped variable SlaveMap4 */ subindex TestSlave_Index2003[] = { - { RW, uint8, sizeof (UNS8), (void*)&SlaveMap4 } + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap4 } + }; + +/* index 0x2004 : Mapped variable SlaveMap5 */ + subindex TestSlave_Index2004[] = + { + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap5 } + }; + +/* index 0x2005 : Mapped variable SlaveMap6 */ + subindex TestSlave_Index2005[] = + { + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap6 } + }; + +/* index 0x2006 : Mapped variable SlaveMap7 */ + subindex TestSlave_Index2006[] = + { + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap7 } + }; + +/* index 0x2007 : Mapped variable SlaveMap8 */ + subindex TestSlave_Index2007[] = + { + { RW, boolean, sizeof (UNS8), (void*)&SlaveMap8 } + }; + +/* index 0x2008 : Mapped variable SlaveMap9 */ + subindex TestSlave_Index2008[] = + { + { RW, uint8, sizeof (UNS8), (void*)&SlaveMap9 } + }; + +/* index 0x2009 : Mapped variable SlaveMap10 */ + subindex TestSlave_Index2009[] = + { + { RW, uint32, sizeof (UNS32), (void*)&SlaveMap10 } + }; + +/* index 0x200A : Mapped variable SlaveMap11 */ + subindex TestSlave_Index200A[] = + { + { RW, uint16, sizeof (UNS16), (void*)&SlaveMap11 } }; const indextable TestSlave_objdict[] = @@ -271,6 +334,13 @@ { (subindex*)TestSlave_Index2001,sizeof(TestSlave_Index2001)/sizeof(TestSlave_Index2001[0]), 0x2001}, { (subindex*)TestSlave_Index2002,sizeof(TestSlave_Index2002)/sizeof(TestSlave_Index2002[0]), 0x2002}, { (subindex*)TestSlave_Index2003,sizeof(TestSlave_Index2003)/sizeof(TestSlave_Index2003[0]), 0x2003}, + { (subindex*)TestSlave_Index2004,sizeof(TestSlave_Index2004)/sizeof(TestSlave_Index2004[0]), 0x2004}, + { (subindex*)TestSlave_Index2005,sizeof(TestSlave_Index2005)/sizeof(TestSlave_Index2005[0]), 0x2005}, + { (subindex*)TestSlave_Index2006,sizeof(TestSlave_Index2006)/sizeof(TestSlave_Index2006[0]), 0x2006}, + { (subindex*)TestSlave_Index2007,sizeof(TestSlave_Index2007)/sizeof(TestSlave_Index2007[0]), 0x2007}, + { (subindex*)TestSlave_Index2008,sizeof(TestSlave_Index2008)/sizeof(TestSlave_Index2008[0]), 0x2008}, + { (subindex*)TestSlave_Index2009,sizeof(TestSlave_Index2009)/sizeof(TestSlave_Index2009[0]), 0x2009}, + { (subindex*)TestSlave_Index200A,sizeof(TestSlave_Index200A)/sizeof(TestSlave_Index200A[0]), 0x200A}, }; const indextable * TestSlave_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks) @@ -295,6 +365,13 @@ case 0x2001: i = 14;break; case 0x2002: i = 15;break; case 0x2003: i = 16;break; + case 0x2004: i = 17;break; + case 0x2005: i = 18;break; + case 0x2006: i = 19;break; + case 0x2007: i = 20;break; + case 0x2008: i = 21;break; + case 0x2009: i = 22;break; + case 0x200A: i = 23;break; default: *errorCode = OD_NO_SUCH_OBJECT; return NULL; diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/TestSlave.h --- a/examples/TestMasterSlave/TestSlave.h Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/TestSlave.h Wed May 16 14:17:04 2007 +0200 @@ -16,3 +16,10 @@ extern UNS8 SlaveMap2; /* Mapped at index 0x2001, subindex 0x00*/ extern UNS8 SlaveMap3; /* Mapped at index 0x2002, subindex 0x00*/ extern UNS8 SlaveMap4; /* Mapped at index 0x2003, subindex 0x00*/ +extern UNS8 SlaveMap5; /* Mapped at index 0x2004, subindex 0x00*/ +extern UNS8 SlaveMap6; /* Mapped at index 0x2005, subindex 0x00*/ +extern UNS8 SlaveMap7; /* Mapped at index 0x2006, subindex 0x00*/ +extern UNS8 SlaveMap8; /* Mapped at index 0x2007, subindex 0x00*/ +extern UNS8 SlaveMap9; /* Mapped at index 0x2008, subindex 0x00*/ +extern UNS32 SlaveMap10; /* Mapped at index 0x2009, subindex 0x00*/ +extern UNS16 SlaveMap11; /* Mapped at index 0x200A, subindex 0x00*/ diff -r 930be51ddc24 -r 2966cd34162a examples/TestMasterSlave/TestSlave.od --- a/examples/TestMasterSlave/TestSlave.od Mon May 14 22:46:20 2007 +0200 +++ b/examples/TestMasterSlave/TestSlave.od Wed May 16 14:17:04 2007 +0200 @@ -1,10 +1,10 @@ - - + + - + @@ -22,14 +22,8 @@ - - - - - - - - + + @@ -44,18 +38,20 @@ - - - - - - - - + + + + + + + + + + - + @@ -64,7 +60,7 @@ - + @@ -73,49 +69,88 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - + @@ -124,7 +159,7 @@ - + @@ -132,8 +167,8 @@ - - + + @@ -142,10 +177,10 @@ - + - + @@ -154,7 +189,7 @@ - + @@ -164,8 +199,8 @@ - - + + @@ -173,18 +208,338 @@ - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap2 + + + + + + + SlaveMap2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap3 + + + + + + + SlaveMap3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap4 + + + + + + + SlaveMap4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap5 + + + + + + + SlaveMap5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap6 + + + + + + + SlaveMap6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap7 + + + + + + + SlaveMap7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap8 + + + + + + + SlaveMap8 + + + + + + + + + + + + + + + + + + @@ -199,134 +554,94 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + SlaveMap9 + + + + + + + SlaveMap9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap10 + + + + + + + SlaveMap10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SlaveMap11 + + + + + + + SlaveMap11 @@ -335,7 +650,7 @@ - + diff -r 930be51ddc24 -r 2966cd34162a include/pdo.h --- a/include/pdo.h Mon May 14 22:46:20 2007 +0200 +++ b/include/pdo.h Wed May 16 14:17:04 2007 +0200 @@ -94,4 +94,6 @@ */ UNS8 sendPDOevent (CO_Data* d, void * variable); +/* copy bit per bit in little endian */ +void CopyBits(UNS8 NbBits, UNS8* SrcByteIndex, UNS8 SrcBitIndex, UNS8 SrcBigEndian, UNS8* DestByteIndex, UNS8 DestBitIndex, UNS8 DestBigEndian); #endif diff -r 930be51ddc24 -r 2966cd34162a src/pdo.c --- a/src/pdo.c Mon May 14 22:46:20 2007 +0200 +++ b/src/pdo.c Wed May 16 14:17:04 2007 +0200 @@ -80,7 +80,11 @@ return res; } -/**************************************************************************/ +#if 0 +/*********************************************************************/ +/* TODO : implement bit mapping */ +/*********************************************************************/ + UNS8 buildPDO(CO_Data* d, UNS16 index) { /* DO NOT USE MSG_ERR because the macro may send a PDO -> infinite loop if it fails. */ UNS16 ind; @@ -126,10 +130,10 @@ MSG_WAR(0x3915, " subIndex : ", subInd + 1); MSG_WAR(0x3916, " value : ", *(UNS32 *)pMappingParameter); /* Get the mapped variable */ - Size = ((UNS8)(((*pMappingParameter) & 0xFF) >> 3)); - objDict = getODentry(d, (UNS16)((*pMappingParameter) >> 16), + Size = ((UNS8)(((*pMappingParameter) & 0xFF) >> 3)); + objDict = getODentry(d, (UNS16)((*pMappingParameter) >> 16), (UNS8)(((*pMappingParameter) >> 8 ) & 0x000000FF), - (void *)&d->process_var.data[offset], &Size, &dataType, 0 ); + (void *)&d->process_var.data[offset], &Size, &dataType, 0 ); if (objDict != OD_SUCCESSFUL) { MSG_WAR(0x2919, "error accessing to the mapped var : ", subInd + 1); @@ -145,7 +149,7 @@ } return 0; } - +#endif /**************************************************************************/ UNS8 sendPDOrequest( CO_Data* d, UNS32 cobId ) { @@ -199,8 +203,10 @@ UNS32 objDict; UNS16 offsetObjdict; UNS16 lastIndex; + UNS16 Index; + UNS8 Sindex; status = state1; - + MSG_WAR(0x3935, "proceedPDO, cobID : ", ((*m).cob_id.w & 0x7ff)); offset = 0x00; numPdo = 0; @@ -208,11 +214,11 @@ if((*m).rtr == NOT_A_REQUEST ) { /* The PDO received is not a request. */ offsetObjdict = d->firstIndex->PDO_RCV; lastIndex = d->lastIndex->PDO_RCV; - + /* study of all the PDO stored in the dictionary */ if(offsetObjdict) while (offsetObjdict <= lastIndex) { - + switch( status ) { case state1: /* data are stored in process_var array */ @@ -227,7 +233,7 @@ case state2: /* get CobId of the dictionary correspondant to the received PDO */ - pwCobId = d->objdict[offsetObjdict].pSubindex[1].pObject; + pwCobId = d->objdict[offsetObjdict].pSubindex[1].pObject; /* check the CobId coherance */ /*pwCobId is the cobId read in the dictionary at the state 3 */ if ( *pwCobId == (*m).cob_id.w ){ @@ -251,22 +257,29 @@ pMappingCount = (d->objdict + offsetObjdict + numPdo)->pSubindex[0].pObject; numMap = 0; while (numMap < *pMappingCount) { + UNS8 tmp[]= {0,0,0,0,0,0,0,0}; + UNS8 ByteSize; pMappingParameter = (d->objdict + offsetObjdict + numPdo)->pSubindex[numMap + 1].pObject; if (pMappingParameter == NULL) { MSG_ERR(0x1937, "Couldn't get mapping parameter : ", numMap + 1); return 0xFF; } - /* Get the addresse of the mapped variable. */ + /* Get the addresse of the mapped variable. */ /* detail of *pMappingParameter : */ /* The 16 hight bits contains the index, the medium 8 bits contains the subindex, */ /* and the lower 8 bits contains the size of the mapped variable. */ - - Size = ((UNS8)(((*pMappingParameter) & 0xFF) >> 3)); - + + Size = (UNS8)(*pMappingParameter); + + /* copy bit per bit in little endian */ + CopyBits(Size, (UNS8*)&d->process_var.data[offset>>3], offset%8, 0, ((UNS8*)tmp), 0, 0); + + ByteSize = 1 + ((Size - 1) >> 3); /*1->8 => 1 ; 9->16 => 2, ... */ + objDict = setODentry(d, (UNS16)((*pMappingParameter) >> 16), (UNS8)(((*pMappingParameter) >> 8 ) & 0xFF), - (void *)&d->process_var.data[offset], &Size, 0 ); - + tmp, &ByteSize, 0 ); + if(objDict != OD_SUCCESSFUL) { MSG_ERR(0x1938, "error accessing to the mapped var : ", numMap + 1); MSG_WAR(0x2939, " Mapped at index : ", (*pMappingParameter) >> 16); @@ -336,7 +349,7 @@ while (numMap < *pMappingCount) { pMappingParameter = (d->objdict + offsetObjdict + numPdo)->pSubindex[numMap + 1].pObject; /* Get the mapped variable */ - Size = ((UNS8)(((*pMappingParameter) & 0xFF) >> 3)); + Size = ((UNS8)(((*pMappingParameter) & 0xFF) >> 3)); objDict = getODentry( d, (UNS16)((*pMappingParameter) >> (UNS8)16), (UNS8)(( (*pMappingParameter) >> (UNS8)8 ) & 0xFF), (void *)&d->process_var.data[offset], &Size, &dataType, 0 ); @@ -362,7 +375,53 @@ } - +void CopyBits(UNS8 NbBits, UNS8* SrcByteIndex, UNS8 SrcBitIndex, UNS8 SrcBigEndian, UNS8* DestByteIndex, UNS8 DestBitIndex, UNS8 DestBigEndian) +{ + //This loop copy as many bits that it can each time, crossing successively bytes + // boundaries from LSB to MSB. + while(NbBits > 0) + { + // Bit missalignement between src and dest + INTEGER8 Vect = DestBitIndex - SrcBitIndex; + + // We can now get src and align it to dest + UNS8 Aligned = Vect>0 ? *SrcByteIndex << Vect : *SrcByteIndex >> -Vect; + + // Compute the nb of bit we will be able to copy + UNS8 BoudaryLimit = (Vect>0 ? 8 - DestBitIndex : 8 - SrcBitIndex ); + UNS8 BitsToCopy = BoudaryLimit > NbBits ? NbBits : BoudaryLimit; + + // Create a mask that will serve in: + UNS8 Mask = ((0xff << (DestBitIndex + BitsToCopy)) | (0xff >> (8 - DestBitIndex))); + + // - Filtering src + UNS8 Filtered = Aligned & ~Mask; + + // - and erase bits where we write, preserve where we don't + *DestByteIndex &= Mask; + + // Then write. + *DestByteIndex |= Filtered ; + + //Compute next time cursors for src + if((SrcBitIndex += BitsToCopy)>7) // cross boundary ? + { + SrcBitIndex = 0; // First bit + SrcByteIndex += (SrcBigEndian ? -1 : 1); // Next byte + } + + //Compute next time cursors for dest + if((DestBitIndex += BitsToCopy)>7) + { + DestBitIndex = 0; // First bit + DestByteIndex += (DestBigEndian ? -1 : 1);// Next byte + } + + //And decrement counter. + NbBits -= BitsToCopy; + } + +} #if 0 @@ -414,7 +473,7 @@ offsetObjdictPrm++; continue; } - pMappingCount = d->objdict[offsetObjdict].pSubindex[0].pObject; + pMappingCount = d->objdict[offsetObjdict].pSubindex[0].pObject; numMap = 1; /* mapped variable */ while (numMap <= *pMappingCount) { pMappingParameter = d->objdict[offsetObjdict].pSubindex[numMap].pObject; diff -r 930be51ddc24 -r 2966cd34162a src/sync.c --- a/src/sync.c Mon May 14 22:46:20 2007 +0200 +++ b/src/sync.c Wed May 16 14:17:04 2007 +0200 @@ -105,13 +105,13 @@ UNS8 * pTransmissionType = NULL; UNS32 * pwCobId = NULL; - UNS8 dataType; + UNS8 dataType; UNS16 index; UNS8 subIndex; UNS8 offset; UNS8 status; - UNS8 sizeData; - UNS32 objDict; + UNS8 Size; + UNS32 objDict; UNS16 offsetObjdict; UNS16 offsetObjdictMap; UNS16 lastIndex; @@ -185,18 +185,21 @@ case state9: /* get data to transmit */ index = (UNS16)((*pMappingParameter) >> 16); subIndex = (UNS8)(( (*pMappingParameter) >> (UNS8)8 ) & (UNS32)0x000000FF); - /* <<3 because in *pMappingParameter the size is in bits */ - sizeData = (UNS8) ((*pMappingParameter & (UNS32)0x000000FF) >> 3) ; - - objDict = getODentry(d, index, subIndex, (void *)&d->process_var.data[offset], &sizeData, &dataType, 0 ); - + UNS8 ByteSize; + UNS8 tmp[]= {0,0,0,0,0,0,0,0}; + Size = (UNS8)(*pMappingParameter); /* Size in bits */ + ByteSize = 1 + ((Size - 1) >> 3); /*1->8 => 1 ; 9->16 => 2, ... */ + objDict = getODentry(d, index, subIndex, tmp, &ByteSize, &dataType, 0 ); + /* copy bit per bit in little endian*/ + CopyBits(Size, ((UNS8*)tmp), 0 , 0, (UNS8*)&d->process_var.data[offset>>3], offset%8, 0); + if( objDict != OD_SUCCESSFUL ){ MSG_ERR(0x1013, " Couldn't find mapped variable at index-subindex-size : ", (UNS16)(*pMappingParameter)); return 0xFF; } - offset += sizeData ; - d->process_var.count = offset; + offset += Size ; + d->process_var.count = 1 + ((offset - 1) >> 3); prp_j++; status = state10; break;