1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request #7714 from OTAkeys/pr/conn_can_raw_fix

conn_can: fix conn_can_raw_send and improve doc
This commit is contained in:
Alexandre Abadie 2017-10-13 12:09:40 +02:00 committed by GitHub
commit 52d08ca565
2 changed files with 9 additions and 2 deletions

View File

@ -153,12 +153,11 @@ int conn_can_raw_send(conn_can_raw_t *conn, const struct can_frame *frame, int f
int timeout = 5;
while (1) {
mbox_get(&conn->mbox, &msg);
xtimer_remove(&timer);
switch (msg.type) {
case CAN_MSG_TX_ERROR:
xtimer_remove(&timer);
return -EIO;
case CAN_MSG_TX_CONFIRMATION:
xtimer_remove(&timer);
if ((int)msg.content.value == handle) {
DEBUG("conn_can_raw_send: frame sent correctly\n");
return 0;
@ -170,6 +169,7 @@ int conn_can_raw_send(conn_can_raw_t *conn, const struct can_frame *frame, int f
break;
case _TIMEOUT_TX_MSG_TYPE:
DEBUG("conn_can_raw_send: timeout\n");
raw_can_abort(conn->ifnum, handle);
return -ETIMEDOUT;
break;
default:
@ -178,6 +178,7 @@ int conn_can_raw_send(conn_can_raw_t *conn, const struct can_frame *frame, int f
if (!timeout--) {
return -EINTR;
}
xtimer_set(&timer, CONN_CAN_RAW_TIMEOUT_TX_CONF);
break;
}
}

View File

@ -72,6 +72,8 @@ typedef struct conn_can_raw {
* @param[in] ifnum can device Interface
* @param[in] flags conn flags to set (CONN_CAN_RECVONLY)
*
* @post @p filter must remain allocated until @p conn is closed
*
* @return 0 if socket was successfully connected
* @return any other negative number in case of an error
*/
@ -123,6 +125,10 @@ int conn_can_raw_send(conn_can_raw_t *conn, const struct can_frame *frame, int f
* @param[in] filter list of filters to set
* @param[in] count number of filters in @p filter
*
* @pre previously set filters must be allocated until the end of the call
* @post @p filter must remain allocated until @p conn is closed or
* conn_can_raw_set_filter() is called
*
* @return 0 if can filters were successfully set
* @return any other negative number in case of an error
*/