From 6bc45cf8842adae594a152393fd16565f609f3e3 Mon Sep 17 00:00:00 2001 From: Gregg Date: Sun, 17 Mar 2024 19:54:48 -0500 Subject: [PATCH] Added enum and logic for TLV Characteristics --- src/Characteristics.h | 3 ++- src/HomeSpan.h | 9 ++++++--- src/Settings.h | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Characteristics.h b/src/Characteristics.h index c5703de..679ea9b 100644 --- a/src/Characteristics.h +++ b/src/Characteristics.h @@ -49,7 +49,8 @@ enum FORMAT { // HAP Table 6-5 INT=5, FLOAT=6, STRING=7, - DATA=8 + DATA=8, + TLV_ENC=9 }; /////////////////////////////// diff --git a/src/HomeSpan.h b/src/HomeSpan.h index f3ce254..9eaf7e4 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -529,6 +529,7 @@ class SpanCharacteristic{ return(String(c)); case FORMAT::STRING: case FORMAT::DATA: + case FORMAT::TLV_ENC: sprintf(c,"\"%.64s\"",u.STRING); // Truncating string to 64 chars return(String(c)); } // switch @@ -536,7 +537,7 @@ class SpanCharacteristic{ } void uvSet(UVal &dest, UVal &src){ - if(format==FORMAT::STRING || format==FORMAT::DATA) + if(format==FORMAT::STRING || format==FORMAT::DATA || format==FORMAT::TLV_ENC) uvSet(dest,(const char *)src.STRING); else dest=src; @@ -572,6 +573,7 @@ class SpanCharacteristic{ break; case FORMAT::STRING: case FORMAT::DATA: + case FORMAT::TLV_ENC: break; } // switch } @@ -595,6 +597,7 @@ class SpanCharacteristic{ return((T) u.FLOAT); case FORMAT::STRING: case FORMAT::DATA: + case FORMAT::TLV_ENC: break; } return((T)0); // included to prevent compiler warnings @@ -615,7 +618,7 @@ class SpanCharacteristic{ sprintf(nvsKey,"%04X%08X%03X",t,aid,iid&0xFFF); size_t len; - if(format!=FORMAT::STRING && format!=FORMAT::DATA){ + if(format!=FORMAT::STRING && format!=FORMAT::DATA && format!=FORMAT::TLV_ENC){ if(nvs_get_u64(homeSpan.charNVS,nvsKey,&(value.UINT64))!=ESP_OK) { nvs_set_u64(homeSpan.charNVS,nvsKey,value.UINT64); // store data as uint64_t regardless of actual type (it will be read correctly when access through uvGet()) nvs_commit(homeSpan.charNVS); // commit to NVS @@ -634,7 +637,7 @@ class SpanCharacteristic{ uvSet(newValue,value); - if(format!=FORMAT::STRING && format!=FORMAT::DATA) { + if(format!=FORMAT::STRING && format!=FORMAT::DATA && format!=FORMAT::TLV_ENC) { uvSet(minValue,min); uvSet(maxValue,max); uvSet(stepValue,0); diff --git a/src/Settings.h b/src/Settings.h index 9a9c3c5..a94c3c1 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -36,7 +36,7 @@ #define HS_MAJOR 1 #define HS_MINOR 9 -#define HS_PATCH 0 +#define HS_PATCH 1 #define STRINGIFY(x) _STR(x) #define _STR(x) #x