Я понял, что open()
и ioctl()
не работают внутри объекта cpp. Я могу выполнить операцию, если она вызывается внутри моей main()
функции, но НЕ когда она находится внутри какого-либо из моих классов. У меня есть объект, который работает в моем главном цикле, который имеет другой объект, который делает вызовы файловой системы.
Таким образом, в основном, когда в главном цикле он может открыться (я получаю 3 для указателя, и ioctl
успешно). Но когда я делаю это в объекте, он возвращает 0 для открытия (что, предположительно, не является ошибкой), и ioctl завершается ошибкой.
Я знаю, что не могу использовать опции ios::
iostream, потому что они не работают с ioctl
. Как я могу заставить обычный ioctl работать внутри объекта cpp?
int add=0x4b;
int i2c_bus;
if(( i2c_bus = open( "/dev/i2c-0", O_RDWR )) < 0 )
{
printf("Unable to open file /dev/i2c-0.\n");
}
if( ioctl( i2c_bus, I2C_SLAVE, add ) < 0 )
{
printf("Open chip %d FAILED file %d\n",add, i2c_bus);
return -1;
}
else
{
printf("Open chip %d Succeeded file %d\n\n",add, i2c_bus);
return 1;
}