src/sdo.c
changeset 174 cd1638bc0cb0
parent 172 0248c2b148bb
child 208 05d95c45b388
equal deleted inserted replaced
173:d776314a1efc 174:cd1638bc0cb0
    38 
    38 
    39 /*Internals prototypes*/
    39 /*Internals prototypes*/
    40 
    40 
    41 /** Called by writeNetworkDict */
    41 /** Called by writeNetworkDict */
    42 INLINE UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, 
    42 INLINE UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, 
    43 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback);
    43 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize);
    44 
    44 
    45 /** Called by readNetworkDict */
    45 /** Called by readNetworkDict */
    46 INLINE UNS8 _readNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, UNS8 subIndex, 
    46 INLINE UNS8 _readNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, UNS8 subIndex, 
    47 	UNS8 dataType, SDOCallback_t Callback);
    47 	UNS8 dataType, SDOCallback_t Callback);
    48 	
    48 	
  1068   return 0;     
  1068   return 0;     
  1069 }
  1069 }
  1070 
  1070 
  1071 /*******************************************************************)******/
  1071 /*******************************************************************)******/
  1072 INLINE UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, 
  1072 INLINE UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, 
  1073 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback)
  1073 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize)
  1074 {
  1074 {
  1075   UNS8 err;
  1075   UNS8 err;
  1076   UNS8 SDOfound = 0;
  1076   UNS8 SDOfound = 0;
  1077   UNS8 line;
  1077   UNS8 line;
  1078   s_SDO sdo;    /* SDO to transmit */
  1078   s_SDO sdo;    /* SDO to transmit */
  1135   d->transfers[line].dataType = dataType;
  1135   d->transfers[line].dataType = dataType;
  1136   
  1136   
  1137   /* Copy data to transfers structure. */
  1137   /* Copy data to transfers structure. */
  1138   for (j = 0 ; j < count ; j++) {
  1138   for (j = 0 ; j < count ; j++) {
  1139 # ifdef CANOPEN_BIG_ENDIAN
  1139 # ifdef CANOPEN_BIG_ENDIAN
  1140     if (dataType == 0)
  1140     if (dataType == 0 && endianize)
  1141       d->transfers[line].data[count - 1 - j] = ((char *)data)[j];
  1141       d->transfers[line].data[count - 1 - j] = ((char *)data)[j];
  1142     else /* String of bytes. */
  1142     else /* String of bytes. */
  1143       d->transfers[line].data[j] = ((char *)data)[j];
  1143       d->transfers[line].data[j] = ((char *)data)[j];
  1144 #  else 
  1144 #  else 
  1145     d->transfers[line].data[j] = ((char *)data)[j];
  1145     d->transfers[line].data[j] = ((char *)data)[j];
  1180 /*--------------------------------------------------------------------------*/
  1180 /*--------------------------------------------------------------------------*/
  1181 
  1181 
  1182 UNS8 writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, 
  1182 UNS8 writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, 
  1183 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data)
  1183 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data)
  1184 {
  1184 {
  1185 	return _writeNetworkDict (d, nodeId, index, subIndex, count, dataType, data, NULL);
  1185 	return _writeNetworkDict (d, nodeId, index, subIndex, count, dataType, data, NULL, 1);
  1186 }
  1186 }
  1187 
  1187 
  1188 /*--------------------------------------------------------------------------*/
  1188 /*--------------------------------------------------------------------------*/
  1189 
  1189 
  1190 UNS8 writeNetworkDictCallBack (CO_Data* d, UNS8 nodeId, UNS16 index, 
  1190 UNS8 writeNetworkDictCallBack (CO_Data* d, UNS8 nodeId, UNS16 index, 
  1191 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback)
  1191 		       UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback)
  1192 {
  1192 {
  1193 	return _writeNetworkDict (d, nodeId, index, subIndex, count, dataType, data, Callback);	
  1193 	return _writeNetworkDict (d, nodeId, index, subIndex, count, dataType, data, Callback, 1);	
  1194 }
  1194 }
  1195 
  1195 
  1196 
  1196 
  1197 /***************************************************************************/
  1197 /***************************************************************************/
  1198 INLINE UNS8 _readNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 dataType, SDOCallback_t Callback)
  1198 INLINE UNS8 _readNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 dataType, SDOCallback_t Callback)