Repositório para códigos do painel da plataforma SATC
Dependencies: MFRC522 mbed-STM32F103C8T6 mbed
Fork of C_005_EA_Painel_sem_bms by
helpers.cpp@2:4c12e1ed1367, 2018-09-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |