mirror of
https://github.com/anklimov/lighthub
synced 2026-01-26 08:09:05 +03:00
defaultSubitem core optimization
AC haier - sendinng command only after initial poll
This commit is contained in:
@@ -307,7 +307,7 @@ Item::~Item()
|
||||
|
||||
Item::Item(char *name, aJsonObject *_items) //Constructor
|
||||
{
|
||||
char * pDefaultSubItem = defaultSubItem;
|
||||
// char * pDefaultSubItem = defaultSubItem;
|
||||
rootItems=_items;
|
||||
driver = NULL;
|
||||
defaultSubItem[0] =0;
|
||||
@@ -323,10 +323,20 @@ Item::Item(char *name, aJsonObject *_items) //Constructor
|
||||
buf[i]=0;
|
||||
itemArr = aJson.getObjectItem(rootItems, buf);
|
||||
sub++;
|
||||
|
||||
for(i=0;(sub[i] && (sub[i]!='/') && (i<sizeof(defaultSubItem)-1));i++)
|
||||
defaultSubItem[i]=sub[i];
|
||||
defaultSubItem[i]=0;
|
||||
|
||||
if (sub[i]=='/') defaultSuffixCode = txt2subItem(sub+i+1);
|
||||
else if (defaultSuffixCode = txt2subItem(defaultSubItem))
|
||||
defaultSubItem[0]=0;
|
||||
/*
|
||||
strncpy(defaultSubItem,sub,sizeof(defaultSubItem)-1);
|
||||
defaultSuffixCode = retrieveCode (&pDefaultSubItem);
|
||||
if (!pDefaultSubItem) defaultSubItem[0] =0; //Zero string
|
||||
//debugSerial<<F("defaultSubItem: ")<<defaultSubItem<<F(" defaultSuffixCode:")<<defaultSuffixCode<<endl;
|
||||
*/
|
||||
}
|
||||
else
|
||||
itemArr = aJson.getObjectItem(rootItems, name);
|
||||
@@ -421,7 +431,7 @@ return NO_SUBITEM;
|
||||
{
|
||||
if (getCanNum(itemArr->child) == num)
|
||||
{
|
||||
debugSerial<<"CAN: Find item: "<< itemArr->name << " id:" << num << "sub:" << subItem;
|
||||
debugSerial<<"CAN: Find item: "<< itemArr->name << " id:" << num << " sub:" << subItem;
|
||||
Parse();
|
||||
if (subItem & SUBITEM_IS_COMMAND)
|
||||
{
|
||||
@@ -1600,7 +1610,7 @@ if ((!driver || driver->isAllowed(cmd))
|
||||
{
|
||||
// UPDATE internal variables
|
||||
if (status2Send) cmd.saveItem(this,status2Send);
|
||||
else debugSerial<<"NOT SAVED"<<endl;
|
||||
// else debugSerial<<"NOT SAVED"<<endl;
|
||||
|
||||
res = driver->Ctrl(cmd, subItem, toExecute,authorized);
|
||||
if (driver->getChanType() == CH_THERMO) status2Send |= FLAG_SEND_IMMEDIATE;
|
||||
|
||||
@@ -276,6 +276,7 @@ byte getCRC(byte req[], size_t size){
|
||||
|
||||
void out_AC::SendData(byte req[], size_t size){
|
||||
if (!store || !item) return;
|
||||
if (!store->data[0]) return; //Sending disabled until first poll
|
||||
if (Status() == AC_SENDING)
|
||||
{
|
||||
while (store->timestamp && !isTimeOver(store->timestamp,millis(),150)) yield();
|
||||
@@ -326,8 +327,8 @@ if (!store)
|
||||
return 0;}
|
||||
|
||||
memset(store->data,0,sizeof(acPersistent::data));
|
||||
store->data[0]=255;
|
||||
store->data[1]=255;
|
||||
//store->data[0]=255;
|
||||
//store->data[1]=255;
|
||||
store->data[2]=0x22;
|
||||
store->mode=0;
|
||||
store->power=0;
|
||||
@@ -429,6 +430,10 @@ case AC_AWAITINGCMD: //Flusing port for 5 sec, poll status
|
||||
store->timestamp=millisNZ();
|
||||
setStatus(AC_IDLE);
|
||||
|
||||
//Enable sending
|
||||
store->data[0]=255;
|
||||
store->data[1]=255;
|
||||
|
||||
}
|
||||
|
||||
/*if (cause!=POLLING_SLOW) return false;
|
||||
|
||||
Reference in New Issue
Block a user