examples/SillySlave/SillySlave.c
changeset 400 7d845f5d730c
equal deleted inserted replaced
399:8d22c323fe0f 400:7d845f5d730c
       
     1 
       
     2 /* File generated by gen_cfile.py. Should not be modified. */
       
     3 
       
     4 #include "SillySlave.h"
       
     5 
       
     6 /**************************************************************************/
       
     7 /* Declaration of the mapped variables                                    */
       
     8 /**************************************************************************/
       
     9 UNS8 LifeSignal = 0x0;		/* Mapped at index 0x2001, subindex 0x00 */
       
    10 
       
    11 /**************************************************************************/
       
    12 /* Declaration of the value range types                                   */
       
    13 /**************************************************************************/
       
    14 
       
    15 #define valueRange_EMC 0x9F /* Type for index 0x1003 subindex 0x00 (only set of value 0 is possible) */
       
    16 UNS32 SillySlave_valueRangeTest (UNS8 typeValue, void * value)
       
    17 {
       
    18   switch (typeValue) {
       
    19     case valueRange_EMC:
       
    20       if (*(UNS8*)value != (UNS8)0) return OD_VALUE_RANGE_EXCEEDED;
       
    21       break;
       
    22   }
       
    23   return 0;
       
    24 }
       
    25 
       
    26 /**************************************************************************/
       
    27 /* The node id                                                            */
       
    28 /**************************************************************************/
       
    29 /* node_id default value.*/
       
    30 UNS8 SillySlave_bDeviceNodeId = 0x00;
       
    31 
       
    32 /**************************************************************************/
       
    33 /* Array of message processing information */
       
    34 
       
    35 const UNS8 SillySlave_iam_a_slave = 1;
       
    36 
       
    37 TIMER_HANDLE SillySlave_heartBeatTimers[1];
       
    38 
       
    39 /*
       
    40 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       
    41 
       
    42                                OBJECT DICTIONARY
       
    43 
       
    44 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       
    45 */
       
    46 
       
    47 /* index 0x1000 :   Device Type. */
       
    48                     UNS32 SillySlave_obj1000 = 0x2000000;	/* 33554432 */
       
    49                     subindex SillySlave_Index1000[] = 
       
    50                      {
       
    51                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1000 }
       
    52                      };
       
    53 
       
    54 /* index 0x1001 :   Error Register. */
       
    55                     UNS8 SillySlave_obj1001 = 0x0;	/* 0 */
       
    56                     subindex SillySlave_Index1001[] = 
       
    57                      {
       
    58                        { RO, uint8, sizeof (UNS8), (void*)&SillySlave_obj1001 }
       
    59                      };
       
    60 
       
    61 /* index 0x1003 :   Pre-defined Error Field */
       
    62                     UNS8 SillySlave_highestSubIndex_obj1003 = 0; /* number of subindex - 1*/
       
    63                     UNS32 SillySlave_obj1003[] = 
       
    64                     {
       
    65                       0x0	/* 0 */
       
    66                     };
       
    67                     ODCallback_t SillySlave_Index1003_callbacks[] = 
       
    68                      {
       
    69                        NULL,
       
    70                        NULL,
       
    71                      };
       
    72                     subindex SillySlave_Index1003[] = 
       
    73                      {
       
    74                        { RW, valueRange_EMC, sizeof (UNS8), (void*)&SillySlave_highestSubIndex_obj1003 },
       
    75                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1003[0] }
       
    76                      };
       
    77 
       
    78 /* index 0x1005 :   SYNC COB ID */
       
    79                     UNS32 SillySlave_obj1005 = 0x0;   /* 0 */
       
    80 
       
    81 /* index 0x1006 :   Communication / Cycle Period */
       
    82                     UNS32 SillySlave_obj1006 = 0x0;   /* 0 */
       
    83 
       
    84 /* index 0x1012 :   TIME COB ID. */
       
    85                     UNS32 SillySlave_obj1012 = 0x80000100;	/* 2147483904 */
       
    86                     subindex SillySlave_Index1012[] = 
       
    87                      {
       
    88                        { RW, uint32, sizeof (UNS32), (void*)&SillySlave_obj1012 }
       
    89                      };
       
    90 
       
    91 /* index 0x1013 :   High Resolution Timestamp. */
       
    92                     UNS32 SillySlave_obj1013 = 0x0;	/* 0 */
       
    93                     subindex SillySlave_Index1013[] = 
       
    94                      {
       
    95                        { RW, uint32, sizeof (UNS32), (void*)&SillySlave_obj1013 }
       
    96                      };
       
    97 
       
    98 /* index 0x1014 :   Emergency COB ID */
       
    99                     UNS32 SillySlave_obj1014 = 0x0;   /* 0 */
       
   100 
       
   101 /* index 0x1016 :   Consumer Heartbeat Time */
       
   102                     UNS8 SillySlave_highestSubIndex_obj1016 = 0;
       
   103                     UNS32 SillySlave_obj1016[]={0};
       
   104 
       
   105 /* index 0x1017 :   Producer Heartbeat Time */ 
       
   106                     UNS16 SillySlave_obj1017 = 0x0;   /* 0 */
       
   107 
       
   108 /* index 0x1018 :   Identity. */
       
   109                     UNS8 SillySlave_highestSubIndex_obj1018 = 4; /* number of subindex - 1*/
       
   110                     UNS32 SillySlave_obj1018_Vendor_ID = 0x4321;	/* 17185 */
       
   111                     UNS32 SillySlave_obj1018_Product_Code = 0x12;	/* 18 */
       
   112                     UNS32 SillySlave_obj1018_Revision_Number = 0x1;	/* 1 */
       
   113                     UNS32 SillySlave_obj1018_Serial_Number = 0x1;	/* 1 */
       
   114                     subindex SillySlave_Index1018[] = 
       
   115                      {
       
   116                        { RO, uint8, sizeof (UNS8), (void*)&SillySlave_highestSubIndex_obj1018 },
       
   117                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1018_Vendor_ID },
       
   118                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1018_Product_Code },
       
   119                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1018_Revision_Number },
       
   120                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1018_Serial_Number }
       
   121                      };
       
   122 
       
   123 /* index 0x1200 :   Server SDO Parameter. */
       
   124                     UNS8 SillySlave_highestSubIndex_obj1200 = 2; /* number of subindex - 1*/
       
   125                     UNS32 SillySlave_obj1200_COB_ID_Client_to_Server_Receive_SDO = 0x600;	/* 1536 */
       
   126                     UNS32 SillySlave_obj1200_COB_ID_Server_to_Client_Transmit_SDO = 0x580;	/* 1408 */
       
   127                     ODCallback_t SillySlave_Index1200_callbacks[] = 
       
   128                      {
       
   129                        NULL,
       
   130                        NULL,
       
   131                        NULL,
       
   132                      };
       
   133                     subindex SillySlave_Index1200[] = 
       
   134                      {
       
   135                        { RO, uint8, sizeof (UNS8), (void*)&SillySlave_highestSubIndex_obj1200 },
       
   136                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1200_COB_ID_Client_to_Server_Receive_SDO },
       
   137                        { RO, uint32, sizeof (UNS32), (void*)&SillySlave_obj1200_COB_ID_Server_to_Client_Transmit_SDO }
       
   138                      };
       
   139 
       
   140 /* index 0x1800 :   Transmit PDO 1 Parameter. */
       
   141                     UNS8 SillySlave_highestSubIndex_obj1800 = 5; /* number of subindex - 1*/
       
   142                     UNS32 SillySlave_obj1800_COB_ID_used_by_PDO = 0x180;	/* 384 */
       
   143                     UNS8 SillySlave_obj1800_Transmission_Type = 0x1;	/* 1 */
       
   144                     UNS16 SillySlave_obj1800_Inhibit_Time = 0x64;	/* 100 */
       
   145                     UNS8 SillySlave_obj1800_Compatibility_Entry = 0x0;	/* 0 */
       
   146                     UNS16 SillySlave_obj1800_Event_Timer = 0x0;	/* 0 */
       
   147                     ODCallback_t SillySlave_Index1800_callbacks[] = 
       
   148                      {
       
   149                        NULL,
       
   150                        NULL,
       
   151                        NULL,
       
   152                        NULL,
       
   153                        NULL,
       
   154                        NULL,
       
   155                      };
       
   156                     subindex SillySlave_Index1800[] = 
       
   157                      {
       
   158                        { RO, uint8, sizeof (UNS8), (void*)&SillySlave_highestSubIndex_obj1800 },
       
   159                        { RW, uint32, sizeof (UNS32), (void*)&SillySlave_obj1800_COB_ID_used_by_PDO },
       
   160                        { RW, uint8, sizeof (UNS8), (void*)&SillySlave_obj1800_Transmission_Type },
       
   161                        { RW, uint16, sizeof (UNS16), (void*)&SillySlave_obj1800_Inhibit_Time },
       
   162                        { RW, uint8, sizeof (UNS8), (void*)&SillySlave_obj1800_Compatibility_Entry },
       
   163                        { RW, uint16, sizeof (UNS16), (void*)&SillySlave_obj1800_Event_Timer }
       
   164                      };
       
   165 
       
   166 /* index 0x1A00 :   Transmit PDO 1 Mapping. */
       
   167                     UNS8 SillySlave_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/
       
   168                     UNS32 SillySlave_obj1A00[] = 
       
   169                     {
       
   170                       0x20010008	/* 536936456 */
       
   171                     };
       
   172                     subindex SillySlave_Index1A00[] = 
       
   173                      {
       
   174                        { RW, uint8, sizeof (UNS8), (void*)&SillySlave_highestSubIndex_obj1A00 },
       
   175                        { RW, uint32, sizeof (UNS32), (void*)&SillySlave_obj1A00[0] }
       
   176                      };
       
   177 
       
   178 /* index 0x2001 :   Mapped variable LifeSignal */
       
   179                     subindex SillySlave_Index2001[] = 
       
   180                      {
       
   181                        { RO, uint8, sizeof (UNS8), (void*)&LifeSignal }
       
   182                      };
       
   183 
       
   184 const indextable SillySlave_objdict[] = 
       
   185 {
       
   186   { (subindex*)SillySlave_Index1000,sizeof(SillySlave_Index1000)/sizeof(SillySlave_Index1000[0]), 0x1000},
       
   187   { (subindex*)SillySlave_Index1001,sizeof(SillySlave_Index1001)/sizeof(SillySlave_Index1001[0]), 0x1001},
       
   188   { (subindex*)SillySlave_Index1012,sizeof(SillySlave_Index1012)/sizeof(SillySlave_Index1012[0]), 0x1012},
       
   189   { (subindex*)SillySlave_Index1013,sizeof(SillySlave_Index1013)/sizeof(SillySlave_Index1013[0]), 0x1013},
       
   190   { (subindex*)SillySlave_Index1018,sizeof(SillySlave_Index1018)/sizeof(SillySlave_Index1018[0]), 0x1018},
       
   191   { (subindex*)SillySlave_Index1200,sizeof(SillySlave_Index1200)/sizeof(SillySlave_Index1200[0]), 0x1200},
       
   192   { (subindex*)SillySlave_Index1800,sizeof(SillySlave_Index1800)/sizeof(SillySlave_Index1800[0]), 0x1800},
       
   193   { (subindex*)SillySlave_Index1A00,sizeof(SillySlave_Index1A00)/sizeof(SillySlave_Index1A00[0]), 0x1A00},
       
   194   { (subindex*)SillySlave_Index2001,sizeof(SillySlave_Index2001)/sizeof(SillySlave_Index2001[0]), 0x2001},
       
   195 };
       
   196 
       
   197 const indextable * SillySlave_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks)
       
   198 {
       
   199 	int i;
       
   200 	*callbacks = NULL;
       
   201 	switch(wIndex){
       
   202 		case 0x1000: i = 0;break;
       
   203 		case 0x1001: i = 1;break;
       
   204 		case 0x1012: i = 2;break;
       
   205 		case 0x1013: i = 3;break;
       
   206 		case 0x1018: i = 4;break;
       
   207 		case 0x1200: i = 5;*callbacks = SillySlave_Index1200_callbacks; break;
       
   208 		case 0x1800: i = 6;*callbacks = SillySlave_Index1800_callbacks; break;
       
   209 		case 0x1A00: i = 7;break;
       
   210 		case 0x2001: i = 8;break;
       
   211 		default:
       
   212 			*errorCode = OD_NO_SUCH_OBJECT;
       
   213 			return NULL;
       
   214 	}
       
   215 	*errorCode = OD_SUCCESSFUL;
       
   216 	return &SillySlave_objdict[i];
       
   217 }
       
   218 
       
   219 /* 
       
   220  * To count at which received SYNC a PDO must be sent.
       
   221  * Even if no pdoTransmit are defined, at least one entry is computed
       
   222  * for compilations issues.
       
   223  */
       
   224 s_PDO_status SillySlave_PDO_status[1] = {s_PDO_status_Initializer};
       
   225 
       
   226 quick_index SillySlave_firstIndex = {
       
   227   5, /* SDO_SVR */
       
   228   0, /* SDO_CLT */
       
   229   0, /* PDO_RCV */
       
   230   0, /* PDO_RCV_MAP */
       
   231   6, /* PDO_TRS */
       
   232   7 /* PDO_TRS_MAP */
       
   233 };
       
   234 
       
   235 quick_index SillySlave_lastIndex = {
       
   236   5, /* SDO_SVR */
       
   237   0, /* SDO_CLT */
       
   238   0, /* PDO_RCV */
       
   239   0, /* PDO_RCV_MAP */
       
   240   6, /* PDO_TRS */
       
   241   7 /* PDO_TRS_MAP */
       
   242 };
       
   243 
       
   244 UNS16 SillySlave_ObjdictSize = sizeof(SillySlave_objdict)/sizeof(SillySlave_objdict[0]); 
       
   245 
       
   246 CO_Data SillySlave_Data = CANOPEN_NODE_DATA_INITIALIZER(SillySlave);
       
   247