I am trying to create an application on top/based on the i2c tools.
Everything was working well, except the i2c_smbus_block_process_call(), which returns an error when called.
Below is the output of i2cdetect -F:
Functionalities implemented by /dev/i2c-2:
SMBus Quick Command no
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read no
SMBus Block Process Call no
SMBus PEC yes
I2C Block Write yes
I2C Block Read yes
Well the reason why the functionality you mention is not supported should
be obvious from your output above. Block read isn't supported either.
Honestly though, I'm not even sure how the block process call functionality
is even useful. What's the point of writing up to 31 bytes into ONE
register, and reading it back again ?
As far as answering your question goes. Technically you can not duplicate
this functionality. Realistically, you could attempt to use the standard
I2C block read listed above, or just use i2c_smbus_read_byte_data(), and
loop over the whole register set ? Again, I honestly do not get the point
of such a "feature".