diff options
Diffstat (limited to 'drivers/bluetooth/rn42.c')
| -rw-r--r-- | drivers/bluetooth/rn42.c | 32 | 
1 files changed, 18 insertions, 14 deletions
| diff --git a/drivers/bluetooth/rn42.c b/drivers/bluetooth/rn42.c index 5d497cda20..0eb1733723 100644 --- a/drivers/bluetooth/rn42.c +++ b/drivers/bluetooth/rn42.c @@ -14,6 +14,8 @@   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */ +#include "rn42.h" +  #include "report.h"  #include "uart.h" @@ -69,33 +71,35 @@ void rn42_send_keyboard(report_keyboard_t *report) {      uart_write(0xFD);      uart_write(0x09);      uart_write(0x01); +      uart_write(report->mods);      uart_write(0x00); -    for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { -        uart_write(report->keys[i]); -    } +    uart_write(report->keys[0]); +    uart_write(report->keys[1]); +    uart_write(report->keys[2]); +    uart_write(report->keys[3]); +    uart_write(report->keys[4]); +    uart_write(report->keys[5]);  }  void rn42_send_mouse(report_mouse_t *report) {      uart_write(0xFD); -    uart_write(0x00); -    uart_write(0x03); +    uart_write(0x05); +    uart_write(0x02); +      uart_write(report->buttons);      uart_write(report->x);      uart_write(report->y); -    uart_write(report->v); // should try sending the wheel v here -    uart_write(report->h); // should try sending the wheel h here -    uart_write(0x00); +    uart_write(report->v);  } -void rn42_send_consumer(uint16_t data) { -    static uint16_t last_data = 0; -    if (data == last_data) return; -    last_data       = data; -    uint16_t bitmap = rn42_consumer_usage_to_bitmap(data); +void rn42_send_consumer(uint16_t usage) { +    uint16_t bitmap = rn42_consumer_usage_to_bitmap(usage); +      uart_write(0xFD);      uart_write(0x03);      uart_write(0x03); +      uart_write(bitmap & 0xFF); -    uart_write((bitmap >> 8) & 0xFF); +    uart_write(bitmap >> 8);  } | 
