The London Hackspace bandwidth meter
Dependencies: LPD8806 MODSERIAL mbed picojson
See:
- https://github.com/londonhackspace/net-o-meter
- http://wiki.london.hackspace.org.uk/view/Projects/BandwidthMeter
main.cpp@2:81155674a852, 2012-06-10 (annotated)
- Committer:
- Jasper
- Date:
- Sun Jun 10 23:05:12 2012 +0000
- Revision:
- 2:81155674a852
- Parent:
- 1:e384e7146746
- Child:
- 3:7fca72f96711
fix a bit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jasper | 0:0a6f193d5344 | 1 | #include "mbed.h" |
Jasper | 0:0a6f193d5344 | 2 | |
Jasper | 0:0a6f193d5344 | 3 | #include "LPD8806.h" |
Jasper | 0:0a6f193d5344 | 4 | |
Jasper | 0:0a6f193d5344 | 5 | DigitalOut led1(LED1); |
Jasper | 0:0a6f193d5344 | 6 | DigitalOut led2(LED2); |
Jasper | 0:0a6f193d5344 | 7 | DigitalOut led3(LED3); |
Jasper | 0:0a6f193d5344 | 8 | DigitalOut led4(LED4); |
Jasper | 0:0a6f193d5344 | 9 | |
Jasper | 1:e384e7146746 | 10 | /* talk to the world */ |
Jasper | 1:e384e7146746 | 11 | Serial pc(USBTX, USBRX); |
Jasper | 0:0a6f193d5344 | 12 | |
Jasper | 1:e384e7146746 | 13 | LPD8806 strip = LPD8806(32); |
Jasper | 0:0a6f193d5344 | 14 | |
Jasper | 0:0a6f193d5344 | 15 | void setPixelsTop(int start, int end, int colour) { |
Jasper | 0:0a6f193d5344 | 16 | int i; |
Jasper | 0:0a6f193d5344 | 17 | |
Jasper | 0:0a6f193d5344 | 18 | for (i = start; i < end + 1 ; i++) { |
Jasper | 0:0a6f193d5344 | 19 | strip.setPixelColor(i, colour); |
Jasper | 0:0a6f193d5344 | 20 | } |
Jasper | 0:0a6f193d5344 | 21 | } |
Jasper | 0:0a6f193d5344 | 22 | |
Jasper | 0:0a6f193d5344 | 23 | void setPixelsBottom(int start, int end, int colour) { |
Jasper | 0:0a6f193d5344 | 24 | int i; |
Jasper | 0:0a6f193d5344 | 25 | |
Jasper | 0:0a6f193d5344 | 26 | for (i = start; i < end + 1 ; i++) { |
Jasper | 0:0a6f193d5344 | 27 | strip.setPixelColor(16 + i, colour); |
Jasper | 0:0a6f193d5344 | 28 | } |
Jasper | 0:0a6f193d5344 | 29 | } |
Jasper | 0:0a6f193d5344 | 30 | |
Jasper | 1:e384e7146746 | 31 | /* 0 - 16 */ |
Jasper | 1:e384e7146746 | 32 | void top_strip(int quantity){ |
Jasper | 1:e384e7146746 | 33 | if (quantity < 16) { |
Jasper | 1:e384e7146746 | 34 | // blank unused bits. |
Jasper | 1:e384e7146746 | 35 | setPixelsTop(quantity, 16, 0); |
Jasper | 1:e384e7146746 | 36 | } |
Jasper | 1:e384e7146746 | 37 | |
Jasper | 1:e384e7146746 | 38 | if (quantity == 0) return; |
Jasper | 1:e384e7146746 | 39 | |
Jasper | 1:e384e7146746 | 40 | quantity --; |
Jasper | 1:e384e7146746 | 41 | |
Jasper | 1:e384e7146746 | 42 | setPixelsTop(0, quantity < 12 ? quantity : 11, strip.Color(0, 127, 0)); |
Jasper | 1:e384e7146746 | 43 | |
Jasper | 1:e384e7146746 | 44 | if (quantity > 11) |
Jasper | 1:e384e7146746 | 45 | setPixelsTop(12, quantity < 14 ? quantity : 14, strip.Color(127, 127, 0)); |
Jasper | 1:e384e7146746 | 46 | |
Jasper | 1:e384e7146746 | 47 | if (quantity > 13) |
Jasper | 1:e384e7146746 | 48 | setPixelsTop(14, quantity < 16 ? quantity : 16, strip.Color(127, 0, 0)); |
Jasper | 1:e384e7146746 | 49 | } |
Jasper | 1:e384e7146746 | 50 | |
Jasper | 1:e384e7146746 | 51 | void bottom_strip(int quantity){ |
Jasper | 1:e384e7146746 | 52 | if (quantity < 16) { |
Jasper | 1:e384e7146746 | 53 | // blank unused bits. |
Jasper | 1:e384e7146746 | 54 | setPixelsBottom(quantity, 16, 0); |
Jasper | 1:e384e7146746 | 55 | } |
Jasper | 1:e384e7146746 | 56 | |
Jasper | 1:e384e7146746 | 57 | if (quantity == 0) return; |
Jasper | 1:e384e7146746 | 58 | quantity --; |
Jasper | 1:e384e7146746 | 59 | |
Jasper | 1:e384e7146746 | 60 | setPixelsBottom(0, quantity < 12 ? quantity : 11, strip.Color(0, 127, 0)); |
Jasper | 1:e384e7146746 | 61 | |
Jasper | 1:e384e7146746 | 62 | if (quantity > 11) |
Jasper | 1:e384e7146746 | 63 | setPixelsBottom(12, quantity < 14 ? quantity : 14, strip.Color(127, 127, 0)); |
Jasper | 1:e384e7146746 | 64 | |
Jasper | 1:e384e7146746 | 65 | if (quantity > 13) |
Jasper | 1:e384e7146746 | 66 | setPixelsBottom(14, quantity < 16 ? quantity : 16, strip.Color(127, 0, 0)); |
Jasper | 1:e384e7146746 | 67 | } |
Jasper | 1:e384e7146746 | 68 | |
Jasper | 1:e384e7146746 | 69 | #define s_looking 1 |
Jasper | 1:e384e7146746 | 70 | #define s_top 2 |
Jasper | 1:e384e7146746 | 71 | #define s_bottom 3 |
Jasper | 1:e384e7146746 | 72 | |
Jasper | 0:0a6f193d5344 | 73 | int main() { |
Jasper | 1:e384e7146746 | 74 | int t = 0, b = 0; |
Jasper | 1:e384e7146746 | 75 | int i, state = s_looking, tmp = 0, col = 1; |
Jasper | 1:e384e7146746 | 76 | bool changed = false; |
Jasper | 1:e384e7146746 | 77 | char got; |
Jasper | 0:0a6f193d5344 | 78 | |
Jasper | 0:0a6f193d5344 | 79 | strip.begin(); |
Jasper | 0:0a6f193d5344 | 80 | |
Jasper | 0:0a6f193d5344 | 81 | for (i = 0 ; i < strip.numPixels() ; i++) { |
Jasper | 0:0a6f193d5344 | 82 | // clear the strip |
Jasper | 0:0a6f193d5344 | 83 | strip.setPixelColor(i, 0); |
Jasper | 0:0a6f193d5344 | 84 | } |
Jasper | 0:0a6f193d5344 | 85 | |
Jasper | 0:0a6f193d5344 | 86 | strip.show(); |
Jasper | 0:0a6f193d5344 | 87 | |
Jasper | 0:0a6f193d5344 | 88 | while(1) { |
Jasper | 0:0a6f193d5344 | 89 | |
Jasper | 1:e384e7146746 | 90 | if (pc.readable()) { |
Jasper | 1:e384e7146746 | 91 | got = pc.getc(); |
Jasper | 1:e384e7146746 | 92 | pc.putc(got); // remote echo |
Jasper | 1:e384e7146746 | 93 | |
Jasper | 1:e384e7146746 | 94 | changed = false; |
Jasper | 1:e384e7146746 | 95 | |
Jasper | 1:e384e7146746 | 96 | if (got == '\n' || got == '\r') { |
Jasper | 1:e384e7146746 | 97 | if (state == s_top) |
Jasper | 1:e384e7146746 | 98 | t = tmp; |
Jasper | 1:e384e7146746 | 99 | if (state == s_bottom) |
Jasper | 1:e384e7146746 | 100 | b = tmp; |
Jasper | 1:e384e7146746 | 101 | state = s_looking; |
Jasper | 1:e384e7146746 | 102 | tmp = 0; |
Jasper | 1:e384e7146746 | 103 | col = 1; |
Jasper | 1:e384e7146746 | 104 | if (t > 16) t = 16; |
Jasper | 1:e384e7146746 | 105 | if (b > 16) b = 16; |
Jasper | 1:e384e7146746 | 106 | printf("t: %d b: %d\n", t, b); |
Jasper | 1:e384e7146746 | 107 | changed = true; |
Jasper | 1:e384e7146746 | 108 | } else if (got == 'b') { |
Jasper | 1:e384e7146746 | 109 | state = s_bottom; |
Jasper | 1:e384e7146746 | 110 | } else if (got == 't') { |
Jasper | 1:e384e7146746 | 111 | state = s_top; |
Jasper | 1:e384e7146746 | 112 | } else if (got <= '9' and got >= '0') { |
Jasper | 1:e384e7146746 | 113 | tmp += (got - '0') * col; |
Jasper | 1:e384e7146746 | 114 | col = col * 10; |
Jasper | 1:e384e7146746 | 115 | } |
Jasper | 1:e384e7146746 | 116 | } |
Jasper | 1:e384e7146746 | 117 | if (changed) |
Jasper | 0:0a6f193d5344 | 118 | { |
Jasper | 2:81155674a852 | 119 | led1 = led1 ? 0 : 1; |
Jasper | 1:e384e7146746 | 120 | top_strip(t); |
Jasper | 1:e384e7146746 | 121 | bottom_strip(b); |
Jasper | 0:0a6f193d5344 | 122 | strip.show(); |
Jasper | 0:0a6f193d5344 | 123 | } |
Jasper | 0:0a6f193d5344 | 124 | } |
Jasper | 0:0a6f193d5344 | 125 | } |