libam7xxx 0.1
Communication library for Actions Micro AM7XXX based USB projectors and DPFs
tools.c
1/* am7xxx - communication with AM7xxx based USB Pico Projectors and DPFs
2 *
3 * Copyright (C) 2014-2018 Antonio Ospite <ao2@ao2.it>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifdef _WIN32
20#include <windows.h>
21#else
22#include <errno.h>
23#include <time.h>
24#endif
25
26#include "tools.h"
27
35int msleep(unsigned long msecs)
36{
37#ifdef _WIN32
38 Sleep(msecs);
39#else
40 struct timespec delay;
41 int ret;
42
43 delay.tv_sec = msecs / 1000;
44 delay.tv_nsec = (msecs % 1000) * 1000000;
45 while (1) {
46 ret = nanosleep(&delay, &delay);
47 if (ret == -1 && errno == EINTR)
48 continue;
49 break;
50 }
51 if (ret == -1)
52 return ret;
53#endif
54
55 return 0;
56}