Usb Device Interface, protocol, and programming homework #4 Audio Control device
Dependencies: C12832_lcd USBDevice mbed
MyDisplayClass.cpp@3:6da430f4818a, 2013-08-05 (annotated)
- Committer:
- jakowisp
- Date:
- Mon Aug 05 02:02:58 2013 +0000
- Revision:
- 3:6da430f4818a
- Parent:
- 1:948ffad3284f
Fixed several known issues to complete the assignment
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jakowisp | 0:69eb9d19fb91 | 1 | #include "MyDisplayClass.h" |
jakowisp | 3:6da430f4818a | 2 | //Constructor |
jakowisp | 0:69eb9d19fb91 | 3 | MyDisplayClass::MyDisplayClass(){ |
jakowisp | 3:6da430f4818a | 4 | //Create a new LCD instance |
jakowisp | 0:69eb9d19fb91 | 5 | lcd=new C12832_LCD(); |
jakowisp | 3:6da430f4818a | 6 | //Create a new bargraph instance |
jakowisp | 0:69eb9d19fb91 | 7 | volume=new bargraph(lcd,32); |
jakowisp | 3:6da430f4818a | 8 | //Set the default feature modes. Volme Display off. Graphic mode off. |
jakowisp | 1:948ffad3284f | 9 | volumeDisplayEnable=false; |
jakowisp | 1:948ffad3284f | 10 | graphicModeEnable=false; |
jakowisp | 0:69eb9d19fb91 | 11 | } |
jakowisp | 0:69eb9d19fb91 | 12 | |
jakowisp | 0:69eb9d19fb91 | 13 | void MyDisplayClass::drawNoConnection(C12832_LCD *lcd) { |
jakowisp | 0:69eb9d19fb91 | 14 | lcd->fillrect(0, 31, 15,16, 0); |
jakowisp | 0:69eb9d19fb91 | 15 | lcd->rect(0, 31, 15,16, 1); |
jakowisp | 0:69eb9d19fb91 | 16 | lcd->line(2,29,13,18,1); |
jakowisp | 0:69eb9d19fb91 | 17 | lcd->circle(7,24,4,1); |
jakowisp | 0:69eb9d19fb91 | 18 | } |
jakowisp | 0:69eb9d19fb91 | 19 | |
jakowisp | 0:69eb9d19fb91 | 20 | void MyDisplayClass::drawConnection(C12832_LCD *lcd) { |
jakowisp | 0:69eb9d19fb91 | 21 | lcd->fillrect(0, 31, 15,16, 0); |
jakowisp | 0:69eb9d19fb91 | 22 | lcd->rect(0, 31, 15,16, 1); |
jakowisp | 0:69eb9d19fb91 | 23 | lcd->rect(5,26,10,21,1); |
jakowisp | 0:69eb9d19fb91 | 24 | lcd->line(6,23,7,25,1); |
jakowisp | 0:69eb9d19fb91 | 25 | lcd->line(7,25,14,17,1); |
jakowisp | 0:69eb9d19fb91 | 26 | } |
jakowisp | 0:69eb9d19fb91 | 27 | |
jakowisp | 0:69eb9d19fb91 | 28 | void MyDisplayClass::drawSuspend(C12832_LCD *lcd) { |
jakowisp | 0:69eb9d19fb91 | 29 | lcd->fillrect(0, 31, 15,16, 0); |
jakowisp | 0:69eb9d19fb91 | 30 | lcd->rect(0, 31, 15,16, 1); |
jakowisp | 0:69eb9d19fb91 | 31 | lcd->line(4,20,11,20,1); |
jakowisp | 0:69eb9d19fb91 | 32 | lcd->line(4,27,11,20,1); |
jakowisp | 0:69eb9d19fb91 | 33 | lcd->line(4,27,11,27,1); |
jakowisp | 0:69eb9d19fb91 | 34 | } |
jakowisp | 0:69eb9d19fb91 | 35 | |
jakowisp | 0:69eb9d19fb91 | 36 | void MyDisplayClass::setLevel(int level){ |
jakowisp | 0:69eb9d19fb91 | 37 | volume->setLevel(level); |
jakowisp | 0:69eb9d19fb91 | 38 | } |
jakowisp | 0:69eb9d19fb91 | 39 | |
jakowisp | 0:69eb9d19fb91 | 40 | void MyDisplayClass::setMaxLevel(int level){ |
jakowisp | 0:69eb9d19fb91 | 41 | volume->setMaxLevel(level); |
jakowisp | 0:69eb9d19fb91 | 42 | } |
jakowisp | 0:69eb9d19fb91 | 43 | |
jakowisp | 3:6da430f4818a | 44 | //When in Graphic mode update USB status with pictures. |
jakowisp | 0:69eb9d19fb91 | 45 | void MyDisplayClass::UpdateStatus(int state){ |
jakowisp | 0:69eb9d19fb91 | 46 | switch(state) { |
jakowisp | 0:69eb9d19fb91 | 47 | case 2: drawSuspend(lcd); break; |
jakowisp | 0:69eb9d19fb91 | 48 | case 3: drawConnection(lcd); break; |
jakowisp | 0:69eb9d19fb91 | 49 | default: drawNoConnection(lcd); break; |
jakowisp | 0:69eb9d19fb91 | 50 | } |
jakowisp | 0:69eb9d19fb91 | 51 | } |
jakowisp | 0:69eb9d19fb91 | 52 | |
jakowisp | 3:6da430f4818a | 53 | //When in text mode update the USB status based on state |
jakowisp | 0:69eb9d19fb91 | 54 | void MyDisplayClass::UpdateTextStatus(int state){ |
jakowisp | 0:69eb9d19fb91 | 55 | lcd->locate(3,12); |
jakowisp | 0:69eb9d19fb91 | 56 | lcd->printf(" "); |
jakowisp | 0:69eb9d19fb91 | 57 | lcd->locate(3,12); |
jakowisp | 0:69eb9d19fb91 | 58 | switch(state) { |
jakowisp | 0:69eb9d19fb91 | 59 | case 2: lcd->printf("Suspended"); break; |
jakowisp | 0:69eb9d19fb91 | 60 | case 3: lcd->printf("Normal"); break; |
jakowisp | 0:69eb9d19fb91 | 61 | default: lcd->printf("Offline"); break; |
jakowisp | 0:69eb9d19fb91 | 62 | } |
jakowisp | 0:69eb9d19fb91 | 63 | |
jakowisp | 0:69eb9d19fb91 | 64 | } |
jakowisp | 0:69eb9d19fb91 | 65 | |
jakowisp | 3:6da430f4818a | 66 | //Update the volume control display bsed on feature enable state, USB state and volume |
jakowisp | 1:948ffad3284f | 67 | void MyDisplayClass::update(int state){ |
jakowisp | 3:6da430f4818a | 68 | //Is volume display enabled |
jakowisp | 1:948ffad3284f | 69 | if(volumeDisplayEnable) |
jakowisp | 3:6da430f4818a | 70 | //Volume:Is Graphic mode enabled or should messages be in text |
jakowisp | 1:948ffad3284f | 71 | if(graphicModeEnable) { |
jakowisp | 3:6da430f4818a | 72 | //Call Graphic mode update function |
jakowisp | 0:69eb9d19fb91 | 73 | volume->updateBargraph(); |
jakowisp | 0:69eb9d19fb91 | 74 | } else { |
jakowisp | 0:69eb9d19fb91 | 75 | lcd->locate(3,3); |
jakowisp | 3:6da430f4818a | 76 | lcd->printf("Volume: %3d PCT%",(volume->level * 100)/volume->maxlevels); |
jakowisp | 0:69eb9d19fb91 | 77 | } |
jakowisp | 3:6da430f4818a | 78 | //USB:Is Graphic mode enabled or should messages be in text |
jakowisp | 1:948ffad3284f | 79 | if(graphicModeEnable) |
jakowisp | 0:69eb9d19fb91 | 80 | UpdateStatus(state); |
jakowisp | 0:69eb9d19fb91 | 81 | else |
jakowisp | 0:69eb9d19fb91 | 82 | UpdateTextStatus(state); |
jakowisp | 0:69eb9d19fb91 | 83 | } |