import java.io.IOException;
import java.util.Enumeration;
import java.util.Vector;
import javax.bluetooth.*;
import java.io.*;
import javax.microedition.io.*;
/**
*
* Minimal Services Search example.
*/
public class OOBDFlash {
public static void main(String[] args) {
// First run RemoteDeviceDiscovery and use discoved device
String cmd="d";
Vector<OOBDDongleDescriptor> serviceFound =new Vector<OOBDDongleDescriptor>() ;
BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
if (OOBDFileHandler.download("https://github.com/stko/oobd/trunk/interface/Designs/CORTEX/STM32F103C8_Eclipse_GCC/D2/flashfiles/AllinOne/Flashloader_Package.zip", "download.zip")) {
OOBDFileHandler.getFilelist("",0);
}
//System.exit(0);
while (!cmd.equalsIgnoreCase("e")) {
if (cmd.equalsIgnoreCase("d")) { //scan for dongles
System.out.print("scan for dongles");
serviceFound =OobdBtWrapper.discover();
for (int i =0; i<serviceFound.size(); i++) {
OOBDDongleDescriptor oobdDongleDescr = (OOBDDongleDescriptor)serviceFound.get(i);
System.out.print("d");
if (!OOBDFlashHandler.examine(oobdDongleDescr)) {
serviceFound.remove(i);
i--;
}
OOBDFlashHandler.close();
}
}
System.out.println("--------------------------------------------------------\nNr. of Dongles found: "+Integer.toString(serviceFound.size()));
if (serviceFound.size()>0) {
System.out.println("Select the number of the dongle to flash");
for (int i =0; i<serviceFound.size(); i++) {
System.out.print("\t"+Integer.toString(i+1)+":");
System.out.print("\t"+((OOBDDongleDescriptor)serviceFound.get(i)).friendlyName);
System.out.print("\t"+((OOBDDongleDescriptor)serviceFound.get(i)).hardwareID);
System.out.print("\t"+((OOBDDongleDescriptor)serviceFound.get(i)).revision);
System.out.print("\t"+((OOBDDongleDescriptor)serviceFound.get(i)).url);
System.out.println();
}
System.out.println("-or-");
}
System.out.println("Select one of the commands");
System.out.println("\td:\tnew Device discovery");
System.out.println("\te:\tEnd");
System.out.print(">");
try {
cmd=buffer.readLine();
} catch ( IOException ex ) {
ex.printStackTrace();
}
int device=0;
try {
device = Integer.parseInt(cmd);
} catch ( NumberFormatException ex ) {
device=0;
}
if (device >0 && device <= serviceFound.size()) {
OOBDDongleDescriptor oobdDongleDescr = (OOBDDongleDescriptor)serviceFound.get(device-1);
System.out.println("Flashing "+oobdDongleDescr.friendlyName);
if (OOBDFlashHandler.switchToFlashMode(oobdDongleDescr)) {
System.out.println("Flash mode successfully reached!");
} else {
System.out.println("Flash mode NOT reached!");
}
OOBDFlashHandler.close();
}
}
}
}