NXPCup_Cachan / Mbed 2 deprecated S4_bluetooth_V2_bibli

Dependencies:   mbed

bluetoothV2bibli.cpp

Committer:
EISR
Date:
2020-02-06
Revision:
0:9e8a54e32f30
Child:
1:13af94a28e0d

File content as of revision 0:9e8a54e32f30:

#include "mbed.h"
#include "math.h"
#include "bluetoothV2bibli.h"

Serial pc(USBTX, USBRX,460800);
Serial blueth(p9, p10,115200); // tx,rx,baudrate


static int blueRxBuffer[6];         // Buffer de réception de la liaison série bluetooth
static int blueTxBuffer[6]={240,0,0,0,0,15};             // Buffer de transmission de la liaison série bluetooth
static int RxBuffer[4][6];
static int paramRx[4][2];                                //0 KP   1 KI   2 KD   3 SPEED
static short flagR=0;


/********************************** Initialisation *************************************/

void init_blueth(void)
{
    blueth.attach(&receptionBlu, Serial::RxIrq);    //Creation interruption de reception
    blueth.printf("Hello world");                   //message de test
}


/******************************* Fonctions de transmission *****************************/

void transmitBlu(void)
{
    static short i = 0;
    if(blueth.writable())             //fonctionne si la liaison est libre
    {
       blueth.putc(blueTxBuffer[i]);           //transmission de la trame de 6 octets
       i++;
    }
    if(i>5)
    {
        i=0;
        blueth.attach(NULL, Serial::TxIrq);
    }
}

void formatTrameT(short reg, int val)
{   
    blueTxBuffer[1]=reg;
    blueTxBuffer[2]=((val&0xFF0000)>>16);         //Conversion sur trois octets independants
    blueTxBuffer[3]=((val&0x00FF00)>>8);
    blueTxBuffer[4]=((val&0x0000FF));

    blueth.attach(&transmitBlu, Serial::TxIrq);
}


/****************************** Fonctions de reception ******************************/

void receptionBlu(void)
{
    static short j = 0, compteur=0;
    
    if(blueth.readable())
    {
        blueRxBuffer[j]=blueth.getc();              //reception
        blueth.putc(blueRxBuffer[j]);               //renvoie de la reception pour tester
        j++;
        if(j>5)
        {
            j=0;
            for(short i=0;i<6;i++)RxBuffer[compteur][i]=blueRxBuffer[i];
            compteur++;
            if(compteur>4)
            {
                compteur=0;
                flagR=1;
            }
        }
    }   
}

int get_val_pc(short reg)
{
    short indice;
    if(flagR==1)
    {
        decomp_trame();
        flagR=0;
    }
    if(reg == 30)indice = 0;
    if(reg == 45)indice = 1;
    if(reg == 60)indice = 2;
    if(reg == 75)indice = 3;
    return paramRx[indice][1];
}

void decomp_trame(void)
{
    for(short i=0;i<4;i++)
    {
        if(RxBuffer[i][0]== 240 && RxBuffer[i][5]==15)
        {
            paramRx[i][0]= RxBuffer[i][1];
            paramRx[i][1] = RxBuffer[i][2]*pow((double)2,(double)16)+RxBuffer[i][3]*pow((double)2,(double)8)+RxBuffer[i][4];
        }
    }
}