Hat Wire.requestFrom einen Wert ?

Hallo, bin auf folgenden Code gestoßen:

Wire.beginTransmission(BMA180);
  Wire.send(0x0D);
  if(Wire.endTransmission()){return(1);}
  if(Wire.requestFrom(BMA180,1) != 1){return(2);}
  byte ee_w = Wire.receive();
  ee_w |= ee_w_MASK;
  Wire.beginTransmission(BMA180);
  Wire.send(0x0D);
  Wire.send(ee_w);
  if(Wire.endTransmission()){return(1);}

if(Wire.endTransmission()){return(1);} besagt ja, daß bei einem Fehler aus der Funktion ausgestiegen wird und der Wert 1 zurückgegeben wird. Aber was bedeutet das gleiche bei if(Wire.requestFrom(BMA180,1) != 1){return(2);} Wire.requestFrom() hat doch keinen Eigenwert? Ergibt eine "sinnlose" Abfrage einfach 1? Oder unter welchen Bedingungen ergibt sich ein anderer Wert als 1 ?

thx Reinhard

Hab grad mal in die Wire.cpp geschaut, wenn ich das richtig seh, müsste er das erste gelesene Byte zurückgeben. Bin mir da aber nicht sicher, so gut sind meine Programmierfähigkeiten noch nicht...

uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity)
{
  // clamp to buffer length
  if(quantity > BUFFER_LENGTH){
    quantity = BUFFER_LENGTH;
  }
  // perform blocking read into buffer
  uint8_t read = twi_readFrom(address, rxBuffer, quantity);
  // set rx buffer iterator vars
  rxBufferIndex = 0;
  rxBufferLength = read;

  return read;
}

uint8_t TwoWire::requestFrom(int address, int quantity)
{
  return requestFrom((uint8_t)address, (uint8_t)quantity);
}

Was Wire.endTransmission zurückgibt ist mir ein wenig unklar. Um das zu verstehen müsst ich die benutzte twi.h kennen.

uint8_t TwoWire::endTransmission(void)
{
  // transmit buffer (blocking)
  int8_t ret = twi_writeTo(txAddress, txBuffer, txBufferLength, 1);
  // reset tx buffer iterator vars
  txBufferIndex = 0;
  txBufferLength = 0;
  // indicate that we are done transmitting
  transmitting = 0;
  return ret;
}

Schaut so aus, als ob twi_writeTo(txAddress, txBuffer, txBufferLength, 1); eine 1 als Kontollbit zurückgibt, ob der Befehl Wire.requestFrom() erfolgreich durchgeführt worden ist...

Naja, ich glaub, man kann auch auf das ganze verzichten, oder??

Auf jeden Fall Danke! Gruß Reinhard

Viele Funktionen in C geben als Rückwert eine 1 oder einen Rückwert wenn die erfolgreich waren und -1 wenn etwas schief gegangen ist. Grüße Uwe