Firmware for an Android accessory electric bicycle. See http://www.danielcasner.org/tag/ebike/ for some more information on my build.

Dependencies:   AndroidAccessory mbed

Committer:
DanielC
Date:
Sat Aug 11 21:20:13 2012 +0000
Revision:
1:be88f22fc412
Parent:
0:220280db0a7b
Child:
2:e2c3c7340fb3
And it compiles now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DanielC 0:220280db0a7b 1 #include "mbed.h"
DanielC 0:220280db0a7b 2 #include "AndroidAccessory.h"
DanielC 0:220280db0a7b 3
DanielC 0:220280db0a7b 4 DigitalOut led1(LED1);
DanielC 0:220280db0a7b 5 DigitalOut led2(LED2);
DanielC 0:220280db0a7b 6 DigitalOut led3(LED3);
DanielC 0:220280db0a7b 7 DigitalOut led4(LED4);
DanielC 0:220280db0a7b 8
DanielC 0:220280db0a7b 9 static const size_t OUTL=61;
DanielC 0:220280db0a7b 10 static const size_t INBL=61;
DanielC 0:220280db0a7b 11
DanielC 0:220280db0a7b 12 class DroidCycleMbed : public AndroidAccessory {
DanielC 0:220280db0a7b 13 public:
DanielC 1:be88f22fc412 14 DroidCycleMbed();
DanielC 0:220280db0a7b 15
DanielC 1:be88f22fc412 16 virtual void setupDevice();
DanielC 0:220280db0a7b 17 virtual void resetDevice();
DanielC 0:220280db0a7b 18 virtual int callbackRead(u8 *buff, int len);
DanielC 0:220280db0a7b 19 virtual int callbackWrite();
DanielC 0:220280db0a7b 20
DanielC 0:220280db0a7b 21 private:
DanielC 0:220280db0a7b 22 void onTick();
DanielC 0:220280db0a7b 23 char buffer[OUTL];
DanielC 0:220280db0a7b 24 int bcount;
DanielC 0:220280db0a7b 25 Ticker tick;
DanielC 0:220280db0a7b 26 Timeout n;
DanielC 0:220280db0a7b 27 };
DanielC 0:220280db0a7b 28
DanielC 1:be88f22fc412 29 DroidCycleMbed::DroidCycleMbed() : AndroidAccessory(INBL, OUTL,
DanielC 1:be88f22fc412 30 "DC Labs",
DanielC 1:be88f22fc412 31 "DroidCycle",
DanielC 1:be88f22fc412 32 "Android E-Bike controller interface",
DanielC 1:be88f22fc412 33 "0.1",
DanielC 1:be88f22fc412 34 "http://www.danielcasner.org",
DanielC 1:be88f22fc412 35 "0000000123456789") {
DanielC 1:be88f22fc412 36 tick.attach(this, &DroidCycleMbed::onTick, 0.010);
DanielC 1:be88f22fc412 37 }
DanielC 1:be88f22fc412 38
DanielC 0:220280db0a7b 39 void DroidCycleMbed::setupDevice() {
DanielC 0:220280db0a7b 40 for (int i=0; i<OUTL; i++) buffer[i] = 0;
DanielC 0:220280db0a7b 41 bcount = 0;
DanielC 0:220280db0a7b 42 }
DanielC 0:220280db0a7b 43
DanielC 0:220280db0a7b 44 void DroidCycleMbed::resetDevice() {
DanielC 0:220280db0a7b 45 setupDevice();
DanielC 0:220280db0a7b 46 }
DanielC 0:220280db0a7b 47
DanielC 0:220280db0a7b 48 int DroidCycleMbed::callbackRead(u8 *buf, int len) {
DanielC 0:220280db0a7b 49 for (int i=0; i<INBL; i++) buf[i] = 0;
DanielC 0:220280db0a7b 50
DanielC 0:220280db0a7b 51 return 0;
DanielC 0:220280db0a7b 52 }
DanielC 0:220280db0a7b 53
DanielC 0:220280db0a7b 54 int DroidCycleMbed::callbackWrite() {
DanielC 0:220280db0a7b 55 return false;
DanielC 0:220280db0a7b 56 }
DanielC 0:220280db0a7b 57
DanielC 0:220280db0a7b 58
DanielC 0:220280db0a7b 59 void DroidCycleMbed::onTick() {
DanielC 0:220280db0a7b 60
DanielC 0:220280db0a7b 61 }
DanielC 0:220280db0a7b 62
DanielC 0:220280db0a7b 63 int main() {
DanielC 0:220280db0a7b 64 while(1) {
DanielC 1:be88f22fc412 65 led1 = 1;
DanielC 0:220280db0a7b 66 wait(0.2);
DanielC 1:be88f22fc412 67 led1 = 0;
DanielC 0:220280db0a7b 68 wait(0.2);
DanielC 0:220280db0a7b 69 }
DanielC 0:220280db0a7b 70 }