diff options
author | px4dev <px4@purgatory.org> | 2013-07-05 16:34:44 -0700 |
---|---|---|
committer | px4dev <px4@purgatory.org> | 2013-07-05 16:34:44 -0700 |
commit | e55a37697d56bfbec3bcd1febc9f0e185663f45d (patch) | |
tree | 3cae2c1e28c2afbf4fb2157a00da1ef6fc143e30 /src/modules/px4iofirmware/serial.c | |
parent | d83323d4a28c0beb9686bd28193344b6b3079f00 (diff) | |
download | px4-firmware-e55a37697d56bfbec3bcd1febc9f0e185663f45d.tar.gz px4-firmware-e55a37697d56bfbec3bcd1febc9f0e185663f45d.tar.bz2 px4-firmware-e55a37697d56bfbec3bcd1febc9f0e185663f45d.zip |
Always send and expect a reply for every message.
Diffstat (limited to 'src/modules/px4iofirmware/serial.c')
-rw-r--r-- | src/modules/px4iofirmware/serial.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/modules/px4iofirmware/serial.c b/src/modules/px4iofirmware/serial.c index 4eef99d9f..c109cb57f 100644 --- a/src/modules/px4iofirmware/serial.c +++ b/src/modules/px4iofirmware/serial.c @@ -192,7 +192,6 @@ rx_dma_callback(DMA_HANDLE handle, uint8_t status, void *arg) perf_count(pc_rx); /* default to not sending a reply */ - bool send_reply = false; if (dma_packet.count & PKT_CTRL_WRITE) { dma_packet.count &= ~PKT_CTRL_WRITE; @@ -217,7 +216,6 @@ rx_dma_callback(DMA_HANDLE handle, uint8_t status, void *arg) count = MAX_RW_REGS; /* copy reply registers into DMA buffer */ - send_reply = true; memcpy((void *)&dma_packet.regs[0], registers, count); dma_packet.count = count; } @@ -228,20 +226,18 @@ rx_dma_callback(DMA_HANDLE handle, uint8_t status, void *arg) dma_reset(); /* if we have a reply to send, start that now */ - if (send_reply) { - stm32_dmasetup( - tx_dma, - (uint32_t)&rDR, - (uint32_t)&dma_packet, - sizeof(dma_packet), /* XXX cut back to actual transmit size */ - DMA_CCR_DIR | - DMA_CCR_MINC | - DMA_CCR_PSIZE_8BITS | - DMA_CCR_MSIZE_8BITS); - sending = true; - stm32_dmastart(tx_dma, tx_dma_callback, NULL, false); - rCR3 |= USART_CR3_DMAT; - } + stm32_dmasetup( + tx_dma, + (uint32_t)&rDR, + (uint32_t)&dma_packet, + sizeof(dma_packet), /* XXX cut back to actual transmit size */ + DMA_CCR_DIR | + DMA_CCR_MINC | + DMA_CCR_PSIZE_8BITS | + DMA_CCR_MSIZE_8BITS); + sending = true; + stm32_dmastart(tx_dma, tx_dma_callback, NULL, false); + rCR3 |= USART_CR3_DMAT; } static int |