From 3070f73f67ef7b975c0ffb27a40a07a20d05b1f1 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 16 Sep 2016 20:39:24 +1000 Subject: [PATCH] Initial commit of sources from @fpistm --- nucleoFlasher/nucleoFlasher | Bin 0 -> 9120 bytes nucleoFlasher/nucleoFlasher.bat | 16 +++++++ nucleoFlasher/nucleoFlasher.c | 69 ++++++++++++++++++++++++++++ nucleoFlasher/nucleoFlasherMacOsX | Bin 0 -> 8972 bytes nucleoFlasher/nucleoFlasherMacOsX.c | 69 ++++++++++++++++++++++++++++ 5 files changed, 154 insertions(+) create mode 100644 nucleoFlasher/nucleoFlasher create mode 100644 nucleoFlasher/nucleoFlasher.bat create mode 100644 nucleoFlasher/nucleoFlasher.c create mode 100644 nucleoFlasher/nucleoFlasherMacOsX create mode 100644 nucleoFlasher/nucleoFlasherMacOsX.c diff --git a/nucleoFlasher/nucleoFlasher b/nucleoFlasher/nucleoFlasher new file mode 100644 index 0000000000000000000000000000000000000000..4117f94bb5cf0dbb5bafc9c1170ad0788f918041 GIT binary patch literal 9120 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�)dEXNbPLrabq(>C{$Er`~;?qK(>PcoukN7VkgBZ1+&UMp5(Jn8-LFx=I zkcc&yh>;=vdK*sqL^nb?`L>F_LH{}+)M&awai literal 0 HcmV?d00001 diff --git a/nucleoFlasher/nucleoFlasher.bat b/nucleoFlasher/nucleoFlasher.bat new file mode 100644 index 00000000..6d0b1448 --- /dev/null +++ b/nucleoFlasher/nucleoFlasher.bat @@ -0,0 +1,16 @@ +@ECHO off + +SET SOURCE=%2 +SET SRC_PARSE=%SOURCE:/=\% +SET TARGET=%4 + +FOR %%I IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO ( + VOL %%I: 2>NUL | FIND "%TARGET%" >NUL && SET DEST=%%I: +) + +IF DEFINED DEST ( + XCOPY %SRC_PARSE% %DEST% /Y /Q >NUL +) ELSE ( + ECHO %TARGET% not found. Please ensure the device is correctly connected + EXIT /B 1 +) diff --git a/nucleoFlasher/nucleoFlasher.c b/nucleoFlasher/nucleoFlasher.c new file mode 100644 index 00000000..da654186 --- /dev/null +++ b/nucleoFlasher/nucleoFlasher.c @@ -0,0 +1,69 @@ + +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + int i; + int ret = 0; + int device_found = 0; + char input_path[256]; + char output_dev[256]; + char output_path[256]; + char cmd[512]; + struct mntent *ent; + FILE *aFile; + + + for(i = 1; i < argc; i++) { + + if((strcmp(argv[i], "-I") == 0)&&(i+1 < argc)) { + strcpy(input_path, argv[i+1]); + i++; + } else if((strcmp(argv[i], "-O") == 0)&&(i+1 < argc)) { + strcpy(output_dev, argv[i+1]); + i++; + } else { + printf("unknown option %s\n", argv[i]); + ret = -1; + } + } + + if(ret == 0) { + + + //get thee mounted devives list + aFile = setmntent("/proc/mounts", "r"); + if (aFile == NULL) { + perror("setmntent"); + exit(1); + } + + //now lets read the path of the device + while (NULL != (ent = getmntent(aFile))) { + if (strstr(ent->mnt_dir, output_dev)) { + sprintf(output_path, "%s", ent->mnt_dir); + device_found = 1; + } + } + + endmntent(aFile); + + if(device_found) { + printf("copying %s to %s\n", input_path, output_path); + + sprintf(cmd, "scp %s %s", input_path, output_path); + system(cmd); + + } else { + printf("%s not found. please ensure the device is correctly connected\n", + output_dev); + ret = -1; + } + } + + + return ret; +} diff --git a/nucleoFlasher/nucleoFlasherMacOsX b/nucleoFlasher/nucleoFlasherMacOsX new file mode 100644 index 0000000000000000000000000000000000000000..4fa3550f54e8077a82d7df9e2a35fbe48c7fe308 GIT binary patch literal 8972 zcmeHNU2GIp6ut`uDnBm7zZ!osAZtJalmrbC8mVdHG#03Wh9Ed@x6^jh?e01=l{PU7 zE)z3ZM;qf04@OD!0ewOO282RELV*|{#6)6v@IlQsg5ilYsI1?2XJ*+B)$m|^nw#8v z&pG#;@1A?^neNQJJ$vo)^=U%HCJV83k`N+}Dy9fw3x$-p7ga^ow6?~ln>RK;x0cfJ zB{rU&kR#3oC~DgJ<_+t|t4RCV<7L9<;TzqNl^U96>HQWduY~dP)3F!~{e}gxkgxGb zudNYVt65Dmt-f}%A`0Vey4}ND>1zahU{LGhP4xvHp4P2r^11<87;lG<7c7B1<6bE@ z`Ij;+Bc1K?6~cHkv0+^AXZ|?(>M{-+1De*C-IC6BXz6TcPV(dTW4DjTJ!c^w#_&eG zmixL~?rT%y`o^je>>vFK_A%UZU%5s8Ho>p1To4nQY1+hiwH#yteqc+M@yAwIil${V znmN$hp37)?%eV=z*7wg(GeJI#H=}|^e=^B`!>jZ0+I$=G)p%U*tSY=4&sA&7nrE7u zT7qXn3B?UO%S<1PI5MtMD#ScIxAmkIAsCxl^pXe7vRuI)qA#JRoO@Y^s>~GvsV6o8 zfa6?i8)|i-F6+!{VVH*fJz*JmVk@Y$UD9V7OET&9B^?8q4)84Zq0*0?PtIR`aA4_~ zcUJcFH|~iqoDbP-R51g)iTX&uQ--nt>!lr^>*~UJmZNfvKF6k?#$zA5F*oL4H(*+N z@8YKx!;f@3lu#Z<<$QIB2jjQU=NX@yj}Upo9pnG-ofB~Yrf?NYgtFa2&&`U*dh zo_ZO@vA>h%7tzL`SF}m3u!$XaUw}wWNs(G~Igwgic~o^Dy8~FIULY05MBLt7F)R$n z0$UZr{rG7S&N0;;x^lf-_OPL%rcSCw>9<;3cBV89I8EMQBSxDXZ$if&#)P8>=>0@K zya%(=D1OCm*@wUW*@psfCiG!HeW<4oZo@;EG3?5+qloEdSXak%FO6U$WK&tUx3JM2 zh(%#YZdlwtg$OMjc1D(7{f6-`O$C%=p94T)h^>gbcYCuR!AR*cl#WQnAJ9q@Mi+{3 zjQVPNxF5gJ&Qa$~iNhl@nDoW5cVj%*VCu%*FC_H7D~OEh+8&I{3{caj2&2YMs)gYV zsxwlu0j4t4+h2sy(yNudomCIVd?#7~@@Ki+nvx)^J&@MeS+y_%kfB{bZgoali#90) zj``tbEC_h`Im8pjtQoml7?Ph5EP0r9+a?f~CzoYSg1YZsJS zT~~Sq=b%JauQBs?dOo}+(R|s*kd<~q;@CUrOF|AdWaLybPM9MLVfA*uA9#&t^*l6- zE;pA??26_w#~lO{xB10Uv`MSmj`P9Z{B4P^se|Rj*RUxk_RE%gR!$s}?P1vt%l4RT zkIVLiY)_(Xbsu;IUE{iPB8h&m8-QZ;R|Kp3E>agsEh2TER3oXAq*jwUOsbRAUQ+z9 z82yseo1}J<8YJ~0sZU6~4N5nRobiOxn>I~+a4Gquk?hqi-7u$%MJ-~{TH!17WqY!@ zEmtSJNq7Nt;S4XBc|Q$_#+YWIE;VE`BDIF})(l9LmXYXgV7@lfZWUELWY&z6c +#include +#include +#include + +#define MAX_FS 128 + +int main(int argc, char *argv[]) +{ + int i; + int ret = 0; + int device_found = 0; + char input_path[256]; + char output_dev[256]; + char output_path[256]; + char cmd[512]; + struct statfs buf[MAX_FS]; + int fs_count; + + if(argc < 4) { + printf("error: missing parameters\n"); + ret = -1; + } + + for(i = 1; i < argc; i++) { + + if((strcmp(argv[i], "-I") == 0)&&(i+1 < argc)) { + strcpy(input_path, argv[i+1]); + i++; + } else if((strcmp(argv[i], "-O") == 0)&&(i+1 < argc)) { + strcpy(output_dev, argv[i+1]); + i++; + } else { + printf("error: unknown option %s\n", argv[i]); + ret = -1; + } + } + + if(ret == 0) { + + fs_count = getfsstat(NULL,0,MNT_WAIT); + if(fs_count < 0) { + perror("getfsstat"); + exit(1); + } + + getfsstat(buf,fs_count*sizeof(buf[0]),MNT_WAIT); + + for(i = 0; i < fs_count; i++) { + if(strstr(buf[i].f_mntonname,output_dev)) { + sprintf(output_path, "%s", buf[i].f_mntonname); + device_found = 1; + } + } + + if(device_found) { + printf("copying %s to %s\n", input_path, output_path); + sprintf(cmd, "scp %s %s", input_path, output_path); + system(cmd); + } else { + printf("%s not found. please ensure the device is correctly connected\n", + output_dev); + ret = -1; + } + } + + return ret; +}