tda5250regcommp.nc

来自「tinyos-2.x.rar」· NC 代码 · 共 112 行

NC
112
字号
/*
 * Copyright (c) 2004, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - 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.
 * - Neither the name of the Technische Universitaet Berlin 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.
 *
 * - Description ---------------------------------------------------------
 * - Revision -------------------------------------------------------------
 * $Revision: 1.4 $
 * $Date: 2006/12/12 18:23:13 $
 * @author Kevin Klues (klues@tkn.tu-berlin.de)
 * ========================================================================
 */

module Tda5250RegCommP {
  provides {
    interface Init;
    interface Tda5250RegComm;
    interface Resource;
  }
  uses {
    interface GeneralIO as BusM;
    interface Resource as SpiResource;
    interface SpiByte;
  }
}

implementation {

   command error_t Init.init() {
     // setting pins to output
     call BusM.makeOutput();

     //initializing pin values
     call BusM.set();  //Use SPI for writing to Regs

     return SUCCESS;
   }

   async command error_t Resource.request() {
     return call SpiResource.request();
   }

   async command error_t Resource.immediateRequest() {
     if(call SpiResource.immediateRequest() == EBUSY)
       return EBUSY;
     return SUCCESS;
   }

   async command bool Resource.isOwner() {
     return call SpiResource.isOwner();
   }

   async command error_t Resource.release() {
     return call SpiResource.release();
   }

   event void SpiResource.granted() {
     signal Resource.granted();
   }

   async command error_t Tda5250RegComm.writeByte(uint8_t address, uint8_t data) {
     if(call SpiResource.isOwner() == FALSE) {
       return FAIL;
     }
     call SpiByte.write(address);
     call SpiByte.write(data);
     return SUCCESS;
   }
   
   async command error_t Tda5250RegComm.writeWord(uint8_t address, uint16_t data) {
      if(call SpiResource.isOwner() == FALSE)
        return FAIL;
      call SpiByte.write(address);
      call SpiByte.write(((uint8_t) (data >> 8)));
      call SpiByte.write(((uint8_t) data));
      return SUCCESS;
   }

   async command uint8_t Tda5250RegComm.readByte(uint8_t address){
      if(call SpiResource.isOwner() == FALSE)
        return 0x00;
      call SpiByte.write(address);

      // FIXME: Put SIMO/SOMI in input
      return call SpiByte.write(0x00);
   }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?