Just4Trionic - CAN and BDM FLASH programmer for Saab cars
Fork of Just4Trionic by
t7utils.h@4:682d96ff6d79, 2013-09-11 (annotated)
- Committer:
- Just4pLeisure
- Date:
- Wed Sep 11 11:55:51 2013 +0000
- Revision:
- 4:682d96ff6d79
- Parent:
- 3:92dae9083c83
This update adds T8 CAN DUMP and FLASH capability (recovery still to do)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Just4pLeisure | 3:92dae9083c83 | 1 | |
Just4pLeisure | 4:682d96ff6d79 | 2 | // t7utils.h - information and definitions needed for communicating with the T7 ECU |
Just4pLeisure | 3:92dae9083c83 | 3 | |
Just4pLeisure | 4:682d96ff6d79 | 4 | // (C) 2011, 2012 Sophie Dexter |
Just4pLeisure | 3:92dae9083c83 | 5 | |
Just4pLeisure | 3:92dae9083c83 | 6 | #ifndef __T7UTILS_H__ |
Just4pLeisure | 3:92dae9083c83 | 7 | #define __T7UTILS_H__ |
Just4pLeisure | 3:92dae9083c83 | 8 | |
Just4pLeisure | 3:92dae9083c83 | 9 | #include "mbed.h" |
Just4pLeisure | 3:92dae9083c83 | 10 | |
Just4pLeisure | 3:92dae9083c83 | 11 | #include "common.h" |
Just4pLeisure | 3:92dae9083c83 | 12 | #include "canutils.h" |
Just4pLeisure | 3:92dae9083c83 | 13 | |
Just4pLeisure | 3:92dae9083c83 | 14 | #define T7CMNDID 0x220 |
Just4pLeisure | 3:92dae9083c83 | 15 | #define T7RESPID 0x238 |
Just4pLeisure | 3:92dae9083c83 | 16 | #define T7SEC_ID 0x240 |
Just4pLeisure | 3:92dae9083c83 | 17 | #define T7SEC_RX 0x258 |
Just4pLeisure | 3:92dae9083c83 | 18 | #define T7ACK_ID 0x266 |
Just4pLeisure | 4:682d96ff6d79 | 19 | #define T7ANYMSG 0x0 |
Just4pLeisure | 4:682d96ff6d79 | 20 | |
Just4pLeisure | 3:92dae9083c83 | 21 | |
Just4pLeisure | 3:92dae9083c83 | 22 | // initialise T7 |
Just4pLeisure | 3:92dae9083c83 | 23 | |
Just4pLeisure | 3:92dae9083c83 | 24 | #define T7INITMSG {0x3F,0x81,0x00,0x11,0x02,0x40,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 25 | |
Just4pLeisure | 3:92dae9083c83 | 26 | // authenticate with T7 |
Just4pLeisure | 3:92dae9083c83 | 27 | |
Just4pLeisure | 3:92dae9083c83 | 28 | #define T7SEC_MSG {0x40,0xA1,0x02,0x27,0x05,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 29 | #define T7KEY_MSG {0x40,0xA1,0x04,0x27,0x06,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 30 | |
Just4pLeisure | 3:92dae9083c83 | 31 | #define T7ACK_MSG {0x40,0xA1,0x3F,0x00,0x00,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 32 | |
Just4pLeisure | 3:92dae9083c83 | 33 | // read_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 34 | |
Just4pLeisure | 3:92dae9083c83 | 35 | #define T7DMP_END {0x40,0xA1,0x01,0x82,0x00,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 36 | //#define T7DMPJP1A {0x41,0xA1,0x08,0x2C,0xF0,0x03,0x00,0xEF} // 0x000000 length=0xEF |
Just4pLeisure | 3:92dae9083c83 | 37 | #define T7DMPJP1A {0x41,0xA1,0x08,0x2C,0xF0,0x03,0x00,0x80} // 0x000000 length=0x80 (128 bytes) |
Just4pLeisure | 3:92dae9083c83 | 38 | #define T7DMPJP1B {0x00,0xA1,0x00,0x00,0x00,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 39 | #define T7DMPPOST {0x40,0xA1,0x01,0x3E,0x00,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 40 | #define T7DMPDATA {0x40,0xA1,0x02,0x21,0xF0,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 41 | #define T7DMP_ACK {0x40,0xA1,0x20,0x00,0x00,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 42 | |
Just4pLeisure | 3:92dae9083c83 | 43 | // flash_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 44 | |
Just4pLeisure | 3:92dae9083c83 | 45 | #define T7FLAJP1A {0x41,0xA1,0x08,0x34,0x00,0x00,0x00,0x00} // Start = 0x000000 |
Just4pLeisure | 3:92dae9083c83 | 46 | #define T7FLAJP1B {0x00,0xA1,0x08,0x00,0x00,0x00,0x00,0x00} // Length = 0x080000 |
Just4pLeisure | 4:682d96ff6d79 | 47 | #define T7FLABINA {0x41,0xA1,0x08,0x34,0x00,0x00,0x00,0x00} // Start = 0x000000 |
Just4pLeisure | 4:682d96ff6d79 | 48 | #define T7FLABINB {0x00,0xA1,0x07,0x00,0x00,0x00,0x00,0x00} // Length = 0x070000 |
Just4pLeisure | 4:682d96ff6d79 | 49 | #define T7FLAHDRA {0x41,0xA1,0x08,0x34,0x07,0xFF,0x00,0x00} // Start = 0x07FF00 |
Just4pLeisure | 4:682d96ff6d79 | 50 | #define T7FLAHDRB {0x00,0xA1,0x00,0x01,0x00,0x00,0x00,0x00} // Length = 0x000100 |
Just4pLeisure | 3:92dae9083c83 | 51 | #define T7FLA_END {0x40,0xA1,0x01,0x37,0x00,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 52 | #define T7FLAEXIT {0x40,0xA1,0x02,0x31,0x54,0x00,0x00,0x00} |
Just4pLeisure | 3:92dae9083c83 | 53 | #define T7FLA_ACK {0x40,0xA1,0x3F,0x00,0x00,0x00,0x00,0x00} // 266h |
Just4pLeisure | 3:92dae9083c83 | 54 | |
Just4pLeisure | 3:92dae9083c83 | 55 | |
Just4pLeisure | 3:92dae9083c83 | 56 | #define T7MESSAGETIMEOUT 50 // 50 milliseconds (0.05 of a second) - Seems to be plenty of time to wait for messages on the CAN bus |
Just4pLeisure | 3:92dae9083c83 | 57 | #define T7LONGERTIMEOUT 500 // 500 milliseconds (0.5 of a second) - Some messages seem to need longer |
Just4pLeisure | 3:92dae9083c83 | 58 | #define T7CHECKSUMTIMEOUT 2000 // 2 seconds (2,000 milliseconds) - Usually takes less than a second so allowing 2 is plenty |
Just4pLeisure | 4:682d96ff6d79 | 59 | #define T7CONNECTTIMEOUT 5000 // 5 seconds (5,000 milliseconds) - Usually takes 3 seconds so allowing 5 is plenty |
Just4pLeisure | 3:92dae9083c83 | 60 | #define T7ERASETIMEOUT 40000 // 40 seconds (60,000 milliseconds) - Usually takes less than 20 seconds so allowing 40 is plenty |
Just4pLeisure | 3:92dae9083c83 | 61 | |
Just4pLeisure | 3:92dae9083c83 | 62 | extern bool t7_initialise(); |
Just4pLeisure | 3:92dae9083c83 | 63 | extern bool t7_authenticate(); |
Just4pLeisure | 3:92dae9083c83 | 64 | extern bool t7_dump(); |
Just4pLeisure | 3:92dae9083c83 | 65 | extern bool t7_flash(); |
Just4pLeisure | 4:682d96ff6d79 | 66 | extern bool t7_flash_raw(); |
Just4pLeisure | 3:92dae9083c83 | 67 | extern bool t7_erase(); |
Just4pLeisure | 3:92dae9083c83 | 68 | /* global constants */ |
Just4pLeisure | 3:92dae9083c83 | 69 | //#define init_msg { 0x3F, 0x81, 0x00, 0x11, 0x02, 0x40, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 70 | |
Just4pLeisure | 3:92dae9083c83 | 71 | // ask_header_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 72 | |
Just4pLeisure | 3:92dae9083c83 | 73 | //#define query { 0x40, 0xA1, 0x02, 0x1A, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 74 | //#define ack { 0x40, 0xA1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 75 | |
Just4pLeisure | 3:92dae9083c83 | 76 | // ask_header2_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 77 | |
Just4pLeisure | 3:92dae9083c83 | 78 | //#define query { 0x40, 0xA1, 0x02, 0x1A, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 79 | //#define ack { 0x40, 0xA1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 80 | |
Just4pLeisure | 3:92dae9083c83 | 81 | |
Just4pLeisure | 3:92dae9083c83 | 82 | // authenticate_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 83 | |
Just4pLeisure | 3:92dae9083c83 | 84 | #define security_msg { 0x40, 0xA1, 0x02, 0x27, 0x05, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 85 | #define security_msg_reply { 0x40, 0xA1, 0x04, 0x27, 0x06, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 86 | #define ack { 0x40, 0xA1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 87 | |
Just4pLeisure | 3:92dae9083c83 | 88 | |
Just4pLeisure | 3:92dae9083c83 | 89 | // erase_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 90 | |
Just4pLeisure | 3:92dae9083c83 | 91 | //#define erase_msg1 { 0x40, 0xA1, 0x02, 0x31, 0x52, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 92 | //#define erase_msg2 { 0x40, 0xA1, 0x02, 0x31, 0x53, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 93 | //#define confirm_msg { 0x40, 0xA1, 0x01, 0x3E, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 94 | |
Just4pLeisure | 3:92dae9083c83 | 95 | |
Just4pLeisure | 3:92dae9083c83 | 96 | // program_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 97 | |
Just4pLeisure | 3:92dae9083c83 | 98 | //#define jump_msg1a { 0x41, 0xA1, 0x08, 0x34, 0x00, 0x00, 0x00, 0x00 } // 0x000000 length=0x07B000 |
Just4pLeisure | 3:92dae9083c83 | 99 | #define jump_msg1b { 0x00, 0xA1, 0x07, 0xB0, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 100 | #define jump_msg2a { 0x41, 0xA1, 0x08, 0x34, 0x07, 0xFF, 0x00, 0x00 } // 0x07FF00 length=0x000100 |
Just4pLeisure | 3:92dae9083c83 | 101 | #define jump_msg2b { 0x00, 0xA1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 102 | #define end_data_msg { 0x40, 0xA1, 0x01, 0x37, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 103 | #define exit_diag_msg { 0x40, 0xA1, 0x02, 0x31, 0x54, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 104 | #define req_diag_result_msg { 0x3F, 0x81, 0x01, 0x33, 0x02, 0x40, 0x00, 0x00 } // 220h |
Just4pLeisure | 3:92dae9083c83 | 105 | #define ack { 0x40, 0xA1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00 } // 266h |
Just4pLeisure | 3:92dae9083c83 | 106 | |
Just4pLeisure | 3:92dae9083c83 | 107 | // program_trionic7_tis |
Just4pLeisure | 3:92dae9083c83 | 108 | |
Just4pLeisure | 3:92dae9083c83 | 109 | //#define jump_msg1a { 0x41, 0xA1, 0x08, 0x34, 0x00, 0x00, 0x00, 0x00 } // 0x000000 length=0x070000 |
Just4pLeisure | 3:92dae9083c83 | 110 | //#define jump_msg1b { 0x00, 0xA1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 111 | //#define jump_msg2a { 0x41, 0xA1, 0x08, 0x34, 0x07, 0xFF, 0x00, 0x00 } // 0x07FF00 length=0x000100 |
Just4pLeisure | 3:92dae9083c83 | 112 | //#define jump_msg2b { 0x00, 0xA1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 113 | //#define end_data_msg { 0x40, 0xA1, 0x01, 0x37, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 114 | //#define exit_diag_msg { 0x40, 0xA1, 0x02, 0x31, 0x54, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 115 | //#define req_diag_result_msg { 0x3F, 0x81, 0x01, 0x33, 0x02, 0x40, 0x00, 0x00 } // 220h |
Just4pLeisure | 3:92dae9083c83 | 116 | //#define ack { 0x40, 0xA1, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00 } // 266h |
Just4pLeisure | 3:92dae9083c83 | 117 | |
Just4pLeisure | 3:92dae9083c83 | 118 | |
Just4pLeisure | 3:92dae9083c83 | 119 | // verify_trionic7 |
Just4pLeisure | 3:92dae9083c83 | 120 | //#define init_msg { 0x20, 0x81, 0x00, 0x11, 0x02, 0x42, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 121 | //#define end_data_msg { 0x40, 0xA1, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 122 | //#define jump_msg1a { 0x41, 0xA1, 0x08, 0x2C, 0xF0, 0x03, 0x00, 0xEF } // 0x000000 length=0xEF |
Just4pLeisure | 3:92dae9083c83 | 123 | //#define jump_msg1b { 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 124 | //#define post_jump_msg { 0x40, 0xA1, 0x01, 0x3E, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 125 | //#define data_msg { 0x40, 0xA1, 0x02, 0x21, 0xF0, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 126 | //#define ack { 0x40, 0xA1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Just4pLeisure | 3:92dae9083c83 | 127 | |
Just4pLeisure | 3:92dae9083c83 | 128 | |
Just4pLeisure | 3:92dae9083c83 | 129 | #endif |