/* * Set value of given attribute. */ int CGXDLMSAutoAnswer::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); return ERROR_CODES_OK; } if (index == 2) { SetMode((AUTO_CONNECT_MODE) value.lVal); return ERROR_CODES_OK; } if (index == 3) { m_ListeningWindow.clear(); for (vector<CGXDLMSVariant>::iterator item = value.Arr.begin(); item != value.Arr.end(); ++item) { CGXDLMSVariant start, end; CGXDLMSClient::ChangeType((*item).Arr[0].byteArr, DLMS_DATA_TYPE_DATETIME, start); CGXDLMSClient::ChangeType((*item).Arr[1].byteArr, DLMS_DATA_TYPE_DATETIME, end); m_ListeningWindow.push_back(std::pair< CGXDateTime, CGXDateTime>(start.dateTime, end.dateTime)); } return ERROR_CODES_OK; } if (index == 4) { SetStatus((AUTO_ANSWER_STATUS) value.lVal); return ERROR_CODES_OK; } if (index == 5) { SetNumberOfCalls(value.lVal); return ERROR_CODES_OK; } if (index == 6) { m_NumberOfRingsInListeningWindow = m_NumberOfRingsOutListeningWindow = 0; if (value.vt != DLMS_DATA_TYPE_NONE) { m_NumberOfRingsInListeningWindow = value.Arr[0].ToInteger(); m_NumberOfRingsOutListeningWindow = value.Arr[1].ToInteger(); } return ERROR_CODES_OK; } return ERROR_CODES_INVALID_PARAMETER; }
/* * Set value of given attribute. */ int CGXDLMSAutoAnswer::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e) { if (e.GetIndex() == 1) { return SetLogicalName(this, e.GetValue()); } if (e.GetIndex() == 2) { SetMode((AUTO_CONNECT_MODE)e.GetValue().lVal); return DLMS_ERROR_CODE_OK; } if (e.GetIndex() == 3) { m_ListeningWindow.clear(); for (std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item) { CGXDLMSVariant start, end; CGXDLMSClient::ChangeType((*item).Arr[0], DLMS_DATA_TYPE_DATETIME, start); CGXDLMSClient::ChangeType((*item).Arr[1], DLMS_DATA_TYPE_DATETIME, end); m_ListeningWindow.push_back(std::pair< CGXDateTime, CGXDateTime>(start.dateTime, end.dateTime)); } return DLMS_ERROR_CODE_OK; } if (e.GetIndex() == 4) { SetStatus((AUTO_ANSWER_STATUS)e.GetValue().lVal); return DLMS_ERROR_CODE_OK; } if (e.GetIndex() == 5) { SetNumberOfCalls(e.GetValue().lVal); return DLMS_ERROR_CODE_OK; } if (e.GetIndex() == 6) { m_NumberOfRingsInListeningWindow = m_NumberOfRingsOutListeningWindow = 0; if (e.GetValue().vt != DLMS_DATA_TYPE_NONE) { m_NumberOfRingsInListeningWindow = e.GetValue().Arr[0].ToInteger(); m_NumberOfRingsOutListeningWindow = e.GetValue().Arr[1].ToInteger(); } return DLMS_ERROR_CODE_OK; } return DLMS_ERROR_CODE_INVALID_PARAMETER; }