CAN: Reduce nesting level via code transformations.

This commit is contained in:
Uwe Hermann 2010-12-26 00:34:14 +01:00
parent 06d1a5ca80
commit 571c4d37d0
2 changed files with 93 additions and 95 deletions

View File

@ -150,10 +150,10 @@ void sys_tick_handler(void)
static int temp32 = 0; static int temp32 = 0;
static u8 data[8] = {0, 1, 2, 0, 0, 0, 0, 0}; static u8 data[8] = {0, 1, 2, 0, 0, 0, 0, 0};
temp32++;
/* We call this handler every 1ms so 1000ms = 1s on/off. */ /* We call this handler every 1ms so 1000ms = 1s on/off. */
if (temp32 == 1000) { if (++temp32 != 1000)
return;
temp32 = 0; temp32 = 0;
/* Transmit CAN frame. */ /* Transmit CAN frame. */
@ -171,7 +171,6 @@ void sys_tick_handler(void)
gpio_set(GPIOB, GPIO1); /* LED3 off */ gpio_set(GPIOB, GPIO1); /* LED3 off */
} }
} }
}
void usb_lp_can_rx0_isr(void) void usb_lp_can_rx0_isr(void)
{ {

View File

@ -31,9 +31,8 @@ void can_reset(u32 canport)
} }
} }
int can_init(u32 canport, int can_init(u32 canport, bool ttcm, bool abom, bool awum, bool nart,
bool ttcm, bool abom, bool awum, bool nart, bool rflm, bool txfp, bool rflm, bool txfp, u32 sjw, u32 ts1, u32 ts2, u32 brp)
u32 sjw, u32 ts1, u32 ts2, u32 brp)
{ {
u32 wait_ack = 0x00000000; u32 wait_ack = 0x00000000;
u32 can_msr_inak_timeout = 0x0000FFFF; u32 can_msr_inak_timeout = 0x0000FFFF;
@ -52,9 +51,9 @@ int can_init(u32 canport,
} }
/* Check the acknowledge. */ /* Check the acknowledge. */
if ((CAN_MSR(canport) & CAN_MSR_INAK) != CAN_MSR_INAK) { if ((CAN_MSR(canport) & CAN_MSR_INAK) != CAN_MSR_INAK)
ret = 1; return 1;
} else {
/* Set the automatic bus-off management. */ /* Set the automatic bus-off management. */
if (ttcm) if (ttcm)
CAN_MCR(canport) |= CAN_MCR_TTCM; CAN_MCR(canport) |= CAN_MCR_TTCM;
@ -102,7 +101,6 @@ int can_init(u32 canport,
if ((CAN_MSR(canport) & CAN_MSR_INAK) == CAN_MSR_INAK) if ((CAN_MSR(canport) & CAN_MSR_INAK) == CAN_MSR_INAK)
ret = 1; ret = 1;
}
return ret; return ret;
} }
@ -209,7 +207,10 @@ int can_transmit(u32 canport, u32 id, bool ext, bool rtr, u8 length, u8 *data)
ret = -1; ret = -1;
} }
if (ret != -1) { /* Check if we have an empty mailbox. */ /* Check if we have an empty mailbox. */
if (ret == -1)
return ret;
if (ext) { if (ext) {
/* Set extended ID. */ /* Set extended ID. */
CAN_TIxR(canport, mailbox) |= id << CAN_TIxR_EXID_SHIFT; CAN_TIxR(canport, mailbox) |= id << CAN_TIxR_EXID_SHIFT;
@ -238,12 +239,10 @@ int can_transmit(u32 canport, u32 id, bool ext, bool rtr, u8 length, u8 *data)
for (i = 0; (i < 4) && (i < length); i++) for (i = 0; (i < 4) && (i < length); i++)
CAN_TDLxR(canport, mailbox) |= (u32)data[i] << (8 * i); CAN_TDLxR(canport, mailbox) |= (u32)data[i] << (8 * i);
for (i = 4; (i < 8) && (i < length); i++) for (i = 4; (i < 8) && (i < length); i++)
CAN_TDHxR(canport, mailbox) CAN_TDHxR(canport, mailbox) |= (u32)data[i] << (8 * (i - 4));
|= (u32)data[i] << (8 * (i - 4));
/* Request transmission. */ /* Request transmission. */
CAN_TIxR(canport, mailbox) |= CAN_TIxR_TXRQ; CAN_TIxR(canport, mailbox) |= CAN_TIxR_TXRQ;
}
return ret; return ret;
} }