Пример #1
0
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;
}
Пример #2
0
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();
}
Пример #3
0
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();
}
Пример #4
0
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;
}
Пример #5
0
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();
}