X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/afdcb8c159a73aba95a017f1cfec98e8fa2b93c1..e8924be8bac6e8ddc91d1950368ef51c454a6e55:/client/proxmark3.c diff --git a/client/proxmark3.c b/client/proxmark3.c index 0acf34f6..88cb5fa7 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -21,23 +21,20 @@ #include "util_posix.h" #include "proxgui.h" #include "cmdmain.h" -#include "uart.h" #include "ui.h" #include "util.h" #include "cmdparser.h" #include "cmdhw.h" #include "whereami.h" -#include "comms.h" -#ifdef _WIN32 -#define SERIAL_PORT_H "com3" -#elif __APPLE__ -#define SERIAL_PORT_H "/dev/tty.usbmodem*" -#else -#define SERIAL_PORT_H "/dev/ttyACM0" -#endif -void main_loop(char *script_cmds_file, char* script_cmd, bool usb_present, serial_port* sp) { +void +#ifdef __has_attribute +#if __has_attribute(force_align_arg_pointer) +__attribute__((force_align_arg_pointer)) +#endif +#endif +main_loop(char *script_cmds_file, char *script_cmd, bool usb_present) { receiver_arg conn; char *cmd = NULL; pthread_t reader_thread; @@ -45,18 +42,9 @@ void main_loop(char *script_cmds_file, char* script_cmd, bool usb_present, seria bool stdinOnPipe = !isatty(STDIN_FILENO); memset(&conn, 0, sizeof(receiver_arg)); - pthread_mutex_init(&conn.recv_lock, NULL); - - - // TODO: Move this into comms.c - PlotGridXdefault = 64; - PlotGridYdefault = 64; - showDemod = true; - CursorScaleFactor = 1; if (usb_present) { conn.run = true; - SetSerialPort(sp); SetOffline(false); pthread_create(&reader_thread, NULL, &uart_receiver, &conn); // cache Version information now: @@ -75,7 +63,7 @@ void main_loop(char *script_cmds_file, char* script_cmd, bool usb_present, seria printf("executing commands from file: %s\n", script_cmds_file); } } - + read_history(".history"); while (1) { @@ -148,7 +136,7 @@ void main_loop(char *script_cmds_file, char* script_cmd, bool usb_present, seria } write_history(".history"); - + if (usb_present) { conn.run = false; pthread_join(reader_thread, NULL); @@ -158,8 +146,6 @@ void main_loop(char *script_cmds_file, char* script_cmd, bool usb_present, seria fclose(script_file); script_file = NULL; } - - pthread_mutex_destroy(&conn.recv_lock); } static void dumpAllHelp(int markdown) @@ -202,9 +188,8 @@ static void set_my_executable_path(void) static void show_help(bool showFullHelp, char *command_line){ printf("syntax: %s [-h|-help|-m|-f|-flush|-w|-wait|-c|-command|-l|-lua] [cmd_script_file_name] [command][lua_script_name]\n", command_line); - printf("\tLinux example:'%s /dev/ttyACM0'\n", command_line); - printf("\tWindows example:'%s com3'\n\n", command_line); - + printf("\texample: %s "SERIAL_PORT_H"\n\n", command_line); + if (showFullHelp){ printf("help: <-h|-help> Dump all interactive command's help at once.\n"); printf("\t%s -h\n\n", command_line); @@ -232,9 +217,7 @@ int main(int argc, char* argv[]) { bool addLuaExec = false; char *script_cmds_file = NULL; char *script_cmd = NULL; - serial_port *sp = NULL; - g_debugMode = 0; - + if (argc < 2) { show_help(true, argv[0]); return 1; @@ -254,7 +237,7 @@ int main(int argc, char* argv[]) { if(strcmp(argv[i],"-f") == 0 || strcmp(argv[i],"-flush") == 0){ printf("Output will be flushed after every print.\n"); - flushAfterWrite = 1; + SetFlushAfterWrite(true); } if(strcmp(argv[i],"-w") == 0 || strcmp(argv[i],"-wait") == 0){ @@ -309,65 +292,35 @@ int main(int argc, char* argv[]) { // set global variables set_my_executable_path(); - - // open uart - if (!waitCOMPort) { - sp = uart_open(argv[1]); - } else { - printf("Waiting for Proxmark to appear on %s ", argv[1]); - fflush(stdout); - int openCount = 0; - do { - sp = uart_open(argv[1]); - msleep(1000); - printf("."); - fflush(stdout); - } while(++openCount < 20 && (sp == INVALID_SERIAL_PORT || sp == CLAIMED_SERIAL_PORT)); - printf("\n"); - } - // check result of uart opening - if (sp == INVALID_SERIAL_PORT) { - printf("ERROR: invalid serial port\n"); - usb_present = false; - } else if (sp == CLAIMED_SERIAL_PORT) { - printf("ERROR: serial port is claimed by another process\n"); - usb_present = false; - } else { - usb_present = true; - } - - // create a mutex to avoid interlacing print commands from our different threads - pthread_mutex_init(&print_lock, NULL); + // try to open USB connection to Proxmark + usb_present = OpenProxmark(argv[1], waitCOMPort, 20); #ifdef HAVE_GUI #ifdef _WIN32 - InitGraphics(argc, argv, script_cmds_file, script_cmd, usb_present, sp); + InitGraphics(argc, argv, script_cmds_file, script_cmd, usb_present); MainGraphics(); #else char* display = getenv("DISPLAY"); if (display && strlen(display) > 1) { - InitGraphics(argc, argv, script_cmds_file, script_cmd, usb_present, sp); + InitGraphics(argc, argv, script_cmds_file, script_cmd, usb_present); MainGraphics(); } else { - main_loop(script_cmds_file, script_cmd, usb_present, sp); + main_loop(script_cmds_file, script_cmd, usb_present); } #endif #else - main_loop(script_cmds_file, script_cmd, usb_present, sp); + main_loop(script_cmds_file, script_cmd, usb_present); #endif // Clean up the port if (usb_present) { - uart_close(sp); + CloseProxmark(); } - // clean up mutex - pthread_mutex_destroy(&print_lock); - exit(0); }