Simple project that creates a device capable of controlling MS teams. It can Mute, Decline a Call, Answer Audio, or Answer Video. This is using the Sparkfun Joystick Shield attached to a KL25Z, but can be easily modified to work with whatever buttons you want.

Dependencies:   mbed TSI USBDevice

Committer:
Fratink
Date:
Mon Apr 12 15:12:41 2021 +0000
Revision:
2:4097fa431680
Parent:
1:b5afa5af13d5
Working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Fratink 0:4621dca43078 1 #include "mbed.h"
Fratink 0:4621dca43078 2 #include "USBKeyboard.h"
Fratink 0:4621dca43078 3 #include "TSISensor.h"
Fratink 0:4621dca43078 4
Fratink 2:4097fa431680 5 #define SWITCH_TIMEOUT 10
Fratink 2:4097fa431680 6
Fratink 0:4621dca43078 7 USBKeyboard keyboard;
Fratink 0:4621dca43078 8
Fratink 0:4621dca43078 9 typedef enum
Fratink 0:4621dca43078 10 {
Fratink 0:4621dca43078 11 ACCEPT_VIDEO_CALL,
Fratink 0:4621dca43078 12 ACCCEPT_AUDIO_CALL,
Fratink 0:4621dca43078 13 DECLINE_CALL,
Fratink 0:4621dca43078 14 TOGGLE_MUTE,
Fratink 0:4621dca43078 15 TOGGLE_VIDEO
Fratink 0:4621dca43078 16 }CommandList_e;
Fratink 0:4621dca43078 17
Fratink 0:4621dca43078 18
Fratink 1:b5afa5af13d5 19 DigitalIn up(D4);
Fratink 1:b5afa5af13d5 20 DigitalIn down(D5);
Fratink 1:b5afa5af13d5 21 DigitalIn left(D6);
Fratink 1:b5afa5af13d5 22 DigitalIn right(D3);
Fratink 1:b5afa5af13d5 23
Fratink 0:4621dca43078 24
Fratink 0:4621dca43078 25 //PwmOut rled(LED_RED);
Fratink 0:4621dca43078 26 //PwmOut gled(LED2);
Fratink 0:4621dca43078 27 //PwmOut bled(LED3);
Fratink 0:4621dca43078 28
Fratink 0:4621dca43078 29 void sendKeyboardCommand(CommandList_e command)
Fratink 0:4621dca43078 30 {
Fratink 0:4621dca43078 31 switch(command)
Fratink 0:4621dca43078 32 {
Fratink 0:4621dca43078 33 case ACCEPT_VIDEO_CALL:
Fratink 0:4621dca43078 34 keyboard.keyCode('a',KEY_CTRL|KEY_SHIFT);
Fratink 0:4621dca43078 35 break;
Fratink 0:4621dca43078 36 case ACCCEPT_AUDIO_CALL:
Fratink 0:4621dca43078 37 keyboard.keyCode('a',KEY_CTRL|KEY_SHIFT);
Fratink 0:4621dca43078 38 break;
Fratink 0:4621dca43078 39 case DECLINE_CALL:
Fratink 0:4621dca43078 40 keyboard.keyCode('d',KEY_CTRL|KEY_SHIFT);
Fratink 0:4621dca43078 41 break;
Fratink 0:4621dca43078 42 case TOGGLE_MUTE:
Fratink 0:4621dca43078 43 keyboard.keyCode('m',KEY_CTRL|KEY_SHIFT);
Fratink 0:4621dca43078 44 break;
Fratink 0:4621dca43078 45 case TOGGLE_VIDEO:
Fratink 0:4621dca43078 46 keyboard.keyCode('o',KEY_CTRL|KEY_SHIFT);
Fratink 0:4621dca43078 47 break;
Fratink 0:4621dca43078 48 default:
Fratink 0:4621dca43078 49 break;
Fratink 0:4621dca43078 50 };
Fratink 0:4621dca43078 51 }
Fratink 0:4621dca43078 52
Fratink 0:4621dca43078 53
Fratink 0:4621dca43078 54 int main(void)
Fratink 0:4621dca43078 55 {
Fratink 2:4097fa431680 56 int switchTime = 0;
Fratink 1:b5afa5af13d5 57 up.mode(PullUp);
Fratink 1:b5afa5af13d5 58 down.mode(PullUp);
Fratink 1:b5afa5af13d5 59 left.mode(PullUp);
Fratink 1:b5afa5af13d5 60 right.mode(PullUp);
Fratink 0:4621dca43078 61
Fratink 0:4621dca43078 62 while(1)
Fratink 0:4621dca43078 63 {
Fratink 2:4097fa431680 64 if (switchTime == 0)
Fratink 2:4097fa431680 65 {
Fratink 2:4097fa431680 66 if(!up)
Fratink 2:4097fa431680 67 {
Fratink 2:4097fa431680 68 switchTime = SWITCH_TIMEOUT;
Fratink 2:4097fa431680 69 sendKeyboardCommand(TOGGLE_MUTE);
Fratink 2:4097fa431680 70 // keyboard.keyCode(UP_ARROW);
Fratink 2:4097fa431680 71 }
Fratink 2:4097fa431680 72 if(!down)
Fratink 2:4097fa431680 73 {
Fratink 2:4097fa431680 74 switchTime = SWITCH_TIMEOUT;
Fratink 2:4097fa431680 75 sendKeyboardCommand(DECLINE_CALL);
Fratink 2:4097fa431680 76 // keyboard.keyCode(DOWN_ARROW);
Fratink 2:4097fa431680 77 }
Fratink 2:4097fa431680 78 if(!left)
Fratink 2:4097fa431680 79 {
Fratink 2:4097fa431680 80 switchTime = SWITCH_TIMEOUT;
Fratink 2:4097fa431680 81 sendKeyboardCommand(ACCEPT_VIDEO_CALL);
Fratink 2:4097fa431680 82 // keyboard.keyCode(LEFT_ARROW);
Fratink 2:4097fa431680 83 }
Fratink 2:4097fa431680 84 if(!right)
Fratink 2:4097fa431680 85 {
Fratink 2:4097fa431680 86 switchTime = SWITCH_TIMEOUT;
Fratink 2:4097fa431680 87 sendKeyboardCommand(ACCCEPT_AUDIO_CALL);
Fratink 2:4097fa431680 88 // keyboard.keyCode(RIGHT_ARROW);
Fratink 2:4097fa431680 89 }
Fratink 2:4097fa431680 90 }
Fratink 2:4097fa431680 91 else
Fratink 2:4097fa431680 92 {
Fratink 2:4097fa431680 93 switchTime--;
Fratink 2:4097fa431680 94 }
Fratink 0:4621dca43078 95 wait(0.1);
Fratink 0:4621dca43078 96 };
Fratink 0:4621dca43078 97 }
Fratink 0:4621dca43078 98