string FieldBinding::GetFullType() const { string type = GetType(); if (IsClass()) { type = string("class:") + type; } if (IsRepeated()) { type = string("vector<") + type + ">"; } return type; }
void KnxTelegram::InfoVerbose(String& str) const { byte payloadLength = GetPayloadLength(); str+= "Repeat="; str+= IsRepeated() ? "YES" : "NO"; str+="\nPrio="; switch(GetPriority()) { case KNX_PRIORITY_SYSTEM_VALUE : str+="SYSTEM"; break; case KNX_PRIORITY_ALARM_VALUE : str+="ALARM"; break; case KNX_PRIORITY_HIGH_VALUE : str+="HIGH"; break; case KNX_PRIORITY_NORMAL_VALUE : str+="NORMAL"; break; default : str+="ERR_VAL!"; break; } str+="\nSrcAddr=" + String(GetSourceAddress(),HEX); str+="\nTargetAddr=" + String(GetTargetAddress(),HEX); str+="\nGroupAddr="; if (IsMulticast()) str+= "YES"; else str+="NO"; str+="\nRout.Counter=" + String(GetRoutingCounter(),DEC); str+="\nPayloadLgth=" + String(payloadLength,DEC); str+="\nTelegramLength=" + String(GetTelegramLength(),DEC); str+="\nCommand="; switch(GetCommand()) { case KNX_COMMAND_VALUE_READ : str+="VAL_READ"; break; case KNX_COMMAND_VALUE_RESPONSE : str+="VAL_RESP"; break; case KNX_COMMAND_VALUE_WRITE : str+="VAL_WRITE"; break; case KNX_COMMAND_MEMORY_WRITE : str+="MEM_WRITE"; break; default : str+="ERR_VAL!"; break; } str+="\nPayload=" + String(GetFirstPayloadByte(),HEX)+' '; for (byte i = 0; i < payloadLength-1; i++) str+=String(_payloadChecksum[i], HEX)+' '; str+="\nValidity="; switch(GetValidity()) { case KNX_TELEGRAM_VALID : str+="VALID"; break; case KNX_TELEGRAM_INVALID_CONTROL_FIELD : str+="INVALID_CTRL_FIELD"; break; case KNX_TELEGRAM_UNSUPPORTED_FRAME_FORMAT : str+="UNSUPPORTED_FRAME_FORMAT"; break; case KNX_TELEGRAM_INCORRECT_PAYLOAD_LENGTH : str+="INCORRECT_PAYLOAD_LGTH"; break; case KNX_TELEGRAM_INVALID_COMMAND_FIELD : str+="INVALID_CMD_FIELD"; break; case KNX_TELEGRAM_UNKNOWN_COMMAND : str+="UNKNOWN_CMD"; break; case KNX_TELEGRAM_INCORRECT_CHECKSUM : str+="INCORRECT_CHKSUM"; break; default : str+="ERR_VAL!"; break; } str+='\n'; }
tinyxml2::XMLElement* FieldBinding::GenerateWsdl(tinyxml2::XMLDocument* doc) const { tinyxml2::XMLElement* el = doc->NewElement("xs:element"); el->SetAttribute("name", m_name.c_str()); if (IsEnum()) { tinyxml2::XMLElement* restriction = doc->NewElement("xs:restriction"); restriction->SetAttribute("base", "xs:string"); for (size_t x = 0; x < m_enumValues.size(); ++x) { tinyxml2::XMLElement* enumeration = doc->NewElement("xs:enumeration"); enumeration->SetAttribute("value", m_enumValues[x].c_str()); restriction->LinkEndChild(enumeration); } el->LinkEndChild(restriction); } else { if (IsOptional()) { el->SetAttribute("minOccurs", "0"); } if (IsRepeated()) { el->SetAttribute("maxOccurs", "unbounded"); } if (IsClass()) { el->SetAttribute("type", (string("bntypes:") + m_type).c_str()); } else { el->SetAttribute("type", (string("xs:") + m_type).c_str()); } } return el; }