annepro2(bluetooth): add media keys support (#41)

This commit is contained in:
1Conan
2021-09-12 09:26:28 +02:00
committed by bwisn
parent 365eb5c4c2
commit 1637c81d9c
+32 -6
View File
@@ -19,6 +19,7 @@
#include "hal.h"
#include "host.h"
#include "host_driver.h"
#include "report.h"
/* -------------------- Static Function Prototypes -------------------------- */
static uint8_t ap2_ble_leds(void);
@@ -39,19 +40,27 @@ static host_driver_t ap2_ble_driver = {
};
static uint8_t bleMcuWakeup[11] = {
0x7b, 0x10, 0x53, 0x10, 0x03, 0x00, 0x01, 0x7d, 0x02, 0x01, 0x02
0x7b, 0x12, 0x53, 0x00, 0x03, 0x00, 0x01, 0x7d, 0x02, 0x01, 0x02
};
static uint8_t bleMcuStartBroadcast[11] = {
0x7b, 0x10, 0x53, 0x10, 0x03, 0x00, 0x00, 0x7d, 0x40, 0x01, 0x00 // Broadcast ID[0-3]
0x7b, 0x12, 0x53, 0x00, 0x03, 0x00, 0x00, 0x7d, 0x40, 0x01, 0x00 // Broadcast ID[0-3]
};
static uint8_t bleMcuConnect[11] = {
0x7b, 0x10, 0x53, 0x10, 0x03, 0x00, 0x00, 0x7d, 0x40, 0x04, 0x00 // Connect ID [0-3]
0x7b, 0x12, 0x53, 0x00, 0x03, 0x00, 0x00, 0x7d, 0x40, 0x04, 0x00 // Connect ID [0-3]
};
static uint8_t bleMcuSendReport[10] = {
0x7b, 0x10, 0x53, 0x10, 0x0A, 0x00, 0x00, 0x7d, 0x10, 0x04,
0x7b, 0x12, 0x53, 0x00, 0x0A, 0x00, 0x00, 0x7d, 0x10, 0x04,
};
static uint8_t bleMcuSendConsumerReport[10] = {
0x7b, 0x12, 0x53, 0x00, 0x06, 0x00, 0x00, 0x7d, 0x10, 0x08,
};
static uint8_t bleMcuUnpair[10] = {
0x7b, 0x10, 0x53, 0x10, 0x02, 0x00, 0x00, 0x7d, 0x40, 0x05,
0x7b, 0x12, 0x53, 0x00, 0x02, 0x00, 0x00, 0x7d, 0x40, 0x05,
};
static uint8_t bleMcuBootload[11] = {
@@ -138,8 +147,25 @@ static void ap2_ble_mouse(report_mouse_t *report){
static void ap2_ble_system(uint16_t data) {
}
static void ap2_ble_consumer(uint16_t data) {
static inline uint16_t CONSUMER2AP2(uint16_t usage) {
switch(usage) {
case AUDIO_VOL_DOWN: return 0x04;
case AUDIO_VOL_UP: return 0x02;
case AUDIO_MUTE: return 0x01;
case TRANSPORT_PLAY_PAUSE: return 0x08;
case TRANSPORT_NEXT_TRACK: return 0x10;
case TRANSPORT_PREV_TRACK: return 0x20;
default: return 0x00;
}
}
static void ap2_ble_consumer(uint16_t data) {
sdPut(&SD1, 0x0);
sdWrite(&SD1, bleMcuSendConsumerReport, 10);
sdPut(&SD1, CONSUMER2AP2(data));
sdWrite(&SD1, 0x0, 3);
}
/*!