void ELM327::formatQueryArray(uint8_t service, uint16_t pid, uint8_t num_responses) Description: ------------ * Creates a query stack to be sent to ELM327 Inputs: ------- * uint16_t service - Service number of the queried PID * uint32_t pid - PID number of the queried PID * uint8_t num_responses - see function header for "queryPID()" Return: ------- * void */
| 208 | * void |
| 209 | */ |
| 210 | void ELM327::formatQueryArray(const uint8_t& service, |
| 211 | const uint16_t& pid, |
| 212 | const uint8_t& num_responses) |
| 213 | { |
| 214 | if (debugMode) |
| 215 | { |
| 216 | Serial.print(F("Service: ")); |
| 217 | Serial.println(service); |
| 218 | Serial.print(F("PID: ")); |
| 219 | Serial.println(pid); |
| 220 | } |
| 221 | |
| 222 | isMode0x22Query = (service == 0x22 && pid <= 0xFF); // mode 0x22 responses always zero-pad the pid to 4 chars, even for a 2-char pid |
| 223 | |
| 224 | query[0] = ((service >> 4) & 0xF) + '0'; |
| 225 | query[1] = (service & 0xF) + '0'; |
| 226 | |
| 227 | // determine PID length (standard queries have 16-bit PIDs, |
| 228 | // but some custom queries have PIDs with 32-bit values) |
| 229 | if (pid & 0xFF00) |
| 230 | { |
| 231 | if (debugMode) |
| 232 | Serial.println(F("Long query detected")); |
| 233 | |
| 234 | longQuery = true; |
| 235 | |
| 236 | query[2] = ((pid >> 12) & 0xF) + '0'; |
| 237 | query[3] = ((pid >> 8) & 0xF) + '0'; |
| 238 | query[4] = ((pid >> 4) & 0xF) + '0'; |
| 239 | query[5] = (pid & 0xF) + '0'; |
| 240 | |
| 241 | if (specifyNumResponses) |
| 242 | { |
| 243 | if (num_responses > 0xF) |
| 244 | { |
| 245 | query[6] = ((num_responses >> 4) & 0xF) + '0'; |
| 246 | query[7] = (num_responses & 0xF) + '0'; |
| 247 | query[8] = '\0'; |
| 248 | |
| 249 | upper(query, 8); |
| 250 | } |
| 251 | else |
| 252 | { |
| 253 | query[6] = (num_responses & 0xF) + '0'; |
| 254 | query[7] = '\0'; |
| 255 | query[8] = '\0'; |
| 256 | |
| 257 | upper(query, 7); |
| 258 | } |
| 259 | } |
| 260 | else |
| 261 | { |
| 262 | query[6] = '\0'; |
| 263 | query[7] = '\0'; |
| 264 | query[8] = '\0'; |
| 265 | |
| 266 | upper(query, 6); |
| 267 | } |
nothing calls this directly
no outgoing calls
no test coverage detected