Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

util.cpp

Committer:
FCH_31
Date:
2018-10-22
Revision:
41:5a436163dddf
Parent:
12:e9ec35413787

File content as of revision 41:5a436163dddf:

/*
 * MISNet   
 *
 *  Util:   Utilities
 *
 *  Created on: August 17, 2018       Author: Francis CHATAIN
 *
 */

#include "mbed.h"
#include <string>


/* Helper function for printing floats & doubles */
static char *print_double(char* str, double v, int decimalDigits)
{
  int i = 1;
  int intPart, fractPart;
  int len;
  char *ptr;

  /* prepare decimal digits multiplicator */
  for (;decimalDigits!=0; i*=10, decimalDigits--);

  /* calculate integer & fractinal parts */
  intPart = (int)v;
  fractPart = (int)((v-(double)(int)v)*i);

  /* fill in integer part */
  sprintf(str, "%i.", intPart);

  /* prepare fill in of fractional part */
  len = strlen(str);
  ptr = &str[len];

  /* fill in leading fractional zeros */
  for (i/=10;i>1; i/=10, ptr++) {
    if (fractPart >= i) {
      break;
    }
    *ptr = '0';
  }

  /* fill in (rest of) fractional part */
  sprintf(ptr, "%i", fractPart);

  return str;
}


// Convert a byte to string
string binToString (unsigned char *inputData, int dataLength)
{
    char asciiString[dataLength*2 +1];   // 2 characters per byte plus a null at the end.
    for (int i = 0; i<dataLength; i++)    sprintf (asciiString+2*i,"%02X",*(inputData+i)) ;
    asciiString[dataLength*2] = 0 ;      // in theory redundant, the last sprintf should have done this but just to be sure...
    return string (asciiString) ;
}

void        printBytes ( unsigned char *buf, size_t len) 
{ 
    int i; 
    for (i = 0; i < len; i++) 
        printf("%02x", buf[i]); printf("\n"); 
}


// LITTLE ENDIAN!
uint16_t read16(uint8_t *src)
{
  uint16_t d;
  uint8_t b;
  b = *src;
  d = *(src+1);
  d <<= 8;
  d |= b;
  return d;
}

// LITTLE ENDIAN!
uint32_t read32(uint8_t *src)
{
  uint32_t d;
  uint16_t b;

  b = read16(src);
  d = read16(src+2);
  d <<= 16;
  d |= b;
  return d;
}