Вопрос по программированию консольных приложений для OpenWRT. Пытаюсь портировать под OpenWRT программу для USB термометра Masterkit BM707, программа для линукса x86 выложена тут.
Перевёл с С++ на С (поскольку в OpenWRT работа с С++ связана с изрядным шаманством и лишними загружаемыми библиотеками, что не очень хорошо для встраиваемой системы), скомпилял, но - не в полном объёме работает (не опрашивает список подключенных датчиков, хотя по известному идентификатору опрашивает нормально), поскольку не отрабатывает задержки протокола между запросами к USB интерфейсу. Задержка нужна в 1мс и кратная 1мс, у автора используется тупо цикл. Проконсультировался с автором девайса - говорит, проблема скорее всего именно в задержках, что они по разному отрабатываются десктопным и ARM процессором. Полез искать как можно сделать задержку 1мс - нашёл функции usleep и nanosleep, но они полное впечатление что не работают. Пример:
printf ("Start pause 10sec\n");
int n;
int result;
for(n=0;n<10;n++) { result=usleep(1000000);}
printf ("End of pause 10sec, result=%i\n",result);