Mercurial > public > ostc4
diff Discovery/Src/tComm.c @ 464:05c5c3d10902 Improve_Logtansfer
Added compile switch to handle additional data during raw header request:
Beeside the pure header also the number of the last dive is of interested. Added compile switch to stay compatible with tools which might use the raw header command
Added commands to support read and write acces to sample buffer
author | ideenmodellierer |
---|---|
date | Mon, 13 Apr 2020 16:00:54 +0200 |
parents | dddfe7917131 |
children | 5387e684d797 |
line wrap: on
line diff
--- a/Discovery/Src/tComm.c Sun Apr 12 21:02:34 2020 +0200 +++ b/Discovery/Src/tComm.c Mon Apr 13 16:00:54 2020 +0200 @@ -589,6 +589,7 @@ uint8_t aTxBuffer[128]; uint8_t aRxBuffer[68]; uint8_t answer; + uint16_t index; aTxBuffer[0] = type; aTxBuffer[1] = prompt4D4C(receiveStartByteUart); uint8_t tempHigh, tempLow; @@ -665,6 +666,8 @@ case 0x85: // hw read entire logbook memory case 0x86: // hw overwrite entire logbook memory case 0x87: // hw ext_flash_repair_SPECIAL_dive_numbers_starting_count_with memory(x) + case 0x88: /* read entire sample memory */ + case 0x89: /* write entire sample memory */ #endif case 0xC1: // Start low-level bootloader @@ -885,14 +888,25 @@ for(int i=0;i<8;i++) HAL_UART_Transmit(&UartHandle, (uint8_t *)(logCopyDataPtr + (0x8000 * i)), (uint16_t)0x8000,60000); releaseFrame(98,logCopyDataPtr); +#ifdef SEND_DATA_DETAILS + HAL_UART_Transmit(&UartHandle, (uint8_t*)&pSettings->lastDiveLogId, 1,60000); +#endif break; case 0x86: aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); logCopyDataPtr = getFrame(98); for(int i=0;i<8;i++) + { HAL_UART_Receive(&UartHandle, (uint8_t *)(logCopyDataPtr + (0x8000 * i)), (uint16_t)0x8000,60000); + } ext_flash_write_header_memory((uint8_t *)logCopyDataPtr); +#ifdef SEND_DATA_DETAILS + if(HAL_UART_Receive(&UartHandle, (uint8_t *)(logCopyDataPtr + (0x8000 * 8)), (uint16_t)0x01,60000) == HAL_OK) /* receive lastlogID */ + { + pSettings->lastDiveLogId = *(uint8_t*)(logCopyDataPtr + (0x40000)); + } +#endif releaseFrame(98,logCopyDataPtr); break; @@ -906,6 +920,39 @@ ext_flash_repair_SPECIAL_dive_numbers_starting_count_with(totalDiveCount.u16bit); aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); break; + case 0x88: + aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); + logCopyDataPtr = getFrame(98); + + for(index = 0; index <384; index++) /* transmit in 32k blocks */ + { + ext_flash_read_sample_memory((uint8_t *)logCopyDataPtr, index); + if(HAL_UART_Transmit(&UartHandle, (uint8_t *)(logCopyDataPtr), (uint16_t)0x8000,60000) != HAL_OK) + { + break; + } + } + releaseFrame(98,logCopyDataPtr); + HAL_UART_Transmit(&UartHandle, (uint8_t*)&pSettings->logFlashNextSampleStartAddress, 4,60000); /* send next sample pos */ + break; + case 0x89: + aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); + logCopyDataPtr = getFrame(98); + + for(index = 0; index <384; index++) /* transmit in 32k blocks 384*/ + { + + if(HAL_UART_Receive(&UartHandle, (uint8_t *)(logCopyDataPtr), (uint16_t)0x8000,60000) != HAL_OK) + { + break; + } + ext_flash_write_sample_memory((uint8_t *)logCopyDataPtr, index); + } + + releaseFrame(98,logCopyDataPtr); + HAL_UART_Receive(&UartHandle, (uint8_t*)&pSettings->logFlashNextSampleStartAddress, 4,60000); /* send next sample pos */ + break; + #endif }