stm32: can: Add support for getting the message timestamp.
Provide an optional parameter to receive the timestamp in
This commit is contained in:
parent
fac1013ccb
commit
98ff5c23aa
@ -670,7 +670,7 @@ int can_transmit(uint32_t canport, uint32_t id, bool ext, bool rtr,
|
||||
uint8_t length, uint8_t *data);
|
||||
void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
||||
bool *ext, bool *rtr, uint32_t *fmi, uint8_t *length,
|
||||
uint8_t *data);
|
||||
uint8_t *data, uint16_t *timestamp);
|
||||
|
||||
void can_fifo_release(uint32_t canport, uint8_t fifo);
|
||||
bool can_available_mailbox(uint32_t canport);
|
||||
|
@ -469,10 +469,12 @@ void can_fifo_release(uint32_t canport, uint8_t fifo)
|
||||
@param[out] fmi Unsigned int32 pointer. ID of the matched filter.
|
||||
@param[out] length Unsigned int8 pointer. Length of message payload.
|
||||
@param[out] data Unsigned int8[]. Message payload data.
|
||||
@param[out] timestamp. Pointer to store the message timestamp.
|
||||
Only valid on time triggered CAN. Use NULL to ignore.
|
||||
*/
|
||||
void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
||||
bool *ext, bool *rtr, uint32_t *fmi, uint8_t *length,
|
||||
uint8_t *data)
|
||||
uint8_t *data, uint16_t *timestamp)
|
||||
{
|
||||
uint32_t fifo_id = 0;
|
||||
union {
|
||||
@ -513,6 +515,11 @@ void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
||||
* memory to the fast internal RAM
|
||||
*/
|
||||
|
||||
if (timestamp) {
|
||||
*timestamp = (CAN_RDTxR(canport, fifo_id) &
|
||||
CAN_RDTxR_TIME_MASK) >> CAN_RDTxR_TIME_SHIFT;
|
||||
}
|
||||
|
||||
rdlxr.data32 = CAN_RDLxR(canport, fifo_id);
|
||||
rdhxr.data32 = CAN_RDHxR(canport, fifo_id);
|
||||
/* */
|
||||
|
Loading…
x
Reference in New Issue
Block a user