Tesi Sitael / Mbed 2 deprecated TGP_SET_GPO_CMD_PASSED

Dependencies:   mbed

main.cpp

Committer:
jjantoine
Date:
2018-12-11
Revision:
3:7ae2366ce74c
Parent:
2:ac809f724f60
Child:
4:a5b5809ee14f

File content as of revision 3:7ae2366ce74c:

#include "mbed.h"

Serial pc(USBTX, USBRX); // tx, rx

    DigitalIn mybutton(USER_BUTTON);


    DigitalOut Porta0_7 (PA_0);
    DigitalOut Porta0_6 (PA_1);
    DigitalOut Porta0_5 (PA_4);
    DigitalOut Porta0_4 (PA_6);
    DigitalOut Porta0_3 (PA_7);
    DigitalOut Porta0_2 (PA_8);
    DigitalOut Porta0_1 (PA_9);
    DigitalOut Porta0_0 (PA_12);
    
    DigitalOut Porta1_7 (PB_0);
    DigitalOut Porta1_6 (PB_1);
    DigitalOut Porta1_5 (PB_3);
    DigitalOut Porta1_4 (PB_4);
    DigitalOut Porta1_3 (PB_5);
    DigitalOut Porta1_2 (PB_6);
    DigitalOut Porta1_1 (PB_7);
    DigitalOut Porta1_0 (PB_10);
    
    DigitalOut Porta2_7 (PC_0);
    DigitalOut Porta2_6 (PC_1);
    DigitalOut Porta2_5 (PC_2);
    DigitalOut Porta2_4 (PC_3);
    DigitalOut Porta2_3 (PC_5);
    DigitalOut Porta2_2 (PC_6);
    DigitalOut Porta2_1 (PC_7);
    DigitalOut Porta2_0 (PC_8);
    
    DigitalOut Porta3_7 (PA_13);
    DigitalOut Porta3_6 (PA_14);
    DigitalOut Porta3_5 (PA_15);
    DigitalOut Porta3_4 (PC_14);
    DigitalOut Porta3_3 (PC_15);
    DigitalOut Porta3_2 (PA_11);
    DigitalOut Porta3_1 (PB_12);
    DigitalOut Porta3_0 (PC_4);


void TGP_SET_GPO_CMD();
void TGP_SET_GPO_ACK(char*, char*, char*, char*, char*);
void GPIO_SET(char*,char*,char*,char*,char*,char*,char*,char*);
int* charbit(char*,char*);

int main()
{
    while(1)
    {
        TGP_SET_GPO_CMD();
    }
    
    
}



void TGP_SET_GPO_CMD()
{
        unsigned int i;
        
        char UINT32_PacketSize [4];
        char ENUM_Packet_ID;
        char UINT16_PacketCounter [2];
        char UINT32_Timestamp [4];
        char UINT32_Port0Value [4];
        char UINT32_Port0Mask [4];
        char UINT32_Port1Value [4];
        char UINT32_Port1Mask [4];
        char UINT32_Port2Value [4];
        char UINT32_Port2Mask [4];
        char UINT32_Port3Value [4];
        char UINT32_Port3Mask [4];
        char UINT32_CRC [4];
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_PacketSize[i]);
        }
        
        pc.scanf("%c",&ENUM_Packet_ID);
        
        for(i=0; i<2; i++){
            pc.scanf("%c",&UINT16_PacketCounter[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Timestamp[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port0Value[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port0Mask[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port1Value[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port1Mask[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port2Value[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port2Mask[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port3Value[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_Port3Mask[i]);
        }
        
        for(i=0; i<4; i++){
            pc.scanf("%c",&UINT32_CRC[i]);
        }
        
        TGP_SET_GPO_ACK(UINT32_PacketSize,&ENUM_Packet_ID,UINT16_PacketCounter,UINT32_Timestamp,UINT32_CRC);
        GPIO_SET(UINT32_Port0Value,UINT32_Port0Mask,UINT32_Port1Value,UINT32_Port1Mask,UINT32_Port2Value,UINT32_Port2Mask,UINT32_Port3Value,UINT32_Port3Mask);
        
}

void TGP_SET_GPO_ACK(char*A, char*B, char*C, char*D, char*E)
{
    char UINT32_PacketSize [4];
    char ENUM_Packet_ID;
    char UINT16_PacketCounter [2];
    char UINT32_Timestamp [4];
    char UINT32_CRC [4];
    
    unsigned int i;
    
    
    
    for(i=0;i<4;i++)
    {
        UINT32_PacketSize[i] = A[i];
    }
    
    
    ENUM_Packet_ID = *B;
    
    for(i=0;i<2;i++)
    {
        UINT16_PacketCounter[i] = C[i];
    }
    
    for(i=0;i<4;i++)
    {
        UINT32_Timestamp[i] = D[i];
    }
    
    for(i=0;i<4;i++)
    {
        UINT32_CRC[i] = E[i];
    }
    
    
    for(i=0; i<4; i++){
            pc.printf("%c",UINT32_PacketSize[i]);
        }
        
    pc.printf("%c",ENUM_Packet_ID);
    
    for(i=0; i<2; i++){
            pc.printf("%c",UINT16_PacketCounter[i]);
        }
        
    for(i=0; i<4; i++){
            pc.printf("%c",UINT32_Timestamp[i]);
        }
        
    for(i=0; i<4; i++){
            pc.printf("%c",UINT32_CRC[i]);
        }
       
}

void GPIO_SET(char*A,char*B,char*C,char*D,char*E,char*F,char*G,char*H)
{
    unsigned int i,btts;
    
    btts=0;
    
    char UINT32_Port0Value [4];
    char UINT32_Port0Mask [4];
    char UINT32_Port1Value [4];
    char UINT32_Port1Mask [4];
    char UINT32_Port2Value [4];
    char UINT32_Port2Mask [4];
    char UINT32_Port3Value [4];
    char UINT32_Port3Mask [4];
    
    int* porta0;
    int* porta1;
    int* porta2;
    int* porta3;
    
    int bit0[32];
    int bit1[32];
    int bit2[32];
    int bit3[32];
    
    for(i=0;i<4;i++)
    {
        UINT32_Port0Value[i] = A[i];
    }
    
    for(i=0;i<4;i++)
    {
        UINT32_Port0Mask[i] = B[i];
    }
    
    for(i=0;i<4;i++)
    {
        UINT32_Port1Value[i] = C[i];
    }
    
    for(i=0;i<4;i++)
    {
        UINT32_Port1Mask[i] = D[i];
    }

    for(i=0;i<4;i++)
    {
        UINT32_Port2Value[i] = E[i];
    }

    for(i=0;i<4;i++)
    {
        UINT32_Port2Mask[i] = F[i];
    }

    for(i=0;i<4;i++)
    {
        UINT32_Port3Value[i] = G[i];
    }

    for(i=0;i<4;i++)
    {
        UINT32_Port3Mask[i] = H[i];
    }

    
    porta0 = charbit(UINT32_Port0Value,UINT32_Port0Mask);
    
    for(i=0;i<32;i++)
    {
        bit0[i]=porta0[i];   
    }
    
    porta1 = charbit(UINT32_Port1Value,UINT32_Port1Mask);
    
    for(i=0;i<32;i++)
    {
        bit1[i]=porta1[i];   
    }
    
    porta2 = charbit(UINT32_Port2Value,UINT32_Port2Mask);
    
    for(i=0;i<32;i++)
    {
        bit2[i]=porta2[i];   
    }
    
    porta3 = charbit(UINT32_Port3Value,UINT32_Port3Mask);
    
    for(i=0;i<32;i++)
    {
        bit3[i]=porta3[i];   
    }
    
    while(1)
    {   
        if(mybutton == 0 & btts ==0)
        {
            Porta0_7 = bit0[0];
            Porta0_6 = bit0[1];
            Porta0_5 = bit0[2];
            Porta0_4 = bit0[3];
            Porta0_3 = bit0[4];
            Porta0_2 = bit0[5];
            Porta0_1 = bit0[6];
            Porta0_0 = bit0[7];
            
            Porta1_7 = bit1[0];
            Porta1_6 = bit1[1];
            Porta1_5 = bit1[2];
            Porta1_4 = bit1[3];
            Porta1_3 = bit1[4];
            Porta1_2 = bit1[5];
            Porta1_1 = bit1[6];
            Porta1_0 = bit1[7];
            
            Porta2_7 = bit2[0];
            Porta2_6 = bit2[1];
            Porta2_5 = bit2[2];
            Porta2_4 = bit2[3];
            Porta2_3 = bit2[4];
            Porta2_2 = bit2[5];
            Porta2_1 = bit2[6];
            Porta2_0 = bit2[7];
            
            Porta3_7 = bit3[0];
            Porta3_6 = bit3[1];
            Porta3_5 = bit3[2];
            Porta3_4 = bit3[3];
            Porta3_3 = bit3[4];
            Porta3_2 = bit3[5];
            Porta3_1 = bit3[6];
            Porta3_0 = bit3[7];
            
            btts = 1;          
        } else if (mybutton == 0 & btts == 1) {
            
            Porta0_7 = bit0[8];
            Porta0_6 = bit0[9];
            Porta0_5 = bit0[10];
            Porta0_4 = bit0[11];
            Porta0_3 = bit0[12];
            Porta0_2 = bit0[13];
            Porta0_1 = bit0[14];
            Porta0_0 = bit0[15];
            
            Porta1_7 = bit1[8];
            Porta1_6 = bit1[9];
            Porta1_5 = bit1[10];
            Porta1_4 = bit1[11];
            Porta1_3 = bit1[12];
            Porta1_2 = bit1[13];
            Porta1_1 = bit1[14];
            Porta1_0 = bit1[15];
            
            Porta2_7 = bit2[8];
            Porta2_6 = bit2[9];
            Porta2_5 = bit2[10];
            Porta2_4 = bit2[11];
            Porta2_3 = bit2[12];
            Porta2_2 = bit2[13];
            Porta2_1 = bit2[14];
            Porta2_0 = bit2[15];
            
            Porta3_7 = bit3[8];
            Porta3_6 = bit3[9];
            Porta3_5 = bit3[10];
            Porta3_4 = bit3[11];
            Porta3_3 = bit3[12];
            Porta3_2 = bit3[13];
            Porta3_1 = bit3[14];
            Porta3_0 = bit3[15];
            
            btts = 2;
        } else if (mybutton == 0 & btts == 2) {
            
            Porta0_7 = bit0[16];
            Porta0_6 = bit0[17];
            Porta0_5 = bit0[18];
            Porta0_4 = bit0[19];
            Porta0_3 = bit0[20];
            Porta0_2 = bit0[21];
            Porta0_1 = bit0[22];
            Porta0_0 = bit0[23];
            
            Porta1_7 = bit1[16];
            Porta1_6 = bit1[17];
            Porta1_5 = bit1[18];
            Porta1_4 = bit1[19];
            Porta1_3 = bit1[20];
            Porta1_2 = bit1[21];
            Porta1_1 = bit1[22];
            Porta1_0 = bit1[23];
            
            Porta2_7 = bit2[16];
            Porta2_6 = bit2[17];
            Porta2_5 = bit2[18];
            Porta2_4 = bit2[19];
            Porta2_3 = bit2[20];
            Porta2_2 = bit2[21];
            Porta2_1 = bit2[22];
            Porta2_0 = bit2[23];
            
            Porta3_7 = bit3[16];
            Porta3_6 = bit3[17];
            Porta3_5 = bit3[18];
            Porta3_4 = bit3[19];
            Porta3_3 = bit3[20];
            Porta3_2 = bit3[21];
            Porta3_1 = bit3[22];
            Porta3_0 = bit3[23];
            
            btts = 3;
        } else if (mybutton == 0 & btts == 3) {
            
            Porta0_7 = bit0[24];
            Porta0_6 = bit0[25];
            Porta0_5 = bit0[26];
            Porta0_4 = bit0[27];
            Porta0_3 = bit0[28];
            Porta0_2 = bit0[29];
            Porta0_1 = bit0[30];
            Porta0_0 = bit0[31];
            
            Porta1_7 = bit1[24];
            Porta1_6 = bit1[25];
            Porta1_5 = bit1[26];
            Porta1_4 = bit1[27];
            Porta1_3 = bit1[28];
            Porta1_2 = bit1[29];
            Porta1_1 = bit1[30];
            Porta1_0 = bit1[31];
            
            Porta2_7 = bit2[24];
            Porta2_6 = bit2[25];
            Porta2_5 = bit2[26];
            Porta2_4 = bit2[27];
            Porta2_3 = bit2[28];
            Porta2_2 = bit2[29];
            Porta2_1 = bit2[30];
            Porta2_0 = bit2[31];
            
            Porta3_7 = bit3[24];
            Porta3_6 = bit3[25];
            Porta3_5 = bit3[26];
            Porta3_4 = bit3[27];
            Porta3_3 = bit3[28];
            Porta3_2 = bit3[29];
            Porta3_1 = bit3[30];
            Porta3_0 = bit3[31];
            
            btts = 4;
        } else if (mybutton == 0 & btts == 4)
        {
            break;
        }
    }
       
}

int* charbit(char*c,char*d)
{
    int msb1[32];
    int msb2[32];
    int msb3[32];
    int i;
    char a[4];
    char b[4];
    
    
    for(i=0;i<4;i++)
    {
        a[i] = c[i];   
    }
    
    for(i=0;i<4;i++)
    {
        b[i] = d[i];   
    }
    
    
    for (i=0;i<8;i++)
    {
        msb1[i] = ( a[0] & 0x80 ) != 0x00;
        a[0]=a[0]<<1;

    }  
    
    for (i=8;i<16;i++)
    {
        msb1[i] = ( a[1] & 0x80 ) != 0x00;
        a[1]=a[1]<<1;

    }  
    
    for (i=16;i<24;i++)
    {
        msb1[i] = ( a[2] & 0x80 ) != 0x00;
        a[2]=a[2]<<1;

    }  
    
    for (i=24;i<32;i++)
    {
        msb1[i] = ( a[3] & 0x80 ) != 0x00;
        a[3]=a[3]<<1;

    }  
    
    for (i=0;i<8;i++)
    {
        msb2[i] = ( b[0] & 0x80 ) != 0x00;
        b[0]=b[0]<<1;

    }  
    
    for (i=8;i<16;i++)
    {
        msb2[i] = ( b[1] & 0x80 ) != 0x00;
        b[1]=b[1]<<1;

    }  
    
    for (i=16;i<24;i++)
    {
        msb2[i] = ( b[2] & 0x80 ) != 0x00;
        b[2]=b[2]<<1;

    }  
    
    for (i=24;i<32;i++)
    {
        msb2[i] = ( b[3] & 0x80 ) != 0x00;
        b[3]=b[3]<<1;

    }  
    
    for (i=0;i<32;i++)
    {
        msb3[i] = msb1[i] & msb2[i];   
    }
    
    return &msb3[0];   
}