aboutsummaryrefslogtreecommitdiff
path: root/src/modules/px4iofirmware/serial.c
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2013-07-05 16:34:44 -0700
committerpx4dev <px4@purgatory.org>2013-07-05 16:34:44 -0700
commite55a37697d56bfbec3bcd1febc9f0e185663f45d (patch)
tree3cae2c1e28c2afbf4fb2157a00da1ef6fc143e30 /src/modules/px4iofirmware/serial.c
parentd83323d4a28c0beb9686bd28193344b6b3079f00 (diff)
downloadpx4-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.c28
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