This code uses Semtech's open source LoRaWAN stack ported to mbed environment.

Dependencies:   mbed LoRaWAN-lib SX1272Lib

Committer:
Mehrad
Date:
Thu Jun 09 23:58:16 2016 +0000
Revision:
0:6155544d38b1
The initial commit.

Who changed what in which revision?

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