Sille Van Landschoot / LMiC

Dependents:   Simple-LoRaWAN

Fork of LMiC by Semtech

Revision:
1:d3b7bde3995c
Parent:
0:62d1edcc13d1
Child:
2:974cafbfb159
Child:
3:519c71d29a06
diff -r 62d1edcc13d1 -r d3b7bde3995c hal/hal.cpp
--- a/hal/hal.cpp	Thu Jan 22 12:50:49 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    IBM Zurich Research Lab - initial API, implementation and documentation
- *    Semtech Apps Team       - Modified to support the MBED sx1276 driver
- *                              library.
- *                              Possibility to use original or Semtech's MBED
- *                              radio driver. The selection is done by setting
- *                              USE_SMTC_RADIO_DRIVER preprocessing directive
- *                              in lmic.h
- *******************************************************************************/
-#include "mbed.h"
-#include "lmic.h"
-#include "mbed_debug.h"
-
-#if USE_SMTC_RADIO_DRIVER
-
-#else
-
-extern void radio_irq_handler( u1_t dio );
-
-static DigitalOut nss( D10 );
-static SPI spi( D11, D12, D13 ); // ( mosi, miso, sclk )
- 
-static DigitalInOut rst( A0 );
-static DigitalOut rxtx( A4 );
- 
-static InterruptIn dio0( D2 );
-static InterruptIn dio1( D3 );
-static InterruptIn dio2( D4 ); 
-
-static void dio0Irq( void )
-{
-    radio_irq_handler( 0 );
-}
-
-static void dio1Irq( void )
-{
-    radio_irq_handler( 1 );
-}
-static void dio2Irq( void )
-{
-    radio_irq_handler( 2 );
-}
-
-#endif
-
-static u1_t irqlevel = 0;
-static u4_t ticks = 0;
-
-static Timer timer;
-static Ticker ticker;
-
-static void reset_timer( void )
-{
-    ticks += timer.read_us( ) >> 6;
-    timer.reset( );
-}
-
-void hal_init( void )
-{
-     __disable_irq( );
-     irqlevel = 0;
-
-#if USE_SMTC_RADIO_DRIVER
-
-#else
-    // configure input lines
-    dio0.mode( PullDown );
-    dio0.rise( dio0Irq );
-    dio0.enable_irq( );
-    dio1.mode( PullDown );   
-    dio1.rise( dio1Irq );
-    dio1.enable_irq( );
-    dio2.mode( PullDown );
-    dio2.rise( dio2Irq );
-    dio2.enable_irq( );
-    // configure reset line
-    rst.input( );
-    // configure spi
-    spi.frequency( 8000000 );
-    spi.format( 8, 0 );
-    nss = 1;
-#endif
-    // configure timer
-    timer.start( );
-    ticker.attach_us( reset_timer, 10000000 ); // reset timer every 10sec
-     __enable_irq( );
-}
-
-#if USE_SMTC_RADIO_DRIVER
-
-#else
-
-void hal_pin_rxtx( u1_t val )
-{
-    rxtx = !val;
-}
-
-void hal_pin_nss( u1_t val )
-{
-    nss = val;
-}
-
-void hal_pin_rst( u1_t val )
-{
-    if( val == 0 || val == 1 )
-    { // drive pin
-        rst.output( );
-        rst = val;
-    } 
-    else
-    { // keep pin floating
-        rst.input( );
-    }
-}
-
-u1_t hal_spi( u1_t out )
-{
-    return spi.write( out );
-}
-
-#endif
-
-void hal_disableIRQs( void )
-{
-    __disable_irq( );
-    irqlevel++;
-}
-
-void hal_enableIRQs( void )
-{
-    if( --irqlevel == 0 )
-    {
-        __enable_irq( );
-    }
-}
-
-void hal_sleep( void )
-{
-    // NOP
-}
-
-u4_t hal_ticks( void )
-{
-    hal_disableIRQs( );
-    int t = ticks + ( timer.read_us( ) >> 6 );
-    hal_enableIRQs( );
-    return t;
-}
-
-static u2_t deltaticks( u4_t time )
-{
-    u4_t t = hal_ticks( );
-    s4_t d = time - t;
-    if( d <= 0 )
-    {
-        return 0;    // in the past
-    }
-    if( ( d >> 16 ) != 0 )
-    {
-        return 0xFFFF; // far ahead
-    }
-    return ( u2_t )d;
-}
-
-void hal_waitUntil( u4_t time )
-{
-    while( deltaticks( time ) != 0 ); // busy wait until timestamp is reached
-}
-
-u1_t hal_checkTimer( u4_t time )
-{
-    return ( deltaticks( time ) < 2 );
-}
-
-void hal_failed( void )
-{
-    while( 1 );
-}
-
-//////////////////////////////////////////////////////////////////////
-// DEBUG CODE BELOW (use CFG_DEBUG)
-//////////////////////////////////////////////////////////////////////
-#ifdef CFG_DEBUG
-
-void debug_init( void )
-{
-    // print banner
-    debug( "\r\n============== DEBUG STARTED ==============\r\n" );
-}
-
-void debug_char( u1_t c )
-{
-    debug( "%c", c );
-}
-
-void debug_hex( u1_t b )
-{
-    debug( "%02X", b );
-}
-
-void debug_buf( const u1_t* buf, u2_t len )
-{
-    while( len-- )
-    {
-        debug_hex( *buf++ );
-        debug_char( ' ' );
-    }
-    debug_char( '\r' );
-    debug_char( '\n' );
-}
-
-void debug_uint( u4_t v )
-{
-    for( s1_t n = 24; n >= 0; n -= 8 )
-    {
-        debug_hex( v >> n );
-    }
-}
-
-void debug_str( const u1_t* str )
-{
-    while( *str )
-    {
-        debug_char( *str++ );
-    }
-}
-
-void debug_val( const u1_t* label, u4_t val )
-{
-    debug_str( label );
-    debug_uint( val );
-    debug_char( '\r' );
-    debug_char( '\n' );
-}
-
-void debug_led( u1_t val )
-{
-    debug_val( "LED = ", val );
-}
-
-void debug_event( int ev ) 
-{
-    static const u1_t* evnames[] = 
-    {
-        [EV_SCAN_TIMEOUT]   = "SCAN_TIMEOUT",
-        [EV_BEACON_FOUND]   = "BEACON_FOUND",
-        [EV_BEACON_MISSED]  = "BEACON_MISSED",
-        [EV_BEACON_TRACKED] = "BEACON_TRACKED",
-        [EV_JOINING]        = "JOINING",
-        [EV_JOINED]         = "JOINED",
-        [EV_RFU1]           = "RFU1",
-        [EV_JOIN_FAILED]    = "JOIN_FAILED",
-        [EV_REJOIN_FAILED]  = "REJOIN_FAILED",
-        [EV_TXCOMPLETE]     = "TXCOMPLETE",
-        [EV_LOST_TSYNC]     = "LOST_TSYNC",
-        [EV_RESET]          = "RESET",
-        [EV_RXCOMPLETE]     = "RXCOMPLETE",
-        [EV_LINK_DEAD]      = "LINK_DEAD",
-        [EV_LINK_ALIVE]     = "LINK_ALIVE",
-    };
-    debug( "%s\r\n", evnames[ev] );
-}
-#endif // CFG_DEBUG