public static function construct($attribute_id, $datatype_id)
 {
     $element = new self();
     $element->setAttributeId($attribute_id);
     $element->setDatatypeId($datatype_id);
     return $element;
 }
 public static function constructFailure($attribute_id, $status)
 {
     $record = new self();
     $record->setAttributeId($attribute_id);
     $record->setStatus($status);
     return $record;
 }
 public static function construct($direction, $attribute_id)
 {
     $element = new self();
     $element->setDirection($direction);
     $element->setAttributeId($attribute_id);
     return $element;
 }
 public static function construct($status, $attribute_id)
 {
     $element = new self();
     $element->setStatus($status);
     $element->setAttributeId($attribute_id);
     return $element;
 }
 /**
  * If there is an error code, we do not need the full AttributeReportingConfigurationRecord
  *
  * @param $status
  * @param $direction
  * @param $attribute_id
  * @return AttributeReportingConfigurationStatusRecord
  */
 public static function constructWithError($status, $direction, $attribute_id)
 {
     $element = new self();
     $element->setStatus($status);
     $element->setDirection($direction);
     $element->setAttributeId($attribute_id);
     return $element;
 }
 public static function constructReceived($attribute_id, $timeout_period)
 {
     $frame = new self();
     $frame->setAttributeId($attribute_id);
     $frame->setDirection(self::DIRECTION_CLIENT_TO_SERVER);
     $frame->setTimeoutPeriod($timeout_period);
     return $frame;
 }