DEBUGP_STATUS_FLAG(stat);
if (stat & RC632_STAT_ERR) {
u_int8_t err;
- rc632_reg_read(handle, RC632_REG_ERROR_FLAG, &err);
+ ret = rc632_reg_read(handle, RC632_REG_ERROR_FLAG, &err);
+ if (ret < 0)
+ return ret;
DEBUGP_ERROR_FLAG(err);
if (err & (RC632_ERR_FLAG_COL_ERR |
RC632_ERR_FLAG_PARITY_ERR |
ret = rc632_reg_read(handle, RC632_REG_INTERRUPT_RQ, &foo);
DEBUGP_INTERRUPT_FLAG("irq_rq",foo);
/* clear all interrupts */
- rc632_clear_irqs(handle, 0xff);
+ ret = rc632_clear_irqs(handle, 0xff);
+ if (ret < 0)
+ return ret;
}
}
if (cmd == 0) {
rc632_reg_read(handle, RC632_REG_CHANNEL_REDUNDANCY, &tmp);
//return 0;
- return -1;
+ return -EIO;
}
return rc632_fifo_read(handle, *rx_len, rx_buf);
ret = rc632_transceive(handle, (u_int8_t *)acf, acf_len,
(u_int8_t *) resp, rx_len,
iso15693_timing[rate][ISO15693_T1], 0);
- if (ret == -ETIMEDOUT)
+ if (ret == -ETIMEDOUT || ret == -EIO)
return ret;
/* determine whether there was a collission */
*bit_of_col = boc;
} else {
*bit_of_col = 0;
+ if (error_flag & RC632_ERR_FLAG_CRC_ERR)
+ return -EIO;
}
return 0;