MySmartUSB-MK3-Interface

MySmartUSB MK3 Interface
git clone git://xatko.vsos.ethz.ch/MySmartUSB-MK3-Interface.git
Log | Files | Refs

commit a648f5d3b35ee4dbb283f47c471b318d1e912054
parent ff02b470f9ab114f33d220f586522a91f0ba0b91
Author: Dominik Schmidt <das1993@hotmail.com>
Date:   Sat, 15 Dec 2012 13:31:16 +0100

Seems like the termination string isnt \LF, but \LF\LF

Diffstat:
include/com.h | 1+
src/cmd.c | 2+-
src/cmd_dispatch.c | 7+++----
src/com.c | 8+++++++-
4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/include/com.h b/include/com.h @@ -15,3 +15,4 @@ extern int sendMagicPacket(int fd, char c); extern int checkIfOk(char *str); extern char parseMagicPacket(char *str); extern char readMagicPacket(int fd); +#define BAUD_RATE_SWITCH_WAIT 5000 diff --git a/src/cmd.c b/src/cmd.c @@ -140,7 +140,7 @@ GENERATE_CALLBACK(cmd_set_emul_mode){ return -2; } if(newBaud!=0){ - usleep(5000); + usleep(BAUD_RATE_SWITCH_WAIT); setBaudRateExt(fd,newBaud,BAUD_INPUT|BAUD_OUTPUT, TCSADRAIN); } if(readMagicPacket(fd)!=mode){ diff --git a/src/cmd_dispatch.c b/src/cmd_dispatch.c @@ -24,7 +24,7 @@ struct command_def commands[]={ {.name="Boardreset", .opt={.arg_length=0, .short_option="-r", .long_option="--board-reset"}, .request_mymode=0, .callback=&cmd_board_reset}, {.name="Resetline", .opt={.usage="[1/0]", .arg_length=1, .short_option="-rL", .long_option="--reset-line"}, .request_mymode=1, .callback=&cmd_reset_line}, {.name="Boardpower", .opt={.usage="[1/0]", .arg_length=1, .short_option="-bP", .long_option="--board-power"}, .request_mymode=0, .callback=&cmd_board_power}, - {.name="Set Emulation Mode", .opt={.usage="[d/UART,s/STK500,a/AVR910,q/Quiet,m/MyMode,p/ProgMode]", .arg_length=1, .short_option="-sE", .long_option="--set-emulation"}, .request_mymode=0, .callback=&cmd_set_emul_mode}, + {.name="Emulation Mode", .opt={.usage="[d/UART,s/STK500,a/AVR910,q/Quiet,m/MyMode,p/ProgMode]", .arg_length=1, .short_option="-eM", .long_option="--emulation-mode"}, .request_mymode=0, .callback=&cmd_set_emul_mode}, {.name="Rescue Clock", .opt={.usage="[1,0]", .arg_length=1, .short_option="-rC", .long_option="--rescue-clock"}, .request_mymode=0, .callback=&cmd_set_emul_mode}, {.name="Programming Mode", .opt={.usage="[i/ISP, p/HVP, s/HVS, t/TPI, T/TPIHV]", .arg_length=1, .short_option="-pM", .long_option="--programming-mode"}, .request_mymode=1, .callback=&cmd_set_prog_mode}, {.name=NULL} @@ -87,14 +87,13 @@ int prepareCommandExecution(int fd, struct conf *config){ if(config->oldmode.mode!='m'){ config->oldmode.baud=getBaudRate(fd); sendMagicPacket(fd,'m'); - usleep(5000); + usleep(BAUD_RATE_SWITCH_WAIT); setBaudRateExt(fd,B500000, BAUD_INPUT|BAUD_OUTPUT, TCSADRAIN); char c=readMagicPacket(fd); if(c!='m'){ do_log("prepareCommandExecution","Couldn't switch to mymode",LOG_LEVEL_ERROR,LOG_TYPE_NORMAL); return -1; } - setBaudRate(fd,B500000, BAUD_INPUT|BAUD_OUTPUT); } } @@ -103,7 +102,7 @@ int prepareCommandExecution(int fd, struct conf *config){ int finishCommandExecution(int fd, struct conf *config){ if(config->oldmode.mode>0){ sendMagicPacket(fd,config->oldmode.mode); - usleep(5000); + usleep(BAUD_RATE_SWITCH_WAIT); setBaudRate(fd, config->oldmode.baud, BAUD_INPUT|BAUD_OUTPUT); } return 0; diff --git a/src/com.c b/src/com.c @@ -51,6 +51,7 @@ char *readString(int fd, unsigned int length){ char readMagicPacket(int fd){ int ret; char c,r; + unsigned short int lfcnt=0; r=0; while((ret=read(fd,&c,sizeof(char)))){ if(ret<=0){ @@ -58,7 +59,12 @@ char readMagicPacket(int fd){ return 0; } if(c==0x0A){ - break; + if(lfcnt==0){ + lfcnt++; + } + else{ + break; + } } else if((c>='a'&&c<='z')||c=='+'||c=='-'){ r=c;