#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/i2c-dev.h>

int main() {
    int fd = open("/dev/i2c-4", O_RDWR);
    if (fd < 0) {
        perror("open /dev/i2c-4");
        return 1;
    }
    if (ioctl(fd, I2C_SLAVE, 0x28) < 0) {
        perror("ioctl I2C_SLAVE");
        close(fd);
        return 1;
    }
    // read VersionReg 0x37
    unsigned char reg = 0x37;
    if (write(fd, &reg, 1) != 1) {
        perror("write reg");
        close(fd);
        return 1;
    }
    unsigned char val;
    if (read(fd, &val, 1) != 1) {
        perror("read val");
        close(fd);
        return 1;
    }
    printf("SI522A VersionReg(0x37) = 0x%02X\n", val);
    
    // read TxControlReg 0x14
    reg = 0x14;
    write(fd, &reg, 1);
    read(fd, &val, 1);
    printf("TxControlReg(0x14) = 0x%02X\n", val);
    
    // read CommandReg 0x01
    reg = 0x01;
    write(fd, &reg, 1);
    read(fd, &val, 1);
    printf("CommandReg(0x01) = 0x%02X\n", val);
    
    close(fd);
    return 0;
}
