Penn Electric Racing / Mbed 2 deprecated SystemManagement

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Committer:
pspatel321
Date:
Fri Oct 24 22:37:32 2014 +0000
Revision:
28:8c2fa2473b78
Parent:
26:78c0d7facfa7
Re-branch3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
martydd3 7:5f6e31faa08e 1 #include "PollSwitch.h"
martydd3 7:5f6e31faa08e 2
martydd3 7:5f6e31faa08e 3 LPC_pin PollPin[12]={p1_0, p1_1, p1_4, p1_8, p1_9, p1_10, p1_14, p1_15, p1_16, p1_17, p1_27, p1_28};
pspatel321 26:78c0d7facfa7 4
pspatel321 28:8c2fa2473b78 5 LPCDigitalOut poll[12]={ LPCDigitalIn(PollPin[0], PullDown),
martydd3 7:5f6e31faa08e 6 LPCDigitalOut(PollPin[1]),
martydd3 7:5f6e31faa08e 7 LPCDigitalOut(PollPin[2]),
martydd3 7:5f6e31faa08e 8 LPCDigitalOut(PollPin[3]),
martydd3 7:5f6e31faa08e 9 LPCDigitalOut(PollPin[4]),
martydd3 7:5f6e31faa08e 10 LPCDigitalOut(PollPin[5]),
martydd3 7:5f6e31faa08e 11 LPCDigitalOut(PollPin[6]),
martydd3 7:5f6e31faa08e 12 LPCDigitalOut(PollPin[7]),
martydd3 7:5f6e31faa08e 13 LPCDigitalOut(PollPin[8]),
martydd3 7:5f6e31faa08e 14 LPCDigitalOut(PollPin[9]),
martydd3 7:5f6e31faa08e 15 LPCDigitalOut(PollPin[10]),
martydd3 7:5f6e31faa08e 16 LPCDigitalOut(PollPin[11])};
martydd3 7:5f6e31faa08e 17
martydd3 7:5f6e31faa08e 18 CANBuffer *tx_Poll_Buffer;
martydd3 7:5f6e31faa08e 19
martydd3 7:5f6e31faa08e 20 union int_to_char {
martydd3 7:5f6e31faa08e 21 char ch[2];
martydd3 7:5f6e31faa08e 22 uint16_t i;
martydd3 7:5f6e31faa08e 23 } converter;
martydd3 7:5f6e31faa08e 24
martydd3 7:5f6e31faa08e 25 PollSwitch::PollSwitch(CANBuffer *can){
martydd3 7:5f6e31faa08e 26 tx_Poll_Buffer = can;
martydd3 8:ecf68db484af 27
martydd3 8:ecf68db484af 28 /*
martydd3 7:5f6e31faa08e 29 for(int i = 0; i < 12; i++){
martydd3 7:5f6e31faa08e 30 poll[i].mode(PullDown);
martydd3 7:5f6e31faa08e 31 }
martydd3 8:ecf68db484af 32 */
martydd3 7:5f6e31faa08e 33 }
martydd3 7:5f6e31faa08e 34
martydd3 7:5f6e31faa08e 35 uint16_t poll_switches(){
martydd3 7:5f6e31faa08e 36 uint16_t a = 0;
martydd3 7:5f6e31faa08e 37 int i = 0;
martydd3 7:5f6e31faa08e 38
martydd3 7:5f6e31faa08e 39 // if a low signal is detected, previous switch is broken
martydd3 7:5f6e31faa08e 40 for(i = 1; i < 12; i++){
martydd3 7:5f6e31faa08e 41 if(!poll[i].read())
martydd3 7:5f6e31faa08e 42 break;
martydd3 7:5f6e31faa08e 43 }
martydd3 7:5f6e31faa08e 44
martydd3 7:5f6e31faa08e 45 // bit on: switch may be broken
martydd3 7:5f6e31faa08e 46 a = 0 & (0xFF >> (i-1));
martydd3 7:5f6e31faa08e 47 return a;
martydd3 7:5f6e31faa08e 48 }
martydd3 7:5f6e31faa08e 49
martydd3 7:5f6e31faa08e 50 void update_poll(const void *arg){
martydd3 12:e0adb697fcdb 51 char data[2] = {0};
martydd3 7:5f6e31faa08e 52 while(1){
martydd3 7:5f6e31faa08e 53 converter.i = poll_switches();
martydd3 7:5f6e31faa08e 54 data[0] = converter.ch[0];
martydd3 7:5f6e31faa08e 55 data[1] = converter.ch[1];
martydd3 12:e0adb697fcdb 56 CANMessage txMessage(TX_POLL_ID, data, 2);
martydd3 7:5f6e31faa08e 57 tx_Poll_Buffer->txWrite(txMessage);
martydd3 7:5f6e31faa08e 58
martydd3 7:5f6e31faa08e 59 Thread::wait(100); //10 Hz update
martydd3 7:5f6e31faa08e 60 }
martydd3 7:5f6e31faa08e 61 }
martydd3 7:5f6e31faa08e 62
martydd3 7:5f6e31faa08e 63 void PollSwitch::start_update(){
martydd3 7:5f6e31faa08e 64 Thread update_thread(update_poll);
martydd3 7:5f6e31faa08e 65 }