Sophie Dexter
/
Just4Trionic
Just4Trionic - CAN and BDM FLASH programmer for Saab cars
can232.cpp@6:2fbcbebed28c, 2016-04-23 (annotated)
- Committer:
- Just4pLeisure
- Date:
- Sat Apr 23 18:31:40 2016 +0000
- Revision:
- 6:2fbcbebed28c
- Parent:
- 4:682d96ff6d79
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 | 1:d5452e398b76 | 1 | /******************************************************************************* |
Just4pLeisure | 1:d5452e398b76 | 2 | |
Just4pLeisure | 1:d5452e398b76 | 3 | can232.cpp |
Just4pLeisure | 1:d5452e398b76 | 4 | (c) 2010 by Sophie Dexter |
Just4pLeisure | 1:d5452e398b76 | 5 | portions (c) 2009, 2010 by Janis Silins (johnc) |
Just4pLeisure | 1:d5452e398b76 | 6 | |
Just4pLeisure | 1:d5452e398b76 | 7 | Lawicel CAN232 type functions for Just4Trionic by Just4pLeisure |
Just4pLeisure | 1:d5452e398b76 | 8 | |
Just4pLeisure | 1:d5452e398b76 | 9 | ******************************************************************************** |
Just4pLeisure | 1:d5452e398b76 | 10 | |
Just4pLeisure | 1:d5452e398b76 | 11 | WARNING: Use at your own risk, sadly this software comes with no guarantees. |
Just4pLeisure | 1:d5452e398b76 | 12 | This software is provided 'free' and in good faith, but the author does not |
Just4pLeisure | 1:d5452e398b76 | 13 | accept liability for any damage arising from its use. |
Just4pLeisure | 1:d5452e398b76 | 14 | |
Just4pLeisure | 1:d5452e398b76 | 15 | *******************************************************************************/ |
Just4pLeisure | 1:d5452e398b76 | 16 | |
Just4pLeisure | 1:d5452e398b76 | 17 | #include "can232.h" |
Just4pLeisure | 1:d5452e398b76 | 18 | |
Just4pLeisure | 1:d5452e398b76 | 19 | // constants |
Just4pLeisure | 1:d5452e398b76 | 20 | #define CMD_BUF_LENGTH 32 ///< command buffer size |
Just4pLeisure | 1:d5452e398b76 | 21 | |
Just4pLeisure | 1:d5452e398b76 | 22 | // command characters |
Just4pLeisure | 1:d5452e398b76 | 23 | |
Just4pLeisure | 1:d5452e398b76 | 24 | #define CMD_CLOSE 'C' ///< Close the CAN device |
Just4pLeisure | 1:d5452e398b76 | 25 | #define CMD_OPEN 'O' ///< Open the CAN device (do this before an S/s command) |
Just4pLeisure | 1:d5452e398b76 | 26 | |
Just4pLeisure | 1:d5452e398b76 | 27 | #define CMD_PRESET_SPEED 'S' ///< Sn: set preconfigured speeds |
Just4pLeisure | 4:682d96ff6d79 | 28 | #define CMD_SPEED_0 '0' ///< 10 kbits (or 47,619 bits with 's') |
Just4pLeisure | 4:682d96ff6d79 | 29 | #define CMD_SPEED_1 '1' ///< 20 kbits (or 500 kbits with 's') |
Just4pLeisure | 4:682d96ff6d79 | 30 | #define CMD_SPEED_2 '2' ///< 50 kbits (or 615 kbits with 's') |
Just4pLeisure | 1:d5452e398b76 | 31 | #define CMD_SPEED_3 '3' ///< 100 kbits |
Just4pLeisure | 1:d5452e398b76 | 32 | #define CMD_SPEED_4 '4' ///< 125 kbits |
Just4pLeisure | 1:d5452e398b76 | 33 | #define CMD_SPEED_5 '5' ///< 250 kbits |
Just4pLeisure | 1:d5452e398b76 | 34 | #define CMD_SPEED_6 '6' ///< 500 kbits |
Just4pLeisure | 1:d5452e398b76 | 35 | #define CMD_SPEED_7 '7' ///< 800 kbits |
Just4pLeisure | 1:d5452e398b76 | 36 | #define CMD_SPEED_8 '8' ///< 1 mbits |
Just4pLeisure | 1:d5452e398b76 | 37 | #define CMD_DIRECT_SPEED 's' ///< sxxyy: set the CAN bus speed registers directly |
Just4pLeisure | 1:d5452e398b76 | 38 | ///< xx: BTR0 register setting |
Just4pLeisure | 1:d5452e398b76 | 39 | ///< yy: BTR1 register setting |
Just4pLeisure | 1:d5452e398b76 | 40 | |
Just4pLeisure | 1:d5452e398b76 | 41 | #define CMD_SEND_11BIT 't' ///< tiiildd..: send 11 bit id CAN frame |
Just4pLeisure | 1:d5452e398b76 | 42 | ///< iii: identfier 0x0..0x7ff |
Just4pLeisure | 1:d5452e398b76 | 43 | ///< l: Number of data bytes in CAN frame 0..8 |
Just4pLeisure | 1:d5452e398b76 | 44 | ///< dd..: data byte values 0x0..0xff (l pairs) |
Just4pLeisure | 1:d5452e398b76 | 45 | #define CMD_SEND_29BIT 'T' ///< Tiiiiiiiildd..: send 29 bit id CAN frame |
Just4pLeisure | 1:d5452e398b76 | 46 | ///< iiiiiiii: identifier 0x0..0x1fffffff |
Just4pLeisure | 1:d5452e398b76 | 47 | ///< l: Number of data bytes in CAN frame 0..8 |
Just4pLeisure | 1:d5452e398b76 | 48 | ///< dd..: data byte values 0x0..0xff (l pairs) |
Just4pLeisure | 1:d5452e398b76 | 49 | |
Just4pLeisure | 1:d5452e398b76 | 50 | |
Just4pLeisure | 1:d5452e398b76 | 51 | #define CMD_READ_FLAGS 'F' ///< Read flags !?! |
Just4pLeisure | 1:d5452e398b76 | 52 | |
Just4pLeisure | 4:682d96ff6d79 | 53 | #define CMD_FILTER 'f' ///< Filter which CAN message types to allow |
Just4pLeisure | 4:682d96ff6d79 | 54 | #define CMD_FILTER_NONE '0' ///< Allow all CAN message types |
Just4pLeisure | 4:682d96ff6d79 | 55 | #define CMD_FILTER_T5 '5' ///< Allow only Trionic 5 CAN message types |
Just4pLeisure | 4:682d96ff6d79 | 56 | #define CMD_FILTER_T7 '7' ///< Allow only Trionic 5 CAN message types |
Just4pLeisure | 4:682d96ff6d79 | 57 | #define CMD_FILTER_T8 '8' ///< Allow only Trionic 5 CAN message types |
Just4pLeisure | 4:682d96ff6d79 | 58 | |
Just4pLeisure | 1:d5452e398b76 | 59 | #define CMD_ACCEPT_CODE 'M' ///< Mxxxxxxxx: Acceptance code e.g. 0x00000000 } accept |
Just4pLeisure | 1:d5452e398b76 | 60 | #define CMD_ACCEPT_MASK 'm' ///< mxxxxxxxx: Acceptance mask e.g. 0xffffffff } all |
Just4pLeisure | 1:d5452e398b76 | 61 | |
Just4pLeisure | 1:d5452e398b76 | 62 | #define CMD_VERSION 'V' ///< Replies with Firmware and hardware version numbers; 2 bytes each |
Just4pLeisure | 1:d5452e398b76 | 63 | #define CMD_SERIAL_NUMBER 'N' ///< Replies with serial number; 4 bytes |
Just4pLeisure | 1:d5452e398b76 | 64 | |
Just4pLeisure | 1:d5452e398b76 | 65 | #define CMD_TIMESTAMP 'Z' ///< Zn: n=0 means timestamp off, n=1 means timestamp is on |
Just4pLeisure | 1:d5452e398b76 | 66 | ///< Replies a value in milliseconds with two bytes 0x0..0xfa5f |
Just4pLeisure | 1:d5452e398b76 | 67 | ///< equivalent to 0..60 seconds |
Just4pLeisure | 1:d5452e398b76 | 68 | |
Just4pLeisure | 1:d5452e398b76 | 69 | |
Just4pLeisure | 1:d5452e398b76 | 70 | |
Just4pLeisure | 1:d5452e398b76 | 71 | // static variables |
Just4pLeisure | 1:d5452e398b76 | 72 | static char cmd_buffer[CMD_BUF_LENGTH]; ///< command string buffer |
Just4pLeisure | 1:d5452e398b76 | 73 | static uint32_t can_id; ///< can message id |
Just4pLeisure | 1:d5452e398b76 | 74 | static uint32_t can_len; ///< can message length |
Just4pLeisure | 1:d5452e398b76 | 75 | static uint8_t can_msg[8]; ///< can message frame - up to 8 bytes |
Just4pLeisure | 1:d5452e398b76 | 76 | |
Just4pLeisure | 1:d5452e398b76 | 77 | // private functions |
Just4pLeisure | 1:d5452e398b76 | 78 | uint8_t execute_can_cmd(); |
Just4pLeisure | 1:d5452e398b76 | 79 | |
Just4pLeisure | 1:d5452e398b76 | 80 | // command argument macros |
Just4pLeisure | 1:d5452e398b76 | 81 | #define CHECK_ARGLENGTH(len) \ |
Just4pLeisure | 1:d5452e398b76 | 82 | if (cmd_length != len + 2) \ |
Just4pLeisure | 1:d5452e398b76 | 83 | return TERM_ERR |
Just4pLeisure | 1:d5452e398b76 | 84 | |
Just4pLeisure | 1:d5452e398b76 | 85 | #define GET_NUMBER(target, offset, len) \ |
Just4pLeisure | 1:d5452e398b76 | 86 | if (!ascii2int(target, cmd_buffer + 2 + offset, len)) \ |
Just4pLeisure | 1:d5452e398b76 | 87 | return TERM_ERR |
Just4pLeisure | 1:d5452e398b76 | 88 | |
Just4pLeisure | 1:d5452e398b76 | 89 | |
Just4pLeisure | 1:d5452e398b76 | 90 | |
Just4pLeisure | 1:d5452e398b76 | 91 | void can232() { |
Just4pLeisure | 1:d5452e398b76 | 92 | |
Just4pLeisure | 1:d5452e398b76 | 93 | // main loop |
Just4pLeisure | 1:d5452e398b76 | 94 | *cmd_buffer = '\0'; |
Just4pLeisure | 1:d5452e398b76 | 95 | char ret; |
Just4pLeisure | 1:d5452e398b76 | 96 | char rx_char; |
Just4pLeisure | 1:d5452e398b76 | 97 | while (true) { |
Just4pLeisure | 1:d5452e398b76 | 98 | // read chars from USB |
Just4pLeisure | 1:d5452e398b76 | 99 | if (pc.readable()) { |
Just4pLeisure | 4:682d96ff6d79 | 100 | // turn Error LED off for next command |
Just4pLeisure | 4:682d96ff6d79 | 101 | led4 = 0; |
Just4pLeisure | 1:d5452e398b76 | 102 | rx_char = pc.getc(); |
Just4pLeisure | 1:d5452e398b76 | 103 | switch (rx_char) { |
Just4pLeisure | 4:682d96ff6d79 | 104 | // 'ESC' key to go back to mbed Just4Trionic 'home' menu |
Just4pLeisure | 1:d5452e398b76 | 105 | case '\e': |
Just4pLeisure | 1:d5452e398b76 | 106 | can_close(); |
Just4pLeisure | 1:d5452e398b76 | 107 | can.attach(NULL); |
Just4pLeisure | 1:d5452e398b76 | 108 | return; |
Just4pLeisure | 4:682d96ff6d79 | 109 | // end-of-command reached |
Just4pLeisure | 1:d5452e398b76 | 110 | case TERM_OK : |
Just4pLeisure | 1:d5452e398b76 | 111 | // execute command and return flag via USB |
Just4pLeisure | 1:d5452e398b76 | 112 | ret = execute_can_cmd(); |
Just4pLeisure | 1:d5452e398b76 | 113 | pc.putc(ret); |
Just4pLeisure | 1:d5452e398b76 | 114 | // reset command buffer |
Just4pLeisure | 1:d5452e398b76 | 115 | *cmd_buffer = '\0'; |
Just4pLeisure | 1:d5452e398b76 | 116 | // light up LED |
Just4pLeisure | 1:d5452e398b76 | 117 | // ret == TERM_OK ? led_on(LED_ACT) : led_on(LED_ERR); |
Just4pLeisure | 1:d5452e398b76 | 118 | ret == TERM_OK ? led3 = 1 : led4 = 1; |
Just4pLeisure | 1:d5452e398b76 | 119 | break; |
Just4pLeisure | 4:682d96ff6d79 | 120 | // another command char |
Just4pLeisure | 1:d5452e398b76 | 121 | default: |
Just4pLeisure | 1:d5452e398b76 | 122 | // store in buffer if space permits |
Just4pLeisure | 1:d5452e398b76 | 123 | if (StrLen(cmd_buffer) < CMD_BUF_LENGTH - 1) { |
Just4pLeisure | 1:d5452e398b76 | 124 | StrAddc(cmd_buffer, rx_char); |
Just4pLeisure | 1:d5452e398b76 | 125 | } |
Just4pLeisure | 1:d5452e398b76 | 126 | break; |
Just4pLeisure | 1:d5452e398b76 | 127 | } |
Just4pLeisure | 1:d5452e398b76 | 128 | } |
Just4pLeisure | 1:d5452e398b76 | 129 | } |
Just4pLeisure | 1:d5452e398b76 | 130 | } |
Just4pLeisure | 1:d5452e398b76 | 131 | |
Just4pLeisure | 1:d5452e398b76 | 132 | //----------------------------------------------------------------------------- |
Just4pLeisure | 1:d5452e398b76 | 133 | /** |
Just4pLeisure | 1:d5452e398b76 | 134 | Executes a command and returns result flag (does not transmit the flag |
Just4pLeisure | 1:d5452e398b76 | 135 | itself). |
Just4pLeisure | 1:d5452e398b76 | 136 | |
Just4pLeisure | 1:d5452e398b76 | 137 | @return command flag (success / failure) |
Just4pLeisure | 1:d5452e398b76 | 138 | */ |
Just4pLeisure | 1:d5452e398b76 | 139 | |
Just4pLeisure | 1:d5452e398b76 | 140 | uint8_t execute_can_cmd() { |
Just4pLeisure | 1:d5452e398b76 | 141 | uint8_t cmd_length = strlen(cmd_buffer); |
Just4pLeisure | 1:d5452e398b76 | 142 | char cmd = *(cmd_buffer + 1); |
Just4pLeisure | 1:d5452e398b76 | 143 | |
Just4pLeisure | 1:d5452e398b76 | 144 | // command groups |
Just4pLeisure | 1:d5452e398b76 | 145 | switch (*cmd_buffer) { |
Just4pLeisure | 1:d5452e398b76 | 146 | // adapter commands |
Just4pLeisure | 1:d5452e398b76 | 147 | case CMD_SEND_11BIT: |
Just4pLeisure | 1:d5452e398b76 | 148 | if (cmd_length < 7) return TERM_ERR; |
Just4pLeisure | 1:d5452e398b76 | 149 | GET_NUMBER(&can_id, -1, 3); |
Just4pLeisure | 1:d5452e398b76 | 150 | GET_NUMBER(&can_len, 2, 1); |
Just4pLeisure | 1:d5452e398b76 | 151 | if (cmd_length < (4 + (can_len * 2))) return TERM_ERR; |
Just4pLeisure | 1:d5452e398b76 | 152 | for (uint8_t i = 0; i < (uint8_t)can_len; i++) { |
Just4pLeisure | 1:d5452e398b76 | 153 | uint32_t result; |
Just4pLeisure | 1:d5452e398b76 | 154 | GET_NUMBER(&result, (3 + (i * 2)), 2); |
Just4pLeisure | 1:d5452e398b76 | 155 | can_msg[i] = (uint8_t)result; |
Just4pLeisure | 1:d5452e398b76 | 156 | } |
Just4pLeisure | 1:d5452e398b76 | 157 | return (can_send_timeout (can_id, (char*)can_msg, (uint8_t)can_len, 500)) ? TERM_OK : TERM_ERR; |
Just4pLeisure | 1:d5452e398b76 | 158 | |
Just4pLeisure | 1:d5452e398b76 | 159 | case CMD_SEND_29BIT: |
Just4pLeisure | 1:d5452e398b76 | 160 | break; |
Just4pLeisure | 4:682d96ff6d79 | 161 | |
Just4pLeisure | 1:d5452e398b76 | 162 | case CMD_CLOSE: |
Just4pLeisure | 1:d5452e398b76 | 163 | can_close(); |
Just4pLeisure | 1:d5452e398b76 | 164 | return TERM_OK; |
Just4pLeisure | 1:d5452e398b76 | 165 | case CMD_OPEN: |
Just4pLeisure | 1:d5452e398b76 | 166 | can_open(); |
Just4pLeisure | 1:d5452e398b76 | 167 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 168 | |
Just4pLeisure | 1:d5452e398b76 | 169 | case CMD_PRESET_SPEED: |
Just4pLeisure | 1:d5452e398b76 | 170 | CHECK_ARGLENGTH(0); |
Just4pLeisure | 4:682d96ff6d79 | 171 | // can.attach(NULL); |
Just4pLeisure | 4:682d96ff6d79 | 172 | switch (cmd) { |
Just4pLeisure | 1:d5452e398b76 | 173 | case CMD_SPEED_0: |
Just4pLeisure | 4:682d96ff6d79 | 174 | can_configure(2, 10000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 175 | break; |
Just4pLeisure | 1:d5452e398b76 | 176 | case CMD_SPEED_1: |
Just4pLeisure | 4:682d96ff6d79 | 177 | can_configure(2, 20000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 178 | break; |
Just4pLeisure | 1:d5452e398b76 | 179 | case CMD_SPEED_2: |
Just4pLeisure | 4:682d96ff6d79 | 180 | can_configure(2, 50000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 181 | break; |
Just4pLeisure | 1:d5452e398b76 | 182 | case CMD_SPEED_3: |
Just4pLeisure | 4:682d96ff6d79 | 183 | can_configure(2, 100000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 184 | break; |
Just4pLeisure | 1:d5452e398b76 | 185 | case CMD_SPEED_4: |
Just4pLeisure | 4:682d96ff6d79 | 186 | can_configure(2, 125000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 187 | break; |
Just4pLeisure | 1:d5452e398b76 | 188 | case CMD_SPEED_5: |
Just4pLeisure | 4:682d96ff6d79 | 189 | can_configure(2, 250000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 190 | break; |
Just4pLeisure | 1:d5452e398b76 | 191 | case CMD_SPEED_6: |
Just4pLeisure | 4:682d96ff6d79 | 192 | can_configure(2, 500000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 193 | break; |
Just4pLeisure | 1:d5452e398b76 | 194 | case CMD_SPEED_7: |
Just4pLeisure | 4:682d96ff6d79 | 195 | can_configure(2, 800000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 196 | break; |
Just4pLeisure | 1:d5452e398b76 | 197 | case CMD_SPEED_8: |
Just4pLeisure | 4:682d96ff6d79 | 198 | can_configure(2, 1000000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 199 | break; |
Just4pLeisure | 4:682d96ff6d79 | 200 | default: |
Just4pLeisure | 4:682d96ff6d79 | 201 | return TERM_ERR; |
Just4pLeisure | 1:d5452e398b76 | 202 | } |
Just4pLeisure | 4:682d96ff6d79 | 203 | can.attach(&show_can_message); |
Just4pLeisure | 4:682d96ff6d79 | 204 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 205 | |
Just4pLeisure | 1:d5452e398b76 | 206 | case CMD_DIRECT_SPEED: |
Just4pLeisure | 1:d5452e398b76 | 207 | CHECK_ARGLENGTH(0); |
Just4pLeisure | 1:d5452e398b76 | 208 | switch (cmd) { |
Just4pLeisure | 1:d5452e398b76 | 209 | case CMD_SPEED_0: |
Just4pLeisure | 4:682d96ff6d79 | 210 | can_configure(2, 47619, 0); |
Just4pLeisure | 4:682d96ff6d79 | 211 | break; |
Just4pLeisure | 1:d5452e398b76 | 212 | case CMD_SPEED_1: |
Just4pLeisure | 4:682d96ff6d79 | 213 | can_configure(2, 500000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 214 | break; |
Just4pLeisure | 1:d5452e398b76 | 215 | case CMD_SPEED_2: |
Just4pLeisure | 4:682d96ff6d79 | 216 | can_configure(2, 615000, 0); |
Just4pLeisure | 4:682d96ff6d79 | 217 | break; |
Just4pLeisure | 4:682d96ff6d79 | 218 | default: |
Just4pLeisure | 4:682d96ff6d79 | 219 | return TERM_ERR; |
Just4pLeisure | 4:682d96ff6d79 | 220 | } |
Just4pLeisure | 4:682d96ff6d79 | 221 | can.attach(&show_can_message); |
Just4pLeisure | 4:682d96ff6d79 | 222 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 223 | |
Just4pLeisure | 4:682d96ff6d79 | 224 | case CMD_FILTER: |
Just4pLeisure | 4:682d96ff6d79 | 225 | CHECK_ARGLENGTH(0); |
Just4pLeisure | 4:682d96ff6d79 | 226 | switch (cmd) { |
Just4pLeisure | 4:682d96ff6d79 | 227 | case CMD_FILTER_NONE: |
Just4pLeisure | 4:682d96ff6d79 | 228 | can_use_filters(FALSE); // Accept all messages (Acceptance Filters disabled) |
Just4pLeisure | 4:682d96ff6d79 | 229 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 230 | case CMD_FILTER_T5: |
Just4pLeisure | 4:682d96ff6d79 | 231 | can_reset_filters(); |
Just4pLeisure | 4:682d96ff6d79 | 232 | can_add_filter(2, 0x005); //005h - |
Just4pLeisure | 4:682d96ff6d79 | 233 | can_add_filter(2, 0x006); //006h - |
Just4pLeisure | 4:682d96ff6d79 | 234 | can_add_filter(2, 0x00C); //00Ch - |
Just4pLeisure | 4:682d96ff6d79 | 235 | can_add_filter(2, 0x008); //008h - |
Just4pLeisure | 4:682d96ff6d79 | 236 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 237 | case CMD_FILTER_T7: |
Just4pLeisure | 4:682d96ff6d79 | 238 | can_reset_filters(); |
Just4pLeisure | 4:682d96ff6d79 | 239 | can_add_filter(2, 0x220); //220h |
Just4pLeisure | 4:682d96ff6d79 | 240 | can_add_filter(2, 0x238); //238h |
Just4pLeisure | 4:682d96ff6d79 | 241 | can_add_filter(2, 0x240); //240h |
Just4pLeisure | 4:682d96ff6d79 | 242 | can_add_filter(2, 0x258); //258h |
Just4pLeisure | 4:682d96ff6d79 | 243 | can_add_filter(2, 0x266); //266h - Ack |
Just4pLeisure | 4:682d96ff6d79 | 244 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 245 | can_add_filter(2, 0x1A0); //1A0h - Engine information |
Just4pLeisure | 4:682d96ff6d79 | 246 | can_add_filter(2, 0x280); //280h - Pedals, reverse gear |
Just4pLeisure | 4:682d96ff6d79 | 247 | can_add_filter(2, 0x290); //290h - Steering wheel and SID buttons |
Just4pLeisure | 4:682d96ff6d79 | 248 | can_add_filter(2, 0x2F0); //2F0h - Vehicle speed |
Just4pLeisure | 4:682d96ff6d79 | 249 | can_add_filter(2, 0x320); //320h - Doors, central locking and seat belts |
Just4pLeisure | 4:682d96ff6d79 | 250 | can_add_filter(2, 0x370); //370h - Mileage |
Just4pLeisure | 4:682d96ff6d79 | 251 | can_add_filter(2, 0x3A0); //3A0h - Vehicle speed |
Just4pLeisure | 4:682d96ff6d79 | 252 | can_add_filter(2, 0x3B0); //3B0h - Head lights |
Just4pLeisure | 4:682d96ff6d79 | 253 | can_add_filter(2, 0x3E0); //3E0h - Automatic Gearbox |
Just4pLeisure | 4:682d96ff6d79 | 254 | can_add_filter(2, 0x410); //410h - Light dimmer and light sensor |
Just4pLeisure | 4:682d96ff6d79 | 255 | can_add_filter(2, 0x430); //430h - SID beep request (interesting for Knock indicator?) |
Just4pLeisure | 4:682d96ff6d79 | 256 | can_add_filter(2, 0x460); //460h - Engine rpm and speed |
Just4pLeisure | 4:682d96ff6d79 | 257 | can_add_filter(2, 0x4A0); //4A0h - Steering wheel, Vehicle Identification Number |
Just4pLeisure | 4:682d96ff6d79 | 258 | can_add_filter(2, 0x520); //520h - ACC, inside temperature |
Just4pLeisure | 4:682d96ff6d79 | 259 | can_add_filter(2, 0x530); //530h - ACC |
Just4pLeisure | 4:682d96ff6d79 | 260 | can_add_filter(2, 0x5C0); //5C0h - Coolant temperature, air pressure |
Just4pLeisure | 4:682d96ff6d79 | 261 | can_add_filter(2, 0x630); //630h - Fuel usage |
Just4pLeisure | 4:682d96ff6d79 | 262 | can_add_filter(2, 0x640); //640h - Mileage |
Just4pLeisure | 4:682d96ff6d79 | 263 | can_add_filter(2, 0x7A0); //7A0h - Outside temperature |
Just4pLeisure | 4:682d96ff6d79 | 264 | return TERM_OK; |
Just4pLeisure | 4:682d96ff6d79 | 265 | case CMD_FILTER_T8: |
Just4pLeisure | 4:682d96ff6d79 | 266 | can_reset_filters(); |
Just4pLeisure | 4:682d96ff6d79 | 267 | can_add_filter(2, 0x645); //645h - CIM |
Just4pLeisure | 4:682d96ff6d79 | 268 | can_add_filter(2, 0x7E0); //7E0h - |
Just4pLeisure | 4:682d96ff6d79 | 269 | can_add_filter(2, 0x7E8); //7E8h - |
Just4pLeisure | 4:682d96ff6d79 | 270 | can_add_filter(2, 0x311); //311h - |
Just4pLeisure | 4:682d96ff6d79 | 271 | can_add_filter(2, 0x5E8); //5E8h - |
Just4pLeisure | 4:682d96ff6d79 | 272 | //can_add_filter(2, 0x101); //101h - |
Just4pLeisure | 4:682d96ff6d79 | 273 | return TERM_OK; |
Just4pLeisure | 1:d5452e398b76 | 274 | } |
Just4pLeisure | 1:d5452e398b76 | 275 | break; |
Just4pLeisure | 1:d5452e398b76 | 276 | } |
Just4pLeisure | 1:d5452e398b76 | 277 | |
Just4pLeisure | 1:d5452e398b76 | 278 | // unknown command |
Just4pLeisure | 1:d5452e398b76 | 279 | return TERM_ERR; |
Just4pLeisure | 1:d5452e398b76 | 280 | } |