summaryrefslogtreecommitdiffstats
path: root/hidd/main.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-09-16 12:09:58 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-09-16 12:09:58 +0000
commit9f2da763372bb5b64840443b51a02c3861c66d57 (patch)
tree1caabfea978dc4f02af0a5eb54d62ef3e4f60685 /hidd/main.c
parent1531f5fad2b5f6c2c645914639df5afd66c999cd (diff)
Add support for the J-Three keyboard
Diffstat (limited to 'hidd/main.c')
-rw-r--r--hidd/main.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/hidd/main.c b/hidd/main.c
index 7c478030..816c7ca6 100644
--- a/hidd/main.c
+++ b/hidd/main.c
@@ -431,13 +431,15 @@ static void do_connect(int ctl, bdaddr_t *src, bdaddr_t *dst, uint8_t subclass,
struct hidp_connadd_req req;
uint16_t uuid = HID_SVCLASS_ID;
uint8_t channel = 0;
+ char name[256];
int csk, isk, err;
memset(&req, 0, sizeof(req));
err = get_sdp_device_info(src, dst, &req);
if (err < 0 && fakehid)
- err = get_alternate_device_info(src, dst, &uuid, &channel);
+ err = get_alternate_device_info(src, dst,
+ &uuid, &channel, name, sizeof(name) - 1);
if (err < 0) {
perror("Can't get device information");
@@ -450,9 +452,19 @@ static void do_connect(int ctl, bdaddr_t *src, bdaddr_t *dst, uint8_t subclass,
goto connect;
case SERIAL_PORT_SVCLASS_ID:
- if (epox_presenter(src, dst, channel) < 0) {
- close(ctl);
- exit(1);
+ if (subclass == 0x40 || !strcmp(name, "Cable Replacement")) {
+ if (epox_presenter(src, dst, channel) < 0) {
+ close(ctl);
+ exit(1);
+ }
+ break;
+ }
+ if (subclass == 0x1f || !strcmp(name, "SPP slave")) {
+ if (jthree_keyboard(src, dst, channel) < 0) {
+ close(ctl);
+ exit(1);
+ }
+ break;
}
break;