Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: t7can.cpp
- Revision:
- 4:682d96ff6d79
- Parent:
- 3:92dae9083c83
- Child:
- 5:1775b4b13232
--- a/t7can.cpp Tue Jun 07 12:23:28 2011 +0000
+++ b/t7can.cpp Wed Sep 11 11:55:51 2013 +0000
@@ -1,7 +1,7 @@
/*******************************************************************************
trionic7.cpp - CAN Bus functions for Just4Trionic by Just4pLeisure
-(c) 2011 by Sophie Dexter
+(c) 2011, 2012 by Sophie Dexter
This C++ module provides functions for reading and writing the FLASH chips and
SRAM in Trionic7 ECUs. (Writing the adaption data back to SRAM not done yet).
@@ -44,23 +44,62 @@
void t7_can() {
// Start the CAN bus system
- // Note that at the moment this is only for T5 ECUs at 615 kbits
- can_open();
- can_set_speed(500000);
-
+ // Note that at the moment this is only for T7 ECUs at 500 kbits
t7_can_show_help();
- if (t7_initialise())
- printf("Trionic 7 Connection OK\r\n");
- else
- printf("Trionic 7 Connection Failed\r\n");
+ char data[8];
+ printf("Trying to listen to CAN I-Bus (47619 Bit/s)...\r\n");
+ can_configure(2, 47619, 1);
+ if (can_wait_timeout(T7ANYMSG, data, 8, T7MESSAGETIMEOUT)) {
+ printf("Connected to Saab I-Bus\r\n");
+ printf("Switching to I-Bus active mode\r\n");
+ can_configure(2, 47619, 0);
+ } else {
+ printf("I did not receive any I-Bus messages\r\n");
+ printf("Trying to listen to CAN P-Bus (500 kBit/s)...\r\n");
+ can_configure(2, 500000, 1);
+ if (can_wait_timeout(T7ANYMSG, data, 8, T7MESSAGETIMEOUT)) {
+ printf("Connected to Saab P-Bus\r\n");
+ printf("Switching to P-Bus active mode\r\n");
+ can_configure(2, 500000, 0);
+ } else {
+ printf("I did not receive any P-Bus messages\r\n");
+ printf("Switching to P-Bus active mode\r\n");
+ can_configure(2, 500000, 0);
+ if (can_wait_timeout(T7ANYMSG, data, 8, T7CONNECTTIMEOUT)) {
+ printf("Connected to Saab P-Bus\r\n");
+ //can_active();
+ } else {
+ printf("FAILED to connect!\r\n");
+ led4 = 1;
+ }
+ }
+ }
+
+// if (t7_initialise())
+// printf("Connected to Saab I-Bus\r\n");
+// else {
+// printf("Opening CAN channel to Saab P-Bus (500 kBit/s)...\r\n");
+// can_set_speed(500000);
+// if (t7_initialise())
+// printf("Connected to Saab P-Bus\r\n");
+// else {
+// printf("FAILED to connect!\r\n");
+// led4 = 1;
+// }
+// }
+
+// if (t7_initialise())
+// printf("Trionic 7 Connection OK\r\n");
+// else
+// printf("Trionic 7 Connection Failed\r\n");
// t7_authenticate();
- if (t7_authenticate())
- printf("Security Key Accepted\r\n");
- else
- printf("Security Key Failed\r\n");
+// if (t7_authenticate())
+// printf("Security Key Accepted\r\n");
+// else
+// printf("Security Key Failed\r\n");
- // main loop
+// main loop
*cmd_buffer = '\0';
char ret;
char rx_char;
@@ -116,40 +155,107 @@
*/
uint8_t execute_t7_cmd() {
-
+ char data[8];
// uint8_t cmd_length = strlen(cmd_buffer);
// command groups
switch (*cmd_buffer) {
// CHECK_ARGLENGTH(0);
// Get the Symbol Table
case 'i' :
- case 'I' :
- return t7_initialise()
- ? TERM_OK : TERM_ERR;
+ if (t7_initialise()) {
+ printf("Trionic 7 Connection OK\r\n");
+ return TERM_OK;
+ } else {
+ printf("Trionic 7 Connection Failed\r\n");
+ return TERM_ERR;
+ }
+// return t7_initialise()
+// ? TERM_OK : TERM_ERR;
case 'a' :
case 'A' :
- return t7_authenticate()
- ? TERM_OK : TERM_ERR;
+ if (t7_authenticate()) {
+ printf("Security Key Accepted\r\n");
+ return TERM_OK;
+ } else {
+ printf("Security Key Failed\r\n");
+ return TERM_ERR;
+ }
+// return t7_authenticate()
+// ? TERM_OK : TERM_ERR;
- // Erase the FLASH chips
+// Erase the FLASH chips
case 'e':
case 'E':
return t7_erase()
? TERM_OK : TERM_ERR;
- // DUMP the T5 ECU BIN file stored in the FLASH chips
+// DUMP the T5 ECU BIN file stored in the FLASH chips
+ case 'D':
+ if (!t7_authenticate()) {
+ if (!t7_initialise()) {
+ printf("Trionic 7 Connection Failed\r\n");
+ return TERM_ERR;
+ }
+ if (!t7_authenticate()) {
+ printf("Security Key Failed\r\n");
+ return TERM_ERR;
+ }
+ }
case 'd':
- case 'D':
return t7_dump()
? TERM_OK : TERM_ERR;
- // Send a FLASH update file to the T5 ECU
+// Send a FLASH update file to the T5 ECU
+ case 'F':
+ if (!t7_authenticate()) {
+ if (!t7_initialise()) {
+ printf("Trionic 7 Connection Failed\r\n");
+ return TERM_ERR;
+ }
+ if (!t7_authenticate()) {
+ printf("Security Key Failed\r\n");
+ return TERM_ERR;
+ }
+ }
+ if (!t7_erase()) {
+ printf("Could not Erase FLASH!\r\n");
+ return TERM_ERR;
+ }
case 'f':
- case 'F':
return t7_flash()
? TERM_OK : TERM_ERR;
+// Try to connect to CAN I-BUS
+ case 'I' :
+ printf("Trying to open CAN I-Bus (47619 Bit/s)...\r\n");
+ can_close();
+ //can_monitor();
+ can_set_speed(47619);
+ can_open();
+ if (can_wait_timeout(T7ANYMSG, data, 8, T7CONNECTTIMEOUT)) {
+ printf("Connected to Saab I-Bus\r\n");
+ //can_active();
+ return TERM_OK;
+ } else {
+ printf("I did not receive any I-Bus messages\r\n");
+ printf("FAILED to connect!\r\n");
+ return TERM_ERR;
+ }
+// Try to connect to CAN P-BUS
+ case 'P' :
+ printf("Trying to open CAN P-Bus (500 kBit/s)...\r\n");
+ can_close();
+ //can_monitor();
+ can_set_speed(500000);
+ can_open();
+ if (can_wait_timeout(T7ANYMSG, data, 8, T7CONNECTTIMEOUT)) {
+ printf("Connected to Saab P-Bus\r\n");
+ //can_active();
+ return TERM_OK;
+ } else {
+ printf("I did not receive any P-Bus messages\r\n");
+ printf("FAILED to connect!\r\n");
+ return TERM_ERR;
+ }
- case '3':
-
- // Print help
+// Print help
case 'h':
t7_can_show_help();
return TERM_OK;
@@ -160,7 +266,7 @@
t7_can_show_help();
break;
}
- // unknown command
+// unknown command
return TERM_ERR;
}
@@ -175,8 +281,11 @@
void t7_can_show_help() {
printf("Trionic 7 Command Menu\r\n");
printf("======================\r\n");
- printf("D - Read and DUMP T7 FLASH BIN file\r\n");
- printf("F - FLASH the update file to the T7\r\n");
+ printf("D - DUMP the T7 ECU FLASH to a file 'ORIGINAL.BIN'\r\n");
+ printf("F - FLASH the update file 'MODIFIED.HEX' to the T7\r\n");
+ printf("\r\n");
+ printf("I - Try to open CAN I-Bus (47619 Bit/s)\r\n");
+ printf("P - Try to open CAN P-Bus (500 kBit/s)\r\n");
printf("\r\n");
printf("'ESC' - Return to Just4Trionic Main Menu\r\n");
printf("\r\n");
@@ -195,13 +304,18 @@
void t7_can_show_full_help() {
printf("Trionic 7 Command Menu\r\n");
printf("======================\r\n");
- printf("D - Read and DUMP T7 FLASH BIN file\r\n");
- printf("F - FLASH the update file to the T7\r\n");
+ printf("D - DUMP the T7 ECU FLASH to a file 'ORIGINAL.BIN'\r\n");
+ printf("F - FLASH the update file 'MODIFIED.HEX' to the T7\r\n");
+ printf("\r\n");
+ printf("I - Try to open CAN I-Bus (47619 Bit/s)\r\n");
+ printf("P - Try to open CAN P-Bus (500 kBit/s)\r\n");
printf("\r\n");
printf("\r\n");
printf("i - Send initialisation message to T7\r\n");
printf("a - Send Authentication key to T7\r\n");
- printf("d - Dump T7 Bin file\r\n");
+ printf("d - Dump T7 Bin file 'ORIGINAL.BIN'\r\n");
+ printf("e - Erase the FLASH in the T7 ECU\r\n");
+ printf("f - FLASH the file 'MODIFIED.BIN' to the T7 ECU\r\n");
printf("\r\n");
printf("'ESC' - Return to Just4Trionic Main Menu\r\n");
printf("\r\n");