Sophie Dexter
/
Just4Trionic
Just4Trionic - CAN and BDM FLASH programmer for Saab cars
gmlan.h@4:682d96ff6d79, 2013-09-11 (annotated)
- Committer:
- Just4pLeisure
- Date:
- Wed Sep 11 11:55:51 2013 +0000
- Revision:
- 4:682d96ff6d79
- Child:
- 5:1775b4b13232
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 | 4:682d96ff6d79 | 1 | |
Just4pLeisure | 4:682d96ff6d79 | 2 | // gmlan.h - information and definitions needed for communicating with GMLAN |
Just4pLeisure | 4:682d96ff6d79 | 3 | |
Just4pLeisure | 4:682d96ff6d79 | 4 | // (C) 2013 Sophie Dexter |
Just4pLeisure | 4:682d96ff6d79 | 5 | |
Just4pLeisure | 4:682d96ff6d79 | 6 | #ifndef __GMLAN_H__ |
Just4pLeisure | 4:682d96ff6d79 | 7 | #define __GMLAN_H__ |
Just4pLeisure | 4:682d96ff6d79 | 8 | |
Just4pLeisure | 4:682d96ff6d79 | 9 | #include "mbed.h" |
Just4pLeisure | 4:682d96ff6d79 | 10 | |
Just4pLeisure | 4:682d96ff6d79 | 11 | #include "common.h" |
Just4pLeisure | 4:682d96ff6d79 | 12 | #include "canutils.h" |
Just4pLeisure | 4:682d96ff6d79 | 13 | |
Just4pLeisure | 4:682d96ff6d79 | 14 | #define T8RequestId 0x7E0 |
Just4pLeisure | 4:682d96ff6d79 | 15 | #define T8ResponseId 0x7E8 |
Just4pLeisure | 4:682d96ff6d79 | 16 | #define GMLANALLNODES 0x101 |
Just4pLeisure | 4:682d96ff6d79 | 17 | |
Just4pLeisure | 4:682d96ff6d79 | 18 | #define GMLANMESSAGETIMEOUT 50 // 50 milliseconds (0.05 of a second) - Seems to be plenty of time to wait for messages on the CAN bus |
Just4pLeisure | 4:682d96ff6d79 | 19 | #define GMLANPTCT 150 // 150 milliseconds Timeout between tester request and ECU response or multiple ECU responses |
Just4pLeisure | 4:682d96ff6d79 | 20 | #define GMLANPTCTENHANCED 5100 // 5100 milliseconds Enhanced response timing value for tester P2CT timer. |
Just4pLeisure | 4:682d96ff6d79 | 21 | |
Just4pLeisure | 4:682d96ff6d79 | 22 | // Tester Present message, must be sent at least once every 5 seconds for some types of activity |
Just4pLeisure | 4:682d96ff6d79 | 23 | // NOTE however that 2 seconds has been suggested as a good interval |
Just4pLeisure | 4:682d96ff6d79 | 24 | #define GMLANTesterPresentPhysical {0x01,0x3E,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 25 | #define GMLANTesterPresentFunctional {0xFE,0x01,0x3E,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 26 | extern void GMLANTesterPresentAll(); |
Just4pLeisure | 4:682d96ff6d79 | 27 | extern void GMLANTesterPresentT8(); |
Just4pLeisure | 4:682d96ff6d79 | 28 | |
Just4pLeisure | 4:682d96ff6d79 | 29 | // All steps needed in preparation for using a bootloader ('Utility File' in GMLAN parlance) |
Just4pLeisure | 4:682d96ff6d79 | 30 | bool GMLANprogrammingSetupProcess(); |
Just4pLeisure | 4:682d96ff6d79 | 31 | |
Just4pLeisure | 4:682d96ff6d79 | 32 | // All steps needed to transfer and start a bootloader ('Utility File' in GMLAN parlance) |
Just4pLeisure | 4:682d96ff6d79 | 33 | bool GMLANprogrammingUtilityFileProcess(char UtilityFile[]); |
Just4pLeisure | 4:682d96ff6d79 | 34 | |
Just4pLeisure | 4:682d96ff6d79 | 35 | |
Just4pLeisure | 4:682d96ff6d79 | 36 | // Start a Diagnostic Session |
Just4pLeisure | 4:682d96ff6d79 | 37 | #define GMLANinitiateDiagnosticOperation {0x02,0x10,0x02,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 38 | #define GMLANdisableAllDTCs 0x02 |
Just4pLeisure | 4:682d96ff6d79 | 39 | bool GMLANinitiateDiagnostic(char level); |
Just4pLeisure | 4:682d96ff6d79 | 40 | |
Just4pLeisure | 4:682d96ff6d79 | 41 | |
Just4pLeisure | 4:682d96ff6d79 | 42 | // Tell T8 To disable normal communication messages |
Just4pLeisure | 4:682d96ff6d79 | 43 | #define GMLANdisableCommunication {0x01,0x28,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 44 | bool GMLANdisableNormalCommunication(); |
Just4pLeisure | 4:682d96ff6d79 | 45 | |
Just4pLeisure | 4:682d96ff6d79 | 46 | |
Just4pLeisure | 4:682d96ff6d79 | 47 | // Tell T8 To report programmed state |
Just4pLeisure | 4:682d96ff6d79 | 48 | #define GMLANReportProgrammed {0x01,0xA2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 49 | bool GMLANReportProgrammedState(); |
Just4pLeisure | 4:682d96ff6d79 | 50 | |
Just4pLeisure | 4:682d96ff6d79 | 51 | // Tell T8 To request or initiate programming |
Just4pLeisure | 4:682d96ff6d79 | 52 | #define GMLANProgramming {0x02,0xA5,0x00,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 53 | #define GMLANRequestProgrammingNormal 0x01 // I or P-Bus speed |
Just4pLeisure | 4:682d96ff6d79 | 54 | #define GMLANRequestProgrammingFast 0x02 // 83.333 kbps for single-wire CAN |
Just4pLeisure | 4:682d96ff6d79 | 55 | #define GMLANEnableProgrammingMode 0x03 // Tell T8 To initiate programming |
Just4pLeisure | 4:682d96ff6d79 | 56 | bool GMLANProgrammingMode(char mode); |
Just4pLeisure | 4:682d96ff6d79 | 57 | |
Just4pLeisure | 4:682d96ff6d79 | 58 | // authenticate with T8 |
Just4pLeisure | 4:682d96ff6d79 | 59 | #define GMLANSecurityAccessSeed {0x02,0x27,0x01,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 60 | bool GMLANSecurityAccessRequest(char level, uint16_t& seed); |
Just4pLeisure | 4:682d96ff6d79 | 61 | #define GMLANSecurityAccessKey {0x04,0x27,0x02,0xCA,0xFE,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 62 | bool GMLANSecurityAccessSendKey(char level, uint16_t key); |
Just4pLeisure | 4:682d96ff6d79 | 63 | |
Just4pLeisure | 4:682d96ff6d79 | 64 | // Tell T8 We are Requesting a download session |
Just4pLeisure | 4:682d96ff6d79 | 65 | #define GMLANRequestDownloadMessage {0x06,0x34,0x00,0x00,0x00,0x00,0x00,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 66 | #define GMLANRequestDownloadModeNormal 0x00 |
Just4pLeisure | 4:682d96ff6d79 | 67 | #define GMLANRequestDownloadModeEncrypted 0x01 |
Just4pLeisure | 4:682d96ff6d79 | 68 | #define GMLANRequestDownloadModeCompressed 0x10 |
Just4pLeisure | 4:682d96ff6d79 | 69 | #define GMLANRequestDownloadModeCompressedEncrypted 0x11 |
Just4pLeisure | 4:682d96ff6d79 | 70 | bool GMLANRequestDownload(char dataFormatIdentifier); |
Just4pLeisure | 4:682d96ff6d79 | 71 | |
Just4pLeisure | 4:682d96ff6d79 | 72 | // Data blocks are sent using this message type |
Just4pLeisure | 4:682d96ff6d79 | 73 | #define GMLANDataTransferMessage {0x10,0xF0,0x36,0x00,0xCA,0xFE,0xBA,0xBE} |
Just4pLeisure | 4:682d96ff6d79 | 74 | #define GMLANDOWNLOAD 0x00 |
Just4pLeisure | 4:682d96ff6d79 | 75 | #define GMLANEXECUTE 0x80 |
Just4pLeisure | 4:682d96ff6d79 | 76 | bool GMLANDataTransfer(char length, char function, uint32_t address); |
Just4pLeisure | 4:682d96ff6d79 | 77 | bool GMLANDataTransferFirstFrame(char length, char function, uint32_t address); |
Just4pLeisure | 4:682d96ff6d79 | 78 | bool GMLANDataTransferConsecutiveFrame(char framenumber, char data[7]); |
Just4pLeisure | 4:682d96ff6d79 | 79 | |
Just4pLeisure | 4:682d96ff6d79 | 80 | // Tell T8 ECU to return to normal mode after FLASHing |
Just4pLeisure | 4:682d96ff6d79 | 81 | #define GMLANRetrunToNormalModeMessage {0x01,0x20,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa} |
Just4pLeisure | 4:682d96ff6d79 | 82 | bool GMLANReturnToNormalMode(); |
Just4pLeisure | 4:682d96ff6d79 | 83 | |
Just4pLeisure | 4:682d96ff6d79 | 84 | |
Just4pLeisure | 4:682d96ff6d79 | 85 | // Show a description of GMLAN Return Codes when an error occurs |
Just4pLeisure | 4:682d96ff6d79 | 86 | void GMLANShowReturnCode(char returnCode); |
Just4pLeisure | 4:682d96ff6d79 | 87 | |
Just4pLeisure | 4:682d96ff6d79 | 88 | #endif |