Why is this a byte pointer instead of a LOG_DATA_T pointer? And if it was a LOG_DATA_T pointer, would we need a length since length is fixed at 32 bytes?
I believe most if not all of these will be floats for the caller of this function. You're forcing caller to cast to U16 and then you're casting them back.