int CChannelList::GetPrevChannel(int Index,bool fWrap) const { if (Index<0 || (size_t)Index>=m_ChannelList.size()) return -1; const int ChannelNo=GetChannelNo(Index); int Channel,Max,No; Channel=0; Max=0; for (auto i=m_ChannelList.begin();i!=m_ChannelList.end();++i) { const CChannelInfo *pChInfo=*i; if (pChInfo->IsEnabled()) { No=pChInfo->GetChannelNo(); if (No!=0) { if (No<ChannelNo && No>Channel) Channel=No; if (No>Max) Max=No; } } } if (Channel==0) { if (fWrap) return FindChannelNo(Max); return -1; } return FindChannelNo(Channel); }
int CChannelList::GetNextChannel(int Index,bool fWrap) const { if (Index<0 || (size_t)Index>=m_ChannelList.size()) return -1; const int ChannelNo=GetChannelNo(Index); int Channel,Min,No; Channel=INT_MAX; Min=INT_MAX; for (auto i=m_ChannelList.begin();i!=m_ChannelList.end();++i) { const CChannelInfo *pChInfo=*i; if (pChInfo->IsEnabled()) { No=pChInfo->GetChannelNo(); if (No!=0) { if (No>ChannelNo && No<Channel) Channel=No; if (No<Min) Min=No; } } } if (Channel==INT_MAX) { if (Min==INT_MAX || !fWrap) return -1; return FindChannelNo(Min); } return FindChannelNo(Channel); }
int GetChannelNumberWithChannelTypeCheck(ChannelType channelType) { int channelNo = GetChannelNo(); if ((channelNo >= 1 && channelNo <= NUM_OF_CHANNELS) && (channels[channelNo - 1].channelType == channelType)) return channelNo; return 0; }
void HTTPPrint_lastCmdName(void) { int channelNo = GetChannelNo(); if (channelNo >= 1 && channelNo <= NUM_OF_CHANNELS) { TCPPutString(sktHTTP, (BYTE *)channels[channelNo - 1].lastCommandName); } }
void HTTPPrint_lastCmdStatus(void) { int channelNo = GetChannelNo(); PrintLastCommandStatus(channels[channelNo-1].lastCommandStatus); }
/* Every request to the board is a GET request */ HTTP_IO_RESULT HTTPExecuteGet(void) { BYTE filename[12]; /* loads the filename - max length of file name is 12 characters */ MPFSGetFilename(curHTTP.file, filename, 12); /* board.cgi does not require any parameters so return immediatelly */ if (!memcmppgm2ram(filename, "board.cgi",9)) { return HTTP_IO_DONE; } #if defined(FW_UPGRADE_USE_OTA) if (!memcmppgm2ram(filename, "upgrade.cgi",11)) { ProcessUpgradeCommand(); return HTTP_IO_DONE; } #endif /* all other pages require at least the channel number parameter */ int channelNo = GetChannelNo(); if (channelNo == 0) return HTTP_IO_DONE; /* checks if the filename is known and the channel type requested coresponds with the channel */ if(!memcmppgm2ram(filename, "blinds.cgi", 10) && (channels[channelNo - 1].channelType == BLINDS)) { ProcessBlindsCommand(channelNo); return HTTP_IO_DONE; } if (!memcmppgm2ram(filename, "onoff.cgi", 9) && ((channels[channelNo - 1].channelType == ONOFF_W_KEY) || (channels[channelNo - 1].channelType == ONOFF_W_BUTTON))) { ProcessOnOffCommand(channelNo); return HTTP_IO_DONE; } if (!memcmppgm2ram(filename, "onoffbtn.cgi", 12) && (channels[channelNo - 1].channelType == ONOFF_BUTTON)) { ProcessOnOffCommand(channelNo); return HTTP_IO_DONE; } if (!memcmppgm2ram(filename, "onoffcmd.cgi", 12) && (channels[channelNo - 1].channelType == ONOFF_COMMAND)) { ProcessOnOffCommand(channelNo); return HTTP_IO_DONE; } if (!memcmppgm2ram(filename, "onoffpls.cgi", 12) && (channels[channelNo - 1].channelType == ONOFF_PULSE)) { ProcessOnOffCommand(channelNo); return HTTP_IO_DONE; } return HTTP_IO_DONE; }