stm32: can: Add support for getting the message timestamp.

Provide an optional parameter to receive the timestamp in
This commit is contained in:
Fabián Inostroza 2016-10-12 02:04:13 -03:00 committed by Karl Palsson
parent fac1013ccb
commit 98ff5c23aa
2 changed files with 9 additions and 2 deletions

View File

@ -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);

View File

@ -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);
/* */