Petter Bellander / Mbed 2 deprecated Saab-BT

Dependencies:   mbed

Revision:
5:8e468fef2754
Parent:
4:3041a571b7a7
Child:
6:c454f88524d6
--- a/main.cpp	Tue Jan 05 22:10:16 2016 +0000
+++ b/main.cpp	Mon Jan 11 20:49:59 2016 +0000
@@ -13,6 +13,100 @@
 
 Serial pc(USBTX, USBRX); // tx, rx
 
+void handle_pc_input() {
+    //Debug connection to PC
+    if(pc.readable()) {
+        switch (pc.getc()) {
+            case 'p':
+                if(rn52.toggle_play()) {
+                    printf("play/pause\r\n");
+                }
+                break;
+            case 'v':
+                printf("volume up\r\n");
+                rn52.maxvolume();
+                break;             
+            case 'n':
+                printf("next track\r\n");
+                rn52.next_track();
+                break;  
+            case 'q':
+                printf("getting status\r\n");
+                rn52.get(RN52_GETSTATUS, &res);
+                printf("%s", res.response);
+                break;
+            case 't':
+                rn52.get(RN52_CALLER_ID, &res);
+                printf("%s", res.response);
+                break;
+        }
+    }
+}
+
+void handle_cdc_input() {
+    switch (cdc.get_cmd()) {
+        case IBUS_OTHER_MESSAGE:
+            break;
+        case IBUS_DOORS_LOCKED:
+            //Goto sleep
+            break;
+        case IBUS_DOORS_UNLOCKED:
+            //wake up
+            break;
+        case IBUS_NEXT:
+            rn52.toggle_play();
+            break;
+        case IBUS_CDC_ON:
+            rn52.connect();
+            break;
+        case IBUS_CDC_OFF:
+            rn52.disconnect();
+            break;
+        case IBUS_VOLUME_UP:
+            break;
+        case IBUS_VOLUME_DOWN:
+            break;
+        case IBUS_SKIP_FW:
+            rn52.next_track();
+            break;
+        case IBUS_SKIP_BW:
+            rn52.prev_track();
+            break;
+        case IBUS_SET:
+            rn52.connect();
+            break;
+        case IBUS_CLEAR:
+            break;
+    }    
+}
+
+void handle_bt_input() { 
+    if(rn52.check_event(&res)) {
+        switch (res.event) {
+            case RN52_CALLER_ID_EVENT:
+                break;
+            case RN52_TRACK_CHANGE_EVENT:
+                cdc.reset_elapsed_time();
+                break;
+            case RN52_NO_EVENT: //no specific event occured, check connection status
+                switch(res.connection) {
+                    case RN52_CONNECTED:
+                        cdc.display("BT ANSLUTEN");
+                        rn52.maxvolume();
+                        break;
+                    case RN52_AUDIO_STREAMING:
+                        cdc.display("BT SPELAR");
+                        cdc.start_elapsed_time();
+                        break;
+                }         
+                if(res.connection != RN52_AUDIO_STREAMING) {
+                    cdc.stop_elapsed_time();
+                    cdc.reset_elapsed_time();
+                }            
+        }
+    }
+}
+
 int main() {
     printf("Petters BT CDC-emulator\r\n");
     printf("Initializing\r\n");
@@ -20,95 +114,8 @@
     rn52.init();
     printf("Starting loop\r\n");
     while(1) {
-        //Debug connection to PC
-        if(pc.readable()) {
-            switch (pc.getc()) {
-                case 'p':
-                    if(rn52.set(RN52_PLAYPAUSE)) {
-                        printf("play/pause\r\n");
-                    }
-                    break;
-                case 'v':
-                    printf("volume up\r\n");
-                    rn52.set(RN52_VOLUMEUP);
-                    break;             
-                case 'n':
-                    printf("next track\r\n");
-                    rn52.set(RN52_NEXTTRACK);
-                    break;  
-                case 'q':
-                    printf("getting status\r\n");
-                    rn52.get(RN52_GETSTATUS, &res);
-                    printf("%s", res.response);
-                    break;
-                case 't':
-                    rn52.get(RN52_CALLER_ID, &res);
-                    printf("%s", res.response);
-                    break;
-            }
-        }
-        switch (cdc.get_cmd()) {
-            case IBUS_OTHER_MESSAGE:
-                break;
-            case IBUS_DOORS_LOCKED:
-                //Goto sleep
-                break;
-            case IBUS_DOORS_UNLOCKED:
-                //wake up
-                break;
-            case IBUS_NEXT:
-                cdc.display("NEXT");
-                rn52.set(RN52_PLAYPAUSE);
-                break;
-            case IBUS_CDC_ON:
-                cdc.display("CDC ON");
-                break;
-            case IBUS_CDC_OFF:
-                cdc.display("CDC OFF");
-                break;
-            case IBUS_VOLUME_UP:
-                cdc.display("VOLUME UP");
-                rn52.set(RN52_VOLUMEUP);
-                break;
-            case IBUS_VOLUME_DOWN:
-                cdc.display("VOLUME DOWN");
-                break;
-            case IBUS_SKIP_FW:
-                cdc.display("SKIP FW");
-                rn52.set(RN52_NEXTTRACK);
-                break;
-            case IBUS_SKIP_BW:
-                cdc.display("SKIP BW");
-                rn52.set(RN52_PREVTRACK);
-                break;
-            case IBUS_SET:
-                cdc.display("SET");
-                rn52.set(RN52_CONNECT);
-                break;
-            case IBUS_CLEAR:
-                cdc.display("CLEAR");
-                rn52.set(RN52_DISCONNECT);
-                break;
-        }
-        if(rn52.check_event(&res)) {
-            switch (res.event) {
-                case RN52_CALLER_ID_EVENT:
-                    break;
-                case RN52_TRACK_CHANGE_EVENT:
-                    cdc.reset_elapsed_time();
-                    break;
-                case RN52_NO_EVENT: //no event occured, check connection status
-                    if(res.connection == RN52_AUDIO_STREAMING) {
-                        cdc.display("BT SPELAR");
-                        cdc.start_elapsed_time();
-                    }
-                    else {
-                        cdc.stop_elapsed_time();
-                        cdc.reset_elapsed_time();
-                    }
-                    
-            }
-            
-        }
+        handle_pc_input();
+        handle_cdc_input();
+        handle_bt_input();
     }
 }
\ No newline at end of file