code optimization reading imu data

Hi, I have some working code that reads data from an XSENS IMU.

It works well however it looks a bit convoluted. Lots of casting and for my own learning I would like to hear what more experienced developers think.

Thanks in advance for guidance.

void processXSENS(){

  Wire.beginTransmission(I2C_ADD);
  uint8_t error = Wire.endTransmission();
 
  if (error == 0){
    Wire.beginTransmission(I2C_ADD);
    Wire.write(OPCODE_PIPE_STUS); 
    Wire.endTransmission();
    
    Wire.requestFrom(I2C_ADD, 4); 
    while(Wire.available()) {
      status[j] = Wire.read();
      j++;
    }
  
    notificationSize = (uint16_t)status[0] | ((uint16_t)status[1] << 8);
    measurementSize = (uint16_t)status[2] | ((uint16_t)status[3] << 8);

    if(notificationSize>0 && measurementSize>0){
      Wire.beginTransmission(I2C_ADD);
      Wire.write(OPCODE_MEAS_PIPE); 
      Wire.endTransmission();
      k=0;
      Wire.requestFrom(I2C_ADD,measurementSize); 
      while(Wire.available()) {
        status[k] = Wire.read();
        k++;
      }
    } 
  }

  n=0;
  j=0;  
  uint32_t Y_axis_DeltaV = (uint32_t)status[24] | ((uint32_t)status[23] << 8) |((uint32_t)status[22] <<16) | ((uint32_t)status[21] << 24);
  uint32_t Z_axis_DeltaV = (uint32_t)status[28] | ((uint32_t)status[27] << 8) |((uint32_t)status[26] <<16) | ((uint32_t)status[25] << 24);
  float YDeltaV = *(float*)&Y_axis_DeltaV;
  float ZDeltaV = *(float*)&Z_axis_DeltaV;
  y_rounded = ((int) (YDeltaV * 10.0 + 0.5) / 10.0);
  ZDeltaV = ZDeltaV+180.0;
  z_rounded = ((int) (ZDeltaV * 10.0 + 0.5) / 10.0);
}

You would have better luck if you tried asking your question here:

Good luck!