LoRaWAN application using SX1272

Dependencies:   X_NUCLEO_IKS01A1 driver_mbed_TH02 LoRaWAN-lib-v1_0_1 SX1272Lib mbed

Fork of LoRaWAN-SX1272-Application-Demo by Uttam Bhat

Committer:
ubhat
Date:
Thu Apr 06 21:59:50 2017 +0000
Revision:
0:6cc76d70e2a1
LoRaWAN SX1272 Application

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ubhat 0:6cc76d70e2a1 1 /*
ubhat 0:6cc76d70e2a1 2 / _____) _ | |
ubhat 0:6cc76d70e2a1 3 ( (____ _____ ____ _| |_ _____ ____| |__
ubhat 0:6cc76d70e2a1 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
ubhat 0:6cc76d70e2a1 5 _____) ) ____| | | || |_| ____( (___| | | |
ubhat 0:6cc76d70e2a1 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
ubhat 0:6cc76d70e2a1 7 (C)2013 Semtech
ubhat 0:6cc76d70e2a1 8
ubhat 0:6cc76d70e2a1 9 Description: Helper functions implementation
ubhat 0:6cc76d70e2a1 10
ubhat 0:6cc76d70e2a1 11 License: Revised BSD License, see LICENSE.TXT file include in the project
ubhat 0:6cc76d70e2a1 12
ubhat 0:6cc76d70e2a1 13 Maintainer: Miguel Luis and Gregory Cristian
ubhat 0:6cc76d70e2a1 14 */
ubhat 0:6cc76d70e2a1 15 #include <stdlib.h>
ubhat 0:6cc76d70e2a1 16 #include <stdio.h>
ubhat 0:6cc76d70e2a1 17 #include "board.h"
ubhat 0:6cc76d70e2a1 18 #include "utilities.h"
ubhat 0:6cc76d70e2a1 19
ubhat 0:6cc76d70e2a1 20 /*!
ubhat 0:6cc76d70e2a1 21 * Redefinition of rand() and srand() standard C functions.
ubhat 0:6cc76d70e2a1 22 * These functions are redefined in order to get the same behavior across
ubhat 0:6cc76d70e2a1 23 * different compiler toolchains implementations.
ubhat 0:6cc76d70e2a1 24 */
ubhat 0:6cc76d70e2a1 25 // Standard random functions redefinition start
ubhat 0:6cc76d70e2a1 26 #define RAND_LOCAL_MAX 2147483647L
ubhat 0:6cc76d70e2a1 27
ubhat 0:6cc76d70e2a1 28 static uint32_t next = 1;
ubhat 0:6cc76d70e2a1 29
ubhat 0:6cc76d70e2a1 30 int32_t rand1( void )
ubhat 0:6cc76d70e2a1 31 {
ubhat 0:6cc76d70e2a1 32 return ( ( next = next * 1103515245L + 12345L ) % RAND_LOCAL_MAX );
ubhat 0:6cc76d70e2a1 33 }
ubhat 0:6cc76d70e2a1 34
ubhat 0:6cc76d70e2a1 35 void srand1( uint32_t seed )
ubhat 0:6cc76d70e2a1 36 {
ubhat 0:6cc76d70e2a1 37 next = seed;
ubhat 0:6cc76d70e2a1 38 }
ubhat 0:6cc76d70e2a1 39 // Standard random functions redefinition end
ubhat 0:6cc76d70e2a1 40
ubhat 0:6cc76d70e2a1 41 int32_t randr( int32_t min, int32_t max )
ubhat 0:6cc76d70e2a1 42 {
ubhat 0:6cc76d70e2a1 43 return ( int32_t )rand1( ) % ( max - min + 1 ) + min;
ubhat 0:6cc76d70e2a1 44 }
ubhat 0:6cc76d70e2a1 45
ubhat 0:6cc76d70e2a1 46 void memcpy1( uint8_t *dst, const uint8_t *src, uint16_t size )
ubhat 0:6cc76d70e2a1 47 {
ubhat 0:6cc76d70e2a1 48 while( size-- )
ubhat 0:6cc76d70e2a1 49 {
ubhat 0:6cc76d70e2a1 50 *dst++ = *src++;
ubhat 0:6cc76d70e2a1 51 }
ubhat 0:6cc76d70e2a1 52 }
ubhat 0:6cc76d70e2a1 53
ubhat 0:6cc76d70e2a1 54 void memcpyr( uint8_t *dst, const uint8_t *src, uint16_t size )
ubhat 0:6cc76d70e2a1 55 {
ubhat 0:6cc76d70e2a1 56 dst = dst + ( size - 1 );
ubhat 0:6cc76d70e2a1 57 while( size-- )
ubhat 0:6cc76d70e2a1 58 {
ubhat 0:6cc76d70e2a1 59 *dst-- = *src++;
ubhat 0:6cc76d70e2a1 60 }
ubhat 0:6cc76d70e2a1 61 }
ubhat 0:6cc76d70e2a1 62
ubhat 0:6cc76d70e2a1 63 void memset1( uint8_t *dst, uint8_t value, uint16_t size )
ubhat 0:6cc76d70e2a1 64 {
ubhat 0:6cc76d70e2a1 65 while( size-- )
ubhat 0:6cc76d70e2a1 66 {
ubhat 0:6cc76d70e2a1 67 *dst++ = value;
ubhat 0:6cc76d70e2a1 68 }
ubhat 0:6cc76d70e2a1 69 }
ubhat 0:6cc76d70e2a1 70
ubhat 0:6cc76d70e2a1 71 int8_t Nibble2HexChar( uint8_t a )
ubhat 0:6cc76d70e2a1 72 {
ubhat 0:6cc76d70e2a1 73 if( a < 10 )
ubhat 0:6cc76d70e2a1 74 {
ubhat 0:6cc76d70e2a1 75 return '0' + a;
ubhat 0:6cc76d70e2a1 76 }
ubhat 0:6cc76d70e2a1 77 else if( a < 16 )
ubhat 0:6cc76d70e2a1 78 {
ubhat 0:6cc76d70e2a1 79 return 'A' + ( a - 10 );
ubhat 0:6cc76d70e2a1 80 }
ubhat 0:6cc76d70e2a1 81 else
ubhat 0:6cc76d70e2a1 82 {
ubhat 0:6cc76d70e2a1 83 return '?';
ubhat 0:6cc76d70e2a1 84 }
ubhat 0:6cc76d70e2a1 85 }