Petter Bellander / Mbed 2 deprecated Saab-BT

Dependencies:   mbed

Committer:
petter
Date:
Tue Jan 05 22:10:16 2016 +0000
Revision:
4:3041a571b7a7
Parent:
3:b76c74783d0d
Child:
5:8e468fef2754
Moved additional RN52 event data queries from main into RN52 class.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
petter 0:6cf6e566c0da 1 // Inspired from BlueSaab
petter 0:6cf6e566c0da 2 // Project/Hardware: http://bluesaab.blogspot.com/
petter 0:6cf6e566c0da 3 // Code: https://github.com/kveilands/SAAB-CDC/tree/master/SAAB-CDC
petter 0:6cf6e566c0da 4 // I-Bus information from http://pikkupossu.1g.fi/tomi/projects/i-bus/i-bus.html
petter 0:6cf6e566c0da 5
petter 0:6cf6e566c0da 6 #include "mbed.h"
petter 0:6cf6e566c0da 7 #include "CDC.h"
petter 0:6cf6e566c0da 8 #include "RN52.h"
petter 0:6cf6e566c0da 9
petter 0:6cf6e566c0da 10 CDC cdc;
petter 0:6cf6e566c0da 11 RN52 rn52;
petter 0:6cf6e566c0da 12 RN52_RESULT res;
petter 0:6cf6e566c0da 13
petter 0:6cf6e566c0da 14 Serial pc(USBTX, USBRX); // tx, rx
petter 0:6cf6e566c0da 15
petter 0:6cf6e566c0da 16 int main() {
petter 0:6cf6e566c0da 17 printf("Petters BT CDC-emulator\r\n");
petter 0:6cf6e566c0da 18 printf("Initializing\r\n");
petter 0:6cf6e566c0da 19 cdc.init();
petter 0:6cf6e566c0da 20 rn52.init();
petter 0:6cf6e566c0da 21 printf("Starting loop\r\n");
petter 0:6cf6e566c0da 22 while(1) {
petter 2:10c60edc8573 23 //Debug connection to PC
petter 0:6cf6e566c0da 24 if(pc.readable()) {
petter 0:6cf6e566c0da 25 switch (pc.getc()) {
petter 0:6cf6e566c0da 26 case 'p':
petter 0:6cf6e566c0da 27 if(rn52.set(RN52_PLAYPAUSE)) {
petter 0:6cf6e566c0da 28 printf("play/pause\r\n");
petter 0:6cf6e566c0da 29 }
petter 0:6cf6e566c0da 30 break;
petter 0:6cf6e566c0da 31 case 'v':
petter 0:6cf6e566c0da 32 printf("volume up\r\n");
petter 0:6cf6e566c0da 33 rn52.set(RN52_VOLUMEUP);
petter 0:6cf6e566c0da 34 break;
petter 0:6cf6e566c0da 35 case 'n':
petter 0:6cf6e566c0da 36 printf("next track\r\n");
petter 0:6cf6e566c0da 37 rn52.set(RN52_NEXTTRACK);
petter 0:6cf6e566c0da 38 break;
petter 0:6cf6e566c0da 39 case 'q':
petter 0:6cf6e566c0da 40 printf("getting status\r\n");
petter 0:6cf6e566c0da 41 rn52.get(RN52_GETSTATUS, &res);
petter 0:6cf6e566c0da 42 printf("%s", res.response);
petter 2:10c60edc8573 43 break;
petter 0:6cf6e566c0da 44 case 't':
petter 0:6cf6e566c0da 45 rn52.get(RN52_CALLER_ID, &res);
petter 0:6cf6e566c0da 46 printf("%s", res.response);
petter 2:10c60edc8573 47 break;
petter 0:6cf6e566c0da 48 }
petter 0:6cf6e566c0da 49 }
petter 0:6cf6e566c0da 50 switch (cdc.get_cmd()) {
petter 0:6cf6e566c0da 51 case IBUS_OTHER_MESSAGE:
petter 0:6cf6e566c0da 52 break;
petter 0:6cf6e566c0da 53 case IBUS_DOORS_LOCKED:
petter 4:3041a571b7a7 54 //Goto sleep
petter 0:6cf6e566c0da 55 break;
petter 0:6cf6e566c0da 56 case IBUS_DOORS_UNLOCKED:
petter 4:3041a571b7a7 57 //wake up
petter 0:6cf6e566c0da 58 break;
petter 0:6cf6e566c0da 59 case IBUS_NEXT:
petter 0:6cf6e566c0da 60 cdc.display("NEXT");
petter 0:6cf6e566c0da 61 rn52.set(RN52_PLAYPAUSE);
petter 0:6cf6e566c0da 62 break;
petter 0:6cf6e566c0da 63 case IBUS_CDC_ON:
petter 0:6cf6e566c0da 64 cdc.display("CDC ON");
petter 0:6cf6e566c0da 65 break;
petter 0:6cf6e566c0da 66 case IBUS_CDC_OFF:
petter 0:6cf6e566c0da 67 cdc.display("CDC OFF");
petter 0:6cf6e566c0da 68 break;
petter 0:6cf6e566c0da 69 case IBUS_VOLUME_UP:
petter 0:6cf6e566c0da 70 cdc.display("VOLUME UP");
petter 0:6cf6e566c0da 71 rn52.set(RN52_VOLUMEUP);
petter 0:6cf6e566c0da 72 break;
petter 0:6cf6e566c0da 73 case IBUS_VOLUME_DOWN:
petter 0:6cf6e566c0da 74 cdc.display("VOLUME DOWN");
petter 0:6cf6e566c0da 75 break;
petter 0:6cf6e566c0da 76 case IBUS_SKIP_FW:
petter 0:6cf6e566c0da 77 cdc.display("SKIP FW");
petter 0:6cf6e566c0da 78 rn52.set(RN52_NEXTTRACK);
petter 0:6cf6e566c0da 79 break;
petter 0:6cf6e566c0da 80 case IBUS_SKIP_BW:
petter 0:6cf6e566c0da 81 cdc.display("SKIP BW");
petter 0:6cf6e566c0da 82 rn52.set(RN52_PREVTRACK);
petter 0:6cf6e566c0da 83 break;
petter 0:6cf6e566c0da 84 case IBUS_SET:
petter 0:6cf6e566c0da 85 cdc.display("SET");
petter 0:6cf6e566c0da 86 rn52.set(RN52_CONNECT);
petter 0:6cf6e566c0da 87 break;
petter 0:6cf6e566c0da 88 case IBUS_CLEAR:
petter 0:6cf6e566c0da 89 cdc.display("CLEAR");
petter 0:6cf6e566c0da 90 rn52.set(RN52_DISCONNECT);
petter 0:6cf6e566c0da 91 break;
petter 0:6cf6e566c0da 92 }
petter 4:3041a571b7a7 93 if(rn52.check_event(&res)) {
petter 0:6cf6e566c0da 94 switch (res.event) {
petter 0:6cf6e566c0da 95 case RN52_CALLER_ID_EVENT:
petter 0:6cf6e566c0da 96 break;
petter 0:6cf6e566c0da 97 case RN52_TRACK_CHANGE_EVENT:
petter 2:10c60edc8573 98 cdc.reset_elapsed_time();
petter 0:6cf6e566c0da 99 break;
petter 2:10c60edc8573 100 case RN52_NO_EVENT: //no event occured, check connection status
petter 0:6cf6e566c0da 101 if(res.connection == RN52_AUDIO_STREAMING) {
petter 0:6cf6e566c0da 102 cdc.display("BT SPELAR");
petter 2:10c60edc8573 103 cdc.start_elapsed_time();
petter 0:6cf6e566c0da 104 }
petter 0:6cf6e566c0da 105 else {
petter 2:10c60edc8573 106 cdc.stop_elapsed_time();
petter 2:10c60edc8573 107 cdc.reset_elapsed_time();
petter 0:6cf6e566c0da 108 }
petter 0:6cf6e566c0da 109
petter 0:6cf6e566c0da 110 }
petter 0:6cf6e566c0da 111
petter 0:6cf6e566c0da 112 }
petter 0:6cf6e566c0da 113 }
petter 0:6cf6e566c0da 114 }