CC1000Control.nc
上传用户:joranyuan
上传日期:2022-06-23
资源大小:3306k
文件大小:7k
源码类别:

网络

开发平台:

Others

  1. /* tab:4
  2.  *
  3.  *
  4.  * "Copyright (c) 2000-2002 The Regents of the University  of California.  
  5.  * All rights reserved.
  6.  *
  7.  * Permission to use, copy, modify, and distribute this software and its
  8.  * documentation for any purpose, without fee, and without written agreement is
  9.  * hereby granted, provided that the above copyright notice, the following
  10.  * two paragraphs and the author appear in all copies of this software.
  11.  * 
  12.  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
  13.  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  14.  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
  15.  * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  16.  * 
  17.  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  18.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  19.  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  20.  * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
  21.  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
  22.  *
  23.  */
  24. /* tab:4
  25.  *  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.  By
  26.  *  downloading, copying, installing or using the software you agree to
  27.  *  this license.  If you do not agree to this license, do not download,
  28.  *  install, copy or use the software.
  29.  *
  30.  *  Intel Open Source License 
  31.  *
  32.  *  Copyright (c) 2002 Intel Corporation 
  33.  *  All rights reserved. 
  34.  *  Redistribution and use in source and binary forms, with or without
  35.  *  modification, are permitted provided that the following conditions are
  36.  *  met:
  37.  * 
  38.  * Redistributions of source code must retain the above copyright
  39.  *  notice, this list of conditions and the following disclaimer.
  40.  * Redistributions in binary form must reproduce the above copyright
  41.  *  notice, this list of conditions and the following disclaimer in the
  42.  *  documentation and/or other materials provided with the distribution.
  43.  *      Neither the name of the Intel Corporation nor the names of its
  44.  *  contributors may be used to endorse or promote products derived from
  45.  *  this software without specific prior written permission.
  46.  *  
  47.  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  48.  *  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  49.  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  50.  *  PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE INTEL OR ITS
  51.  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  52.  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  53.  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  54.  *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  55.  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  56.  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  57.  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  58.  * 
  59.  * 
  60.  */
  61. /*
  62.  *
  63.  * Authors: Philip Buonadonna, Jaein Jeong
  64.  * Date last modified:  $Revision: 1.1.1.1 $
  65.  *
  66.  * Interface for CC1000 specific controls and signals
  67.  */
  68. /**
  69.  * CC1000 Radio Control interface.
  70.  */
  71. interface CC1000Control
  72. {
  73.   /**
  74.    * Tune the radio to one of the frequencies available in the CC1K_Params table.
  75.    * Calling Tune will allso reset the rfpower and LockVal selections to the table 
  76.    * values. 
  77.    * 
  78.    * @param freq The index into the CC1K_Params table that holds the desired preset
  79.    * frequency parameters.
  80.    * 
  81.    * @return Status of the Tune operation.
  82.    */
  83.   command result_t TunePreset(uint8_t freq); 
  84.   /**
  85.    * Tune the radio to a given frequency. Since the CC1000 uses a digital
  86.    * frequency synthesizer, it cannot tune to just an arbitrary frequency.
  87.    * This routine will determine the closest achievable channel, compute 
  88.    * the necessary parameters and tune the radio.
  89.    * 
  90.    * @param The desired channel frequency, in Hz.
  91.    * 
  92.    * @return The actual computed channel frequency, in Hz.  A return value
  93.    * of '0' indicates that no frequency was computed and the radio was not
  94.    * tuned.
  95.    */
  96.   command uint32_t TuneManual(uint32_t DesiredFreq);
  97.   /**
  98.    * Shift the CC1000 Radio into transmit mode.
  99.    *
  100.    * @return SUCCESS if the radio was successfully switched to TX mode.
  101.    */
  102.   async command result_t TxMode();
  103.   /**
  104.    * Shift the CC1000 Radio in receive mode.
  105.    *
  106.    * @return SUCCESS if the radio was successfully switched to RX mode.
  107.    */
  108.   async command result_t RxMode();
  109.   /**
  110.    * Turn off the BIAS power on the CC1000 radio, but leave the core 
  111.    * and crystal oscillator powered.  This will result in approximately
  112.    * a 750 uA power savings. 
  113.    *
  114.    * @return SUCCESS when the BIAS powered is shutdown.
  115.    */
  116.   command result_t BIASOff();
  117.   /**
  118.    * Turn the BIAS power on. This function must be followed by a call
  119.    * to either RxMode() or TxMode() to place the radio in a recieve/transmit
  120.    * state respectively. There is approximately a 200us delay when restoring
  121.    * BIAS power.
  122.    *
  123.    * @return SUCCESS when BIAS power has been restored.
  124.    */
  125.   command result_t BIASOn();
  126.   /**
  127.    * Set the transmit RF power value.  The input value is simply an arbitrary
  128.    * index that is programmed into the CC1000 registers.  Consult the CC1000
  129.    * datasheet for the resulting power output/current consumption values.
  130.    *
  131.    * @param power A power index between 1 and 255.
  132.    * 
  133.    * @result SUCCESS if the radio power was adequately set.
  134.    *
  135.    */
  136.   command result_t SetRFPower(uint8_t power);
  137.   /**
  138.    * Get the present RF power index.
  139.    *
  140.    * @result The power index value.
  141.    */
  142.   command uint8_t  GetRFPower();
  143.   /** 
  144.    * Select the signal to monitor at the CHP_OUT pin of the CC1000.  See the
  145.    * CC1000 data sheet for the available signals.
  146.    * 
  147.    * @param LockVal The index of the signal to monitor at the CHP_OUT pin
  148.    * 
  149.    * @result SUCCESS if the selected signal was programmed into the CC1000
  150.    *
  151.    */
  152.   command result_t SelectLock(uint8_t LockVal); 
  153.   /**
  154.    * Get the binary value from the CHP_OUT pin.  Analog signals cannot be read using
  155.    * function.
  156.    *
  157.    * @result 1 - Pin is high or 0 - Pin is low
  158.    *
  159.    */
  160.   command uint8_t  GetLock();
  161.   /**
  162.    * Returns whether the present frequency set is using high-side LO injection or not.  
  163.    * This information is used to determine if the data from the CC1000 needs to be inverted
  164.    * or not. 
  165.    *
  166.    * @result TRUE if high-side LO injection is being used (i.e. data does NOT need to be inverted
  167.    * at the receiver.
  168.    */
  169.   command bool    GetLOStatus(); // Query if frequency set LO side. High side LO = TRUE
  170. }