You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ml...@apache.org on 2019/06/04 15:53:06 UTC
[mynewt-nimble] branch master updated: Added system id
characteristic to DIS.
This is an automated email from the ASF dual-hosted git repository.
mlaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
The following commit(s) were added to refs/heads/master by this push:
new e09e754 Added system id characteristic to DIS.
new 0abceec Merge pull request #444 from mlaz/dis_sysid
e09e754 is described below
commit e09e75414ee7f387b5ffb3bfac3901fc95f2189a
Author: Miguel Azevedo <mi...@gmail.com>
AuthorDate: Fri May 31 20:19:51 2019 +0100
Added system id characteristic to DIS.
---
.../dis/include/services/dis/ble_svc_dis.h | 8 ++
nimble/host/services/dis/src/ble_svc_dis.c | 107 ++++++++++++++-------
nimble/host/services/dis/syscfg.yml | 45 +++++----
3 files changed, 107 insertions(+), 53 deletions(-)
diff --git a/nimble/host/services/dis/include/services/dis/ble_svc_dis.h b/nimble/host/services/dis/include/services/dis/ble_svc_dis.h
index 1d16d39..d095e95 100644
--- a/nimble/host/services/dis/include/services/dis/ble_svc_dis.h
+++ b/nimble/host/services/dis/include/services/dis/ble_svc_dis.h
@@ -35,6 +35,7 @@
*/
#define BLE_SVC_DIS_UUID16 0x180A
+#define BLE_SVC_DIS_CHR_UUID16_SYSTEM_ID 0x2A23
#define BLE_SVC_DIS_CHR_UUID16_MODEL_NUMBER 0x2A24
#define BLE_SVC_DIS_CHR_UUID16_SERIAL_NUMBER 0x2A25
#define BLE_SVC_DIS_CHR_UUID16_FIRMWARE_REVISION 0x2A26
@@ -76,6 +77,11 @@ struct ble_svc_dis_data {
* Represent the name of the manufacturer of the device.
*/
const char *manufacturer_name;
+ /**
+ * System ID.
+ * Represent the System Id of the device.
+ */
+ const char *system_id;
};
/**
@@ -101,5 +107,7 @@ const char *ble_svc_dis_software_revision(void);
int ble_svc_dis_software_revision_set(const char *value);
const char *ble_svc_dis_manufacturer_name(void);
int ble_svc_dis_manufacturer_name_set(const char *value);
+const char *ble_svc_dis_system_id(void);
+int ble_svc_dis_system_id_set(const char *value);
#endif
diff --git a/nimble/host/services/dis/src/ble_svc_dis.c b/nimble/host/services/dis/src/ble_svc_dis.c
index e6e8531..0079a04 100644
--- a/nimble/host/services/dis/src/ble_svc_dis.c
+++ b/nimble/host/services/dis/src/ble_svc_dis.c
@@ -31,6 +31,7 @@ struct ble_svc_dis_data ble_svc_dis_data = {
.hardware_revision = MYNEWT_VAL(BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT),
.software_revision = MYNEWT_VAL(BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT),
.manufacturer_name = MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT),
+ .system_id = MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_DEFAULT),
};
/* Access function */
@@ -39,7 +40,8 @@ struct ble_svc_dis_data ble_svc_dis_data = {
(MYNEWT_VAL(BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM) >= 0) || \
(MYNEWT_VAL(BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM) >= 0) || \
(MYNEWT_VAL(BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM) >= 0) || \
- (MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM) >= 0)
+ (MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM) >= 0) || \
+ (MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_READ_PERM) >= 0)
static int
ble_svc_dis_access(uint16_t conn_handle, uint16_t attr_handle,
struct ble_gatt_access_ctxt *ctxt, void *arg);
@@ -98,6 +100,15 @@ static const struct ble_gatt_svc_def ble_svc_dis_defs[] = {
MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM),
}, {
#endif
+#if (MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_READ_PERM) >= 0)
+ /*** Characteristic: System Id */
+ .uuid = BLE_UUID16_DECLARE(BLE_SVC_DIS_CHR_UUID16_SYSTEM_ID),
+ .access_cb = ble_svc_dis_access,
+ .flags = BLE_GATT_CHR_F_READ |
+ MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_READ_PERM),
+ }, {
+#endif
+
0, /* No more characteristics in this service */
}, }
},
@@ -116,7 +127,8 @@ static const struct ble_gatt_svc_def ble_svc_dis_defs[] = {
(MYNEWT_VAL(BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM) >= 0) || \
(MYNEWT_VAL(BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM) >= 0) || \
(MYNEWT_VAL(BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM) >= 0) || \
- (MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM) >= 0)
+ (MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM) >= 0) || \
+ (MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_READ_PERM) >= 0)
static int
ble_svc_dis_access(uint16_t conn_handle, uint16_t attr_handle,
struct ble_gatt_access_ctxt *ctxt, void *arg)
@@ -127,72 +139,82 @@ ble_svc_dis_access(uint16_t conn_handle, uint16_t attr_handle,
switch(uuid) {
#if (MYNEWT_VAL(BLE_SVC_DIS_MODEL_NUMBER_READ_PERM) >= 0)
case BLE_SVC_DIS_CHR_UUID16_MODEL_NUMBER:
- info = ble_svc_dis_data.model_number;
+ info = ble_svc_dis_data.model_number;
#ifdef MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_NAME_DEFAULT
- if (info == NULL) {
- info = MYNEWT_VAL(BLE_SVC_DIS_MODEL_NUMBER_DEFAULT);
- }
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_MODEL_NUMBER_DEFAULT);
+ }
#endif
- break;
+ break;
#endif
#if (MYNEWT_VAL(BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM) >= 0)
case BLE_SVC_DIS_CHR_UUID16_SERIAL_NUMBER:
- info = ble_svc_dis_data.serial_number;
+ info = ble_svc_dis_data.serial_number;
#ifdef MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT
- if (info == NULL) {
- info = MYNEWT_VAL(BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT);
- }
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT);
+ }
#endif
- break;
+ break;
#endif
#if (MYNEWT_VAL(BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM) >= 0)
case BLE_SVC_DIS_CHR_UUID16_FIRMWARE_REVISION:
- info = ble_svc_dis_data.firmware_revision;
+ info = ble_svc_dis_data.firmware_revision;
#ifdef MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT
- if (info == NULL) {
- info = MYNEWT_VAL(BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT);
- }
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT);
+ }
#endif
- break;
+ break;
#endif
#if (MYNEWT_VAL(BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM) >= 0)
case BLE_SVC_DIS_CHR_UUID16_HARDWARE_REVISION:
- info = ble_svc_dis_data.hardware_revision;
+ info = ble_svc_dis_data.hardware_revision;
#ifdef MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT
- if (info == NULL) {
- info = MYNEWT_VAL(BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT);
- }
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT);
+ }
#endif
- break;
+ break;
#endif
#if (MYNEWT_VAL(BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM) >= 0)
case BLE_SVC_DIS_CHR_UUID16_SOFTWARE_REVISION:
- info = ble_svc_dis_data.software_revision;
+ info = ble_svc_dis_data.software_revision;
#ifdef MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT
- if (info == NULL) {
- info = MYNEWT_VAL(BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT);
- }
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT);
+ }
#endif
- break;
+ break;
#endif
#if (MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM) >= 0)
case BLE_SVC_DIS_CHR_UUID16_MANUFACTURER_NAME:
- info = ble_svc_dis_data.manufacturer_name;
+ info = ble_svc_dis_data.manufacturer_name;
#ifdef MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT
- if (info == NULL) {
- info = MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT);
- }
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT);
+ }
#endif
- break;
+ break;
+#endif
+#if (MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_READ_PERM) >= 0)
+ case BLE_SVC_DIS_CHR_UUID16_SYSTEM_ID:
+ info = ble_svc_dis_data.system_id;
+#ifdef MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_DEFAULT
+ if (info == NULL) {
+ info = MYNEWT_VAL(BLE_SVC_DIS_SYSTEM_ID_DEFAULT);
+ }
+#endif
+ break;
#endif
default:
- assert(0);
- return BLE_ATT_ERR_UNLIKELY;
+ assert(0);
+ return BLE_ATT_ERR_UNLIKELY;
}
if (info != NULL) {
- int rc = os_mbuf_append(ctxt->om, info, strlen(info));
- return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES;
+ int rc = os_mbuf_append(ctxt->om, info, strlen(info));
+ return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES;
}
return 0;
@@ -277,6 +299,19 @@ ble_svc_dis_manufacturer_name_set(const char *value)
return 0;
}
+const char *
+ble_svc_dis_system_id(void)
+{
+ return ble_svc_dis_data.system_id;
+}
+
+int
+ble_svc_dis_system_id_set(const char *value)
+{
+ ble_svc_dis_data.system_id = value;
+ return 0;
+}
+
/**
* Initialize the DIS package.
*/
diff --git a/nimble/host/services/dis/syscfg.yml b/nimble/host/services/dis/syscfg.yml
index 0f45b28..b306d3b 100644
--- a/nimble/host/services/dis/syscfg.yml
+++ b/nimble/host/services/dis/syscfg.yml
@@ -29,8 +29,8 @@ syscfg.defs:
BLE_SVC_DIS_MODEL_NUMBER_READ_PERM:
description: >
Defines permissions for reading "Model Number" characteristics.
- Can be set to MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM or use
- the possible values defined in BLE_SVC_DIS_DEFAULT_READ_PERM.
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
value: 0
BLE_SVC_DIS_MODEL_NUMBER_DEFAULT:
description: >
@@ -40,9 +40,9 @@ syscfg.defs:
BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM:
description: >
Defines permissions for reading "Serial Number" characteristics.
- Can be set to MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM or use
- the possible values defined in BLE_SVC_DIS_DEFAULT_READ_PERM.
- value: MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
+ value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM)
BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT:
description: >
Defines a default value for "Serial number" if not set with
@@ -51,9 +51,9 @@ syscfg.defs:
BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM:
description: >
Defines permissions for reading "Hardware Revision" characteristics.
- Can be set to MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM or use
- the possible values defined in BLE_SVC_DIS_DEFAULT_READ_PERM.
- value: MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
+ value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM)
BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT:
description: >
Defines a default value for "Hardware revision" if not set with
@@ -62,9 +62,9 @@ syscfg.defs:
BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM:
description: >
Defines permissions for reading "Firmware Revision" characteristics.
- Can be set to MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM or use
- the possible values defined in BLE_SVC_DIS_DEFAULT_READ_PERM.
- value: MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
+ value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM)
BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT:
description: >
Defines a default value for "Software revision" if not set with
@@ -73,9 +73,9 @@ syscfg.defs:
BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM:
description: >
Defines permissions for reading "Software Revision" characteristics.
- Can be set to MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM or use
- the possible values defined in BLE_SVC_DIS_DEFAULT_READ_PERM.
- value: MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
+ value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM)
BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT:
description: >
Defines a default value for "Software revision" if not set with
@@ -84,14 +84,25 @@ syscfg.defs:
BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM:
description: >
Defines permissions for reading "Manufacturer name" characteristics.
- Can be set to MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM or use
- the possible values defined in BLE_SVC_DIS_DEFAULT_READ_PERM.
- value: MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
+ value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM)
BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT:
description: >
Defines a default value for "Manufacturer name" if not set with
'ble_svc_dis_manufacturer_name_set'.
value: NULL
+ BLE_SVC_DIS_SYSTEM_ID_READ_PERM:
+ description: >
+ Defines permissions for reading "System ID" characteristics.
+ Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the
+ possible values defined for that setting.
+ value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM)
+ BLE_SVC_DIS_SYSTEM_ID_DEFAULT:
+ description: >
+ Defines a default value for "System ID" if not set with
+ 'ble_svc_dis_manufacturer_name_set'.
+ value: NULL
BLE_SVC_DIS_SYSINIT_STAGE:
description: >
Sysinit stage for the device information BLE service.