Example #1
0
void
rfm12_ask_2272_send(uint8_t *command, uint8_t delay, uint8_t cnt)
{
  uint8_t code[49];

  for(uint8_t i=0;i<3;i++)
  {
    rfm12_ask_encode_tribit(code, i*16, command[i], 8);
  }
  code[48]=7; //sync
  rfm12_prologue ();
  rfm12_trans(0x8200|(1<<5)|(1<<4)|(1<<3));   // 2. PwrMngt TX on
  for(uint8_t ii=cnt;ii>0;ii--)               // Sequenz cnt send
  {
    wdt_kick();
    uint8_t rfm12_trigger_level=0;
    for(uint8_t i=0;i<49;i++)
    {
      rfm12_ask_trigger(rfm12_trigger_level^=1,code[i]*delay);
    }
    rfm12_ask_trigger(0,24*delay);
  }
  rfm12_trans(0x8208);                        // 2. PwrMngt TX off
  rfm12_epilogue ();
}
Example #2
0
void
rfm12_ask_tevion_send(uint8_t * housecode, uint8_t * command, uint8_t delay, uint8_t cnt)
{
  uint8_t code[41];

  for(uint8_t i=0;i<3;i++)
  {
    rfm12_ask_encode_byte(code, i*8, housecode[i], 8);
  }
  code[24]=((housecode[2] & (1<<0))>0 ?6:12);
  for(uint8_t i=0;i<2;i++)
  {
    rfm12_ask_encode_byte(code, (i*8)+25, command[i], 8);
  }
  rfm12_prologue ();
  rfm12_trans(0x8200|(1<<5)|(1<<4)|(1<<3));   // 2. PwrMngt TX on
  for(uint8_t ii=cnt;ii>0;ii--)               // Sequenz cnt send
  {
    wdt_kick();
    uint8_t rfm12_trigger_level=0;
    for(uint8_t i=0;i<41;i++)
    {
      rfm12_ask_trigger(rfm12_trigger_level^=1,code[i]*delay);
    }
    rfm12_ask_trigger(0,24*delay);
  }
  rfm12_trans(0x8208);                        // 2. PwrMngt TX off
  rfm12_epilogue ();
}
Example #3
0
static void
rfm12_ask_2272_1527_send(uint8_t * command, uint8_t delay, uint8_t cnt,
                         const uint8_t * duty_factor)
{
  uint8_t code[49];
  uint8_t *p = code;

  for (uint8_t i = 0; i < 3; i++)
  {
    uint8_t byte = command[i];
    for (uint8_t mask = 0x80; mask; mask >>= 1)
    {
      if (byte & mask)
      {
        *p++ = pgm_read_byte(duty_factor);
        *p++ = pgm_read_byte(duty_factor + 1);
      }
      else
      {
        *p++ = pgm_read_byte(duty_factor + 2);
        *p++ = pgm_read_byte(duty_factor + 3);
      }
    }
  }
  *p = 7;                 // sync

  rfm12_prologue();
  rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_ET | RFM12_PWRMGT_ES |
              RFM12_PWRMGT_EX);
  for (uint8_t ii = cnt; ii > 0; ii--)
  {
    wdt_kick();
    uint8_t rfm12_trigger_level = 0;
    for (uint8_t i = 0; i < 49; i++)
    {
      rfm12_ask_trigger(rfm12_trigger_level ^= 1, code[i] * delay);
    }
    rfm12_ask_trigger(0, 24 * delay);
  }
  rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_EX);
  rfm12_epilogue();
}
Example #4
0
void
rfm12_ask_tevion_send(uint8_t * housecode, uint8_t * command, uint8_t delay,
                      uint8_t cnt)
{
  uint8_t code[41];
  uint8_t *p = code;

  for (uint8_t i = 0; i < 3; i++)
  {
    uint8_t byte = housecode[i];
    for (uint8_t mask = 0x80; mask; mask >>= 1)
    {
      *p++ = byte & mask ? 12 : 6;
    }
  }
  *p++ = housecode[2] & 1 ? 6 : 12;
  for (uint8_t i = 0; i < 2; i++)
  {
    uint8_t byte = command[i];
    for (uint8_t mask = 0x80; mask; mask >>= 1)
    {
      *p++ = byte & mask ? 12 : 6;
    }
  }

  rfm12_prologue();
  rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_ET | RFM12_PWRMGT_ES |
              RFM12_PWRMGT_EX);
  for (uint8_t ii = cnt; ii > 0; ii--)
  {
    wdt_kick();
    uint8_t rfm12_trigger_level = 0;
    for (uint8_t i = 0; i < 41; i++)
    {
      rfm12_ask_trigger(rfm12_trigger_level ^= 1, code[i] * delay);
    }
    rfm12_ask_trigger(0, 24 * delay);
  }
  rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_EX);
  rfm12_epilogue();
}
Example #5
0
static void
rfm12_ask_intertechno_send_bit(const uint8_t bit)
{
  rfm12_ask_trigger(1, INTERTECHNO_PERIOD);
  rfm12_ask_trigger(0, 3 * INTERTECHNO_PERIOD);
  if (bit)
  {
    rfm12_ask_trigger(1, 3 * INTERTECHNO_PERIOD);
    rfm12_ask_trigger(0, INTERTECHNO_PERIOD);
  }
  else
  {
    rfm12_ask_trigger(1, INTERTECHNO_PERIOD);
    rfm12_ask_trigger(0, 3 * INTERTECHNO_PERIOD);
  }
}
Example #6
0
static void
rfm12_ask_intertechno_send_sync(void)
{
  rfm12_ask_trigger(1, INTERTECHNO_PERIOD);
  rfm12_ask_trigger(0, 31 * INTERTECHNO_PERIOD);
}