From f1cc7b8652d6a14568222dcfdd1169b4a506f03f Mon Sep 17 00:00:00 2001 From: deadprogram Date: Thu, 28 Dec 2023 23:04:39 +0100 Subject: [PATCH] ninafw: can retrieve list of services Signed-off-by: deadprogram --- att_ninafw.go | 1 - hci_ninafw.go | 17 ++++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/att_ninafw.go b/att_ninafw.go index 33c190d6..6d0daff5 100644 --- a/att_ninafw.go +++ b/att_ninafw.go @@ -199,7 +199,6 @@ func (a *att) handleData(handle uint16, buf []byte) error { a.responded = true lengthPerService := int(buf[1]) - //uuidLen := lengthPerService - 4 for i := 2; i < len(buf); i += lengthPerService { service := rawService{ diff --git a/hci_ninafw.go b/hci_ninafw.go index 1d121148..a99b4874 100644 --- a/hci_ninafw.go +++ b/hci_ninafw.go @@ -349,6 +349,10 @@ func (h *hci) sendAclPkt(handle uint16, cid uint8, data []byte) error { copy(h.buf[9:], data) + if _debug { + println("hci send acl data", handle, cid, hex.EncodeToString(h.buf[:9+len(data)])) + } + if _, err := h.uart.Write(h.buf[:9+len(data)]); err != nil { return err } @@ -380,10 +384,16 @@ func (h *hci) handleACLData(buf []byte) error { case attCID: if aclFlags == 0x01 { // TODO: use buffered packet - h.att.handleData(aclHdr.handle&0x0fff, buf[9:aclHdr.len+9]) + if _debug { + println("WARNING: att.handleACLData needs buffered packet") + } + h.att.handleData(aclHdr.handle&0x0fff, buf[8:aclHdr.len+8]) } else { - // use the recv buffer - h.att.handleData(aclHdr.handle&0x0fff, buf[9:aclHdr.len+9]) + h.att.handleData(aclHdr.handle&0x0fff, buf[8:aclHdr.len+8]) + } + default: + if _debug { + println("unknown acl data cid", aclHdr.cid) } } @@ -453,6 +463,7 @@ func (h *hci) handleEventData(buf []byte) error { if _debug { println("leMetaEventConnComplete") } + h.connectData.connected = true h.connectData.status = buf[3] h.connectData.handle = binary.LittleEndian.Uint16(buf[4:])