/** * @brief Callback for the buffer 2 software timer * @param None * @retval None */ static void prvBuffer2ClearTimerCallback() { /* Set the buffer to reading state */ prvRxBuffer2State = CANBufferState_Reading; /* Write the data to FLASH */ for (uint32_t i = 0; i < prvRxBuffer2Count; i++) { uint8_t* pData = (uint8_t*)&prvRxBuffer2[i]; /* ID - 4 bytes */ SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); /* DLC - 1 byte */ SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData)); /* Data - 0-8 bytes */ uint8_t dlc = *pData++; for (uint32_t n = 0; n < dlc; n++) { SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); } /* Update how many message we have saved */ prvCurrentSettings.numOfMessagesSaved++; } /* Reset the buffer */ prvRxBuffer2CurrentIndex = 0; prvRxBuffer2Count = 0; prvRxBuffer2State = CANBufferState_Writing; }
/** * @brief Callback for the buffer 2 software timer * @param None * @retval None */ static void prvBuffer2ClearTimerCallback() { /* Set the buffer to reading state */ prvRxBuffer2State = BUFFERState_Reading; /* Write the data to FLASH */ for (uint32_t i = 0; i < prvRxBuffer2Count; i++) SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, prvRxBuffer2[i]); /* TODO: Something strange with the FLASH page write so doing one byte at a time now */ // /* Write all the data in the buffer to SPI FLASH */ // SPI_FLASH_WriteBuffer(prvRxBuffer2, prvCurrentSettings.writeAddress, prvRxBuffer2Count); // /* Update the write address */ // prvCurrentSettings.writeAddress += prvRxBuffer2Count; /* Save how many bytes we saved */ prvCurrentSettings.amountOfDataSaved += prvRxBuffer2Count; /* Reset the buffer */ prvRxBuffer2CurrentIndex = 0; prvRxBuffer2Count = 0; prvRxBuffer2State = BUFFERState_Writing; }
/** * @brief Callback for the buffer 1 software timer * @param None * @retval None */ static void prvBuffer1ClearTimerCallback() { /* Set the buffer to reading state */ prvRxBuffer1State = CANBufferState_Reading; /* Write the data to FLASH */ for (uint32_t i = 0; i < prvRxBuffer1Count; i++) { uint8_t* pData = (uint8_t*)&prvRxBuffer1[i]; /* ID - 4 bytes */ SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); /* DLC - 1 byte */ SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData)); /* Data - 0-8 bytes */ uint8_t dlc = *pData++; for (uint32_t n = 0; n < dlc; n++) { SPI_FLASH_WriteByte(prvCurrentSettings.writeAddress++, *(pData++)); } /* Update how many message we have saved */ prvCurrentSettings.numOfMessagesSaved++; } /* TODO: Something strange with the FLASH page write so doing one byte at a time now */ // /* Write all the data in the buffer to SPI FLASH */ // SPI_FLASH_WriteBuffer(prvRxBuffer1, prvCurrentSettings.writeAddress, prvRxBuffer1Count); // /* Update the write address */ // prvCurrentSettings.writeAddress += prvRxBuffer1Count; /* Reset the buffer */ prvRxBuffer1CurrentIndex = 0; prvRxBuffer1Count = 0; prvRxBuffer1State = CANBufferState_Writing; }