From cfa47eb8cdd0d86cc564c4a7765b505973fdb06a Mon Sep 17 00:00:00 2001
From: Martin/Geno <geno+dev@fireorbit.de>
Date: Wed, 21 Aug 2019 10:19:06 +0200
Subject: [PATCH] ble: card10 svc - rewrite WIP

---
 epicardium/ble/card10.c | 67 ++++++++++++++++++++++++++++++-----------
 1 file changed, 50 insertions(+), 17 deletions(-)

diff --git a/epicardium/ble/card10.c b/epicardium/ble/card10.c
index e7aa58fa..65d974ea 100644
--- a/epicardium/ble/card10.c
+++ b/epicardium/ble/card10.c
@@ -85,7 +85,7 @@ enum {
 
 /* BLE UUID for card10 service*/
 static const uint8_t UUID_svc[] = { CARD10_UUID_SUFFIX, 0x0, CARD10_UUID_PREFIX };
-
+static const uint16_t UUID_len = sizeof(UUID_svc);
 
 // starting at 0x01 with write (non visual) charateristics
 
@@ -95,6 +95,7 @@ static const uint8_t UUID_char_time[] = {
 	UINT16_TO_BYTES(CARD10_TIME_UPDATE_VAL_HDL),
 	CARD10_UUID_SUFFIX, 0x01, CARD10_UUID_PREFIX
 };
+static const uint16_t UUID_char_len = sizeof(UUID_char_time);
 
 static const uint8_t UUID_attChar_time[] = {
 	CARD10_UUID_SUFFIX, 0x01, CARD10_UUID_PREFIX
@@ -239,24 +240,54 @@ static const uint8_t UUID_attChar_light_sensor[] = {
 /*
  * Create the BLE service description. 
  */
-static void *addCard10GroupDyn(void)
+
+static const attsAttr_t card10SvcAttrList[] =
+{
+	{
+		attPrimSvcUuid,
+		(uint8_t *) UUID_svc,
+		(uint16_t *) &UUID_len,
+		sizeof(UUID_svc),
+		0,
+		ATTS_PERMIT_READ
+	},
+	{
+		attChUuid,
+		(uint8_t *) UUID_char_time,
+		(uint16_t *) &UUID_char_len,
+		sizeof(UUID_char_time),
+		0,
+		ATTS_PERMIT_READ
+	},
+	{
+		attDnChUuid,
+		UUID_attChar_time,
+		(uint16_t *) &UUID_len,
+		sizeof(UUID_attChar_time),
+		0,
+		sizeof(uint64_t),
+		ATTS_SET_WRITE_CBACK,
+		(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH)
+	},
+};
+
+static attsGroup_t svcCard10Group =
+{
+	NULL,
+	(attsAttr_t *) card10SvcAttrList,
+	NULL,
+	NULL,
+	CARD10_START_HDL,
+	CARD10_END_HDL,
+};
+
+/*
+static void *addCard10Group(void)
 {
 	void *pSHdl;
 
 	uint8_t initLightSensorValue[] = { UINT16_TO_BYTES(0) };
 
-	/* Create the service */
-	pSHdl = AttsDynCreateGroup(CARD10_START_HDL, CARD10_END_HDL);
-	if (pSHdl != NULL) {
-		/* Primary service */
-		AttsDynAddAttrConst(
-			pSHdl,
-			attPrimSvcUuid,
-			UUID_svc,
-			sizeof(UUID_svc),
-			0,
-			ATTS_PERMIT_READ
-		);
 
 		// TIME UPDTAE
 
@@ -274,7 +305,7 @@ static void *addCard10GroupDyn(void)
 			UUID_attChar_time,
 			NULL,
 			0,
-			sizeof(uint64_t),
+			Ysizeof(uint64_t),
 			ATTS_SET_WRITE_CBACK,
 			ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
 				ATTS_PERMIT_WRITE_AUTH);
@@ -535,6 +566,7 @@ static void *addCard10GroupDyn(void)
 	}
 	return pSHdl;
 }
+*/
 
 /*
  * Set the time given in milliseconds since 1.1.1970 as 64 bit integer.
@@ -712,6 +744,7 @@ static uint8_t readCard10CB(
 
 void bleCard10_init(void)
 {
-	void *pSHdl = addCard10GroupDyn();
-	AttsDynRegister(pSHdl, readCard10CB, writeCard10CB);
+	AttsAddGroup(&svcCard10Group);
+	svcCard10Group.readCback = readCard10CB;
+	svcCard10Group.writeCback = writeCard10CB;
 }
-- 
GitLab