src/sdo.c
changeset 604 96e632bc1e58
parent 597 ea32aa303987
child 627 4939452b1bf1
equal deleted inserted replaced
603:4dc76e662412 604:96e632bc1e58
   111  */
   111  */
   112 #define getSDOt(byte) ((byte >> 4) & 1)
   112 #define getSDOt(byte) ((byte >> 4) & 1)
   113 
   113 
   114 /** Returns the index from the bytes 1 and 2 of the SDO
   114 /** Returns the index from the bytes 1 and 2 of the SDO
   115  */
   115  */
   116 #define getSDOindex(byte1, byte2) ((byte2 << 8) | (byte1))
   116 #define getSDOindex(byte1, byte2) (((UNS16)byte2 << 8) | ((UNS16)byte1))
   117 
   117 
   118 /** Returns the subIndex from the byte 3 of the SDO
   118 /** Returns the subIndex from the byte 3 of the SDO
   119  */
   119  */
   120 #define getSDOsubIndex(byte3) (byte3)
   120 #define getSDOsubIndex(byte3) (byte3)
   121 
   121 
   864 	/* Release of the line. */
   864 	/* Release of the line. */
   865 	resetSDOline(d, line);
   865 	resetSDOline(d, line);
   866       }
   866       }
   867       else {/* So, if it is not an expedited transfert */
   867       else {/* So, if it is not an expedited transfert */
   868 	if (getSDOs(m->data[0])) {
   868 	if (getSDOs(m->data[0])) {
   869 	  nbBytes = (m->data[4]) + (m->data[5]<<8) + (m->data[6]<<16) + (m->data[7]<<24);
   869 	  nbBytes = (m->data[4]) + ((UNS32)(m->data[5])<<8) + ((UNS32)(m->data[6])<<16) + ((UNS32)(m->data[7])<<24);
   870 	  err = setSDOlineRestBytes(d, nodeId, nbBytes);
   870 	  err = setSDOlineRestBytes(d, nodeId, nbBytes);
   871 	  if (err) {
   871 	  if (err) {
   872 	    failedSDO(d, nodeId, whoami, index, subIndex, SDOABT_GENERAL_ERROR);
   872 	    failedSDO(d, nodeId, whoami, index, subIndex, SDOABT_GENERAL_ERROR);
   873 	    return 0xFF;
   873 	    return 0xFF;
   874 	  }
   874 	  }
  1056 	return 0;
  1056 	return 0;
  1057       }
  1057       }
  1058       else { /* So, if it is not an expedited transfert */
  1058       else { /* So, if it is not an expedited transfert */
  1059 	/* Storing the nb of data to receive. */
  1059 	/* Storing the nb of data to receive. */
  1060 	if (getSDOs(m->data[0])) {
  1060 	if (getSDOs(m->data[0])) {
  1061 	  nbBytes = m->data[4] + (m->data[5]<<8) + (m->data[6]<<16) + (m->data[7]<<24);
  1061 	  nbBytes = m->data[4] + ((UNS32)(m->data[5])<<8) + ((UNS32)(m->data[6])<<16) + ((UNS32)(m->data[7])<<24);
  1062 	  err = setSDOlineRestBytes(d, line, nbBytes);
  1062 	  err = setSDOlineRestBytes(d, line, nbBytes);
  1063 	  if (err) {
  1063 	  if (err) {
  1064 	    failedSDO(d, nodeId, whoami, index, subIndex, SDOABT_GENERAL_ERROR);
  1064 	    failedSDO(d, nodeId, whoami, index, subIndex, SDOABT_GENERAL_ERROR);
  1065 	    return 0xFF;
  1065 	    return 0xFF;
  1066 	  }
  1066 	  }