From 1030023dd2b3ed1b96972798ef5066eea71c0119 Mon Sep 17 00:00:00 2001 From: Michael Janssen Date: Wed, 5 Nov 2014 18:15:10 -0800 Subject: [PATCH] shared/att: Add support for BT_ATT_ALL_REQUESTS --- src/shared/att-types.h | 3 +++ src/shared/att.c | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/shared/att-types.h b/src/shared/att-types.h index a6b23e440..24bf3dac3 100644 --- a/src/shared/att-types.h +++ b/src/shared/att-types.h @@ -55,6 +55,9 @@ #define BT_ATT_OP_HANDLE_VAL_IND 0x1D #define BT_ATT_OP_HANDLE_VAL_CONF 0x1E +/* Special opcode to receive all requests (legacy servers) */ +#define BT_ATT_ALL_REQUESTS 0x00 + /* Error codes for Error response PDU */ #define BT_ATT_ERROR_INVALID_HANDLE 0x01 #define BT_ATT_ERROR_READ_NOT_PERMITTED 0x02 diff --git a/src/shared/att.c b/src/shared/att.c index 6adde2209..aa80cef5f 100644 --- a/src/shared/att.c +++ b/src/shared/att.c @@ -575,6 +575,15 @@ struct notify_data { bool handler_found; }; +static bool opcode_match(uint8_t opcode, uint8_t test_opcode) +{ + if (opcode == BT_ATT_ALL_REQUESTS && + get_op_type(test_opcode) == ATT_OP_TYPE_REQ) + return true; + + return opcode == test_opcode; +} + static void notify_handler(void *data, void *user_data) { struct att_notify *notify = data; @@ -583,7 +592,7 @@ static void notify_handler(void *data, void *user_data) if (notify->removed) return; - if (notify->opcode != not_data->opcode) + if (!opcode_match(notify->opcode, not_data->opcode)) return; not_data->handler_found = true; -- 2.47.3