MCPcopy Create free account
hub / github.com/SmingHub/Sming / writeBytes

Method writeBytes

Sming/Libraries/I2Cdev/I2Cdev.cpp:585–631  ·  view source on GitHub ↗

Write multiple bytes to an 8-bit device register. * @param devAddr I2C slave device address * @param regAddr First register address to write to * @param length Number of bytes to write * @param data Buffer to copy new data from * @return Status of operation (true = success) */

Source from the content-addressed store, hash-verified

583 * @return Status of operation (true = success)
584 */
585bool I2Cdev::writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t* data) {
586 #ifdef I2CDEV_SERIAL_DEBUG
587 Serial.print("I2C (0x");
588 Serial.print(devAddr, HEX);
589 Serial.print(") writing ");
590 Serial.print(length, DEC);
591 Serial.print(" bytes to 0x");
592 Serial.print(regAddr, HEX);
593 Serial.print("...");
594 #endif
595 uint8_t status = 0;
596 #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE)
597 Wire.beginTransmission(devAddr);
598 Wire.send((uint8_t) regAddr); // send address
599 #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100)
600 Wire.beginTransmission(devAddr);
601 Wire.write((uint8_t) regAddr); // send address
602 #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE)
603 Fastwire::beginTransmission(devAddr);
604 Fastwire::write(regAddr);
605 #endif
606 for (uint8_t i = 0; i < length; i++) {
607 #ifdef I2CDEV_SERIAL_DEBUG
608 Serial.print(data[i], HEX);
609 if (i + 1 < length) Serial.print(" ");
610 #endif
611 #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE)
612 Wire.send((uint8_t) data[i]);
613 #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100)
614 Wire.write((uint8_t) data[i]);
615 #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE)
616 Fastwire::write((uint8_t) data[i]);
617 #endif
618 }
619 #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE)
620 Wire.endTransmission();
621 #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100)
622 status = Wire.endTransmission();
623 #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE)
624 Fastwire::stop();
625 //status = Fastwire::endTransmission();
626 #endif
627 #ifdef I2CDEV_SERIAL_DEBUG
628 Serial.println(". Done.");
629 #endif
630 return status == 0;
631}
632
633/** Write multiple words to a 16-bit device register.
634 * @param devAddr I2C slave device address

Callers 1

writeMethod · 0.45

Calls 6

printlnMethod · 0.80
printMethod · 0.45
beginTransmissionMethod · 0.45
sendMethod · 0.45
writeMethod · 0.45
endTransmissionMethod · 0.45

Tested by

no test coverage detected