예제 #1
0
int16_t
parse_cmd_rfm12_ask_2272_send (char *cmd, char *output, uint16_t len)
{
  (void) output;
  (void) len;

  uint8_t command[3];
  uint8_t delay = 74;
  uint8_t cnt = 10;
#ifdef TEENSY_SUPPORT
  while (*cmd == ' ')
    cmd++;
  command[0] = getIntFromString (cmd);
  while (*cmd != ',')
    cmd++;
  cmd++;
  command[1] = getIntFromString (cmd);
  while (*cmd != ',')
    cmd++;
  cmd++;
  command[2] = getIntFromString (cmd);
  while (*cmd != ' ')
    cmd++;
  cmd++;
  delay = getIntFromString (cmd);
  while (*cmd != ' ')
    cmd++;
  cmd++;
  cnt = getIntFromString (cmd);
  int ret = 5;
#else
  int ret = sscanf_P (cmd, PSTR ("%hhu,%hhu,%hhu %hhu %hhu"), &(command[0]),
		      &(command[1]), &(command[2]), &delay, &cnt);
#endif
  RFM12_DEBUG ("ps cmd %u,%u,%u d %u s %u", command[0], command[1],
	       command[2], delay, cnt);
  if (ret < 3)
    return ECMD_ERR_PARSE_ERROR;

  rfm12_ask_2272_send (command, delay, cnt);
  return ECMD_FINAL_OK;
}
예제 #2
0
파일: rfm12_net.c 프로젝트: AnDann/ethersex
void
rfm12_net_init(void)
{
  /* wait until POR done */
  for (uint8_t i = 15; i; i--)
    _delay_ms(10);

  rfm12_prologue(RFM12_MODULE_IP);

  rfm12_trans(RFM12_CMD_LBDMCD | 0xE0);
  rfm12_trans(RFM12BAND(CONF_RFM12_FREQ));
  rfm12_trans(RFM12_CMD_DATAFILTER | RFM12_DATAFILTER_AL | 0x03);
  rfm12_trans(RFM12_CMD_FIFORESET | 0x80 | RFM12_FIFORESET_DR);
  rfm12_trans(RFM12_CMD_WAKEUP);
  rfm12_trans(RFM12_CMD_DUTYCYCLE);
  rfm12_trans(RFM12_CMD_AFC | 0xF7);

#ifdef CONF_RFM12B_SUPPORT
  rfm12_trans(0xCED4);          /* Set Sync=2DD4 */
  rfm12_trans(0xCC16);          /* pll bandwitdh 0: max bitrate 86.2kHz */
#endif

#ifdef DEBUG
  uint16_t result = rfm12_trans(RFM12_CMD_STATUS);
  RFM12_DEBUG("rfm12_net/init: %x", result);
#endif

#ifdef RFM12_DISABLE
  rfm12_trans(RFM12_CMD_PWRMGT);
#else
#ifdef TEENSY_SUPPORT
  rfm12_trans(RFM12_CMD_FREQUENCY | RFM12FREQ(CONF_RFM12_FREQ));
  rfm12_trans(RFM12_CMD_RXCTRL | 0x04ac);
  rfm12_trans(RFM12_CMD_DATARATE | 0x10);
  rfm12_trans(RFM12_CMD_TXCONF | 0x20);
#else
  rfm12_setfreq(RFM12FREQ(CONF_RFM12_FREQ));
  rfm12_setbandwidth(5, 1, 4);
  rfm12_setbaud(CONF_RFM12_BAUD / 100);
  rfm12_setpower(0, 2);
#endif /* not TEENSY_SUPPORT */

#ifdef STATUSLED_RFM12_RX_SUPPORT
  PIN_CLEAR(STATUSLED_RFM12_RX);
#endif
#ifdef STATUSLED_RFM12_TX_SUPPORT
  PIN_CLEAR(STATUSLED_RFM12_TX);
#endif

  rfm12_status = RFM12_OFF;
  rfm12_int_enable();
  rfm12_rxstart();

#ifdef DEBUG
  result = rfm12_trans(RFM12_CMD_STATUS);
  RFM12_DEBUG("rfm12_net/init'd: %x", result);
#endif
#endif /* !RFM12_DISABLE */

  rfm12_epilogue();
}