this is avaiable project
Fork of LoRaMacLib by
Diff: system/utilities.cpp
- Revision:
- 0:9be122c18509
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/utilities.cpp Wed Aug 12 14:08:29 2015 +0000 @@ -0,0 +1,87 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Helper functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include <stdlib.h> +#include <stdio.h> +#include "board.h" +#include "utilities.h" + +/*! + * Redefinition of rand() and srand() standard C functions. + * These functions are redefined in order to get the same behavior across + * different compiler toolchains implementations. + */ +// Standard random functions redefinition start +#define RAND_LOCAL_MAX 2147483647 + +static unsigned long next = 1; + +int rand1( void ) +{ + return ( ( next = next * 1103515245 + 12345 ) % RAND_LOCAL_MAX ); +} + +void srand1( unsigned int seed ) +{ + next = seed; +} +// Standard random functions redefinition end + +int32_t randr( int32_t min, int32_t max ) +{ + return ( int32_t )rand1( ) % ( max - min + 1 ) + min; +} + +void memcpy1( uint8_t *dst, uint8_t *src, uint16_t size ) +{ + while( size-- ) + { + *dst++ = *src++; + } +} + +void memset1( uint8_t *dst, uint8_t value, uint16_t size ) +{ + while( size-- ) + { + *dst++ = value; + } +} + +int8_t Nibble2HexChar( uint8_t a ) +{ + if( a < 10 ) + { + return '0' + a; + } + else if( a < 16 ) + { + return 'A' + ( a - 10 ); + } + else + { + return '?'; + } +} + +#ifdef __GNUC__ +/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf + set to 'Yes') calls __io_putchar() */ +int __io_putchar( int c ) +#else /* __GNUC__ */ +int fputc( int c, FILE *stream ) +#endif +{ + return( ITM_SendChar( c ) ); +}