/**
 * charging.java
 *
 * Charging related functions
 **/


class Charging
{
	private int dataCounter;
	
	public Charging()
	{
		dataCounter = 0;
	}
	
	public void payload(GPDU pdu)
	{
		dataCounter++;
	}
	
	public void sendInfo(CQPort port)
	{
		CDRinfo info;
		
		if (dataCounter == 0)
			assert false;	// Design rule 1: Payload shall always be transmitted
		else if (dataCounter == 1)
			requirement "Charging/Single data";
		else
			requirement "Charging/Multiple data";
		info.data = dataCounter;
		port.send(info);
	}
}
