I2CMaster_Read İşlevi
Üst bilgi: #include <applibs/i2c.h>
I2C ana arabiriminde okuma işlemi gerçekleştirir. Bu işlev, işlemin hedefi olan alt I2C cihazının adresini belirtmesi dışında POSIX read(2) işleviyle aynı işlevi sağlar.
ssize_t I2CMaster_Read(int fd, I2C_DeviceAddress address, uint8_t *buffer, size_t maxLength);
Parametre
fd
I2C ana arabirimi için dosya tanımlayıcısı.address
Okuma işleminin kaynağı olan alt I2C cihazının adresi .buffer
Alt cihazdan veri alan çıkış arabelleği. Bu arabellek bayt almakmaxLength
için yeterli alan içermelidir. 0 isemaxLength
bu NULL olabilir.maxLength
Alınacak bayt sayısı üst sınırı. Değer 0 olabilir.
Hata
Hatayla karşılaşılırsa ve hata değerine ayarlanırsa errno
-1 döndürür.
EBUSY: Arabirim meşgul veya I2C saat çizgisi (SCL) düşük tutuluyor.
ENXIO: İşlem, alt cihazdan bir ACK almadı.
ETIMEDOUT: İşlem tamamlanmadan önce zaman aşımına uğradı; zaman aşımı süresini ayarlamak için I2CMaster_SetTimeout işlevini kullanabilirsiniz.
Diğer errno
hatalar da belirtilebilir; bu tür hatalar belirlenimci değildir ve sistem güncelleştirmeleri aracılığıyla aynı davranış korunmayabilir.
Dönüş değeri
Başarıyla okunan bayt sayısını verir; veya hata için -1, bu durumda errno
hata değerine ayarlanır. 0 bayt okuma da dahil olmak üzere kısmi okuma işlemi başarılı olarak kabul edilir.
Uygulama bildirimi gereksinimleri
I2c arabirimine erişmek için uygulamanızın bunu uygulama bildiriminin I2cMaster alanında tanımlaması gerekir.