public static function construct($logical_type, $complex_descriptor_available, $user_descriptor_available, $aps_flags, $frequency_band, $mac_capability_alternate_pan_coordinator, $mac_capability_device_type, $mac_capability_power_source, $mac_capability_receiver_on_when_idle, $mac_capability_security_capability, $mac_capability_allocate_address, $manufacturer_code, $maximum_buffer_size, $maximum_incoming_transfer_size, $server_mask, $maximum_outgoing_transfer_size, $extended_active_endpoint_list_available, $extended_simple_descriptor_list_available)
 {
     $frame = new self();
     $frame->setApsFlags($aps_flags);
     $frame->setComplexDescriptorAvailable($complex_descriptor_available);
     $frame->setExtendedActiveEndpointListAvailable($extended_active_endpoint_list_available);
     $frame->setExtendedSimpleDescriptorListAvailable($extended_simple_descriptor_list_available);
     $frame->setFrequencyBand($frequency_band);
     $frame->setLogicalType($logical_type);
     $frame->setMacCapabilityAllocateAddress($mac_capability_allocate_address);
     $frame->setMacCapabilityAlternatePanCoordinator($mac_capability_alternate_pan_coordinator);
     $frame->setMacCapabilityDeviceType($mac_capability_device_type);
     $frame->setMacCapabilityPowerSource($mac_capability_power_source);
     $frame->setMacCapabilityReceiverOnWhenIdle($mac_capability_receiver_on_when_idle);
     $frame->setMacCapabilitySecurityCapability($mac_capability_security_capability);
     $frame->setManufacturerCode($manufacturer_code);
     $frame->setMaximumBufferSize($maximum_buffer_size);
     $frame->setMaximumIncomingTransferSize($maximum_incoming_transfer_size);
     $frame->setMaximumOutgoingTransferSize($maximum_outgoing_transfer_size);
     $frame->setServerMask($server_mask);
     $frame->setUserDescriptorAvailable($user_descriptor_available);
     return $frame;
 }