Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
Diff: PollSwitch/PollSwitch.cpp
- Revision:
- 17:c9ce210f6654
- Parent:
- 16:a72ffe7d879d
- Child:
- 29:f148490b5f65
diff -r a72ffe7d879d -r c9ce210f6654 PollSwitch/PollSwitch.cpp
--- a/PollSwitch/PollSwitch.cpp Fri Oct 24 22:38:20 2014 +0000
+++ b/PollSwitch/PollSwitch.cpp Sat Oct 25 03:28:55 2014 +0000
@@ -1,64 +1,33 @@
#include "PollSwitch.h"
-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};
-LPCDigitalOut poll[12]={ LPCDigitalIn(PollPin[0], PullDown),
- LPCDigitalIn(PollPin[1], PullDown),
- LPCDigitalOut(PollPin[2]),
- LPCDigitalOut(PollPin[3]),
- LPCDigitalOut(PollPin[4]),
- LPCDigitalOut(PollPin[5]),
- LPCDigitalOut(PollPin[6]),
- LPCDigitalOut(PollPin[7]),
- LPCDigitalOut(PollPin[8]),
- LPCDigitalOut(PollPin[9]),
- LPCDigitalOut(PollPin[10]),
- LPCDigitalOut(PollPin[11])};
-
-CANBuffer *tx_Poll_Buffer;
+LPCDigitalIn sw[]={ LPCDigitalIn(p1_0, PullDown),
+ LPCDigitalIn(p1_1, PullDown),
+ LPCDigitalIn(p1_4, PullDown),
+ LPCDigitalIn(p1_8, PullDown),
+ LPCDigitalIn(p1_9, PullDown),
+ LPCDigitalIn(p1_10, PullDown),
+ LPCDigitalIn(p1_14, PullDown),
+ LPCDigitalIn(p1_15, PullDown),
+ LPCDigitalIn(p1_16, PullDown),
+ LPCDigitalIn(p1_17, PullDown),
+ LPCDigitalIn(p1_27, PullDown),
+ LPCDigitalIn(p1_28, PullDown)
+ };
-union int_to_char {
- char ch[2];
- uint16_t i;
-} converter;
-
-PollSwitch::PollSwitch(CANBuffer *can){
- tx_Poll_Buffer = can;
-
- /*
- for(int i = 0; i < 12; i++){
- poll[i].mode(PullDown);
- }
- */
+PollSwitch::PollSwitch(){
+ switchState = 0;
}
-uint16_t poll_switches(){
- uint16_t a = 0;
+uint16_t PollSwitch::poll(){
int i = 0;
// if a low signal is detected, previous switch is broken
- for(i = 1; i < 12; i++){
- if(!poll[i].read())
+ for(i = 1; i < sizeof(sw)/sizeof(sw[0]); i++){
+ if(!sw[i].read())
break;
}
// bit on: switch may be broken
- a = 0 & (0xFF >> (i-1));
- return a;
-}
-
-void update_poll(const void *arg){
- char data[2] = {0};
- while(1){
- converter.i = poll_switches();
- data[0] = converter.ch[0];
- data[1] = converter.ch[1];
- CANMessage txMessage(TX_POLL_ID, data, 2);
- tx_Poll_Buffer->txWrite(txMessage);
-
- Thread::wait(100); //10 Hz update
- }
-}
-
-void PollSwitch::start_update(){
- Thread update_thread(update_poll);
+ switchState = (1 << i);
+ return (1 << i);
}
\ No newline at end of file
