diff --git a/lib/rmap.c b/lib/rmap.c index b1d9624df1d45a8f86b1ce769241f58951db0e76..c95d2a7919d5b6c5d1c9994421cbbdad5bd5b288 100644 --- a/lib/rmap.c +++ b/lib/rmap.c @@ -469,7 +469,7 @@ int rmap_build_hdr(struct rmap_pkt *pkt, uint8_t *hdr) hdr[n++] = (uint8_t) (pkt->addr >> 16); hdr[n++] = (uint8_t) (pkt->addr >> 8); hdr[n++] = (uint8_t) pkt->addr; /* data addr LSB */ - } else if (pkt->ri.cmd & (RMAP_CMD_BIT_WRITE | RMAP_CMD_BIT_REPLY)) { + } else if (!pkt->ri.cmd_resp && pkt->ri.cmd & RMAP_CMD_BIT_WRITE) { /* all headers have data length unless they are a write reply */ return n; } @@ -551,8 +551,7 @@ struct rmap_pkt *rmap_pkt_from_buffer(uint8_t *buf) } /* all headers have data length unless they are a write reply */ - if (((pkt->ri.cmd ^ (RMAP_CMD_BIT_WRITE | RMAP_CMD_BIT_REPLY)) - & (RMAP_CMD_BIT_WRITE | RMAP_CMD_BIT_REPLY))) { + if (!(!pkt->ri.cmd_resp && (pkt->ri.cmd & (RMAP_CMD_BIT_WRITE)))) { pkt->data_len = ((uint32_t) buf[RMAP_DATALEN_BYTE0 + n] << 16) | ((uint32_t) buf[RMAP_DATALEN_BYTE1 + n] << 8) | @@ -656,7 +655,7 @@ static void rmap_process_read_reply(uint8_t *pkt) len |= ((uint32_t) pkt[RMAP_DATALEN_BYTE1]) << 8; len |= ((uint32_t) pkt[RMAP_DATALEN_BYTE2]) << 0; - printf("\tData length is %ld bytes:\n\t", len); + printf("\tData length is %u bytes:\n\t", len); for (i = 0; i < len; i++)