Ejemplo n.º 1
0
/**
 * @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;
}
Ejemplo n.º 2
0
/**
 * @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;
}
Ejemplo n.º 3
0
/**
 * @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;
}