2 * Copyright (c) 2003 by Siarzhuk Zharski <imker@gmx.li>
3 * Distributed under the terms of the MIT License.
8 #include <KernelExport.h>
12 #include <stdio.h> //sprintf
13 #include <string.h> //strcpy
14 #include <unistd.h> //posix file i/o - create, write, close
15 #include <directories.h>
16 #include <driver_settings.h>
18 #include "usb_vision.h"
26 bool b_log_file
= false;
27 bool b_log_append
= false;
28 bool b_log_funcalls
= false;
29 bool b_log_funcret
= false;
30 bool b_log_funcres
= false;
32 bool b_log_settings_loaded
= false;
34 static const char *private_log_path
35 = kSystemLogDirectory
"/" DRIVER_NAME
".log";
36 static sem_id loglock
;
38 void load_setting(void){
39 if(!b_log_settings_loaded
){
41 settingshandle
= load_driver_settings(DRIVER_NAME
);
43 b_log
= get_driver_boolean_parameter(settingshandle
, "debug_output", b_log
, true);
45 b_log_file
= get_driver_boolean_parameter(settingshandle
, "debug_output_in_file", b_log_file
, true);
46 b_log_append
= ! get_driver_boolean_parameter(settingshandle
, "debug_output_file_rewrite", !b_log_append
, true);
47 b_log_funcalls
= get_driver_boolean_parameter(settingshandle
, "debug_trace_func_calls", b_log_funcalls
, false);
48 b_log_funcret
= get_driver_boolean_parameter(settingshandle
, "debug_trace_func_returns", b_log_funcret
, false);
49 b_log_funcres
= get_driver_boolean_parameter(settingshandle
, "debug_trace_func_results", b_log_funcres
, false);
50 unload_driver_settings(settingshandle
);
51 b_log_settings_loaded
= true;
55 void create_log(void){
56 int flags
= O_WRONLY
| O_CREAT
| ((!b_log_append
) ? O_TRUNC
: 0);
59 close(open(private_log_path
, flags
, 0666));
60 loglock
= create_sem(1, DRIVER_NAME
"-logging");
63 void usbvision_trace(bool b_force
, char *fmt
, ...){
64 if(!(b_force
|| b_log
))
68 static char *prefix
= "\33[32m"DRIVER_NAME
":\33[0m";
69 static char buf
[1024];
73 buf_ptr
+= strlen(prefix
);
77 bigtime_t time = system_time();
78 uint32 msec = time / 1000;
79 uint32 sec = msec / 1000;
80 sprintf(buf_ptr, "%02d.%02d.%03d:", sec / 60, sec % 60, msec % 1000);
81 buf_ptr += strlen(buf_ptr);
84 va_start(arg_list
, fmt
);
85 vsprintf(buf_ptr
, fmt
, arg_list
);
91 fd
= open(private_log_path
, O_WRONLY
| O_APPEND
);
92 write(fd
, buf
, strlen(buf
));
101 void trace_reginfo(xet_nt100x_reg
*ri
)
104 TRACE("struct set_nt100x_reg\n"
107 ri
->reg
, ri
->data_length
);
108 for(i
= 0; i
< ri
->data_length
; i
++)
109 TRACE("%02x ", ri
->data
[i
]);