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

DLL Generation

DLL Installation

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:

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

Parameters. In file AHI.Instrument.Circuit.<ManufName>.<CircuitName>\<CircuitName>.Products.Info.cs:

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

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>