Additional logic for TLV Characteristics

This commit is contained in:
HomeSpan 2024-03-24 09:37:27 -05:00
parent 6bc45cf884
commit 7c5b01e967
2 changed files with 10 additions and 10 deletions

View File

@ -1846,7 +1846,7 @@ SpanCharacteristic::~SpanCharacteristic(){
void SpanCharacteristic::printfAttributes(int flags){
const char permCodes[][7]={"pr","pw","ev","aa","tw","hd","wr"};
const char formatCodes[][9]={"bool","uint8","uint16","uint32","uint64","int","float","string","data"};
const char formatCodes[][9]={"bool","uint8","uint16","uint32","uint64","int","float","string","data","tlv8"};
hapOut << "{\"iid\":" << iid;

View File

@ -618,7 +618,7 @@ class SpanCharacteristic{
sprintf(nvsKey,"%04X%08X%03X",t,aid,iid&0xFFF);
size_t len;
if(format!=FORMAT::STRING && format!=FORMAT::DATA && format!=FORMAT::TLV_ENC){
if(format<FORMAT::STRING){
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
@ -637,7 +637,7 @@ class SpanCharacteristic{
uvSet(newValue,value);
if(format!=FORMAT::STRING && format!=FORMAT::DATA && format!=FORMAT::TLV_ENC) {
if(format<FORMAT::STRING){
uvSet(minValue,min);
uvSet(maxValue,max);
uvSet(stepValue,0);
@ -659,14 +659,14 @@ class SpanCharacteristic{
}
char *getString(){
if(format == FORMAT::STRING)
if(format>=FORMAT::STRING)
return value.STRING;
return NULL;
}
char *getNewString(){
if(format == FORMAT::STRING)
if(format>=FORMAT::STRING)
return newValue.STRING;
return NULL;
@ -706,7 +706,7 @@ class SpanCharacteristic{
} // setString()
size_t getData(uint8_t *data, size_t len){
if(format!=FORMAT::DATA)
if(format<FORMAT::DATA)
return(0);
size_t olen;
@ -724,7 +724,7 @@ class SpanCharacteristic{
}
size_t getNewData(uint8_t *data, size_t len){
if(format!=FORMAT::DATA)
if(format<FORMAT::DATA)
return(0);
size_t olen;