Just4Trionic - CAN and BDM FLASH programmer for Saab cars

Dependencies:   mbed

Revision:
0:e0b964252a05
Child:
1:d5452e398b76
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 19 12:39:18 2010 +0000
@@ -0,0 +1,113 @@
+/*******************************************************************************
+
+Just4Trionic by Just4pLeisure    
+*****************************
+
+Whilst I have written this program myself I could not have done it without
+a lot of help and the original ideas and programs written by:
+Dilemma - Author of the Trionic Suite software programs and general Guru
+http://trionic.mobixs.eu/ and http://www.ecuproject.com.
+General Failure - Author of the T5CANlib software and regular contributor at
+http://www.ecuproject.com.
+Tomi Liljemark - Lots of information and programs about the Saab CAN bus
+http://pikkupossu.1g.fi/tomi/projects/projects.html.
+Scott Howard - Author of the BDM software.
+Plus inspiration and ideas from many others, including johnc.
+
+Sophie x
+
+********************************************************************************
+
+WARNING: Use at your own risk, sadly this software comes with no guarantees.
+This software is provided 'free' and in good faith, but the author does not
+accept liability for any damage arising from its use.
+
+********************************************************************************
+
+Version 1 (04/2010)- The basic functions are working, but not very easy to use
+
+I have decided to 'release' this software somewhat prematurely because the FLASH
+chips in my spare ECU have 'died' and I don't know when I will be able to do
+carry on improving and 'polishing' it. This way others will be able to use and
+enhance it without having to wait for me.
+
+For now, only option '5' Trionic ECU CAN interface is working. BDM and Lawicell
+CAN232 functions are dummies. The intention is to build a complete suite of CAN
+software for Trionic5, 7 and 8 ECU types as well as adding a BDM interface to
+make an 'all-in-one' USB programming tool.
+
+To make this you will need an mbed system and the CAN circuit from this page:
+http://mbed.org/projects/cookbook/wiki/CanBusExample1
+
+Some ideas for the truly creative and adventurous of you is to make a gizmo that
+doesn't even need to be connected to a laptop or PC to use, maybe even a self-
+contained vesion of Dilemma's CarPC using ideas from this pages:
+
+http://mbed.org/projects/cookbook/wiki/PS2Keyboard
+http://mbed.org/projects/cookbook/wiki/PS2Mouse
+http://mbed.org/projects/cookbook/wiki/MobileLCD
+http://mbed.org/projects/cookbook/wiki/SDCard
+
+*******************************************************************************/
+
+#include "mbed.h"
+
+#include "strings.h"
+#include "BDM.h"
+#include "CAN232.h"
+#include "Trionic5.h"
+
+Serial pc(USBTX, USBRX); // tx, rx
+
+#define CR 0x0D
+#define NL 0x0A
+#define BELL 0x07
+
+#define TRUE 1
+#define FALSE 0
+
+void ShowHelp();
+
+int main() {
+    // fast serial speed
+//    pc.baud(921600);
+    pc.baud(115200);
+    // make plenty of space for command from RS232
+    char command[5];
+    ShowHelp();
+    while (1) {
+// Only get 2 characters, the command and \r
+// For now I cannot work out how to use gets() so only single characters
+// can be used for commands :-(
+//
+// At the moment only option '5' does anything - the Trionic5 functions
+//
+        pc.gets(command,2);
+        int len = strlen(command);
+        if (len != 1) 
+            printf ("\a");
+        else if (ToUpper(command[0]) == 'B')
+            BDM();
+        else if (ToUpper(command[0]) == 'O')
+            CAN232();
+        else if (ToUpper(command[0]) == '5')
+            Trionic5();
+        else if (ToUpper(command[0]) == 'H')
+            ShowHelp();
+//  Unrecognised so ring the BELL :(
+        else
+            printf ("\a");
+    }
+}
+
+void ShowHelp() {
+    printf("Just4Trionic Command Menu\r\n");
+    printf("=========================\r\n");
+    printf("b/B - Start BDM interface (NOT DONE)\r\n");
+    printf("o/O - Open Lawicel CAN232 type interface (NOT DONE)\r\n");
+    printf("5   - Start Trionic5 ECU CAN interface\r\n");
+    printf("\r\n");
+    printf("h/H - show this help menu\r\n");
+    return;
+}
+