aboutsummaryrefslogtreecommitdiff
path: root/ble/att.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ble/att.cpp')
-rw-r--r--ble/att.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/ble/att.cpp b/ble/att.cpp
index 301918d..4d3529a 100644
--- a/ble/att.cpp
+++ b/ble/att.cpp
@@ -153,7 +153,8 @@ vector<AttributeData> AttPdu::parseAttributeData(ByteBuffer &bytes) {
}
AttVariant AttPdu::parse(ByteBuffer &bytes) {
- switch (static_cast<AttPduType>(bytes.read8())) {
+ auto type = static_cast<AttPduType>(bytes.read8());
+ switch (type) {
case AttPduType::ERROR:
return ErrorRes::parse(bytes);
case AttPduType::EXCHANGE_MTU_REQ:
@@ -166,6 +167,10 @@ AttVariant AttPdu::parse(ByteBuffer &bytes) {
return ReadByGroupTypeRes{parseAttributeData(bytes)};
case AttPduType::READ_BY_TYPE_RES:
return ReadByTypeRes{parseAttributeData(bytes)};
+ case AttPduType::HANDLE_VALUE_NOTIFICATION:
+ return parseHandleValueNotification(bytes);
+ case AttPduType::HANDLE_VALUE_INDICATION:
+ return parseHandleValueIndication(bytes);
default:
return {};
}
@@ -196,6 +201,14 @@ FindInformationRes AttPdu::parseFindInformationRes(ByteBuffer &bytes) {
return {format, information};
}
+HandleValueNotification AttPdu::parseHandleValueNotification(ByteBuffer &bytes) {
+ return {bytes.read16le(), bytes.viewCursorToEnd()};
+}
+
+HandleValueIndication AttPdu::parseHandleValueIndication(ByteBuffer &bytes) {
+ return {bytes.read16le(), bytes.viewCursorToEnd()};
+}
+
void AttPdu::parseRead(ByteBuffer &bytes) {
auto t = static_cast<AttPduType>(bytes.read8());