#include "str_to_num.h"

uint8_t str_to_num::PH_uint(const char mesure[5])
{
    double reso=0.1;
    /*réglage de la resolution voulue 
     *sur ce capteur
     *(penser à adapter la taille du uint(X)_T en fonction)
     */
    double num;
    uint8_t res;
    num=atof(mesure);// conversion char->double
    if(fmod((double)num,(double)reso)>=reso*0.5) num=num-fmod(num,reso)+reso;
    else num=num-(fmod(num,reso));
    /*arrondie à la resolution voulue*/
    num=num*(1/reso);
    res=(uint8_t)num;
    /*conversion de Double->Uint8_T*/ 
    return res;
}
int16_t str_to_num::Temp_int(const char mesure[8])
{
    double reso=0.1;
     /*réglage de la resolution voulue 
     *sur ce capteur
     *(penser à adapter la taille du int(X)_T en fonction)
     */
    double num;
    int16_t res;
    num=atof(mesure);// conversion char->double
    if(fmod(num,reso)>=reso*0.5 && num>0) num=num-fmod(num,reso)+reso;
    else if(fmod(num,reso)>=reso*0.5 && num<0) num=num+fmod(num,reso)-reso;
    else if(num>0) num=num-(fmod(num,reso));
    else if(num<0) num=num+(fmod(num,reso));
    /*arrondie à la resolution voulue*/
    num=num*(1/reso);
    res=(int16_t)num;
    /*conversion de Double->int16_T*/ 
    return res;
}
uint16_t str_to_num::Oxy_int(const char mesure[6]){
    double reso=0.1;
     /*réglage de la resolution voulue 
     *sur ce capteur
     *(penser à adapter la taille du uint(X)_T en fonction)
     */
    double num;
    uint16_t res;
    num=atof(mesure);// conversion char->double
    if(fmod(num,reso)>=reso*0.5) num=num-fmod(num,reso)+reso;
    else num=num-(fmod(num,reso));
    /*arrondie à la resolution voulue*/
    num=num*(1/reso);
    /*conversion de Double->Uint16_T*/ 
    res=(uint16_t)num;
    return res;
}
uint16_t str_to_num::Cond_int(const char mesure[6]){
    double reso=0.1;
     /*réglage de la resolution voulue 
     *sur ce capteur
     *(penser à adapter la taille du uint(X)_T en fonction)
     */
    double num;
    uint16_t res;
    num=atof(mesure);// conversion char->double
    if(fmod(num,reso)>=reso*0.5) num=num-fmod(num,reso)+reso;
    else num=num-(fmod(num,reso));
    /*arrondie à la resolution voulue*/
    num=num*(1/reso);
    res=(uint16_t)num;
    /*conversion de Double->Uint16_T*/ 
    return res;
}