38#include <socan_util.h>
44int match(
int argc,
char *argv[],
int *index,
option *opts,
int opt_no)
53 for(i=0; i<opt_no; i++)
55 if (0==strcmp(opts[i].opt, st))
64int match_int(
int argc,
char *argv[],
int *index,
int *num)
70 i= sscanf(argv[*index],
"%d", num);
79int match_float(
int argc,
char *argv[],
int *index,
double *num)
85 i= sscanf(argv[*index],
"%lf", num);
94int match_st(
int argc,
char *argv[],
int *index,
char **st)
103void my_exit(
char *format, ...)
107 va_start(ap, format);
108 vfprintf(stderr, format, ap);
117void eval_quietlevel(
int quietlevel,
int *scale,
char *ch,
int *l)
128 case 5: *scale=10000;
145 printf(
"one '%c' are %d loops!\n",*ch,*scale);
152void nice_dump(
void *ptr,
int len,
int addr)
154 unsigned char *p= (
unsigned char *)ptr;
159 { printf(
"%8X: ", addr);
160 for(q=p, lcount=0; (lcount<16) && (lcount<len); lcount++, q++)
162 for( ;lcount<16; lcount++)
165 for(q=p, lcount=0; (lcount<16) && (lcount<len); lcount++, q++)
181void mldelay(
long milliseconds)
185 struct timespec rq,rt;
188 if (milliseconds >= 1000L)
189 { rq.tv_sec = milliseconds / 1000L;
190 rq.tv_nsec= (milliseconds-1000L*rq.tv_sec) * 1000000L;
194 rq.tv_nsec= milliseconds * 1000000L;
196 nanosleep( &rq, &rt);
199void micdelay(
unsigned long microseconds)
200 {
struct timespec rq,rt;
202 if (microseconds >= 1000000)
203 { rq.tv_sec = microseconds / 1000000;
204 rq.tv_nsec= (microseconds-1000000*rq.tv_sec) * 1000;
208 rq.tv_nsec= microseconds * 1000;
210 nanosleep( &rq, &rt);
213unsigned long timestamp_ms(
void)
217 clock_gettime(CLOCK_REALTIME, &rq);
218 return rq.tv_sec *1000 + rq.tv_nsec / 1000000L;
221unsigned long timestamp_us(
void)
225 clock_gettime(CLOCK_REALTIME, &rq);
226 return rq.tv_sec *1000000 + rq.tv_nsec / 1000L;
233bool init_socan(
char **interfaces,
242 bool use_rt_prio=
false;
244 if ((reader_prio >=0) && (writer_prio >=0))
252 printf(
"%s line %d: socan_realtime_setup failed\n",
257 for(i=0; i<interface_no; i++)
262 printf(
"%s line %d: socan_add_port failed\n",
269 printf(
"%s line %d: socan_init failed\n",
273 if (errprintlevel>=0)
274 printf(
"set errprintlevel to %d\n",
277 printf(
"set tracelevel to %d\n",
bool socan_realtime_setup(bool use_rt_priority, bool require_rt_priority, int reader_priority, int writer_priority)
int socan_errprintlevel(int level)
int socan_add_port(const char *devicename)
int socan_tracelevel(int level)
c header file for socan object layer library.