namespace Hdmi_Matrix_CN_AV;
        // class declarations
         class Logger;
         class HdmiMatix;
     class Logger 
    {
        // class delegates

        // class events

        // class functions
        SIGNED_LONG_INTEGER_FUNCTION GetHashCode ();
        STRING_FUNCTION ToString ();

        // class variables
        INTEGER __class_id__;

        // class properties
        SIGNED_LONG_INTEGER Debug;
    };

     class HdmiMatix 
    {
        // class delegates
        delegate FUNCTION ConnectedHandler ( );
        delegate FUNCTION DisconnectedHandler ( );
        delegate FUNCTION DeviceStatusHandler ( SIMPLSHARPSTRING status );

        // class events

        // class functions
        FUNCTION SetDebugMode ( SIGNED_LONG_INTEGER mode );
        SIGNED_LONG_INTEGER_FUNCTION Connect ( STRING address , SIGNED_LONG_INTEGER target_port );
        FUNCTION Disconnect ();
        FUNCTION SetBoxName ( STRING type , SIGNED_LONG_INTEGER id , STRING name );
        FUNCTION SetEncArcSwitch ( SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER dec );
        FUNCTION SetLedMode ( STRING type , SIGNED_LONG_INTEGER id , STRING mode );
        FUNCTION SetEncAudioInput ( SIGNED_LONG_INTEGER enc , STRING mode );
        FUNCTION SetEncEDIDCopy ( SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER dec );
        FUNCTION SetEncEDIDDefault ( SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER edid );
        FUNCTION SetEncVol ( SIGNED_LONG_INTEGER enc , STRING type , STRING mode );
        FUNCTION SetEncIODirMode ( SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER port , STRING mode );
        FUNCTION SetEncIOOutMode ( SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER port , SIGNED_LONG_INTEGER mode );
        FUNCTION SetEncRelayMode ( SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER port , STRING mode );
        FUNCTION SetEncSACMode ( SIGNED_LONG_INTEGER enc , STRING mode );
        FUNCTION SetEncNetInterface ( SIGNED_LONG_INTEGER enc , STRING mode );
        FUNCTION SetEncGuestSerialCofig ( SIGNED_LONG_INTEGER enc , STRING mode , SIGNED_LONG_INTEGER br , STRING bit );
        FUNCTION SetEncReboot ( SIGNED_LONG_INTEGER enc );
        FUNCTION GetEncStatus ( SIGNED_LONG_INTEGER enc );
        FUNCTION GetEncSSStatus ( SIGNED_LONG_INTEGER enc );
        FUNCTION GetEncSSMSURL ( SIGNED_LONG_INTEGER enc );
        FUNCTION GetEncSSSSURL ( SIGNED_LONG_INTEGER enc );
        FUNCTION SetEncSSReboot ( SIGNED_LONG_INTEGER enc );
        FUNCTION SetDecSwitch ( SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER enc , SIGNED_LONG_INTEGER mode );
        FUNCTION SetDecOutputOnOff ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecOutputMuteOnOff ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecOutputOSDOnOff ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecOutputResoulution ( SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER res );
        FUNCTION SetDecOutputRotate ( SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER rtt );
        FUNCTION SetDecOutputFlip ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecMode ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecVol ( SIGNED_LONG_INTEGER dec , STRING type , STRING mode );
        FUNCTION SetDecIODirMode ( SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER port , STRING mode );
        FUNCTION SetDecIOOutMode ( SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER port , SIGNED_LONG_INTEGER mode );
        FUNCTION SetDecRelayMode ( SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER port , STRING mode );
        FUNCTION SetDecArpMode ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecEarcMode ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecSACMode ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecNetInterface ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecUsbDataMode ( SIGNED_LONG_INTEGER dec , STRING mode );
        FUNCTION SetDecGuestSerialCofig ( SIGNED_LONG_INTEGER dec , STRING mode , SIGNED_LONG_INTEGER br , STRING bit );
        FUNCTION SetDecReboot ( SIGNED_LONG_INTEGER dec );
        FUNCTION CreateVW ( SIGNED_LONG_INTEGER vwHdl );
        FUNCTION DeleteVW ( SIGNED_LONG_INTEGER vwHdl );
        FUNCTION SetVWName ( SIGNED_LONG_INTEGER vwHdl , STRING name );
        FUNCTION SetVWSize ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER row , SIGNED_LONG_INTEGER col );
        FUNCTION SetVWDecPosition ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER dec , SIGNED_LONG_INTEGER h , SIGNED_LONG_INTEGER v );
        FUNCTION CreateVWPreset ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset );
        FUNCTION DeleteVWPreset ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset );
        FUNCTION SetVWPresetName ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset , STRING name );
        FUNCTION ApplyVWPreset ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset );
        FUNCTION SetVWPresetClassPosition ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset , SIGNED_LONG_INTEGER cls , SIGNED_LONG_INTEGER h , SIGNED_LONG_INTEGER v );
        FUNCTION SetVWPresetClassEnc ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset , SIGNED_LONG_INTEGER cls , SIGNED_LONG_INTEGER enc );
        FUNCTION SetVWPresetMatrixModePositon ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset , SIGNED_LONG_INTEGER h , SIGNED_LONG_INTEGER v );
        FUNCTION SetVWPresetMatrixModeEnc ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER preset , SIGNED_LONG_INTEGER h , SIGNED_LONG_INTEGER v , SIGNED_LONG_INTEGER enc );
        FUNCTION SetVWWidthBezel ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER h , SIGNED_LONG_INTEGER v , SIGNED_LONG_INTEGER b , SIGNED_LONG_INTEGER i );
        FUNCTION SetVWHeightBezel ( SIGNED_LONG_INTEGER vwHdl , SIGNED_LONG_INTEGER h , SIGNED_LONG_INTEGER v , SIGNED_LONG_INTEGER b , SIGNED_LONG_INTEGER i );
        FUNCTION GetVWStatus ( SIGNED_LONG_INTEGER vwHdl );
        FUNCTION SendUserDefineCmd ( STRING cmd );
        SIGNED_LONG_INTEGER_FUNCTION GetHashCode ();
        STRING_FUNCTION ToString ();

        // class variables
        INTEGER __class_id__;

        // class properties
        DelegateProperty ConnectedHandler OnConnect;
        DelegateProperty DisconnectedHandler OnDisconnect;
        DelegateProperty DeviceStatusHandler DeviceStatus;
    };

