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