void CGXDLMSImageTransfer::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(CGXDLMSVariant(m_ImageBlockSize).ToString());
    values.push_back(CGXDLMSVariant(m_ImageTransferredBlocksStatus).ToString());
    values.push_back(CGXDLMSVariant(m_ImageFirstNotTransferredBlockNumber).ToString());
    values.push_back(CGXDLMSVariant(m_ImageTransferEnabled).ToString());
    values.push_back(CGXDLMSVariant(m_ImageTransferStatus).ToString());
    std::stringstream sb;
    sb << '[';
    bool empty = true;
    for(std::vector<CGXDLMSImageActivateInfo>::iterator it = m_ImageActivateInfo.begin(); it != m_ImageActivateInfo.end(); ++it)
    {
        if (!empty)
        {
            sb << ", ";
        }
        empty = false;
        std::string str = it->ToString();
        sb.write(str.c_str(), str.size());
    }
    sb << ']';
    values.push_back(sb.str());
}
Esempio n. 2
0
void CGXDLMSAutoAnswer::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(CGXDLMSVariant(m_Mode).ToString());
    std::stringstream sb;
    sb << '[';
    bool empty = true;
    for(std::vector<std::pair< CGXDateTime, CGXDateTime> >::iterator it = m_ListeningWindow.begin(); it != m_ListeningWindow.end(); ++it)
    {
        if (!empty)
        {
            sb << ", ";
        }
        empty = false;
        std::string str = it->first.ToString();
        sb.write(str.c_str(), str.size());
        sb << " ";
        str = it->second.ToString();
        sb.write(str.c_str(), str.size());
    }
    sb << ']';
    values.push_back(sb.str());
    values.push_back(CGXDLMSVariant(m_Status).ToString());
    values.push_back(CGXDLMSVariant(m_NumberOfCalls).ToString());
    //Clean
    sb.str(std::string());
    sb << m_NumberOfRingsInListeningWindow;
    sb << "/";
    sb << m_NumberOfRingsOutListeningWindow;
    values.push_back(sb.str());
}
void CGXDLMSDemandRegister::GetValues(vector<string>& values)
{
	values.clear();
	string ln;
	GetLogicalName(ln);
	values.push_back(ln);	
	values.push_back(m_CurrentAvarageValue.ToString());
	values.push_back(m_LastAvarageValue.ToString());
	string str = "Scaler: ";
	//if there is no fractal part.
	double s = GetScaler();
	if (s - (long)s == 0)
	{
		str += CGXDLMSVariant((long)s).ToString();
	}
	else
	{
		str += CGXDLMSVariant(s).ToString();
	}	
	str += " Unit: ";
	str += CGXDLMSConverter::GetUnitAsString(m_Unit);
	values.push_back(str);
	values.push_back(m_Status.ToString());
	values.push_back(m_CaptureTime.ToString());
	values.push_back(m_StartTimeCurrent.ToString());	
	values.push_back(CGXDLMSVariant(m_Period).ToString());
	values.push_back(CGXDLMSVariant(m_NumberOfPeriods).ToString());
}
void CGXDLMSMBusClient::GetValues(vector<string>& values)
{
	values.clear();
	string ln;
	GetLogicalName(ln);
	values.push_back(ln);
	values.push_back(m_MBusPortReference);	
	std::stringstream sb;
	sb << '[';
	bool empty = true;
	for(vector<pair<string, string> >::iterator it = m_CaptureDefinition.begin(); it != m_CaptureDefinition.end(); ++it)
	{
		if (!empty)
		{
			sb << ", ";
		}
		empty = false;
		sb.write(it->first.c_str(), it->first.size());
		sb << " ";
		sb.write(it->second.c_str(), it->second.size());	
	}
	sb << ']';
	values.push_back(sb.str());		

	values.push_back(CGXDLMSVariant(m_CapturePeriod).ToString());
	values.push_back(CGXDLMSVariant(m_PrimaryAddress).ToString());
	values.push_back(CGXDLMSVariant(m_IdentificationNumber).ToString());
	values.push_back(CGXDLMSVariant(m_ManufacturerID).ToString());
	values.push_back(CGXDLMSVariant(m_DataHeaderVersion).ToString());
	values.push_back(CGXDLMSVariant(m_DeviceType).ToString());
	values.push_back(CGXDLMSVariant(m_AccessNumber).ToString());
	values.push_back(CGXDLMSVariant(m_Status).ToString());
	values.push_back(CGXDLMSVariant(m_Alarm).ToString());
}
Esempio n. 5
0
void CGXDLMSTcpUdpSetup::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(CGXDLMSVariant(m_Port).ToString());
    values.push_back(m_IPReference);
    values.push_back(CGXDLMSVariant(m_MaximumSegmentSize).ToString());
    values.push_back(CGXDLMSVariant(m_MaximumSimultaneousConnections).ToString());
    values.push_back(CGXDLMSVariant(m_InactivityTimeout).ToString());
}
void CGXDLMSProfileGeneric::GetValues(vector<string>& values)
{
	values.clear();
	string ln;
	GetLogicalName(ln);
	values.push_back(ln);
	std::stringstream sb;
	bool empty = true;	
	for(vector< vector<CGXDLMSVariant> >::iterator row = m_Buffer.begin(); row != m_Buffer.end(); ++row)
	{		
		for(vector<CGXDLMSVariant>::iterator cell = row->begin(); cell != row->end(); ++cell)
		{			
			sb << cell->ToString();
			sb << " | ";
		}
		sb << "\r\n";
	}
	values.push_back(sb.str());	
	//Clear str.
	sb.str(std::string());		
	sb << '[';
	empty = true;
	for(vector<pair<CGXDLMSObject*, CGXDLMSCaptureObject*> >::iterator it = m_CaptureObjects.begin(); it != m_CaptureObjects.end(); ++it)
	{
		if (!empty)
		{
			sb << ", ";
		}
		empty = false;
		string str = it->first->GetName().ToString();
		sb.write(str.c_str(), str.size());
	}
	sb << ']';
	values.push_back(sb.str());	

	values.push_back(CGXDLMSVariant(m_CapturePeriod).ToString());
	values.push_back(CGXDLMSVariant(m_SortMethod).ToString());
	if (m_SortObject == NULL)
	{
		values.push_back("");
	}
	else
	{
		values.push_back(m_SortObject->GetName().ToString());
	}
	values.push_back(CGXDLMSVariant(m_EntriesInUse).ToString());
	values.push_back(CGXDLMSVariant(m_ProfileEntries).ToString());
}
void CGXDLMSAutoConnect::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(CGXDLMSVariant(m_Mode).ToString());
    values.push_back(CGXDLMSVariant(m_Repetitions).ToString());
    values.push_back(CGXDLMSVariant(m_RepetitionDelay).ToString());
    std::stringstream sb;
    sb << '[';
    bool empty = true;
    for(std::vector<std::pair< CGXDateTime, CGXDateTime> >::iterator it = m_CallingWindow.begin(); it != m_CallingWindow.end(); ++it)
    {
        if (!empty)
        {
            sb << ", ";
        }
        empty = false;
        std::string str = it->first.ToString();
        sb.write(str.c_str(), str.size());
        sb << " ";
        str = it->second.ToString();
        sb.write(str.c_str(), str.size());
    }
    sb << ']';
    values.push_back(sb.str());

    //Clear str.
    sb.str(std::string());
    sb << '[';
    empty = true;
    for(std::vector< std::string >::iterator it = m_Destinations.begin(); it != m_Destinations.end(); ++it)
    {
        if (!empty)
        {
            sb << ", ";
        }
        empty = false;
        sb.write(it->c_str(), it->size());
    }
    sb << ']';
    values.push_back(sb.str());
}
 /*
 * Returns value of given attribute.
 */    
int CGXDLMSProfileGeneric::GetValue(int index, int selector, CGXDLMSVariant& parameters, CGXDLMSVariant& value)   
{
    if (index == 1)
    {
        GXHelpers::AddRange(value.byteArr, m_LN, 6);
		value.vt = DLMS_DATA_TYPE_OCTET_STRING;
		return ERROR_CODES_OK;
    }
    if (index == 2)
    {
		vector<unsigned char> vArr;
		int ret = GetProfileGenericData(selector, parameters, vArr);
		value = CGXDLMSVariant(vArr);
		return ret;
    }        
    if (index == 3)
    {
		vector<unsigned char> data;
		int ret = GetColumns(data);
		value = CGXDLMSVariant(data);
        return ret;
    }
    if (index == 4)
    {
        value = GetCapturePeriod();
		return ERROR_CODES_OK;
    }
    if (index == 5)
    {            
        value = GetSortMethod();
		return ERROR_CODES_OK;
    }
    if (index == 7)
    {
        value = GetEntriesInUse();
		return ERROR_CODES_OK;
    }
    if (index == 8)
    {
        value = GetProfileEntries();
		return ERROR_CODES_OK;
    }
    return ERROR_CODES_INVALID_PARAMETER;
}
Esempio n. 9
0
void CGXDLMSGPRSSetup::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(m_APN);
    values.push_back(CGXDLMSVariant(m_PINCode).ToString());
    values.push_back(m_DefaultQualityOfService.ToString() + " " + m_RequestedQualityOfService.ToString());
}
void CGXDLMSDisconnectControl::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(CGXDLMSVariant(m_OutputState).ToString());
    values.push_back(CGXDLMSConverter::ToString(m_ControlState));
    values.push_back(CGXDLMSConverter::ToString(m_ControlMode));
}
Esempio n. 11
0
void CGXDLMSLimiter::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    if (m_MonitoredValue != NULL)
    {
        values.push_back(m_MonitoredValue->GetName().ToString());
    }
    else
    {
        values.push_back("");
    }
    values.push_back(m_ThresholdActive.ToString());
    values.push_back(m_ThresholdNormal.ToString());
    values.push_back(m_ThresholdEmergency.ToString());
    values.push_back(CGXDLMSVariant(m_MinOverThresholdDuration).ToString());
    values.push_back(CGXDLMSVariant(m_MinUnderThresholdDuration).ToString());
    values.push_back(m_EmergencyProfile.ToString());
    std::stringstream sb;
    sb << '[';
    bool empty = true;
    for(std::vector<int>::iterator it = m_EmergencyProfileGroupIDs.begin(); it != m_EmergencyProfileGroupIDs.end(); ++it)
    {
        if (!empty)
        {
            sb << ", ";
        }
        empty = false;
        std::string str = CGXDLMSVariant(*it).ToString();
        sb.write(str.c_str(), str.size());
    }
    sb << ']';
    values.push_back(sb.str());
    values.push_back(CGXDLMSVariant(m_EmergencyProfileActive).ToString());

    sb.str(std::string());
    sb << m_ActionOverThreshold.ToString().c_str();
    sb << ", ";
    sb << m_ActionUnderThreshold.ToString().c_str();
    values.push_back(sb.str());
}
void CGXDLMSMBusSlavePortSetup::GetValues(vector<string>& values)
{
	values.clear();
	string ln;
	GetLogicalName(ln);
	values.push_back(ln);	
	values.push_back(CGXDLMSConverter::ToString(m_DefaultBaud));
	values.push_back(CGXDLMSConverter::ToString(m_AvailableBaud));
	values.push_back(CGXDLMSConverter::ToString(m_AddressState));
	values.push_back(CGXDLMSVariant(m_BusAddress).ToString());
}
Esempio n. 13
0
CGXDLMSVariant CGXDLMSObject::GetName()
{
    if (m_SN != 0)
    {
        return CGXDLMSVariant(m_SN);
    }
    CGXDLMSVariant ln;
    GXHelpers::GetLogicalName(m_LN, ln.strVal);
    ln.vt = DLMS_DATA_TYPE_STRING;
    return ln;
}
Esempio n. 14
0
void CGXDLMSRegister::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(m_Value.ToString());
    std::string str = "Scaler: ";
    double s = GetScaler();
    //if there is no fractal part.
    if (s - (long)s == 0)
    {
        str += CGXDLMSVariant((long)s).ToString();
    }
    else
    {
        str += CGXDLMSVariant(s).ToString();
    }
    str += " Unit: ";
    str += CGXDLMSConverter::GetUnitAsString(m_Unit);
    values.push_back(str);
}
Esempio n. 15
0
void CGXDLMSIecHdlcSetup::GetValues(std::vector<std::string>& values)
{
    values.clear();
    std::string ln;
    GetLogicalName(ln);
    values.push_back(ln);
    values.push_back(CGXDLMSConverter::ToString(m_CommunicationSpeed));
    values.push_back(CGXDLMSVariant(m_WindowSizeTransmit).ToString());
    values.push_back(CGXDLMSVariant(m_WindowSizeReceive).ToString());
    values.push_back(CGXDLMSVariant(m_MaximumInfoLengthTransmit).ToString());
    values.push_back(CGXDLMSVariant(m_MaximumInfoLengthReceive).ToString());
    values.push_back(CGXDLMSVariant(m_InterCharachterTimeout).ToString());
    values.push_back(CGXDLMSVariant(m_InactivityTimeout).ToString());
    values.push_back(CGXDLMSVariant(m_DeviceAddress).ToString());
}
int CGXDLMSDemandRegister::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;
	}
    else if (index == 2)
    {
		if (m_Scaler != 0)
		{
			SetCurrentAvarageValue(CGXDLMSVariant(value.ToDouble() * m_Scaler));
		}
		else
		{
			SetCurrentAvarageValue(value);
		}
    }
    else if (index == 3)
    {
		if (m_Scaler != 0)
		{
			SetLastAvarageValue(CGXDLMSVariant(value.ToDouble() * GetScaler()));
		}
		else
		{
			SetLastAvarageValue(value);
		}        
    }
    else if (index == 4)
    {
		m_Scaler = value.Arr[0].bVal;
		m_Unit = value.Arr[1].bVal;
    }
    else if (index == 5)
    {
		SetStatus(value.lVal);    
    }
    else if (index == 6)
    {
		CGXDLMSVariant tmp;
		CGXDLMSClient::ChangeType(value.byteArr, DLMS_DATA_TYPE_DATETIME, tmp);            
		SetCaptureTime(tmp.dateTime);
    }
    else if (index == 7)
    {
        CGXDLMSVariant tmp;
		CGXDLMSClient::ChangeType(value.byteArr, DLMS_DATA_TYPE_DATETIME, tmp);
        SetStartTimeCurrent(tmp.dateTime);
    }
    else if (index == 8)
    {
		SetPeriod(value.ulVal);
    }   
    else if (index == 9)
    {
        SetNumberOfPeriods(value.lVal);			
    }   
	else
	{
		return ERROR_CODES_INVALID_PARAMETER;
	}
	return ERROR_CODES_OK;
}