Fahad Mirza
/
Nucleo_HXC900
A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.
utilities.c
- Committer:
- fahadmirza
- Date:
- 2018-07-12
- Revision:
- 0:a0c5877bd360
File content as of revision 0:a0c5877bd360:
/* / _____) _ | | ( (____ _____ ____ _| |_ _____ ____| |__ \____ \| ___ | (_ _) ___ |/ ___) _ \ _____) ) ____| | | || |_| ____( (___| | | | (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech _ _ _____ _______ | | | | |_ _| |__ __| | |__| | __ ___ __ | | ___ | | | __ |/ _` \ \/ / | | / _ \| | | | | | (_| |> < _| || (_) | | |_| |_|\__,_/_/\_\_____\___/|_| (C)2017 HaxIoT Description: Helper functions implementation License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian Fahad Mirza (Haxiot) */ #include <stdlib.h> #include <stdio.h> #include <stdint.h> #include "tiny_sscanf.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 2147483647L static uint32_t next = 1; int32_t rand1( void ) { return ( ( next = next * 1103515245L + 12345L ) % RAND_LOCAL_MAX ); } void srand1( uint32_t 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, const uint8_t *src, uint16_t size ) { while( size-- ) { *dst++ = *src++; } } void memcpyr( uint8_t *dst, const uint8_t *src, uint16_t size ) { dst = dst + ( size - 1 ); 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 '?'; } } uint8_t stringHexToByteArray(const char *hexString, uint8_t *buffer, int8_t bufSize) { uint8_t count = 0; char hex[3]; hex[2] = '\0'; while( (*hexString != '\0') && (*(hexString + 1) != '\0') ) { // Separate two digits(i.e 1 HexByte) from the hex string hex[0] = *hexString; hex[1] = *(hexString + 1); if((tiny_sscanf(hex, "%hhx",&buffer[count]) != 1)) { // hex doesn't have valid numbers break; } count++; if (count == bufSize) { // We are out of space break; } // Advance string hex pointer by two hexString += 2; } return count; }