Usb Device Interface, protocol, and programming homework #4 Audio Control device

Dependencies:   C12832_lcd USBDevice mbed

Committer:
jakowisp
Date:
Tue Jul 30 22:35:10 2013 +0000
Revision:
0:69eb9d19fb91
Child:
1:948ffad3284f
AudioControl Finctional
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jakowisp 0:69eb9d19fb91 1 #include "mbed.h"
jakowisp 0:69eb9d19fb91 2
jakowisp 0:69eb9d19fb91 3 #include "USBAudioControl.h"
jakowisp 0:69eb9d19fb91 4 #include "MyDisplayClass.h"
jakowisp 0:69eb9d19fb91 5
jakowisp 0:69eb9d19fb91 6 #define PAUSEKEY 16
jakowisp 0:69eb9d19fb91 7 #define NUMSECONDSTOHOLD 5
jakowisp 0:69eb9d19fb91 8
jakowisp 0:69eb9d19fb91 9 BusIn btnArray(p15,p12,p13,p16,p14);
jakowisp 0:69eb9d19fb91 10 DigitalOut toggle(LED1);
jakowisp 0:69eb9d19fb91 11
jakowisp 0:69eb9d19fb91 12 MyDisplayClass display;
jakowisp 0:69eb9d19fb91 13 USBAudioControl hid(0x1234,0x0006,0x0001);
jakowisp 0:69eb9d19fb91 14 HID_REPORT tempReport;
jakowisp 0:69eb9d19fb91 15
jakowisp 0:69eb9d19fb91 16 unsigned int features=0;
jakowisp 0:69eb9d19fb91 17 unsigned int USBstate=0;
jakowisp 0:69eb9d19fb91 18
jakowisp 0:69eb9d19fb91 19 void SetLevel(HID_REPORT *report){
jakowisp 0:69eb9d19fb91 20 display.setLevel(report->data[0]);
jakowisp 0:69eb9d19fb91 21 }
jakowisp 0:69eb9d19fb91 22
jakowisp 0:69eb9d19fb91 23 void SetFeatures(HID_REPORT *report){
jakowisp 0:69eb9d19fb91 24 features=(report->data[1]&0x30)>>4;
jakowisp 0:69eb9d19fb91 25 display.setMaxLevel((report->data[1]&0x0f)<<2);
jakowisp 0:69eb9d19fb91 26 }
jakowisp 0:69eb9d19fb91 27
jakowisp 0:69eb9d19fb91 28 void WriteConnectedBit(unsigned int connected){
jakowisp 0:69eb9d19fb91 29 USBstate = (connected << 1) | (USBstate & 0x1);
jakowisp 0:69eb9d19fb91 30 }
jakowisp 0:69eb9d19fb91 31
jakowisp 0:69eb9d19fb91 32 void WriteSuspendBit(unsigned int suspend){
jakowisp 0:69eb9d19fb91 33 USBstate = (suspend) | (USBstate & 0x2);
jakowisp 0:69eb9d19fb91 34 }
jakowisp 0:69eb9d19fb91 35
jakowisp 0:69eb9d19fb91 36 void PollInputs(HID_REPORT *tempReport) {
jakowisp 0:69eb9d19fb91 37 tempReport->data[0]=btnArray;
jakowisp 0:69eb9d19fb91 38 }
jakowisp 0:69eb9d19fb91 39
jakowisp 0:69eb9d19fb91 40 void CheckForHeldPauseKey(HID_REPORT * tempreport, USBAudioControl * hid, DigitalOut * toggle){
jakowisp 0:69eb9d19fb91 41 static int holdCount=0;
jakowisp 0:69eb9d19fb91 42
jakowisp 0:69eb9d19fb91 43 //Provide Feedback to user holding the key by flashing an LED when the key is held
jakowisp 0:69eb9d19fb91 44 *toggle=(holdCount>0)?(holdCount /5)%2 :0;
jakowisp 0:69eb9d19fb91 45 //Count how long the PAUSEKEY is held
jakowisp 0:69eb9d19fb91 46 if(tempReport.data[0]==PAUSEKEY) {
jakowisp 0:69eb9d19fb91 47 holdCount++;
jakowisp 0:69eb9d19fb91 48 } else
jakowisp 0:69eb9d19fb91 49 holdCount=0;
jakowisp 0:69eb9d19fb91 50 //If Key is held # of seconds, The hid will diconnect/connect the USB device
jakowisp 0:69eb9d19fb91 51 if(holdCount>=NUMSECONDSTOHOLD*10) {
jakowisp 0:69eb9d19fb91 52 holdCount=0;
jakowisp 0:69eb9d19fb91 53 if(hid->getConnectState()) {
jakowisp 0:69eb9d19fb91 54 hid->disconnect();
jakowisp 0:69eb9d19fb91 55 } else
jakowisp 0:69eb9d19fb91 56 hid->connect();
jakowisp 0:69eb9d19fb91 57 }
jakowisp 0:69eb9d19fb91 58 }
jakowisp 0:69eb9d19fb91 59
jakowisp 0:69eb9d19fb91 60 int main() {
jakowisp 0:69eb9d19fb91 61
jakowisp 0:69eb9d19fb91 62 hid.callbackSetOutputReport=&SetLevel;
jakowisp 0:69eb9d19fb91 63 hid.callbackSetFeatureReport=&SetFeatures;
jakowisp 0:69eb9d19fb91 64 hid.callbackSuspendChange=&WriteSuspendBit;
jakowisp 0:69eb9d19fb91 65 tempReport.length=1;
jakowisp 0:69eb9d19fb91 66
jakowisp 0:69eb9d19fb91 67 while(1) {
jakowisp 0:69eb9d19fb91 68 PollInputs(&tempReport);
jakowisp 0:69eb9d19fb91 69 WriteConnectedBit(hid.getConnectState());
jakowisp 0:69eb9d19fb91 70 CheckForHeldPauseKey(&tempReport,&hid,&toggle);
jakowisp 0:69eb9d19fb91 71 hid.FillInputReport(&tempReport);
jakowisp 0:69eb9d19fb91 72 display.update(USBstate,features);
jakowisp 0:69eb9d19fb91 73 wait(0.1);
jakowisp 0:69eb9d19fb91 74 }
jakowisp 0:69eb9d19fb91 75 }
jakowisp 0:69eb9d19fb91 76
jakowisp 0:69eb9d19fb91 77