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