Contiki 2.6

hal.h File Reference

This file contains low-level radio driver code. More...

#include <stdint.h>
#include <stdbool.h>
#include "contiki-conf.h"

Go to the source code of this file.

Data Structures

struct  hal_rx_frame_t
 This struct defines the rx data container. More...

Defines

#define HAL_SS_HIGH()   (HAL_PORT_SS |= ( 1 << HAL_SS_PIN ))
 MACRO for pulling SS high.
#define HAL_SS_LOW()   (HAL_PORT_SS &= ~( 1 << HAL_SS_PIN ))
 MACRO for pulling SS low.
#define HAL_ENABLE_RADIO_INTERRUPT()   ( INT1IC.BYTE |= 1 )
 Macros defined for HAL_TIMER1.
#define HAL_ENTER_CRITICAL_REGION()   MULLE_ENTER_CRITICAL_REGION( )
 This macro will protect the following code from interrupts.
#define HAL_LEAVE_CRITICAL_REGION()   MULLE_LEAVE_CRITICAL_REGION( )
 This macro must always be used in conjunction with HAL_ENTER_CRITICAL_REGION so that interrupts are enabled again.
#define hal_enable_trx_interrupt()   HAL_ENABLE_RADIO_INTERRUPT( )
 Enable the interrupt from the radio transceiver.
#define hal_disable_trx_interrupt()   HAL_DISABLE_RADIO_INTERRUPT( )
 Disable the interrupt from the radio transceiver.
This is the list of pin configurations needed for a given platform.

Change these values to port to other platforms.

#define RAVENUSB_C   1
#define RAVEN_D   2
#define RCB_B   3
#define ZIGBIT   4
#define IRIS   5
#define ATMEGA128RFA1   6
#define SSPORT   SPIPORT
#define SCKPORT   SPIPORT
#define MOSIPORT   SPIPORT
#define MISOPORT   SPIPORT
Pin macros

These macros convert the platform-specific pin defines into names and functions that the source code can directly use.

#define SLP_TR   SLPTRPIN
 Pin number that corresponds to the SLP_TR pin.
#define DDR_SLP_TR   DDR( SLPTRPORT )
 Data Direction Register that corresponds to the port where SLP_TR is connected.
#define PORT_SLP_TR   PORT( SLPTRPORT )
 Port (Write Access) where SLP_TR is connected.
#define PIN_SLP_TR   PIN( SLPTRPORT )
 Pin (Read Access) where SLP_TR is connected.
#define hal_set_slptr_high()   ( PORT_SLP_TR |= ( 1 << SLP_TR ) )
 This macro pulls the SLP_TR pin high.
#define hal_set_slptr_low()   ( PORT_SLP_TR &= ~( 1 << SLP_TR ) )
 This macro pulls the SLP_TR pin low.
#define hal_get_slptr()   ( PIN_SLP_TR & ( 1 << SLP_TR ) )
 Read current state of the SLP_TR pin (High/Low).
#define RST   RSTPIN
 Pin number that corresponds to the RST pin.
#define DDR_RST   DDR( RSTPORT )
 Data Direction Register that corresponds to the port where RST is.
#define PORT_RST   PORT( RSTPORT )
 Port (Write Access) where RST is connected.
#define PIN_RST   PIN( RSTPORT /* BUG? */)
 Pin (Read Access) where RST is connected.
#define hal_set_rst_high()   ( PORT_RST |= ( 1 << RST ) )
 This macro pulls the RST pin high.
#define hal_set_rst_low()   ( PORT_RST &= ~( 1 << RST ) )
 This macro pulls the RST pin low.
#define hal_get_rst()   ( ( PIN_RST & ( 1 << RST ) ) >> RST )
 Read current state of the RST pin (High/Low).
#define HAL_SS_PIN   SSPIN
 The slave select pin.
#define HAL_SCK_PIN   SCKPIN
 Data bit for SCK.
#define HAL_MOSI_PIN   MOSIPIN
#define HAL_MISO_PIN   MISOPIN
#define HAL_PORT_SPI   PORT( SPIPORT )
 The SPI module is located on PORTB.
#define HAL_PORT_SS   PORT( SSPORT )
#define HAL_PORT_SCK   PORT( SCKPORT )
#define HAL_PORT_MOSI   PORT( MOSIPORT )
 The SPI module uses GPIO might be split on different ports.
#define HAL_PORT_MISO   PORT( MISOPORT )
 The SPI module uses GPIO might be split on different ports.
#define HAL_DDR_SPI   DDR( SPIPORT )
 Data Direction Register for PORTB.
#define HAL_DDR_SS   DDR( SSPORT )
 Data Direction Register for MISO GPIO pin.
#define HAL_DDR_SCK   DDR( SCKPORT )
 Data Direction Register for MISO GPIO pin.
#define HAL_DDR_MOSI   DDR( MOSIPORT )
 Data Direction Register for MISO GPIO pin.
#define HAL_DDR_MISO   DDR( MISOPORT )
 Data Direction Register for MOSI GPIO pin.
#define HAL_DD_SS   SSPIN
 Data Direction bit for SS.
#define HAL_DD_SCK   SCKPIN
 Data Direction bit for SCK.
#define HAL_DD_MOSI   MOSIPIN
 Data Direction bit for MOSI.
#define HAL_DD_MISO   MISOPIN
 Data Direction bit for MISO.
Macros for radio operation.
#define HAL_BAT_LOW_MASK   ( 0x80 )
 Mask for the BAT_LOW interrupt.
#define HAL_TRX_UR_MASK   ( 0x40 )
 Mask for the TRX_UR interrupt.
#define HAL_TRX_END_MASK   ( 0x08 )
 Mask for the TRX_END interrupt.
#define HAL_RX_START_MASK   ( 0x04 )
 Mask for the RX_START interrupt.
#define HAL_PLL_UNLOCK_MASK   ( 0x02 )
 Mask for the PLL_UNLOCK interrupt.
#define HAL_PLL_LOCK_MASK   ( 0x01 )
 Mask for the PLL_LOCK interrupt.
#define HAL_MIN_FRAME_LENGTH   ( 0x03 )
 A frame should be at least 3 bytes.
#define HAL_MAX_FRAME_LENGTH   ( 0x7F )
 A frame should no more than 127 bytes.

Typedefs

typedef void(* hal_rx_start_isr_event_handler_t )(uint32_t const isr_timestamp, uint8_t const frame_length)
 RX_START event handler callback type.
typedef void(* hal_trx_end_isr_event_handler_t )(uint32_t const isr_timestamp)
 RRX_END event handler callback type.

Functions

void hal_init (void)
 This function initializes the Hardware Abstraction Layer.
void hal_reset_flags (void)
 This function reset the interrupt flags and interrupt event handlers (Callbacks) to their default value.
uint8_t hal_get_bat_low_flag (void)
 This function returns the current value of the BAT_LOW flag.
void hal_clear_bat_low_flag (void)
 This function clears the BAT_LOW flag.
hal_trx_end_isr_event_handler_t hal_get_trx_end_event_handler (void)
 This function is used to set new TRX_END event handler, overriding old handler reference.
void hal_set_trx_end_event_handler (hal_trx_end_isr_event_handler_t trx_end_callback_handle)
 This function is used to set new TRX_END event handler, overriding old handler reference.
void hal_clear_trx_end_event_handler (void)
 Remove event handler reference.
hal_rx_start_isr_event_handler_t hal_get_rx_start_event_handler (void)
 This function returns the active RX_START event handler.
void hal_set_rx_start_event_handler (hal_rx_start_isr_event_handler_t rx_start_callback_handle)
 This function is used to set new RX_START event handler, overriding old handler reference.
void hal_clear_rx_start_event_handler (void)
 Remove event handler reference.
uint8_t hal_get_pll_lock_flag (void)
 This function returns the current value of the PLL_LOCK flag.
void hal_clear_pll_lock_flag (void)
 This function clears the PLL_LOCK flag.
uint8_t hal_register_read (uint8_t address)
 This function reset the interrupt flags and interrupt event handlers (Callbacks) to their default value.
void hal_register_write (uint8_t address, uint8_t value)
 This function writes a new value to one of the radio transceiver's registers.
uint8_t hal_subregister_read (uint8_t address, uint8_t mask, uint8_t position)
 This function reads the value of a specific subregister.
void hal_subregister_write (uint8_t address, uint8_t mask, uint8_t position, uint8_t value)
 This function writes a new value to one of the radio transceiver's subregisters.
void hal_frame_read (hal_rx_frame_t *rx_frame)
 Transfer a frame from the radio transceiver to a RAM buffer.
void hal_frame_write (uint8_t *write_buffer, uint8_t length)
 This function will download a frame to the radio transceiver's frame buffer.
void hal_sram_read (uint8_t address, uint8_t length, uint8_t *data)
 Read SRAM.
void hal_sram_write (uint8_t address, uint8_t length, uint8_t *data)
 Write SRAM.

Detailed Description

This file contains low-level radio driver code.

Id:
hal.h,v 1.5 2010/12/03 20:42:01 dak664 Exp

Definition in file hal.h.