declare (strict_types=1); namespace ElementorDeps\DI; use ElementorDeps\DI\Definition\ArrayDefinitionExtension; use ElementorDeps\DI\Definition\EnvironmentVariableDefinition; use ElementorDeps\DI\Definition\Helper\AutowireDefinitionHelper; use ElementorDeps\DI\Definition\Helper\CreateDefinitionHelper; use ElementorDeps\DI\Definition\Helper\FactoryDefinitionHelper; use ElementorDeps\DI\Definition\Reference; use ElementorDeps\DI\Definition\StringDefinition; use ElementorDeps\DI\Definition\ValueDefinition; if (!\function_exists('ElementorDeps\\DI\\value')) { /** * Helper for defining a value. * * @param mixed $value */ function value($value) : ValueDefinition { return new ValueDefinition($value); } } if (!\function_exists('ElementorDeps\\DI\\create')) { /** * Helper for defining an object. * * @param string|null $className Class name of the object. * If null, the name of the entry (in the container) will be used as class name. */ function create(string $className = null) : CreateDefinitionHelper { return new CreateDefinitionHelper($className); } } if (!\function_exists('ElementorDeps\\DI\\autowire')) { /** * Helper for autowiring an object. * * @param string|null $className Class name of the object. * If null, the name of the entry (in the container) will be used as class name. */ function autowire(string $className = null) : AutowireDefinitionHelper { return new AutowireDefinitionHelper($className); } } if (!\function_exists('ElementorDeps\\DI\\factory')) { /** * Helper for defining a container entry using a factory function/callable. * * @param callable $factory The factory is a callable that takes the container as parameter * and returns the value to register in the container. */ function factory($factory) : FactoryDefinitionHelper { return new FactoryDefinitionHelper($factory); } } if (!\function_exists('ElementorDeps\\DI\\decorate')) { /** * Decorate the previous definition using a callable. * * Example: * * 'foo' => decorate(function ($foo, $container) { * return new CachedFoo($foo, $container->get('cache')); * }) * * @param callable $callable The callable takes the decorated object as first parameter and * the container as second. */ function decorate($callable) : FactoryDefinitionHelper { return new FactoryDefinitionHelper($callable, \true); } } if (!\function_exists('ElementorDeps\\DI\\get')) { /** * Helper for referencing another container entry in an object definition. */ function get(string $entryName) : Reference { return new Reference($entryName); } } if (!\function_exists('ElementorDeps\\DI\\env')) { /** * Helper for referencing environment variables. * * @param string $variableName The name of the environment variable. * @param mixed $defaultValue The default value to be used if the environment variable is not defined. */ function env(string $variableName, $defaultValue = null) : EnvironmentVariableDefinition { // Only mark as optional if the default value was *explicitly* provided. $isOptional = 2 === \func_num_args(); return new EnvironmentVariableDefinition($variableName, $isOptional, $defaultValue); } } if (!\function_exists('ElementorDeps\\DI\\add')) { /** * Helper for extending another definition. * * Example: * * 'log.backends' => DI\add(DI\get('My\Custom\LogBackend')) * * or: * * 'log.backends' => DI\add([ * DI\get('My\Custom\LogBackend') * ]) * * @param mixed|array $values A value or an array of values to add to the array. * * @since 5.0 */ function add($values) : ArrayDefinitionExtension { if (!\is_array($values)) { $values = [$values]; } return new ArrayDefinitionExtension($values); } } if (!\function_exists('ElementorDeps\\DI\\string')) { /** * Helper for concatenating strings. * * Example: * * 'log.filename' => DI\string('{app.path}/app.log') * * @param string $expression A string expression. Use the `{}` placeholders to reference other container entries. * * @since 5.0 */ function string(string $expression) : StringDefinition { return new StringDefinition($expression); } } Hydrogen Products – 3Ana aviation

Hydrogen Products

Hydrogen

We combine great hardware

and software for optimum

whole aircraft wireless pax

cabin solutions.

Better on-board travel experience.

Revenue Generator.

Flexible & Customizable

Wi-Fi IFE advantages

Open Platform

  • Only two major components:
  1. CNSU (Cabin Network Service
  2. Unit and CWAP (Cabin Wireless Access Point).
  • Open to 3rd party software.
  • Video broadcast.
  • Connectivity integration ready.

Minimalist Design

  • Control panel (Crew & Maintenance Panel, and Server)
  • Media center. Connectivity router.
  • Dual 4G Gateway.

Cabin WI-FI IFE Solution

Scalable to any size aircraft
01 Installation

LRUs are in the cabin only, with no components in the E/E bay. Installation proven to be complete in one day.

02 Maintenance

LRUs highly reliable. No maintenance laptop required.

03 Operation

Much reduced weight, typically B737/A320 only
three LRUs. Larger commercially available SSD (store media up to 8TB).

PRAM

Pre-Recorded Announcement & Music

Simple installation in the cabin, using existing space.

Minimum modifications to upgrade from Tape/Cassette PRAMs

Emergency announcement.

Reduce workload & language requirement on crew.

Dual USB power solution

Light weight, low cost, and FAA approved USB charging ports for pax
cabin and cockpit, to charge simultaneously smartphones, iPads,
tablets, EFBs and laptops at max power.
All USBs are supported by existing aircraft power.
Ideal for in-seat, cabin, cockpit and galley USB power.
Multiple configurations include USB-C and USB-A connectors,
single and dual port, lighted and non-lighted options.
Compatible with all USB electronic devices.
Short circuit, power surges, overload and over temperature
protection.

Compliant with FAA/EASA standards for PED power systems USB Power Delivery (PD) Technology provides 60 watts of charging power from each port

wPSS

Wireless Passenger Service System

Passenger Service System, includes:

  • Overhead reading light
  • Flight attendant calling

For widebody/twin aisle aircraft calling/light
control buttons must be on the seat.

Old IFE cannot be simply removed without PSS function being retained.
The calling/light control button are mostly on the same passenger control
unit (PCU) than old IFE controls – i.e., channel & volume control

Our Clients