static int step1 (pixma_t * s) { int error, tmo; error = activate (s, 0); if (error < 0) return error; error = query_status (s); if (error < 0) return error; if (s->param->source == PIXMA_SOURCE_ADF && !has_paper (s)) return PIXMA_ENO_PAPER; error = activate_cs (s, 0); /*SIM*/ if (error < 0) return error; error = activate_cs (s, 0x20); if (error < 0) return error; tmo = 60; error = calibrate_cs (s); while (error == PIXMA_EBUSY && --tmo >= 0) { if (s->cancel) return PIXMA_ECANCELED; PDBG (pixma_dbg (2, "Scanner is busy. Timed out in %d sec.\n", tmo + 1)); pixma_sleep (1000000); error = calibrate_cs (s); } return error; }
void rf_reg_write(rf_dev *dev, uint8_t reg, uint8_t val) { uint8_t tmp = reg | 0xC0; activate_cs(); dev->state = spi_xchng_byte(dev, tmp);// & 0x1F; tmp = spi_xchng_byte(dev, val); /* dummy read */ deactivate_cs(); }
void rf_frame_write(rf_dev* dev, uint8_t* frame, uint8_t len) { uint8_t tmp = 0x60; activate_cs(); dev->state = spi_xchng_byte(dev, tmp);// & 0x1F; tmp = spi_xchng_byte(dev, len); /* dummy read */ while(len--) tmp = spi_xchng_byte(dev, *frame++); /* dummy read */ deactivate_cs(); }
uint8_t rf_reg_read(rf_dev *dev, uint8_t reg) { uint8_t tmp = reg | 0x80; activate_cs(); dev->state = spi_xchng_byte(dev, tmp);// & 0x1F; tmp = spi_xchng_byte(dev, 0x00); /* dummy write */ deactivate_cs(); return tmp; }
void rf_frame_read(rf_dev* dev, uint8_t* buff) { uint8_t tmp = 0x20; activate_cs(); dev->state = spi_xchng_byte(dev, tmp);// & 0x1F; tmp = spi_xchng_byte(dev, 0x00); /* PHR (PSDU LEN) in tmp */ *buff++ = tmp; /* put PHR into buffer */ while(tmp--) *buff++ = spi_xchng_byte(dev, 0x00); /* data read */ *buff++ = spi_xchng_byte(dev, 0x00); /* LQI read */ *buff++ = spi_xchng_byte(dev, 0x00); /* ED read */ *buff = spi_xchng_byte(dev, 0x00); /* RX_STATUS read */ deactivate_cs(); }