This is an old revision of the document!


Adding New Product Support
Intricon Product DLL
OnSemi Product DLL (using ARKBase)

DLL Generation

  • Go to OnSemi ARKOnline (http://ark.onsemi.com) and login. Visit “Library Manager” > “Libraries” (left column).
  • Edit product library: Click “Edit” next to product library to modify, under the section “Audina Hearing Instruments Libraries”. Eg: ezRhythm
  • Change appropriate settings, then click on “Build” button at the top. Wait a few minutes for the compilation to finish before downloading it.

DLL Installation

  • Download DLLs from ARK Online. Click on the “Download” link beside the product library.
  • Unzip the DLL download, and copy files to C:\Program Files\Common Files\Audina\Drivers (or alternatively to C:\WINDOWS\ARK).
  • Run “ARK Component Manager” (Start → Programs → On Seminconductor → Configuration Tools) (file “C:\Program Files (x86)\ON Semiconductor\ARK\IDS.exe”) as Administrator.
  • Install the DLLs.
Add IDs to TCircuitID and TProductID

In AHI.App.Types (file Types.cs), add entries in these enums:

public enum TCircuitID
{ . . . }
public enum TProductID
{ . . . }
Add Product Library

New Circuit. For a new circuit (not just a new product), create a library such as AHI.Instrument.Circuit.<ManufName>.<CircuitName> (eg. AHI.Instrument.Circuit.Intricon.Audion6). This library has these files:

  • <CircuitName>.Custom.Methods.cs
  • <CircuitName>.Library.cs
  • <CircuitName>.Products.Info.cs

Supported Products/Styles. In file, AHI.Instrument.Circuit.<ManufName>.<CircuitName>\<CircuitName>.Products.Info.cs:

  • Add all product (and their styles) supported in a circuit to
    • Intricon: Lib_CreateProductList()
    • OnSemi: Lib_CreateLibraryList()

Parameters. In file AHI.Instrument.Circuit.<ManufName>.<CircuitName>\<CircuitName>.Products.Info.cs (Eg AHI.Instrument.Circuit.Intricon.Audion6\Audion6.Products.Info.cs):

  • Add and edit parameters in SetMemoryParameters(), SetConfigParameters(), and SetCustomParameters().
  • Customize product and style parameters in SetAdditionalProductInfo() and SetAdditionalStyleInfo().

Using a product library. In project ezFIT, add library as a dependency to ezFIT:

  • Right-click on ezFIT project.
  • Select “Project Dependencies”.
  • Mark checkbox for new library, eg: AHI.Instrument.Circuit.Intricon.Audion6
Add TCircuitProdStyle

In AHI.Instrument.Circuit.<ManufName>.<CircuitName> (eg.AHI.Instrument.Circuit.Intricon.Audion6), add an entry for each Product+Style combination supported by that circuit:

private enum TCircuitProdStyle
{
    Undefined        = 00,
    ProdName1_Style1 = 01,
    ProdName1_Style2 = 02,
    . . .
    ProdName2_Style1 = n1,
    ProdName2_Style2 = n2,
    . . .
}
Add Product Library to Detection List

In AHI.Fitting.TSupportedProductList.PopulateProductInfoList() (file AHI.Fitting.ProductInfo.cs), add library:

  ProdLibPath = new string[] {
                      ...
                      rootdir + @"\AHI.Instrument.Circuit.Intricon.Audion8.dll",
                      ...
  };                      
  . . .
  Add(new TSupportedProduct(TCircuitID.Audion6, /* TProductID.prod_IntuitionRIC6.ToString(), */
                    TCircuitManufCode.Intricon,
                    TProductID.prod_IntuitionRIC6,
                    ProdLibPath[4],
                    "AHI.Instrument.Circuit.Intricon.Audion6.TAudion6",
                    false /* use for autodetection */ ));
  . . .
Add to Product Specification List

In AHI.Product.Specification.TProductSpecificationList.RefreshList(), add code:

#region Product IRIC 6
            _prod                             = new TProductSpecification();
            _prod.Code                        = TProductID.prod_IntuitionRIC6.ToString();
            _prod.Name                        = "IRIC 6";
            _prod.CircuitFamily               = "Audion6";
            _prod.CircuitID                   = TCircuitID.Audion6;
            _prod.TechnologyLevel             = TTechnologyLevelType.Mid;
            //_prod.Style                       = TStyleType.OTERIC;
            _prod.BatterySize                 = TBatterySize.Size312Brown;
            _prod.Channels                    = 6;
            _prod.AutoEnvironmentSwitching    = 0;
            _prod.AdaptiveDirectionalChannels = 1;
            _prod.GainBands                   = 12;
            _prod.NoiseReduction              = true;
            _prod.BluetoothCompatible         = false;
            _prod.AudioLoopSystemCompatible   = false;
            _prod.FMLoopSystemCompatible      = true;
            _prod.PhoneLoopSystemCompatible   = false;
            _prod.Telecoil                    = true;
            _prod.TelecoilSupported           = true;
            _prod.AdaptiveFeedbackCanceller   = true;
            _prod.DataloggerType              = TDataloggerType.None;
            _prod.WindManager                 = false;
            _prod.TinnitusNoiseGenerator      = false;
            _prod.ManualPrograms              = 4;
            _prod.Housing                     = THousingType.MiniBTE;
            _prod.HousingFilename             = "images/icons/icon-housing-iric.png";
            _prod.HousingColor                = new THousingColorList() { new THousingColor(THousingColorType.Beige), new THousingColor(THousingColorType.Silver) };
            _prod.ProgrammerCable             = TProgrammerCableType.Black_5x;
            _prod.IsLegacy                    = false;
            _prod.ID                          = TProductID.prod_IntuitionRIC6;
 
            // Style
            _prod.Styles.Add(TInstrumentStyle.RIC);
 
            // Fitting Range
            _prod.FittingRangeMin = new int[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
            _prod.FittingRangeMax = new int[] {56, 62, 61, 61, 60, 59, 66, 68, 53, 3};
 
            // Options
            _prod.Options.Add(string.Format("{0} ({1}): {2}, {3}, {4}", 
                AHI.App.Localization.Resources.rsReceiver,
                AHI.App.Localization.Resources.rsHighDefinitionAbbrev,
                //AHI.App.Localization.Resources.rsStandard,
                //AHI.App.Localization.Resources.rsPower,
                //AHI.App.Localization.Resources.rsSuperPower
                AHI.App.Localization.Resources.rsWideband,
                AHI.App.Localization.Resources.rsPower,
                AHI.App.Localization.Resources.rsHighPower
                )); 
 
            // Customization
            switch (CustomCompany)
            {
                default:
                case TCustomCompany.Audina:
                    _prod.Name = "IRIC 6";
                    this.Add(_prod);
                    break;
 
                //case TCustomCompany.Audina_Germany:
                //    break;
 
                case TCustomCompany.AudiNat:
                    break;
 
                case TCustomCompany.Auditiva:
                    _prod.Name = "Fino 6 (RIC)";
                    this.Add(_prod);
                    break;
 
                //case TCustomCompany.Auditiva_Denmark:
                //    _prod.Name = "Fino 6 (RIC)";
                //    this.Add(_prod);
                //    break;
 
                case TCustomCompany.HearingCentral:
                    break;
 
                //case TCustomCompany.PHSI:
                //    break;
 
                //case TCustomCompany.Sonitech:
                //    break;
 
                case TCustomCompany.TransEar:
                    break;
 
                case TCustomCompany.VistaHIA:
                    break;
            }
            #endregion
Add to Build Process and Installer

In build batch file installer\build-UpdateDLLs.bat, add references to library. Eg:

. . .
COPY ..\..\..\AHI.Circuit.Manufacturers\Intricon\Audion6\bin\x86\Debug\AHI.Instrument.Circuit.Intricon.Audion6.dll
. . .

In Inno Setup installer script installer\installer-ezfit.iss, add libraries (to be distributed) to the [Files] sesion:

;---------------------------------------------------
; Intricon files
;---------------------------------------------------
; Intricon circuit libraries (former RTI)
. . .
Source: {#LibDir}\Intricon\Audion6.dll;   DestDir: {app}; Flags: ignoreversion

;---------------------------------------------------
; Application files
;---------------------------------------------------
. . .
Source: {#SrcAppDir}\AHI.Instrument.Circuit.Intricon.Essential.dll; DestDir: {app}; Flags: ignoreversion

NAnt-Gui

Add to nant-gui script:

  <!-- Clean Generated Files -->
  <target name="00-Clean" description="Clean files (remove generated files)">
    ...
    <include name="${project.bin}\AHI.Instrument.Circuit.Intricon.MYDRIVER.dll" />
  </target>
  <!-- Update required DLLs -->
  <target name="02-Update-DLLs" description="Update required DLLs">
    ...
    <include name="AHI.Circuit.Manufacturers\Intricon\MYDRIVER\bin\x86\Debug\AHI.Instrument.Circuit.Intricon.MYDRIVER.dll" />
  </target>