// Set value of given attribute. int CGXDLMSPppSetup::SetValue(int index, CGXDLMSVariant& value) { if (index == 1) { if (value.vt != DLMS_DATA_TYPE_OCTET_STRING || value.GetSize() != 6) { return ERROR_CODES_INVALID_PARAMETER; } memcpy(m_LN, &value.byteArr[0], 6); } else if (index == 2) { if (value.vt == DLMS_DATA_TYPE_STRING) { m_PHYReference = value.ToString(); } else { CGXDLMSVariant tmp; CGXDLMSClient::ChangeType(value.byteArr, DLMS_DATA_TYPE_OCTET_STRING, tmp); m_PHYReference = tmp.ToString(); } } else if (index == 3) { m_LCPOptions.clear(); if (value.vt == DLMS_DATA_TYPE_ARRAY) { for(vector<CGXDLMSVariant>::iterator item = value.Arr.begin(); item != value.Arr.end(); ++item) { CGXDLMSPppSetupLcpOption it; it.SetType((*item).Arr[0].ToInteger()); it.SetLength((*item).Arr[1].ToInteger()); it.SetData((*item).Arr[2]); m_LCPOptions.push_back(it); } } } else if (index == 4) { m_IPCPOptions.clear(); if (value.vt == DLMS_DATA_TYPE_ARRAY) { for(vector<CGXDLMSVariant>::iterator item = value.Arr.begin(); item != value.Arr.end(); ++item) { CGXDLMSPppSetupIPCPOption it; it.SetType((PPP_SETUP_IPCP_OPTION_TYPE)(*item).Arr[0].ToInteger()); it.SetLength((*item).Arr[1].ToInteger()); it.SetData((*item).Arr[2]); m_IPCPOptions.push_back(it); } } } else if (index == 5) { m_UserName = value.Arr[0].byteArr; m_Password = value.Arr[1].byteArr; } else { return ERROR_CODES_INVALID_PARAMETER; } return ERROR_CODES_OK; }
// Set value of given attribute. int CGXDLMSPppSetup::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e) { if (e.GetIndex() == 1) { return SetLogicalName(this, e.GetValue()); } else if (e.GetIndex() == 2) { if (e.GetValue().vt == DLMS_DATA_TYPE_STRING) { m_PHYReference = e.GetValue().ToString(); } else { CGXDLMSVariant tmp; CGXDLMSClient::ChangeType(e.GetValue(), DLMS_DATA_TYPE_OCTET_STRING, tmp); m_PHYReference = tmp.ToString(); } } else if (e.GetIndex() == 3) { m_LCPOptions.clear(); if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY) { for(std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item) { CGXDLMSPppSetupLcpOption it; it.SetType((PPP_SETUP_LCP_OPTION_TYPE) (*item).Arr[0].ToInteger()); it.SetLength((*item).Arr[1].ToInteger()); it.SetData((*item).Arr[2]); m_LCPOptions.push_back(it); } } } else if (e.GetIndex() == 4) { m_IPCPOptions.clear(); if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY) { for(std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item) { CGXDLMSPppSetupIPCPOption it; it.SetType((PPP_SETUP_IPCP_OPTION_TYPE)(*item).Arr[0].ToInteger()); it.SetLength((*item).Arr[1].ToInteger()); it.SetData((*item).Arr[2]); m_IPCPOptions.push_back(it); } } } else if (e.GetIndex() == 5) { m_UserName.Clear(); m_Password.Clear(); m_UserName.Set(e.GetValue().Arr[0].byteArr, e.GetValue().Arr[0].size); m_Password.Set(e.GetValue().Arr[1].byteArr, e.GetValue().Arr[1].size); } else { return DLMS_ERROR_CODE_INVALID_PARAMETER; } return DLMS_ERROR_CODE_OK; }