Rev 3 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3 | Rev 4 | ||
|---|---|---|---|
| Line 105... | Line 105... | ||
| 105 | uint32_t TxMailbox; |
105 | uint32_t TxMailbox; |
| 106 | 106 | ||
| 107 | char const version[] = "$PDGY,Mike_James_Converter_#00001_Mode:15\r\n"; |
107 | char const version[] = "$PDGY,Mike_James_Converter_#00001_Mode:15\r\n"; |
| 108 | char const keepawake[] = "$PDGY,000000,1,,4,%ld.%03ld,,,\r\n"; |
108 | char const keepawake[] = "$PDGY,000000,1,,4,%ld.%03ld,,,\r\n"; |
| 109 | 109 | ||
| - | 110 | // Allocation of serial buffer sizes and storage |
|
| - | 111 | #define TX_BUFFER_SIZE 512 |
|
| - | 112 | #define RX_BUFFER_SIZE 16 |
|
| - | 113 | uint8_t tx_buffer[TX_BUFFER_SIZE]; |
|
| - | 114 | uint8_t rx_buffer[RX_BUFFER_SIZE]; |
|
| - | 115 | ||
| 110 | // reset a search context |
116 | // reset a search context |
| 111 | void resetContext(contextType *c) |
117 | void resetContext(contextType *c) |
| 112 | { |
118 | { |
| 113 | c->payloadRemaining = 0; // number of bytes remaining |
119 | c->payloadRemaining = 0; // number of bytes remaining |
| 114 | c->payloadTotal = 0; // number total number of bytes |
120 | c->payloadTotal = 0; // number total number of bytes |
| Line 265... | Line 271... | ||
| 265 | 271 | ||
| 266 | void processCmd(char *buff, int len) |
272 | void processCmd(char *buff, int len) |
| 267 | { |
273 | { |
| 268 | buff[len] = 0; // terminate in case of error |
274 | buff[len] = 0; // terminate in case of error |
| 269 | char lineBuff[100]; |
275 | char lineBuff[100]; |
| 270 | int pos = small_sprintf(lineBuff, "$PDGY,ACK,%s\r\n", buff + 6); |
276 | int pos = small_sprintf(lineBuff, "$PDGY,ACK,%s\r\n", buff); |
| 271 | if (pos < SerialTransmitSpace(&uc1)) |
277 | if (pos < SerialTransmitSpace(&uc1)) |
| 272 | { |
278 | { |
| 273 | __disable_irq(); |
279 | __disable_irq(); |
| 274 | sendString(&uc1, (char *)lineBuff, pos); |
280 | sendString(&uc1, (char *)lineBuff, pos); |
| 275 | __enable_irq(); |
281 | __enable_irq(); |
| Line 312... | Line 318... | ||
| 312 | MX_SPI1_Init(); |
318 | MX_SPI1_Init(); |
| 313 | /* USER CODE BEGIN 2 */ |
319 | /* USER CODE BEGIN 2 */ |
| 314 | 320 | ||
| 315 | HAL_CAN_Start(&hcan); |
321 | HAL_CAN_Start(&hcan); |
| 316 | 322 | ||
| 317 | init_usart_ctl(&uc1, &huart1); |
323 | init_usart_ctl(&uc1, &huart1, |
| - | 324 | tx_buffer, |
|
| - | 325 | rx_buffer, |
|
| - | 326 | TX_BUFFER_SIZE, |
|
| - | 327 | RX_BUFFER_SIZE); |
|
| 318 | 328 | ||
| 319 | EnableSerialRxInterrupt(&uc1); |
329 | EnableSerialRxInterrupt(&uc1); |
| 320 | 330 | ||
| 321 | // Activate the notification |
331 | // Activate the notification |
| 322 | HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING); |
332 | HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING); |
| Line 325... | Line 335... | ||
| 325 | sendString(&uc1, (char *)version, sizeof(version)); |
335 | sendString(&uc1, (char *)version, sizeof(version)); |
| 326 | 336 | ||
| 327 | uint32_t sendTime = HAL_GetTick() + 1000; |
337 | uint32_t sendTime = HAL_GetTick() + 1000; |
| 328 | char cmdBuff[100]; |
338 | char cmdBuff[100]; |
| 329 | 339 | ||
| 330 | // serial utils library command editor |
340 | // serial utils library command editor |
| 331 | editBuffer cmdEdit; |
341 | editBuffer cmdEdit; |
| 332 | 342 | ||
| 333 | initReadLine( &cmdEdit, cmdBuff, 100, READLINES_CR); |
343 | initReadLine(&cmdEdit, cmdBuff, 100, READLINES_CR); |
| 334 | 344 | ||
| 335 | for (int i = 0; i < CONTEXTS; ++i) |
345 | for (int i = 0; i < CONTEXTS; ++i) |
| 336 | resetContext(&contexts[i]); |
346 | resetContext(&contexts[i]); |
| 337 | 347 | ||
| 338 | /* USER CODE END 2 */ |
348 | /* USER CODE END 2 */ |
| Line 343... | Line 353... | ||
| 343 | { |
353 | { |
| 344 | /* USER CODE END WHILE */ |
354 | /* USER CODE END WHILE */ |
| 345 | 355 | ||
| 346 | /* USER CODE BEGIN 3 */ |
356 | /* USER CODE BEGIN 3 */ |
| 347 | 357 | ||
| 348 | editBufferReturn ret = readLine(&uc1, &cmdEdit); |
358 | editBufferReturn ret = readLine(&uc1, &cmdEdit); |
| 349 | 359 | ||
| 350 | if (ret == EDIT_CR) |
360 | if (ret == EDIT_CR) |
| 351 | { |
361 | { |
| 352 | processCmd (cmdBuff,charCount(&cmdEdit)); |
362 | processCmd(cmdBuff, charCount(&cmdEdit)); |
| - | 363 | resetInput(&cmdEdit); |
|
| 353 | } |
364 | } |
| 354 | 365 | ||
| 355 | if (HAL_GetTick() > sendTime) |
366 | if (HAL_GetTick() > sendTime) |
| 356 | { |
367 | { |
| 357 | sendTime += 1000; |
368 | sendTime += 1000; |
| 358 | heartBeat(); |
369 | heartBeat(); |