Repositório para códigos do painel da plataforma SATC

Dependencies:   MFRC522 mbed-STM32F103C8T6 mbed

Fork of C_005_EA_Painel_sem_bms by Engenharia Mobilis

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers helpers.cpp Source File

helpers.cpp

00001 #include "helpers.h"
00002 
00003 int16_t FindIndex( const uint16_t a[], uint16_t size, uint16_t value )
00004 {
00005     int16_t index = 0;
00006     while ( index < size && a[index] != value ){
00007          ++index;
00008     }
00009     return ( index == size ? -1 : index );
00010 }   
00011 
00012 uint16_t converteDTCWeg(uint16_t dtc_weg){
00013     int16_t index = FindIndex(tabela_dtc_weg,sizeof(tabela_dtc_weg)/sizeof(tabela_dtc_weg[0]),dtc_weg);
00014     if(index == -1){
00015         return 0x00;
00016     }
00017     uint16_t dtc_mobilis = tabela_dtc_weg_mobilis[index];
00018     return dtc_mobilis;
00019 }
00020 
00021 uint16_t converteDTCBms(unsigned char flags){
00022     uint16_t dtc_mobilis = 0x00;
00023     if(flags & 1){
00024         dtc_mobilis = 0xF29;
00025     }
00026     if(flags & (1 << 1)){
00027         dtc_mobilis = 0xF30;
00028     }
00029     if(flags & (1 << 4)){
00030         dtc_mobilis = 0xF31;
00031     }
00032     if(flags & (1 << 5)){
00033         dtc_mobilis = 0xF32;
00034     }
00035     if(flags & (1 << 6)){
00036         dtc_mobilis = 0xF33;
00037     }    
00038     if(flags & (1 << 7)){
00039         dtc_mobilis = 0xF34;
00040     }
00041     if(flags & (1 << 8)){
00042         dtc_mobilis = 0xF41;
00043     }
00044     if(flags & (1 << 9)){
00045         dtc_mobilis = 0xF42;
00046     }
00047     return dtc_mobilis;
00048 }
00049 
00050 /* 
00051     Funcao auxiliar para funcao 'checkButtons()'
00052     Retorna a soma de todos os 'n' elementos de array 'v' de tamanho
00053 */
00054 uint16_t arraySum(uint16_t* v,uint16_t n){
00055     uint16_t result = 0;
00056     for(int i = 0; i<n;i++){
00057         result += v[i];
00058     }
00059     return result;
00060 }
00061 
00062 /* 
00063     Funcao auxiliar para funcao 'checkButtons()'
00064     Empurra um elemento 'input' no final de um array 'v' de tamanho 'n'
00065         ou seja:
00066             Realiza uma rotacao de elementos do array 'v' 
00067             v[0] some, 
00068             v[1] vai para v[0]
00069             v[2] vai para v[1]
00070             v[n] vai para v[n-1]
00071             input vai para v[n]
00072             Insere um elemento 'input' no final de um array 'v' de tamanho 'n'
00073 */
00074 void arrayPush(uint16_t* v, uint16_t input, uint16_t n){
00075     for(int i = 0; i<(n-1) ;i++){
00076         v[i] = v[i+1];
00077     }
00078     v[n-1] = input;   
00079 }