/* * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * * Copyright (C) SEMTECH S.A. */ /*! * \file sx1276-Hal.c * \brief SX1276 Hardware Abstraction Layer * * \version 2.0.B2 * \date Nov 21 2012 * \author Miguel Luis * * Last modified by Miguel Luis on Jun 19 2013 */ #include "platform.h" #if defined( USE_SX1276_RADIO ) #include "myRadio_gpio.h" #include "sx1276-Hal.h" void SX1276SetReset( uint8_t state ) { // GPIO_InitTypeDef GPIO_InitStructure; if( state == RADIO_RESET_ON ) { // Set RESET pin to 0 RF_SX1278_RESET_L(); } else { RF_SX1278_RESET_H(); } } void SX1276Write( uint8_t addr, uint8_t data ) { SX1276WriteBuffer( addr, &data, 1 ); } void SX1276Read( uint8_t addr, uint8_t *data ) { SX1276ReadBuffer( addr, data, 1 ); } void SX1276WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ) { addr=addr|0x80; BOARD_SPI_NSS_L(); //NSS = 0; SpiReadWrite(addr); SpiWriteData(buffer, size); BOARD_SPI_NSS_H();//NSS = 1; } void SX1276ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ) { addr=addr&0x7F; BOARD_SPI_NSS_L();//NSS = 0; SpiReadWrite(addr); SpiReadData(buffer, size); BOARD_SPI_NSS_H();//NSS = 1; } void SX1276WriteFifo( uint8_t *buffer, uint8_t size ) { SX1276WriteBuffer( 0, buffer, size ); } void SX1276ReadFifo( uint8_t *buffer, uint8_t size ) { SX1276ReadBuffer( 0, buffer, size ); } inline uint8_t SX1276ReadDio0( void ) { return READ_RF_SX1278_DIO0(); } inline uint8_t SX1276ReadDio1( void ) { return READ_RF_SX1278_DIO1(); } inline uint8_t SX1276ReadDio2( void ) { return READ_RF_SX1278_DIO2(); } inline uint8_t SX1276ReadDio3( void ) { // return IoePinGet( RF_DIO3_PIN ); return READ_RF_SX1278_DIO3(); } inline uint8_t SX1276ReadDio4( void ) { // return IoePinGet( RF_DIO4_PIN ); return READ_RF_SX1278_DIO4(); } inline uint8_t SX1276ReadDio5( void ) { // return IoePinGet( RF_DIO5_PIN ); return READ_RF_SX1278_DIO5(); } inline void SX1276WriteRxTx( uint8_t txEnable ) { if( txEnable != 0 ) { // IoePinOn( FEM_CTX_PIN ); // IoePinOff( FEM_CPS_PIN ); } else { // IoePinOff( FEM_CTX_PIN ); // IoePinOn( FEM_CPS_PIN ); } } #endif // USE_SX1276_RADIO