/****************************************************************************
 * drivers/wireless/ISM2_905MHzGFSK250kbps.c
 *
 *   Copyright (C) 2011 Uros Platise. All rights reserved.
 *   Copyright (C) 2011 Ales Verbic.  All rights reserved.
 *
 *   Authors: Uros Platise <uros.platise@isotel.eu>
 *            Ales Verbic <ales.verbic@isotel.eu>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 ****************************************************************************/

/****************************************************************************
 * Included Files
 ****************************************************************************/

#include <nuttx/wireless/cc1101.h>

/****************************************************************************
 * Public Data
 ****************************************************************************/

/* Settings for 905 MHz, GFSK at 250kbps
 *
 * ISM Region 2 (America) only, Band 902–928 MHz
 *
 *   Cordless phones          1 W
 *   Microwave ovens        750 W
 *   Industrial heaters     100 kW
 *   Military radar        1000 kW
 *
 *   Deviation = 126.953125
 *   Base frequency = 901.999969
 *   Carrier frequency = 905.998993
 *   Channel number = 20
 *   Carrier frequency = 905.998993
 *   Modulated = true
 *   Modulation format = GFSK
 *   Manchester enable = false
 *   Sync word qualifier mode = 30/32 sync word bits detected
 *   Preamble count = 4
 *   Channel spacing = 199.951172
 *   Carrier frequency = 905.998993
 *   Data rate = 249.939
 *   RX filter BW = 541.666667
 *   Data format = Normal mode
 *   Length config = Variable packet length mode. Packet length configured
 *     by the first byte after sync word
 *   CRC enable = true
 *   Packet length = 61
 *   Device address = 0
 *   Address config = No address check
 *   CRC autoflush = false
 *   PA ramping = false
 *   TX power = 0
 */

const struct c1101_rfsettings_s cc1101_rfsettings_ISM2_433MHzMSK500kbps =
{
  .FIFOTHR  = 0x07,  /* FIFOTHR */
  .SYNC1    = 0x9b,  /* SYNC1 */
  .SYNC0    = 0xad,  /* SYNC0 */
  .PKTLEN   = 0xff,  /* PKTLEN */
  .PKTCTRL1 = 0x04,  /* Packet Automation Control */
  .PKTCTRL0 = 0x05,  /* Packet Automation Control */
  .ADDR     = 0xff,  /* ADDR */
  .CHANNR   = 0x00,  /* CHANNR */

  .FSCTRL1  = 0x0f,  /* FSCTRL1  Frequency Synthesizer Control */
  .FSCTRL0  = 0x00,  /* FSCTRL0  Frequency Synthesizer Control */

  .FREQ2    = 0x10,  /* FREQ2    Frequency Control Word, High Byte */
  .FREQ1    = 0xa7,  /* FREQ1    Frequency Control Word, Middle Byte */
  .FREQ0    = 0x62,  /* FREQ0    Frequency Control Word, Low Byte */

  .MDMCFG4  = 0x1e,  /* MDMCFG4  Modem Configuration */
  .MDMCFG3  = 0x3b,  /* MDMCFG3  Modem Configuration */
  .MDMCFG2  = 0x73,  /* MDMCFG2  Modem Configuration */
  .MDMCFG1  = 0x42,  /* MDMCFG1  Modem Configuration */
  .MDMCFG0  = 0xf8,  /* MDMCFG0  Modem Configuration */

  .DEVIATN  = 0x44,  /* DEVIATN  Modem Deviation Setting */
  .FOCCFG   = 0x16,  /* FOCCFG   Frequency Offset Compensation Configuration */

  .BSCFG    = 0x6c,  /* BSCFG    Bit Synchronization Configuration */

  .AGCCTRL2 = 0x45,  /* AGCCTRL2 AGC Control */
  .AGCCTRL1 = 0x40,  /* AGCCTRL1 AGC Control */
  .AGCCTRL0 = 0x91,  /* AGCCTRL0 AGC Control */

  .FREND1   = 0x56,  /* FREND1   Front End RX Configuration */
  .FREND0   = 0x10,  /* FREND0   Front End TX Configuration */

  .FSCAL3   = 0xea,  /* FSCAL3   Frequency Synthesizer Calibration */
  .FSCAL2   = 0x2a,  /* FSCAL2   Frequency Synthesizer Calibration */
  .FSCAL1   = 0x00,  /* FSCAL1   Frequency Synthesizer Calibration */
  .FSCAL0   = 0x1f,  /* FSCAL0   Frequency Synthesizer Calibration */

  .CHMIN    = 0,     /* VERIFY REGULATIONS! */
  .CHMAX    = 0xff,

  .PAMAX    = 8,     /* 0 means power OFF, 8 represents PA[7] */
  .PA       =
  {
    0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  }
};