Firmware for an Android accessory electric bicycle. See http://www.danielcasner.org/tag/ebike/ for some more information on my build.
Dependencies: AndroidAccessory mbed
main.cpp@0:220280db0a7b, 2012-08-11 (annotated)
- Committer:
- DanielC
- Date:
- Sat Aug 11 21:10:31 2012 +0000
- Revision:
- 0:220280db0a7b
- Child:
- 1:be88f22fc412
Start of a structure.
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:220280db0a7b | 14 | DroidCycleMbed() : AndroidAccessory(INBL, OUTL, |
DanielC | 0:220280db0a7b | 15 | "DC Labs", |
DanielC | 0:220280db0a7b | 16 | "DroidCycle", |
DanielC | 0:220280db0a7b | 17 | "Android E-Bike controller interface", |
DanielC | 0:220280db0a7b | 18 | "0.1", |
DanielC | 0:220280db0a7b | 19 | "http://www.danielcasner.org", |
DanielC | 0:220280db0a7b | 20 | "0000000012345678") { |
DanielC | 0:220280db0a7b | 21 | tick.attach(this, &DroidCycleMbed::onTick, 0.010); |
DanielC | 0:220280db0a7b | 22 | } |
DanielC | 0:220280db0a7b | 23 | |
DanielC | 0:220280db0a7b | 24 | virtual void setupDevice() { |
DanielC | 0:220280db0a7b | 25 | virtual void resetDevice(); |
DanielC | 0:220280db0a7b | 26 | virtual int callbackRead(u8 *buff, int len); |
DanielC | 0:220280db0a7b | 27 | virtual int callbackWrite(); |
DanielC | 0:220280db0a7b | 28 | |
DanielC | 0:220280db0a7b | 29 | private: |
DanielC | 0:220280db0a7b | 30 | void onTick(); |
DanielC | 0:220280db0a7b | 31 | char buffer[OUTL]; |
DanielC | 0:220280db0a7b | 32 | int bcount; |
DanielC | 0:220280db0a7b | 33 | Ticker tick; |
DanielC | 0:220280db0a7b | 34 | Timeout n; |
DanielC | 0:220280db0a7b | 35 | }; |
DanielC | 0:220280db0a7b | 36 | |
DanielC | 0:220280db0a7b | 37 | void DroidCycleMbed::setupDevice() { |
DanielC | 0:220280db0a7b | 38 | for (int i=0; i<OUTL; i++) buffer[i] = 0; |
DanielC | 0:220280db0a7b | 39 | bcount = 0; |
DanielC | 0:220280db0a7b | 40 | } |
DanielC | 0:220280db0a7b | 41 | |
DanielC | 0:220280db0a7b | 42 | void DroidCycleMbed::resetDevice() { |
DanielC | 0:220280db0a7b | 43 | setupDevice(); |
DanielC | 0:220280db0a7b | 44 | } |
DanielC | 0:220280db0a7b | 45 | |
DanielC | 0:220280db0a7b | 46 | int DroidCycleMbed::callbackRead(u8 *buf, int len) { |
DanielC | 0:220280db0a7b | 47 | for (int i=0; i<INBL; i++) buf[i] = 0; |
DanielC | 0:220280db0a7b | 48 | |
DanielC | 0:220280db0a7b | 49 | return 0; |
DanielC | 0:220280db0a7b | 50 | } |
DanielC | 0:220280db0a7b | 51 | |
DanielC | 0:220280db0a7b | 52 | int DroidCycleMbed::callbackWrite() { |
DanielC | 0:220280db0a7b | 53 | return false; |
DanielC | 0:220280db0a7b | 54 | } |
DanielC | 0:220280db0a7b | 55 | |
DanielC | 0:220280db0a7b | 56 | |
DanielC | 0:220280db0a7b | 57 | void DroidCycleMbed::onTick() { |
DanielC | 0:220280db0a7b | 58 | |
DanielC | 0:220280db0a7b | 59 | } |
DanielC | 0:220280db0a7b | 60 | |
DanielC | 0:220280db0a7b | 61 | int main() { |
DanielC | 0:220280db0a7b | 62 | while(1) { |
DanielC | 0:220280db0a7b | 63 | myled = 1; |
DanielC | 0:220280db0a7b | 64 | wait(0.2); |
DanielC | 0:220280db0a7b | 65 | myled = 0; |
DanielC | 0:220280db0a7b | 66 | wait(0.2); |
DanielC | 0:220280db0a7b | 67 | } |
DanielC | 0:220280db0a7b | 68 | } |