Ejemplo n.º 1
0
static void tx_ack() {
  // wait for ack timeslot
  last_frame_end += TAG_ACK_WAIT;
  legic_prng_forward(TAG_ACK_WAIT/TAG_BIT_PERIOD - 1);
  while(GetCountSspClk() < last_frame_end) { };

  // transmit ack (ack is not encrypted)
  tx_bit(true);
  legic_prng_forward(1);

  // disable subcarrier
  LOW(GPIO_SSC_DOUT);
}
Ejemplo n.º 2
0
Archivo: sci.c Proyecto: histat/dc-np2
unsigned char spi_slow_wr(register unsigned char data)
{
  register int cnt;
    
  for (cnt = 0; cnt < 8; cnt++) {
    tx_bit(data & MSB);
    delay1u5();
    cts_bit(1);		/* SPI clock ON */
    data = (data << 1) | rx_bit();	/* SPI data input */
    delay1u5();
    cts_bit(0);		/* SPI clock OFF */
  }
  return(data);
}
Ejemplo n.º 3
0
static void tx_frame(uint32_t frame, uint8_t len) {
  // wait for next tx timeslot
  last_frame_end += TAG_FRAME_WAIT;
  legic_prng_forward(TAG_FRAME_WAIT/TAG_BIT_PERIOD - 1);
  while(GetCountSspClk() < last_frame_end) { };

  // transmit frame, MSB first
  for(uint8_t i = 0; i < len; ++i) {
    bool bit = (frame >> i) & 0x01;
    tx_bit(bit ^ legic_prng_get_bit());
    legic_prng_forward(1);
  };

  // disable subcarrier
  LOW(GPIO_SSC_DOUT);
}