Мне нужно логировать данные. Вот пишу универсальный логер. Натраиваю куда писать (SD, Flash, UART) и какие данные писать. Я планирую передавать указатель на переменную или структуру которые надо логировать. Но как быть дальше? Данные надо сериализовать (упаковать в массив) для передачи дальше. И тут я застрял.
Код
void LOG_Send(uint32_t storage, void *data, uint32_t size)
{
char buf[size]; //size of data???
uint32_t i = 0;
while (data)
{
buf[i++] = (char *)(*data++);
}
switch (storage)
{
case SD:
SD_Log("log.txt", buf);
break;
case FLASH:
Flash_Log(log_addr, buf);
break;
case UART:
UART_SendString(UART2, buf);
break;
}
}
В строке buf[i++] = (char *)(*data++); ругается на приведение типов.