aboutsummaryrefslogtreecommitdiffstats
path: root/lib/libdvbmisc/dvbmisc.h
blob: 8ac6eee881519b8f8a5ad3ce7224ddb71c1b2013 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { 
/*
	libdvbmisc - DVB miscellaneous library

	Copyright (C) 2005 Manu Abraham <abraham.manu@gmail.com>

	This library is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.
	This library is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.
	You should have received a copy of the GNU Lesser General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
*/

#ifndef DVB_MISC_H
#define DVB_MISC_H

#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <sys/time.h>

#define ERROR		0
#define NOTICE		1
#define INFO		2
#define DEBUG		3

#define print(x, y, z, fmt, arg...) do {				\
	if (z) {							\
		if	((x > ERROR) && (x > y))			\
			vprint("%s: " fmt "\n", __func__ , ##arg);	\
		else if	((x > NOTICE) && (x > y))			\
			vprint("%s: " fmt "\n",__func__ , ##arg);	\
		else if ((x > INFO) && (x > y))				\
			vprint("%s: " fmt "\n", __func__ , ##arg);	\
		else if ((x > DEBUG) && (x > y))			\
			vprint("%s: " fmt "\n", __func__ , ##arg);	\
	} else {							\
		if (x > y)						\
			vprint(fmt, ##arg);				\
	}								\
} while(0)

static inline void vprint(char *fmt, ...)
{
	va_list args;

	va_start(args, fmt);
	vfprintf(stderr, fmt, args);
	va_end(args);
}

static inline int time_after(struct timeval oldtime, uint32_t delta_ms)
{
	// calculate the oldtime + add on the delta
	uint64_t oldtime_ms = (oldtime.tv_sec * 1000) + (oldtime.tv_usec / 1000);
	oldtime_ms += delta_ms;

	// calculate the nowtime
	struct timeval nowtime;
	gettimeofday(&nowtime, 0);
	uint64_t nowtime_ms = (nowtime.tv_sec * 1000) + (nowtime.tv_usec / 1000);

	// check
	return nowtime_ms > oldtime_ms;
}

#endif