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

Committer:
MobilisEletrica
Date:
Mon Sep 24 18:30:52 2018 +0000
Revision:
2:4c12e1ed1367
Parent:
0:5f3b8289e36c
[SATC] C?digo do painel de controle

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MobilisEletrica 0:5f3b8289e36c 1 #include "helpers.h"
MobilisEletrica 0:5f3b8289e36c 2
MobilisEletrica 0:5f3b8289e36c 3 int16_t FindIndex( const uint16_t a[], uint16_t size, uint16_t value )
MobilisEletrica 0:5f3b8289e36c 4 {
MobilisEletrica 0:5f3b8289e36c 5 int16_t index = 0;
MobilisEletrica 0:5f3b8289e36c 6 while ( index < size && a[index] != value ){
MobilisEletrica 0:5f3b8289e36c 7 ++index;
MobilisEletrica 0:5f3b8289e36c 8 }
MobilisEletrica 0:5f3b8289e36c 9 return ( index == size ? -1 : index );
MobilisEletrica 0:5f3b8289e36c 10 }
MobilisEletrica 0:5f3b8289e36c 11
MobilisEletrica 0:5f3b8289e36c 12 uint16_t converteDTCWeg(uint16_t dtc_weg){
MobilisEletrica 0:5f3b8289e36c 13 int16_t index = FindIndex(tabela_dtc_weg,sizeof(tabela_dtc_weg)/sizeof(tabela_dtc_weg[0]),dtc_weg);
MobilisEletrica 0:5f3b8289e36c 14 if(index == -1){
MobilisEletrica 0:5f3b8289e36c 15 return 0x00;
MobilisEletrica 0:5f3b8289e36c 16 }
MobilisEletrica 0:5f3b8289e36c 17 uint16_t dtc_mobilis = tabela_dtc_weg_mobilis[index];
MobilisEletrica 0:5f3b8289e36c 18 return dtc_mobilis;
MobilisEletrica 0:5f3b8289e36c 19 }
MobilisEletrica 0:5f3b8289e36c 20
MobilisEletrica 0:5f3b8289e36c 21 uint16_t converteDTCBms(unsigned char flags){
MobilisEletrica 0:5f3b8289e36c 22 uint16_t dtc_mobilis = 0x00;
MobilisEletrica 0:5f3b8289e36c 23 if(flags & 1){
MobilisEletrica 2:4c12e1ed1367 24 dtc_mobilis = 0xF29;
MobilisEletrica 0:5f3b8289e36c 25 }
MobilisEletrica 0:5f3b8289e36c 26 if(flags & (1 << 1)){
MobilisEletrica 2:4c12e1ed1367 27 dtc_mobilis = 0xF30;
MobilisEletrica 2:4c12e1ed1367 28 }
MobilisEletrica 2:4c12e1ed1367 29 if(flags & (1 << 4)){
MobilisEletrica 0:5f3b8289e36c 30 dtc_mobilis = 0xF31;
MobilisEletrica 0:5f3b8289e36c 31 }
MobilisEletrica 2:4c12e1ed1367 32 if(flags & (1 << 5)){
MobilisEletrica 0:5f3b8289e36c 33 dtc_mobilis = 0xF32;
MobilisEletrica 0:5f3b8289e36c 34 }
MobilisEletrica 2:4c12e1ed1367 35 if(flags & (1 << 6)){
MobilisEletrica 0:5f3b8289e36c 36 dtc_mobilis = 0xF33;
MobilisEletrica 0:5f3b8289e36c 37 }
MobilisEletrica 0:5f3b8289e36c 38 if(flags & (1 << 7)){
MobilisEletrica 2:4c12e1ed1367 39 dtc_mobilis = 0xF34;
MobilisEletrica 2:4c12e1ed1367 40 }
MobilisEletrica 2:4c12e1ed1367 41 if(flags & (1 << 8)){
MobilisEletrica 2:4c12e1ed1367 42 dtc_mobilis = 0xF41;
MobilisEletrica 2:4c12e1ed1367 43 }
MobilisEletrica 2:4c12e1ed1367 44 if(flags & (1 << 9)){
MobilisEletrica 2:4c12e1ed1367 45 dtc_mobilis = 0xF42;
MobilisEletrica 0:5f3b8289e36c 46 }
MobilisEletrica 0:5f3b8289e36c 47 return dtc_mobilis;
MobilisEletrica 0:5f3b8289e36c 48 }
MobilisEletrica 0:5f3b8289e36c 49
MobilisEletrica 0:5f3b8289e36c 50 /*
MobilisEletrica 0:5f3b8289e36c 51 Funcao auxiliar para funcao 'checkButtons()'
MobilisEletrica 0:5f3b8289e36c 52 Retorna a soma de todos os 'n' elementos de array 'v' de tamanho
MobilisEletrica 0:5f3b8289e36c 53 */
MobilisEletrica 0:5f3b8289e36c 54 uint16_t arraySum(uint16_t* v,uint16_t n){
MobilisEletrica 0:5f3b8289e36c 55 uint16_t result = 0;
MobilisEletrica 0:5f3b8289e36c 56 for(int i = 0; i<n;i++){
MobilisEletrica 0:5f3b8289e36c 57 result += v[i];
MobilisEletrica 0:5f3b8289e36c 58 }
MobilisEletrica 0:5f3b8289e36c 59 return result;
MobilisEletrica 0:5f3b8289e36c 60 }
MobilisEletrica 0:5f3b8289e36c 61
MobilisEletrica 0:5f3b8289e36c 62 /*
MobilisEletrica 0:5f3b8289e36c 63 Funcao auxiliar para funcao 'checkButtons()'
MobilisEletrica 0:5f3b8289e36c 64 Empurra um elemento 'input' no final de um array 'v' de tamanho 'n'
MobilisEletrica 0:5f3b8289e36c 65 ou seja:
MobilisEletrica 0:5f3b8289e36c 66 Realiza uma rotacao de elementos do array 'v'
MobilisEletrica 0:5f3b8289e36c 67 v[0] some,
MobilisEletrica 0:5f3b8289e36c 68 v[1] vai para v[0]
MobilisEletrica 0:5f3b8289e36c 69 v[2] vai para v[1]
MobilisEletrica 0:5f3b8289e36c 70 v[n] vai para v[n-1]
MobilisEletrica 0:5f3b8289e36c 71 input vai para v[n]
MobilisEletrica 0:5f3b8289e36c 72 Insere um elemento 'input' no final de um array 'v' de tamanho 'n'
MobilisEletrica 0:5f3b8289e36c 73 */
MobilisEletrica 0:5f3b8289e36c 74 void arrayPush(uint16_t* v, uint16_t input, uint16_t n){
MobilisEletrica 0:5f3b8289e36c 75 for(int i = 0; i<(n-1) ;i++){
MobilisEletrica 0:5f3b8289e36c 76 v[i] = v[i+1];
MobilisEletrica 0:5f3b8289e36c 77 }
MobilisEletrica 0:5f3b8289e36c 78 v[n-1] = input;
MobilisEletrica 0:5f3b8289e36c 79 }