1246145Shselasky/* $FreeBSD$ */ 2246145Shselasky/*- 3246145Shselasky * Copyright (c) 2013 Hans Petter Selasky. All rights reserved. 4246145Shselasky * 5246145Shselasky * Redistribution and use in source and binary forms, with or without 6246145Shselasky * modification, are permitted provided that the following conditions 7246145Shselasky * are met: 8246145Shselasky * 1. Redistributions of source code must retain the above copyright 9246145Shselasky * notice, this list of conditions and the following disclaimer. 10246145Shselasky * 2. Redistributions in binary form must reproduce the above copyright 11246145Shselasky * notice, this list of conditions and the following disclaimer in the 12246145Shselasky * documentation and/or other materials provided with the distribution. 13246145Shselasky * 14246145Shselasky * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15246145Shselasky * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16246145Shselasky * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17246145Shselasky * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18246145Shselasky * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19246145Shselasky * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20246145Shselasky * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21246145Shselasky * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22246145Shselasky * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23246145Shselasky * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24246145Shselasky * SUCH DAMAGE. 25246145Shselasky */ 26246145Shselasky 27246145Shselasky#include <stdio.h> 28246145Shselasky#include <stdint.h> 29246145Shselasky#include <time.h> 30246145Shselasky 31246145Shselaskyextern int usleep(int); 32246145Shselaskyextern void callout_process(int); 33246145Shselaskyextern void usb_idle(void); 34246145Shselaskyextern void usb_init(void); 35246145Shselaskyextern void usb_uninit(void); 36246145Shselasky 37246145Shselasky#define hz 1000 38246145Shselasky 39246145Shselaskyvoid 40246145ShselaskyDELAY(unsigned int delay) 41246145Shselasky{ 42246145Shselasky usleep(delay); 43246145Shselasky} 44246145Shselasky 45246145Shselaskyint 46246145Shselaskypause(const char *what, int timeout) 47246145Shselasky{ 48246145Shselasky if (timeout == 0) 49246145Shselasky timeout = 1; 50246145Shselasky 51246145Shselasky usleep((1000000 / hz) * timeout); 52246145Shselasky 53246145Shselasky return (0); 54246145Shselasky} 55246145Shselasky 56246145Shselaskyint 57246145Shselaskymain(int argc, char **argv) 58246145Shselasky{ 59246145Shselasky uint32_t time; 60246145Shselasky 61246145Shselasky usb_init(); 62246145Shselasky 63246145Shselasky time = 0; 64246145Shselasky 65246145Shselasky while (1) { 66246145Shselasky 67246145Shselasky usb_idle(); 68246145Shselasky 69246145Shselasky usleep(1000); 70246145Shselasky 71246145Shselasky if (++time >= (1000 / hz)) { 72246145Shselasky time = 0; 73246145Shselasky callout_process(1); 74246145Shselasky } 75246145Shselasky } 76246145Shselasky 77246145Shselasky usb_uninit(); 78246145Shselasky 79246145Shselasky return (0); 80246145Shselasky} 81