@mchp-mcc/scf-pic8-osc-v1 4.3.1 → 4.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://processor/webpack/bootstrap","webpack://processor/./generated_module/src/App/AppModel.ts","webpack://processor/./generated_module/src/Utils.ts","webpack://processor/./generated_module/src/autoModule sync","webpack://processor/./generated_module/src/autoModule/AutoModuleAppModel.tsx","webpack://processor/./generated_module/src/autoModule/AutoModuleHardware.ts","webpack://processor/./generated_module/src/autoModule/AutoModuleHelpers.tsx","webpack://processor/./generated_module/src/autoModule/AutoModuleTemplates.tsx","webpack://processor/./generated_module/src/autoModule/AutoModuleView.tsx","webpack://processor/./generated_module/src/autoModule/ContextualHelp.ts","webpack://processor/./generated_module/src/autoModule/RegisterFilterMode.ts","webpack://processor/./generated_module/src/autoModule/getConfigData.ts","webpack://processor/./generated_module/src/interfaces/exports.tsx","webpack://processor/./generated_module/src/interfaces/imports.tsx","webpack://processor/./generated_module/src/interrupts/InterruptActions.ts","webpack://processor/./generated_module/src/pins/PCPHelper.ts","webpack://processor/./generated_module/src/pins/PCPStateActionBuilder.ts","webpack://processor/./generated_module/src/processor.tsx","webpack://processor/./generated_module/src/tables/UidMapBuilder.ts","webpack://processor/./generated_module/src/tables/tables.ts","webpack://processor/./node_modules/@microchip/initializer-system/lib/src/index.js","webpack://processor/./node_modules/@microchip/initializer-system/lib/src/initializer-system.js","webpack://processor/./node_modules/@microchip/pin-standard/lib/index.js","webpack://processor/./node_modules/@microchip/pin-standard/lib/pin-standard.js","webpack://processor/./node_modules/@microchip/scf-common/lib/Processor.js","webpack://processor/./node_modules/@microchip/scf-device/lib/CalculateRegisterValue.js","webpack://processor/./node_modules/@microchip/scf-device/lib/Register.js","webpack://processor/./node_modules/@microchip/scf-device/lib/Setting.js","webpack://processor/./node_modules/@microchip/scf-device/lib/util/Arrays.js","webpack://processor/./node_modules/@microchip/scf-interface/lib/c-function-types.js","webpack://processor/./node_modules/@microchip/scf-interface/lib/helpers.js","webpack://processor/./node_modules/@microchip/scf-interface/lib/index.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/lib/CreateRegisterView.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/lib/Model.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/lib/ViewSchemaBuilder.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/CalculateRegisterValue.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/Register.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/Setting.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/util/Arrays.js","webpack://processor/./node_modules/path-browserify/index.js","webpack://processor/./node_modules/process/browser.js","webpack://processor/./src/ClockCalculator.ts","webpack://processor/./src/DerivedData.ts","webpack://processor/./src/PinsLogic.ts","webpack://processor/./src/StringConstants.ts"],"names":["getPinsLogic","require","ex","getCompletePinData","appModel","getRowData","rowData","getModel","prototype","getDerivedData","AppModel","getDerivedDataFunction","derivedData","exportInterfaces","importInterfaces","autoModuleAppModel","registerValues","interrupts","properties","registers","pcpHelper","defaultHardware","getState","state","getPayload","payload","getImports","imports","getExports","exports","getName","getAutoModuleAppModel","getModuleName","getActiveName","getDerivedFunctions","createAutoModuleAppModel","getPrototypeModule","getRegisterValues","interfaceName","config","getInterrupts","getHardware","getPeripheral","getProperties","getRegisters","getFriendlyInterfaceId","peripheral","undefined","name","instanceNumber","Number","instance","replace","group","peripheralName","getConfigData","peripherals","interfaceId","getPeripheralDescription","getMyFunctions","getDerivedFunction","functionName","args","getExportInterfaces","createExportInterfaces","getImportInterfaces","createImportInterfaces","isControlledByInterface","componentName","getAssignedImport","importName","Processor","getImportValue","filterImportBySetting","populatedImports","importKey","optionFilter","filteredImports","option","isComponentValue","value","getComponentValue","getComponent","getPCPHelper","PCPHelper","setCallbacks","getKeys","obj","Object","getOwnPropertyNames","values","map","key","forEach","action","mapper","assertNotNull","val","msg","Error","toDictionary","arr","keyMapper","valueMapper","result","entry","model","MyAutoModuleAppModel","hardware","componentList","moduleName","createComponentList","components","getComponentList","componentsWithDynamicDependencySelectors","getDefaultDependencySelectors","component","getAllComponents","softwareData","push","registerName","setting","hardwareRegister","settings","type","getDynamicComponents","getActions","actions","getDefaultComponentAction","tabId","path","getSoftwareComponentValue","tab","overriddenValue","processedArg","getProcessedArgValue","AutoModuleHelper","overrideDefaultValues","getHardwareComponentValue","overriddenCompValue","overrideDefaultValue","getDefaultValue","displayOptionSetting","mode","operation","options","masterComponent","indexOf","getHardwareComponentBooleanValue","booleanValues","getDependencyComponentValue","dependencySelector","imp","importId","handle","createOptionLabel","optionType","defaultValue","getOptionByName","dynamicDependencySelectors","defaultTab","defaultGroup","length","tabs","importedNames","keys","dependencySelectors","filter","category","description","componentValue","createPrototypeImport","isFullyAssigned","interfaces","getHardwareInterfaces","i","isAssigned","castComponent","getComboOptions","overrideOptions","hasConfigBits","regName","registerValue","reg","comment","valueAsHex","alias","registerVal","CalculateRegisterValue","comments","set","getSettingBits","deviceType","withNumberValue","getOptionValueByName","asNumber","toString","toUpperCase","sortComments","register","sort","a","b","settingA","split","settingB","mask","join","setValNumber","getOptionByAlias","settingValue","valueAsDescription","bitName","getRegisterFromComponent","toLowerCase","modifiedRegName","getSettingFromComponent","desc","porDefault","optionName","optionValue","getSettingDefaultIfPresent","getOverrideDefaultValue","getSettingOptionsIfPresent","masterComponentValue","filteredOptions","filterModeOptions","find","optionModes","match","getProcessedHandle","label","providerId","exportId","DependencySelector","noneSelection","createOptionEntry","dropdownOptions","thisImport","shouldAllowUnselectDependency","names","generateDropdownOptions","isUnassignable","getModuleDefaultDescription","packageJson","scf","getTemplates","templates","template","newTemplate","dest","templateName","src","shouldGenerate","generateWithHardware","isGeneratableProperty","getTemplatePayload","templatePayload","uppercase","lowercase","filename","source","header","getComponentPayload","getTemplateSettings","getConfigBits","configModule","templateConfigBits","configName","configBits","configBit","createAutoViewPayloads","payloads","main","createSimpleFormPayloadRegister","schema","createSchema","uiSchema","createUiSchema","formData","createFormData","scfUiSchema","createScfUiSchema","table","shouldPopulateView","expandGroupsByDefault","UIGroupCollapse","populateView","getModuleDescription","title","schemaBuilder","overrideGroupTitle","UIGroups","overrideGroupDescription","getComponentSchema","UIOrder","tableCols","columns","colNames","defaultColumnWidth","calculateColumnWidth","isColEditable","readonly","dataField","editable","columnWidth","width","dataSort","isSortable","headerAlign","dataAlign","tdStyle","getCellStyle","headerText","getTableUiSchema","getUiBehavior","getUiSchemaExportArg","getTableFormData","getDependencySelectorActions","transformErrors","deviceMeta","hasSdlSupport","sdlHelp","url","getAutoSdlHelp","tableState","uids","createTableUids","cellValidationInfo","getCellValidationInfo","canRemoveRows","canInsertRows","canAddRows","canMoveRowDown","canMoveRowUp","getTableActions","depSelector","dependencySelectorActions","dropdownOption","JSON","stringify","displayViewOnImportAssigned","shouldPopulateViewAtStartup","impKey","isVisible","isVisibleProperty","isModeActive","getSoftwareComponentSchema","getHardwareComponentSchema","getDependencyComponentSchema","getTableComponentSchema","validation","overrideTitle","format","isUrl","urlDescription","isImage","imageDescription","getDropdownOptionNames","assignedImport","createProcessedImports","assignedName","matchRegEx","expArg","uiBehavior","overriddenBehavior","isEnabled","registerViewPayloads","hardwarePeripheral","registerFilter","registerView","CreateRegisterView","foundRegister","withRegisterValue","interruptsKey","interrupt","interruptComponent","interruptCompVal","withInterruptValue","withInterruptOptions","create","dataModel","helpUrl","deviceName","dosid","comp","registerAlias","deviceRegister","processRegisterModes","hasModes","modifiedHardwarePeripheral","delFlag","targetStr","RegExp","test","settingObj","flag","configPath","newConfig","ConfigBuilder","withDynamicConfigData","withDynamicComponents","build","getConfigFile","dynamicComponents","dynamicComponentMap","fromNew","fromPath","__dirname","MyExportInterfaces","createProcessedExports","exportPayload","exp","int","processedInterface","getInterface","getInterfaceArgs","interfaceKey","getInterfaceResults","results","processedArgValue","interfaceData","getInterfaceData","argValues","arg","module","isInterface","idA","idB","MyImportInterfaces","stage","processedImports","filterImports","getResults","getProcessedImportOptions","modifiedOptions","index","importResults","initResults","initializer","getData","isHighPriority","filterInterrupt","filterInterrupts","interruptComponentName","getInterruptComponentName","isrCallback","handlerName","headerFile","generateISR","isEnableActions","getInterruptActions","concat","getDefaultInterruptActions","isEnableAction","interruptList","interruptActions","apiPrefixResults","apiPrefix","interruptName","InterruptActionsBuilder","curComponent","curComponentName","tableRowId","tableRowCol","tableCellPath","createActionFor","buildActions","addActionIfEnabled","actionValue","isActionValueAcceptable","rowId","validFor","addActionIfDisabled","setPathToTableCell","rowIndex","colName","some","createActionBuilder","getPinJsonObj","rows","pinjsonobj","pinCallbacks","getAllFilteredRows","allRows","validRows","eachRow","userRowData","isRowValid","direction","behaviour","eachrowret","getAllRows","pinRows","userdata","retData","callbacks","pinRow","PCPStateActionBuilder","rowName","actionDataArr","pinRegEx","pinstate","pin_state","LOCKED","actiontype","SETACTION","attribs","formAttribs","ATTRIBACTION","UNLOCK","attribarray","actionArr","eachData","process","initialModule","myDerivedData","processedOutput","help","overrideModuleLevelHelp","customTemplateData","templateData","view","auto","customView","getCustomView","alerts","UidMapBuilder","uidMap","row","rowCount","uid","incrementUidAndShift","dynamicallyRemoved","count","sortedUids","getUidKeys","uidKey","RowPrefix","overrideTableDefaultsWithChanges","rowChanged","initialFormData","Array","isArray","changedRow","changedUid","rowChangeNum","isTableInState","tabState","getInitialTableFormData","columnNames","tableFormData","columnName","overrideTableDefaultValues","createInitialRows","rowDataCols","createRowUid","Default","initialRows","defaultRowNum","createDefaultTableAction","column","overrideCellValue","tableData","cell","modifiedTableData","addRowsToTable","newRow","numberOfRows","addRowToTable","Dynamic","newRowCols","newRowId","filteredTableTemp","tableFirstHalf","slice","tableSecondHalf","currentRowId","updateActionsRowId","removeRowFromTable","tableRemoved","currentActions","modifiedActions","getValueBasedOnState","modelState","tableUids","overrideDefaultsAndFilterRows","modifiedForData","filteredModifed","dynamicTableData","r","addDefaultRows","addDynamicRows","removeRows","sortByValue","colInfo","colData","info","minValue","maxValue","errMessage","errTitle","cValidation","cValidationErrTitle","cValidationErrMessage","rowFormData","tableActions","uidsKey","defaultAction","ind","filtered","overrideTableOptions","cellAction","uidKeys","tableUi","search","striped","bordered","rightActions","getTableRightActions","leftActions","getTableLeftActions","getTableMoveRowActions","className","tableColumns","columnsKey","rjsfType","colBox","items","tableName","dynamicOptions","displayName","isReadonly","overflow","textOverflow","prefix","postfix","ClockCalculator","oscSelect","HFInternalClk","externalClk","clkDivider","lfintosc","mfintosc","mfintosc_31KHz","sosc","MAX_PLL","MIN_PLL","getCurrentSystemClk","currentSystemClk","HFClk","StringConstants","SOSC","LFINTOSC","HFINTOSC","parseInt","HFINTOSC_2xPLL","EXTOSC","Math","round","getHfIntOsc","getMfIntOsc","getMfIntOsc_31KHz","getLfIntOsc","getExtOsc","getSosc","MyDerivedData","EmptyDerivedData","clockCalculator","getClockCalculator","getMyAlerts","initializer_system_results","config_device_results","getTemplateData","config_request_args","getOscClocksProcessedPayload","oscObj","extosc","fosc","hfintosc","mfintosc_31Khz","hasSosc","soscEnabled","soscPowerMode","headers","initRegisters","productName","productVersion","compiler","tool","deviceFrequency","moduleNameUpperCase","moduleNameLowerCase","priority","initializer_system","START","EXTOSC_4xPLL","getDynamicComponetDefaultValue","externalClkSelectedOptions","selectedOptionVal","noscOsccon1","Hint","text","Warning","ExtClkFreq_64MHz","ExtClkFreq_20MHz","ExtClkFreq_32MHz","retRowJSONdata","rowActions","clockOutEnable","selectedOption","behaviourMeta","lockPinRegEx","isPic18ClkOut","stateActionBuilder","rowWithName","forComponent","addIfLockedSetValue","addIfUnLockedSetValue","eachAction","lockedState","meta","to","unlockedState","extClkSelect","mclrKey","mclrEnable","lvpEnable","selectedMclrOption","selectedLvpOption","isPic18Mclr","isQ10Mclr","OSC_NOT_NEEDED","ON"],"mappings":"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CA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8C;;;;;;;;;;;;ACtGa;AACb,8CAA8C,cAAc;AAC5D,qBAAqB,mBAAO,CAAC,kFAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;;;;;;ACXa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4EAA4E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wFAAwF;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,+EAA+E;AAChF;AACA;AACA;AACA;AACA,CAAC,6DAA6D;AAC9D;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,wC;;;;;;;;;;;;AC3Pa;AACb;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC,6DAA6D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB,wDAAwD;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C,kCAAkC,WAAW,oBAAoB,kBAAkB,8BAA8B,GAAG;AACpH,aAAa,GAAG;AAChB;AACA;AACA;AACA;;;;;;;;;;;;;AC9Ea;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,sEAAW;AACnC,iBAAiB,mBAAO,CAAC,wEAAY;AACrC,eAAe,mBAAO,CAAC,8EAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wCAAwC;AACxC,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,gGAAgG,0BAA0B,EAAE;AAC5H,4IAA4I,uDAAuD,EAAE;AACrM;AACA;AACA,wCAAwC,8DAA8D;AACtG;AACA,2CAA2C,iEAAiE;AAC5G;AACA,4CAA4C,kEAAkE;AAC9G;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6CAA6C;AACzF,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kD;;;;;;;;;;;;AClNa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA,oC;;;;;;;;;;;;ACNa;AACb,8CAA8C,cAAc;AAC5D;AACA,eAAe,mBAAO,CAAC,8EAAe;AACtC;AACA;AACA,wGAAwG,8BAA8B,EAAE;AACxI;AACA;AACA;AACA,wGAAwG,4BAA4B,EAAE;AACtI;AACA;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,uGAAuG,oBAAoB,EAAE;AAC7H;AACA;AACA;AACA,uGAAuG,2BAA2B,EAAE;AACpI;AACA,mC;;;;;;;;;;;;ACxBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,iBAAiB,EAAE;AACvE;AACA,kC;;;;;;;;;;;;ACzCa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kCAAkC,EAAE;AAC5E;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1Ba;AACb,8CAA8C,cAAc;AAC5D,yBAAyB,mBAAO,CAAC,2FAAoB;AACrD;AACA,gBAAgB,mBAAO,CAAC,yEAAW;AACnC;AACA;;;;;;;;;;;;;ACNa;AACb;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,+CAA+C,mBAAO,CAAC,6KAAkD;AACzG,eAAe,mBAAO,CAAC,uJAAuC;AAC9D,0BAA0B,mBAAO,CAAC,wGAAqB;AACvD,cAAc,mBAAO,CAAC,gFAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,QAAQ,gRAAgR;AACrV,+DAA+D,QAAQ,uRAAuR;AAC9V,qEAAqE,QAAQ,4SAA4S;AACzX;AACA;AACA,iEAAiE,uCAAuC,EAAE;AAC1G;AACA;AACA;AACA,kEAAkE,wCAAwC,EAAE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2CAA2C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,8C;;;;;;;;;;;;ACvMa;AACb;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,+CAA+C,mBAAO,CAAC,6KAAkD;AACzG,eAAe,mBAAO,CAAC,uJAAuC;AAC9D;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA,gEAAgE,sCAAsC,EAAE;AACxG;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D,oCAAoC,4BAA4B;AAChE,2CAA2C,4BAA4B;AACvE,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD,qDAAqD,mCAAmC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA,0CAA0C,yBAAyB;AACnE,uCAAuC,sBAAsB;AAC7D,oCAAoC,2BAA2B;AAC/D,2CAA2C,kCAAkC;AAC7E,0CAA0C,yCAAyC;AACnF,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA,oFAAoF,oBAAoB,EAAE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iC;;;;;;;;;;;;ACrJa;AACb;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB,iCAAiC,mCAAmC,sCAAsC;AACrK,4CAA4C,0BAA0B;AACtE,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,6C;;;;;;;;;;;;AC5Ha;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,uHAAW;AACnC,iBAAiB,mBAAO,CAAC,yHAAY;AACrC,eAAe,mBAAO,CAAC,+HAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wCAAwC;AACxC,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,gGAAgG,0BAA0B,EAAE;AAC5H,4IAA4I,uDAAuD,EAAE;AACrM;AACA;AACA,wCAAwC,8DAA8D;AACtG;AACA,2CAA2C,iEAAiE;AAC5G;AACA,4CAA4C,kEAAkE;AAC9G;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6CAA6C;AACzF,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kD;;;;;;;;;;;;AClNa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA,oC;;;;;;;;;;;;ACNa;AACb,8CAA8C,cAAc;AAC5D;AACA,eAAe,mBAAO,CAAC,+HAAe;AACtC;AACA;AACA,wGAAwG,8BAA8B,EAAE;AACxI;AACA;AACA;AACA,wGAAwG,4BAA4B,EAAE;AACtI;AACA;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,uGAAuG,oBAAoB,EAAE;AAC7H;AACA;AACA;AACA,uGAAuG,2BAA2B,EAAE;AACpI;AACA,mC;;;;;;;;;;;;ACxBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,iBAAiB,EAAE;AACvE;AACA,kC;;;;;;;;;;;ACzCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvLtC;AAEO,IAAMC,eAAb,GAUwB;AACD;AAEnB,yBACIC,SADJ,EAEIC,aAFJ,EAGIC,WAHJ,EAIIC,UAJJ,EAKE;AAAA;;AAAA;;AAAA,OAjB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","file":"processor.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./generated_module/src/processor.tsx\");\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { MyExportInterfaces, createExportInterfaces } from \"../interfaces/exports\";\nimport { MyImportInterfaces, createImportInterfaces } from \"../interfaces/imports\";\nimport * as Types from \"../types\";\nimport { pin_row } from \"@microchip/pin-standard\";\nimport * as AutoModuleTypes from \"../types/AutoModuleTypes\";\nimport {\n MyAutoModuleAppModel,\n createAutoModuleAppModel,\n} from \"../autoModule/AutoModuleAppModel\";\nimport {\n getFriendlyInterfaceId,\n getRegisterValues,\n} from \"../autoModule/AutoModuleHelpers\";\nimport { ModuleConfig } from \"../types/AutoModuleTypes\";\nimport { PCPHelper } from \"../pins/PCPHelper\";\nimport { getConfigData } from \"../autoModule/getConfigData\";\n\ninterface PinsLogic {\n getCompletePinData(appModel: AppModel): any;\n getRowData(appModel: AppModel, rowData: pin_row): pin_row;\n}\n\nconst getPinsLogic = (): PinsLogic => {\n try {\n return require(\"../../../src/PinsLogic.ts\");\n } catch (ex) {\n const getCompletePinData = (appModel: AppModel): any => {\n return {};\n };\n const getRowData = (appModel: AppModel, rowData: pin_row): pin_row => {\n return rowData;\n };\n return {\n getCompletePinData: getCompletePinData,\n getRowData: getRowData,\n };\n }\n};\n\nexport const getModel = (\n prototype: AutoModuleTypes.MyModule,\n getDerivedData: (appModel: AutoModuleTypes.AppModel) => AutoModuleTypes.DerivedData,\n): AutoModuleTypes.AppModel | undefined => {\n return new AppModel(prototype, getDerivedData);\n};\n\nclass AppModel implements AutoModuleTypes.AppModel {\n private prototype: AutoModuleTypes.MyModule;\n private getDerivedDataFunction: (\n appModel: AutoModuleTypes.AppModel,\n ) => AutoModuleTypes.DerivedData;\n private derivedData: AutoModuleTypes.DerivedData;\n private exportInterfaces: MyExportInterfaces;\n private importInterfaces: MyImportInterfaces;\n private autoModuleAppModel: MyAutoModuleAppModel;\n private registerValues: AutoModuleTypes.MyRegisterValues | undefined;\n private interrupts: Types.Interrupts | undefined;\n private properties: Types.Properties | undefined;\n private registers: Types.Registers | undefined;\n private pcpHelper: PCPHelper;\n private defaultHardware: AutoModuleTypes.MyHardware;\n\n constructor(\n prototype: AutoModuleTypes.MyModule,\n getDerivedData: (\n appModel: AutoModuleTypes.AppModel,\n ) => AutoModuleTypes.DerivedData,\n ) {\n this.prototype = prototype;\n this.getDerivedDataFunction = getDerivedData;\n this.pcpHelper = new PCPHelper();\n this.pcpHelper.setCallbacks({\n getCompletePinData: () => getPinsLogic().getCompletePinData(this),\n getRowData: (rowData) => getPinsLogic().getRowData(this, rowData),\n });\n }\n\n public getState = (): AutoModuleTypes.MyState | undefined => this.prototype.state;\n\n public getPayload = (): AutoModuleTypes.MyPayload => this.prototype.payload;\n\n public getImports = (): Types.MyImports => this.prototype.imports;\n\n public getExports = (): Types.MyExports => this.prototype.exports;\n\n public getName = (): string => {\n return this.getAutoModuleAppModel().getModuleName();\n };\n\n public getActiveName = (): string => {\n return this.getDerivedFunctions().getActiveName?.() ?? this.getName();\n };\n\n public getAutoModuleAppModel = (): MyAutoModuleAppModel => {\n if (this.autoModuleAppModel) return this.autoModuleAppModel;\n this.autoModuleAppModel = createAutoModuleAppModel(this);\n return this.autoModuleAppModel;\n };\n\n public getPrototypeModule = (): AutoModuleTypes.MyModule => {\n return this.prototype;\n };\n\n public getRegisterValues = (\n interfaceName?: string,\n config?: ModuleConfig,\n ): AutoModuleTypes.MyRegisterValues | undefined => {\n if (this.registerValues) return this.registerValues;\n this.registerValues = getRegisterValues(this, interfaceName, config);\n return this.registerValues;\n };\n\n public getInterrupts = (): Types.Interrupts | undefined => {\n if (this.interrupts) return this.interrupts;\n this.interrupts = this.getHardware()?.getPeripheral()?.interrupts;\n return this.interrupts;\n };\n\n public getProperties = (): Types.Properties | undefined => {\n if (this.properties) return this.properties;\n this.properties = this.getHardware()?.getPeripheral()?.properties;\n return this.properties;\n };\n\n public getRegisters = (): Types.Registers | undefined => {\n if (this.registers) return this.registers;\n this.registers = this.getHardware()?.getPeripheral()?.registers;\n return this.registers;\n };\n\n public getHardware = (\n interfaceName?: string,\n config?: ModuleConfig,\n ): AutoModuleTypes.MyHardware | undefined => {\n interfaceName = getFriendlyInterfaceId(interfaceName);\n if (interfaceName) {\n const peripheral = this.getPrototypeModule()?.imports?.[interfaceName]\n ?.payload as Types.MyPeripheral;\n if (!peripheral) return undefined;\n return {\n getPeripheral: (): Types.MyPeripheral => peripheral,\n getName: (): string => peripheral.name,\n instanceNumber: Number(\n peripheral.instance ?? peripheral.name.replace(peripheral.group, \"\"),\n ),\n };\n }\n if (!this.defaultHardware) {\n const peripheralName: string | undefined = getFriendlyInterfaceId(\n getConfigData(this, config)?.peripherals?.[0]?.interfaceId.name,\n );\n const peripheral = this.getPrototypeModule()?.imports?.[peripheralName ?? \"\"]\n ?.payload;\n if (peripheral) {\n this.defaultHardware = {\n getPeripheral: (): Types.MyPeripheral =>\n peripheral as Types.MyPeripheral,\n getName: (): string => peripheral.name,\n instanceNumber: Number(\n peripheral.instance ??\n peripheral.name.replace(peripheral.group, \"\"),\n ),\n };\n }\n }\n return this.defaultHardware;\n };\n\n public getPeripheralDescription = (): Types.MyPeripheral | undefined => {\n return this.getHardware()?.getPeripheral();\n };\n\n public getDerivedData = (): AutoModuleTypes.DerivedData => {\n if (this.derivedData) return this.derivedData;\n this.derivedData = this.getDerivedDataFunction(this);\n return this.derivedData;\n };\n\n public getDerivedFunctions = (): AutoModuleTypes.DerivedFunctions => {\n return this.getDerivedData().getMyFunctions();\n };\n\n public getDerivedFunction = (\n functionName: AutoModuleTypes.DerivedFunctionNames,\n ...args: any[]\n ): any | undefined => {\n return this.getDerivedFunctions()?.[functionName]?.(...args);\n };\n\n public getExportInterfaces = (): MyExportInterfaces => {\n if (this.exportInterfaces) return this.exportInterfaces;\n this.exportInterfaces = createExportInterfaces(this.prototype.exports, this);\n return this.exportInterfaces;\n };\n\n public getImportInterfaces = (): MyImportInterfaces => {\n if (this.importInterfaces) return this.importInterfaces;\n this.importInterfaces = createImportInterfaces(this.prototype.imports, this);\n return this.importInterfaces;\n };\n\n public isControlledByInterface = (componentName: Types.MyComponentNames): boolean => {\n return this.getExportInterfaces()?.isControlledByInterface(componentName) == true;\n };\n\n public getAssignedImport = <T extends Types.MyImportNames>(\n importName: T,\n ): Types.MyImports[T] | undefined => {\n if (\n this.prototype.imports[importName] &&\n Processor.isAssigned(this.prototype.imports[importName])\n ) {\n return this.prototype.imports[importName];\n }\n return undefined;\n };\n\n public getImportValue = <T extends Types.MyImportNames>(\n importName: T,\n ): Types.MyImports[T][\"payload\"] => {\n return this.getAssignedImport(importName)?.payload;\n };\n\n public filterImportBySetting = <T extends Types.MyImportNames = Types.MyImportNames>(\n populatedImports: Types.MyImports,\n importKey: T,\n optionFilter: (\n option: Processor.Option<Types.MyImports[T][\"payload\"]>,\n ) => boolean,\n ): Types.MyImports => {\n let filteredImports: Types.MyImports = {\n ...populatedImports,\n };\n if (populatedImports[importKey]) {\n filteredImports = {\n ...filteredImports,\n [importKey]: Processor.filterOptions(\n populatedImports[importKey],\n (option) => {\n return optionFilter(option);\n },\n ),\n };\n }\n return filteredImports;\n };\n\n public getComponentValue(componentName: string): any | undefined {\n return this.getAutoModuleAppModel().getComponentValue(componentName);\n }\n\n public isComponentValue = (componentName: Types.MyComponentNames): boolean => {\n const value = this.getComponentValue(componentName);\n return value === true || value === \"enabled\";\n };\n\n public getComponent = (\n componentName: Types.MyComponentNames,\n ): AutoModuleTypes.MyComponent | undefined => {\n return this.getAutoModuleAppModel().getComponent(componentName);\n };\n\n public getPCPHelper = (): PCPHelper => {\n return this.pcpHelper;\n };\n}\n","export type Dictionary<T> = Record<string, T>;\n\n/** @returns the non-prototype keys of the given object */\nexport const getKeys = (obj: object): string[] => {\n /* eslint-disable-line */\n return Object.getOwnPropertyNames(obj);\n};\n\nexport const values = <T = any>(obj: { [key: string]: T }): T[] => {\n return getKeys(obj).map((key: string): T => obj[key]);\n};\n\nexport const forEach = <T>(\n obj: Dictionary<T>,\n action: (key: string, value: T) => void,\n): void => {\n getKeys(obj).forEach((key: string): void => action(key, obj[key]));\n};\n\nexport const map = <T, R>(\n obj: Dictionary<T>,\n mapper: (key: string, value: T) => R,\n): R[] => {\n return getKeys(obj).map((key: string): R => mapper(key, obj[key]));\n};\n\ntype NonNullAssertion = <T>(val: T, msg?: string) => asserts val is NonNullable<T>;\n\nexport const assertNotNull: NonNullAssertion = <T>(\n val: T,\n msg?: string,\n): asserts val is NonNullable<T> => {\n if (val == null) {\n throw new Error(msg);\n }\n};\n\nexport const toDictionary = <T, V>(\n arr: T[],\n keyMapper: (input: T) => string,\n valueMapper: (input: T) => V,\n): Dictionary<V> => {\n const result: Dictionary<V> = {};\n arr.forEach((entry) => {\n result[keyMapper(entry)] = valueMapper(entry);\n });\n return result;\n};\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./generated_module/src/autoModule sync recursive\";","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport {\n ModuleConfig as MyModuleConfig,\n MyComponent,\n MyComponentValueList,\n} from \"../types/AutoModuleTypes\";\nimport * as AutoModuleHelper from \"./AutoModuleHelpers\";\nimport { Setting } from \"@microchip/scf-device\";\nimport { getOptionByName } from \"@microchip/scf-device/lib/Setting\";\nimport { getConfigData } from \"./getConfigData\";\nimport { values } from \"../Utils\";\nimport { AppModel, MyHardware, MyState } from \"../types/AutoModuleTypes\";\nimport { getKeys } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { AutoModuleAppModel } from \"@microchip/scf-automodule-interface/lib/src/types\";\nimport { MyComponentNames } from \"../types\";\n\nexport const createAutoModuleAppModel = (\n model: AppModel,\n config?: MyModuleConfig,\n): MyAutoModuleAppModel => {\n return new MyAutoModuleAppModel(model, config);\n};\n\nexport class MyAutoModuleAppModel implements AutoModuleAppModel<MyComponentNames> {\n private model: AppModel;\n private state: MyState | undefined;\n private hardware: MyHardware | undefined;\n private config: MyModuleConfig;\n private componentList: any;\n private moduleName: string;\n\n constructor(model: AppModel, config?: MyModuleConfig) {\n this.model = model;\n this.state = this.model.getState();\n this.hardware = this.model.getHardware();\n this.config = getConfigData(model, config);\n this.componentList = this.createComponentList();\n }\n\n public getModuleName = (): string => {\n if (this.moduleName) return this.moduleName;\n\n this.moduleName =\n this.model.getDerivedFunctions().moduleName?.() ??\n (this.model.getComponentValue(\"componentName\") as string) ??\n this.model.getHardware()?.getName() ??\n this.config?.moduleName ??\n \"Module\";\n return this.moduleName;\n };\n\n private createComponentList = (): MyComponentValueList => {\n const componentList = {};\n\n const components: ModuleConfig.Component<\n MyComponentNames | string\n >[] = this.getComponentList(this.config);\n\n const componentsWithDynamicDependencySelectors = [\n ...components,\n ...this.getDefaultDependencySelectors(components),\n ];\n\n if (componentsWithDynamicDependencySelectors) {\n componentsWithDynamicDependencySelectors.forEach((component) => {\n componentList[component.name] = {\n component: component,\n };\n });\n }\n\n return componentList as MyComponentValueList;\n };\n\n private getDefaultDependencySelectors(\n components: ModuleConfig.Component<MyComponentNames | string>[],\n ): ModuleConfig.Component<MyComponentNames | string>[] {\n const dynamicDependencySelectors: ModuleConfig.Component<\n MyComponentNames | string\n >[] = [];\n\n let defaultTab = \"main\";\n let defaultGroup = \"software\";\n if (components.length > 0) {\n defaultTab = components[0].tabs[0];\n defaultGroup = components[0].group;\n }\n const imports = this.model.getImports();\n if (imports) {\n const importedNames = Object.keys(imports);\n\n importedNames.forEach((name) => {\n const dependencySelectors = components.filter(\n (component) =>\n component[\"importId\"] && component[\"importId\"] === name,\n );\n if (dependencySelectors.length === 0) {\n dynamicDependencySelectors.push({\n name: name + \" dependency selector\",\n importId: name,\n category: \"import\",\n type: \"ComboBox\",\n description: name + \" dependency selector\",\n group: defaultGroup,\n tabs: [defaultTab],\n });\n }\n });\n }\n\n return dynamicDependencySelectors;\n }\n\n public getAllComponents = (): MyComponentValueList => this.componentList;\n\n private getComponentList = (\n config?: MyModuleConfig,\n ): ModuleConfig.Component<MyComponentNames>[] => {\n const components: ModuleConfig.Component<MyComponentNames>[] = [];\n config = getConfigData(this.model, config);\n if (!config) return components;\n\n //Software Components\n values(config.softwareData ?? {})?.forEach((entry) => {\n components.push(entry);\n });\n\n //Hardware Components\n config.peripherals?.forEach((peripheral) => {\n if (peripheral.registers) {\n getKeys(peripheral.registers)?.forEach((registerName) => {\n peripheral.registers?.[registerName]?.forEach((setting) => {\n //Only add hardware components that exist at runtime\n const hardwareRegister = this.model.getHardware()?.getPeripheral()\n .registers?.[registerName];\n if (\n !hardwareRegister?.settings ||\n hardwareRegister.settings[setting.setting] ||\n hardwareRegister.type === \"register\"\n ) {\n components.push(setting);\n }\n });\n });\n }\n });\n\n //Custom Dynamic Components\n this.model\n .getDerivedFunctions()\n .getDynamicComponents?.()\n .forEach((component) => {\n components.push(component as ModuleConfig.Component<MyComponentNames>);\n });\n return components;\n };\n\n public isComponent(componentName: MyComponentNames): boolean | undefined;\n public isComponent(componentName: string): boolean | undefined;\n public isComponent(componentName: string): boolean | undefined {\n const component: ModuleConfig.Component<MyComponentNames> = this.componentList[\n componentName\n ]?.component;\n const componentValue = this.getComponentValue(componentName);\n if (component.category === \"software\") {\n if (component.type === \"boolean\") {\n return this.getComponentValue(componentName) as boolean;\n }\n return componentValue !== undefined;\n } else if (component.category === \"hardware\") {\n return componentValue === this.config.booleanValues.true;\n }\n return undefined;\n }\n\n public getComponentValue<T extends MyComponentNames = MyComponentNames>(\n componentName: T,\n ): MyComponent<T>[\"value\"] | undefined;\n public getComponentValue(\n componentName: string,\n ): MyComponent<any>[\"value\"] | undefined;\n public getComponentValue(\n componentName: string,\n ): MyComponent<any>[\"value\"] | undefined {\n return this.getComponent(componentName)?.value;\n }\n\n public getComponent<T extends MyComponentNames = MyComponentNames>(\n componentName: T,\n ): MyComponent<T> | undefined;\n public getComponent(componentName: string): MyComponent<any> | undefined;\n public getComponent(componentName: string): MyComponent<any> | undefined {\n if (this.componentList[componentName]?.value != undefined)\n return this.componentList[componentName];\n\n const component: ModuleConfig.Component<any> = this.componentList[componentName]\n ?.component;\n component?.tabs.forEach((tab) => {\n if (component) {\n if (component.category === \"software\") {\n this.componentList[\n componentName\n ].value = this.getSoftwareComponentValue(tab, component);\n } else if (component.category === \"hardware\") {\n const setting:\n | Setting\n | undefined = AutoModuleHelper.getSettingFromComponent(\n this.model,\n component,\n );\n if (component.type === \"boolean\") {\n this.componentList[\n componentName\n ].value = this.getHardwareComponentBooleanValue(\n tab,\n component,\n setting,\n );\n } else {\n this.componentList[\n componentName\n ].value = this.getHardwareComponentValue(tab, component, setting);\n }\n } else if (component.category === \"import\") {\n this.componentList[\n componentName\n ].value = this.getDependencyComponentValue(component);\n }\n this.componentList[componentName].component.actions = this.getActions(\n component,\n );\n }\n });\n\n return this.componentList[componentName];\n }\n\n private getActions = (\n component: ModuleConfig.Component<MyComponentNames>,\n ): ModuleConfig.AutoAction | undefined => {\n return (\n this.model.getDerivedFunctions().getActions?.(component.name) ??\n component.actions\n );\n };\n\n public getDefaultComponentAction = (\n componentName: MyComponentNames,\n ): ModuleConfig.AutoAction => {\n const component = this.getComponent(componentName)?.component;\n return {\n type: \"[FORM] SUBMIT\",\n payload: {\n tabId: \"main\",\n path: `${component?.group}.${component?.name}`,\n value: \"%v\",\n },\n };\n };\n\n private getSoftwareComponentValue = (\n tab: string,\n component: ModuleConfig.SoftwareComponent<MyComponentNames>,\n ): any => {\n const overriddenValue = this.model.getDerivedFunction(component.name);\n if (overriddenValue != undefined) {\n return overriddenValue;\n }\n if (this.model.isControlledByInterface(component.name)) {\n const processedArg = this.model\n .getExportInterfaces()\n .getProcessedArgValue(component.name);\n if (processedArg != undefined) {\n return processedArg.value;\n }\n }\n return (\n this.state?.[tab]?.[component.group]?.[component.name] ??\n AutoModuleHelper.getDefaultValue(\n this.model.getDerivedFunctions().overrideDefaultValues,\n component,\n )\n );\n };\n\n public getHardwareComponentValue = (\n tab: string,\n component: ModuleConfig.HardwareComponent<MyComponentNames>,\n setting: Setting | undefined,\n ): string | undefined => {\n if (!this.hardware) return undefined;\n\n const overriddenValue = this.model.getDerivedFunction(component.name);\n if (overriddenValue != undefined) {\n return overriddenValue;\n }\n\n if (this.model.isControlledByInterface(component.name)) {\n const processedArg = this.model\n .getExportInterfaces()\n .getProcessedArgValue(component.name);\n if (processedArg != undefined) {\n return processedArg.value;\n }\n }\n const overriddenCompValue = AutoModuleHelper.getOverrideDefaultValue(\n component,\n this.model,\n );\n\n let value: any; // value based on priority\n if (this.state?.[tab]?.[component.group]?.[component.name] != null) {\n value = this.state[tab][component.group][component.name];\n } else if (overriddenCompValue !== undefined) {\n value = overriddenCompValue;\n } else {\n value =\n setting !== undefined\n ? component.overrideDefaultValue\n ? component.overrideDefaultValue\n : this.getDefaultValue(component.displayOptionSetting, setting)\n : component.overrideDefaultValue ?? undefined;\n }\n\n //if filtered mode -> get options\n if (value != undefined && component.mode?.operation === \"filterOptions\") {\n const options = AutoModuleHelper.getSettingOptionsIfPresent(\n component,\n setting,\n this.model.getComponent(component.mode?.masterComponent)?.value,\n );\n if (options.indexOf(value) == -1) {\n value = options[0];\n }\n }\n return value;\n };\n\n public getHardwareComponentBooleanValue = (\n tab: string,\n component: ModuleConfig.HardwareComponent<MyComponentNames>,\n setting: Setting | undefined,\n ): string | undefined => {\n if (!this.hardware) return undefined;\n\n const overriddenValue = this.model.getDerivedFunction(component.name);\n if (overriddenValue != undefined) {\n return overriddenValue;\n }\n\n if (this.model.isControlledByInterface(component.name)) {\n const processedArg = this.model\n .getExportInterfaces()\n .getProcessedArgValue(component.name);\n if (processedArg != undefined) {\n return processedArg.value;\n }\n }\n\n const overriddenCompValue = AutoModuleHelper.getOverrideDefaultValue(\n component,\n this.model,\n );\n\n return this.state?.[tab]?.[component.group]?.[component.name] != null\n ? this.state[tab][component.group][component.name]\n ? this.config.booleanValues.true\n : this.config.booleanValues.false\n : overriddenCompValue !== undefined\n ? overriddenCompValue\n : setting !== undefined\n ? component.overrideDefaultValue\n ? component.overrideDefaultValue\n : this.getDefaultValue(component.displayOptionSetting, setting)\n : undefined;\n };\n\n public getDependencyComponentValue = (\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ): string | undefined => {\n const dependencySelector: AutoModuleHelper.DependencySelector = new AutoModuleHelper.DependencySelector(\n this.model,\n component,\n );\n const imp = this.model.getImports()[component.importId];\n if (imp?.handle) {\n return dependencySelector.createOptionLabel(imp.handle, imp.payload);\n }\n return \"None\";\n };\n\n private getDefaultValue = (\n optionType: string | undefined,\n setting: Setting,\n ): string | undefined => {\n if (optionType == undefined) return setting.defaultValue;\n if (setting.defaultValue) {\n return getOptionByName(setting.defaultValue, setting)?.[optionType];\n }\n return undefined;\n };\n}\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport * as Creator from \"@microchip/scf-common/lib/Creator\";\nimport { ModuleConfig } from \"../types/AutoModuleTypes\";\nimport { isAssigned } from \"@microchip/scf-common/lib/Processor\";\nimport { getConfigData } from \"./getConfigData\";\nimport { map } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { Peripheral } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { getFriendlyInterfaceId } from \"./AutoModuleHelpers\";\n\nexport const createPrototypeImport = (\n interfaceName: string,\n config?: ModuleConfig,\n): Creator.Interface | undefined => {\n config = getConfigData(undefined, config);\n return config?.imports?.[interfaceName]?.import;\n};\n\nexport const isFullyAssigned = <T extends Processor.Imports = Processor.Imports>(\n imports: T,\n config?: ModuleConfig,\n): boolean => {\n config = getConfigData(undefined, config);\n\n //get peripheral interfaces.\n const interfaces = getHardwareInterfaces(config?.peripherals ?? []);\n\n for (let i = 0; i < interfaces.length; i++) {\n const imp = imports[interfaces[i]];\n if (!imp || !isAssigned(imp)) {\n return false;\n }\n }\n return true;\n};\n\n//Assumes hardware import keys are the same as the interface IDs\nconst getHardwareInterfaces = (peripherals: Peripheral[]): string[] => {\n const interfaces: string[] = map(peripherals, (peripheral) => {\n return getFriendlyInterfaceId(peripheral.interfaceId.name) ?? \"\";\n });\n return interfaces;\n};\n","/* eslint @typescript-eslint/no-var-requires: \"off\" */\nimport { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport * as Device from \"@microchip/scf-device\";\nimport { find, filter, map } from \"@microchip/scf-device/lib/util/Arrays\";\nimport CalculateRegisterValue from \"@microchip/scf-device/lib/CalculateRegisterValue\";\nimport { Setting } from \"@microchip/scf-device\";\nimport { getOptionByAlias, getOptionByName } from \"@microchip/scf-device/lib/Setting\";\nimport { getConfigData } from \"./getConfigData\";\nimport { getKeys } from \"../Utils\";\nimport { MyComponentNames, MyPeripheral, Register } from \"../types\";\nimport {\n AppModel,\n ModuleConfig as MyModuleConfig,\n MyRegisterValues,\n} from \"../types/AutoModuleTypes\";\nimport {\n RegisterValue,\n SettingValue,\n} from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { SoftwareComboBoxComponent } from \"@microchip/scf-automodule-interface/lib/src/SoftwareComponents\";\nimport { Import, Option } from \"@microchip/scf-common/lib/Processor\";\nimport { Handle } from \"@microchip/scf-common\";\n\nexport const castComponent = (\n component: ModuleConfig.Component<MyComponentNames>,\n): ModuleConfig.Component<MyComponentNames> => {\n switch (component.category) {\n case \"software\":\n return component;\n case \"import\":\n return component;\n case \"hardware\":\n return component;\n default:\n throw Error(\"Unsupported Component Type\");\n }\n};\n\nexport const getDefaultValue = (\n overrideDefaultValues: ((componentName: MyComponentNames) => any) | undefined,\n component: ModuleConfig.SoftwareComponent<MyComponentNames>,\n): ModuleConfig.SoftwareComponent[\"defaultValue\"] => {\n return (\n overrideDefaultValues?.(component.name) ??\n (component.type === \"ComboBox\"\n ? component.defaultValue.value\n : component.defaultValue)\n );\n};\n\nexport const getComboOptions = (\n overrideOptions: ((componentName: MyComponentNames) => string[]) | undefined,\n component: SoftwareComboBoxComponent<MyComponentNames>,\n): any[] => {\n return overrideOptions?.(component.name) ?? component?.defaultValue?.[\"options\"];\n};\n\nexport const hasConfigBits = (interfaceName: string): boolean => {\n return getFriendlyInterfaceId(interfaceName)?.indexOf(\"configuration_bits\") != -1;\n};\n\nexport const getRegisterValues = (\n model: AppModel,\n interfaceName?: string,\n config?: MyModuleConfig,\n): MyRegisterValues => {\n const registers: MyRegisterValues = {} as MyRegisterValues;\n config = getConfigData(model, config);\n interfaceName = getFriendlyInterfaceId(interfaceName);\n\n config?.peripherals?.forEach((peripheral) => {\n const peripheralName = getFriendlyInterfaceId(peripheral.interfaceId.name) ?? \"\";\n if (hasConfigBits(peripheralName)) return;\n if (\n (interfaceName != undefined && peripheralName !== interfaceName) ||\n !peripheral.registers\n )\n return;\n getKeys(peripheral.registers ?? {})?.forEach((regName) => {\n let registerValue: RegisterValue<string>;\n const reg = model.getHardware(peripheralName)?.getPeripheral().registers?.[\n regName\n ];\n if (reg) {\n registerValue = {\n comment: \"\",\n value: 0,\n valueAsHex: \"0x00\",\n name: reg?.name,\n alias: reg?.alias ?? reg?.name,\n settings: {},\n };\n } else {\n return;\n }\n\n const registerVal = CalculateRegisterValue.for(reg as Device.Register);\n const comments: string[] = [];\n peripheral.registers?.[regName].forEach((set) => {\n const setting: Device.Setting | undefined = reg.settings?.[set.setting];\n if (setting) {\n if (setting.type !== \"R\") {\n //Add Comments\n comments.push(\n `${set.setting} ${model.getComponentValue(set.name)}; `,\n );\n }\n if (registerValue?.settings) {\n registerValue.settings[setting.alias] = getSettingBits(\n reg,\n setting,\n model.getComponent(set.name)?.value as string,\n config?.deviceType ?? \"PIC\",\n );\n }\n switch (set.type) {\n case \"ComboBox\":\n case \"boolean\":\n registerVal.withNumberValue(\n setting,\n getOptionValueByName(\n setting,\n model.getComponent(set.name)?.value as string,\n ) ?? 0,\n );\n break;\n case \"number\":\n registerVal.withNumberValue(\n setting,\n model.getComponentValue(set.name as string) as number,\n );\n break;\n case \"register\":\n case \"string\":\n registerVal.withNumberValue(\n setting,\n Number(model.getComponentValue(set.name)),\n );\n break;\n default:\n break;\n }\n }\n });\n if (reg.settings) {\n registerValue.value = registerVal.asNumber();\n } else {\n registerValue.value = Number(\n model.getComponentValue(\n peripheral.registers?.[regName]?.[0]?.name ?? \"\",\n ) ?? 0,\n );\n comments.push(`${registerValue.name} ${registerValue.value}; `);\n }\n registerValue.valueAsHex =\n \"0x\" + registerValue.value.toString(16).toUpperCase();\n registerValue.comment = sortComments(comments, reg);\n\n registers[reg?.alias ?? reg.name] = registerValue;\n });\n });\n\n return registers;\n};\n\nconst sortComments = (comments: string[], register: Register): string => {\n comments.sort((a, b): number => {\n const settingA = register.settings?.[a.split[\" \"]?.[0]];\n const settingB = register.settings?.[b.split(\" \")?.[0]];\n return Number(settingB?.mask) - Number(settingA?.mask);\n });\n\n return comments.join(\"\");\n};\n\nexport const getSettingBits = (\n register: Register,\n setting: Device.Setting,\n value: string,\n deviceType: string,\n): SettingValue => {\n const setValNumber = Number(getOptionByAlias(value, setting)?.value ?? 0);\n const settingValue: SettingValue = {\n alias: setting.alias,\n name: setting.name,\n value: setValNumber ?? 0,\n valueAsHex: \"0x\" + setValNumber.toString(16).toUpperCase(),\n valueAsDescription: value,\n bitName:\n deviceType === \"PIC\"\n ? `${register.name}bits.${setting.name}`\n : `${register.name}.${setting.name}`,\n };\n return settingValue;\n};\n\nconst getRegisterFromComponent = (\n hardware: MyPeripheral | undefined,\n component: ModuleConfig.HardwareComponent,\n): Register | undefined => {\n const registerName = component.name\n .replace(component.setting.toLowerCase(), \"\")\n ?.toUpperCase();\n const register = hardware?.registers?.[registerName];\n\n if (register) {\n return register;\n } else {\n const regName = component.name\n .replace(component.setting.toLowerCase(), \"\")\n ?.toUpperCase();\n let registers: string[] | undefined = getKeys(hardware?.registers ?? {});\n for (let reg of registers ?? []) {\n const modifiedRegName = reg.replace(/\\_/g, \"\");\n if (regName === modifiedRegName) {\n return hardware?.registers?.[reg];\n }\n }\n }\n};\n\nexport const getSettingFromComponent = (\n model: AppModel,\n component: ModuleConfig.HardwareComponent,\n config?: MyModuleConfig,\n): Device.Setting | undefined => {\n config = getConfigData(model, config);\n let setting: Device.Setting | undefined;\n\n if (model) {\n config?.peripherals?.forEach((peripheral) => {\n if (setting) return;\n const peripheralName = getFriendlyInterfaceId(peripheral.interfaceId.name);\n const hardware = model.getHardware(peripheralName, config)?.getPeripheral();\n const register = getRegisterFromComponent(hardware, component);\n if (register && !register.settings) {\n //No settings for this particular register. Create one\n setting = {\n alias: register.alias ?? register.name,\n name: register.name,\n defaultValue: register.defaultValue,\n type: register.type,\n description: register.desc,\n porDefault: register.defaultValue,\n };\n } else {\n setting = register?.settings?.[component.setting];\n }\n });\n }\n\n return setting;\n};\n\nexport const getOptionValueByName = (\n setting: Device.Setting,\n optionName: string,\n): number | undefined => {\n if (!setting) return undefined;\n\n let optionValue: string | undefined = setting.porDefault;\n if (setting.options) {\n setting.options.forEach((option) => {\n if (option.name === optionName || option.description === optionName) {\n optionValue = option.value;\n }\n });\n }\n return Number(optionValue);\n};\n\nexport const getSettingDefaultIfPresent = (\n component: ModuleConfig.HardwareComponent,\n setting: Setting | undefined,\n overrideDefaultValue: any | undefined,\n): string | undefined => {\n let defaultValue: string | undefined;\n if (overrideDefaultValue !== undefined) {\n return overrideDefaultValue;\n }\n if (component.overrideDefaultValue) {\n return component.overrideDefaultValue;\n }\n\n if (setting?.defaultValue) {\n const option = getOptionByName(setting.defaultValue, setting);\n defaultValue =\n option?.[component.displayOptionSetting ?? \"alias\"] ?? setting.defaultValue;\n }\n return defaultValue;\n};\nexport const getOverrideDefaultValue = (\n component: ModuleConfig.HardwareComponent,\n model: AppModel,\n): string | undefined => {\n return model.getDerivedFunctions().overrideDefaultValues?.(component.name);\n};\n\nexport const getSettingOptionsIfPresent = (\n component: ModuleConfig.HardwareComponent,\n setting: Device.Setting | undefined,\n masterComponentValue?: string,\n): string[] => {\n let options = [\"\"];\n\n if (setting) {\n const filteredOptions = component.mode\n ? filterModeOptions(setting.options ?? [], component, masterComponentValue)\n : setting.options;\n options = map(\n filteredOptions ?? [],\n (option) => option[component.displayOptionSetting ?? \"alias\"] ?? option.alias,\n );\n }\n return options;\n};\n\nconst filterModeOptions = (\n options: Device.Option[],\n component: ModuleConfig.Component,\n masterComponentValue?: string,\n): Device.Option[] => {\n if (component.mode?.operation != \"filterOptions\" || masterComponentValue == undefined)\n return options;\n //Determine mode\n const mode: string = find(\n getKeys(component.mode?.optionModes ?? {}) ?? [],\n (mode) => {\n const match = component.mode?.optionModes?.[mode];\n if (match) {\n return (masterComponentValue?.match(match)?.length ?? -1) > 0;\n }\n return false;\n },\n );\n const filteredOptions = filter(options ?? [], (option) => {\n if (option.mode) {\n const match = component.mode?.optionModes?.[mode];\n if (match) {\n return (option.mode.match(match)?.length ?? -1) > 0;\n }\n }\n return true;\n });\n return filteredOptions;\n};\n\nexport const getProcessedHandle = (\n handle: Handle | undefined,\n payload: Import[\"payload\"] | undefined,\n): Handle | undefined => {\n if (handle) {\n handle = {\n ...handle,\n label:\n payload?.moduleName ??\n payload?.name ??\n handle.label ??\n handle.providerId + \" : \" + handle.exportId,\n };\n }\n\n return handle;\n};\n\nexport interface DependencyDropdownOption {\n label: string;\n value?: Option<any, any>;\n}\nexport class DependencySelector {\n private noneSelection: DependencyDropdownOption = { label: \"None\" };\n private model: AppModel;\n private component: ModuleConfig.DependencyComponent<MyComponentNames>;\n\n constructor(\n model: AppModel,\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ) {\n this.model = model;\n this.component = component;\n }\n\n generateDropdownOptions(): DependencyDropdownOption[] {\n const dropdownOptions: DependencyDropdownOption[] = [];\n const thisImport: Import | undefined = this.model.getImports()[\n this.component.importId\n ];\n const options: Option<any, any>[] | undefined = thisImport?.options;\n\n if (this.shouldAllowUnselectDependency(thisImport, options)) {\n dropdownOptions.push(this.noneSelection);\n }\n if (options) {\n for (const option in options) {\n dropdownOptions.push(this.createOptionEntry(options[option]));\n }\n }\n\n return dropdownOptions;\n }\n\n getDropdownOptionNames(): string[] {\n const names: string[] = [];\n this.generateDropdownOptions().forEach((option) => names.push(option.label));\n return names;\n }\n\n private createOptionEntry = (option: Option): DependencyDropdownOption => {\n return {\n label: this.createOptionLabel(option.handle, option.payload),\n value: option,\n };\n };\n\n createOptionLabel = (handle: Handle, payload: Import[\"payload\"]): string => {\n return getProcessedHandle(handle, payload)?.label ?? \"\";\n };\n\n private shouldAllowUnselectDependency(\n thisImport: Import | undefined,\n options: Option<any, any>[] | undefined,\n ): boolean {\n return (\n thisImport != undefined &&\n thisImport.isUnassignable != false &&\n options !== undefined\n );\n }\n}\n\nexport function getModuleDefaultDescription(): string | undefined {\n const packageJson = require(\"../../../package.json\");\n let desc: string | undefined;\n if (packageJson) {\n desc = packageJson.scf?.description;\n } else {\n desc = undefined;\n }\n return desc;\n}\n\nexport const getFriendlyInterfaceId = (\n interfaceName: string | undefined,\n): string | undefined => {\n interfaceName = interfaceName?.replace(/ /g, \"\").replace(/-/g, \"_\");\n\n return interfaceName;\n};\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport * as AutoModuleHelper from \"./AutoModuleHelpers\";\nimport {\n AppModel,\n TemplateSettings,\n ModuleConfig as MyModuleConfig,\n MyComponentValueList,\n} from \"../types/AutoModuleTypes\";\nimport { ConfigValues } from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { Setting } from \"@microchip/scf-device\";\nimport { find } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { getConfigData } from \"./getConfigData\";\nimport { values, getKeys } from \"../Utils\";\nimport { isFullyAssigned } from \"./AutoModuleHardware\";\nimport { getComboOptions } from \"./AutoModuleHelpers\";\nimport { MyComponentNames } from \"../types\";\nimport { ComponentValueTypes } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { ComboBox } from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { SoftwareComboBoxComponent } from \"@microchip/scf-automodule-interface/lib/src/SoftwareComponents\";\n\nexport const getTemplates = (\n model: AppModel | undefined,\n config?: MyModuleConfig,\n): Processor.Template[] => {\n config = getConfigData(model, config);\n\n const templates: Processor.Template[] = [];\n config?.templates?.forEach((template) => {\n const newTemplate: ModuleConfig.AutoTemplate = {\n ...template,\n };\n if (!model) return;\n\n newTemplate.dest =\n model.getDerivedFunctions().templateName?.(newTemplate.src) ??\n newTemplate.dest;\n\n newTemplate.dest = newTemplate.dest.replace(\n \"${sourceFileName}\",\n model.getName().toLowerCase() + \".c\",\n );\n newTemplate.dest = newTemplate.dest.replace(\n \"${headerFileName}\",\n model.getName().toLowerCase() + \".h\",\n );\n\n if (shouldGenerate(newTemplate, model)) {\n templates.push(newTemplate);\n }\n });\n\n return templates;\n};\n\nconst shouldGenerate = (\n template: ModuleConfig.AutoTemplate,\n model: AppModel,\n): boolean => {\n let shouldGenerate = true;\n if (!model) return shouldGenerate;\n if (\n shouldGenerate &&\n template.generateWithHardware == true &&\n !isFullyAssigned(model.getPrototypeModule().imports)\n ) {\n shouldGenerate = false;\n }\n if (\n shouldGenerate &&\n template.isGeneratableProperty &&\n model.getDerivedFunction(template.isGeneratableProperty) != true\n ) {\n shouldGenerate = false;\n }\n return shouldGenerate;\n};\n\nexport const getTemplatePayload = (\n model: AppModel | undefined,\n config?: MyModuleConfig,\n): any => {\n if (!model) return undefined;\n config = getConfigData(model, config);\n const moduleName = model.getName();\n\n let templatePayload = {\n name: {\n uppercase: moduleName.toUpperCase(),\n lowercase: moduleName.toLowerCase(),\n instance: moduleName,\n },\n filename: {\n source: `${moduleName.toLowerCase()}.c`,\n header: `${moduleName.toLowerCase()}.h`,\n },\n };\n\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n values(components)?.forEach((entry) => {\n templatePayload[entry.component.name] = getComponentPayload(\n entry.component,\n model,\n );\n });\n\n templatePayload = {\n ...templatePayload,\n ...getTemplateSettings(model, config),\n };\n\n return templatePayload;\n};\n\nexport const getTemplateSettings = (\n model: AppModel,\n config?: MyModuleConfig,\n): TemplateSettings | undefined => {\n if (!model?.getHardware()) return undefined;\n\n return {\n registers: model.getRegisterValues(undefined, config),\n interrupts: model.getHardware()?.getPeripheral().interrupts,\n properties: model.getHardware()?.getPeripheral().properties,\n };\n};\n\nexport const getConfigBits = (model: AppModel, config?: MyModuleConfig): ConfigValues => {\n config = getConfigData(model, config);\n const configModule: ModuleConfig.Peripheral<MyComponentNames> = find(\n config?.peripherals ?? [],\n (peripheral) => {\n return AutoModuleHelper.hasConfigBits(peripheral.interfaceId.name);\n },\n );\n if (configModule) {\n const interfaceName = AutoModuleHelper.getFriendlyInterfaceId(\n configModule.interfaceId.name,\n );\n let templateConfigBits: ConfigValues = {};\n const registers = model.getHardware(interfaceName)?.getPeripheral().registers;\n getKeys(registers ?? [])?.forEach((configName) => {\n const configBits = configModule.registers?.[configName];\n templateConfigBits = {\n ...templateConfigBits,\n [configName]: {},\n };\n configBits?.forEach((configBit) => {\n const register = registers?.[configName];\n let value: string;\n if (register && !register.settings) {\n //missing settings for register\n value = model.getComponent(configBit.name)?.value ?? \"\";\n } else {\n const setting: Setting | undefined =\n registers?.[configName]?.settings?.[configBit.setting];\n value = find(\n setting?.options ?? [],\n (option) =>\n option.description ===\n model.getComponent(configBit.name)?.value ||\n option.alias === model.getComponent(configBit.name)?.value ||\n option.name === model.getComponent(configBit.name)?.value,\n )?.name;\n }\n\n templateConfigBits[configName][configBit.setting] = {\n name: configBit.setting,\n value: value,\n description: configBit.description,\n valueAsDescription: model.getComponent(configBit.name)\n ?.value as string,\n };\n });\n });\n return templateConfigBits;\n } else {\n return {};\n }\n};\n\nconst getComponentPayload = (\n component: ModuleConfig.Component<MyComponentNames>,\n model: AppModel,\n): ComponentValueTypes | ComboBox => {\n const componentValue = model.getComponentValue(component.name);\n switch (component.type) {\n case \"ComboBox\":\n if (component.category === \"hardware\") {\n const setting:\n | Setting\n | undefined = AutoModuleHelper.getSettingFromComponent(\n model,\n component,\n );\n return {\n value: componentValue,\n options: AutoModuleHelper.getSettingOptionsIfPresent(\n component,\n setting,\n model.getComponentValue(\n component.mode?.masterComponent ?? \"\",\n ) as string,\n ),\n };\n } else if (component.category === \"software\") {\n return {\n value: componentValue,\n options: getComboOptions(\n model.getDerivedFunctions().overrideOptions,\n component as SoftwareComboBoxComponent<MyComponentNames>,\n ),\n };\n }\n break;\n case \"boolean\":\n return model.isComponentValue(component.name);\n case \"number\":\n case \"string\":\n case \"register\":\n default:\n return componentValue;\n }\n};\n","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport * as AutoModuleHelper from \"./AutoModuleHelpers\";\nimport {\n DependencyDropdownOption,\n DependencySelector,\n getModuleDefaultDescription,\n} from \"./AutoModuleHelpers\";\nimport { Setting } from \"@microchip/scf-device/lib/Setting\";\nimport {\n ActionsObject,\n CustomUiPropertiesWrapper,\n Error,\n SimpleFormPayload,\n SimpleFormPayloads,\n TableColumn,\n} from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { CreateRegisterView } from \"@microchip/scf-register-view-helper\";\nimport { isFullyAssigned } from \"./AutoModuleHardware\";\nimport { getConfigData } from \"./getConfigData\";\nimport { getKeys, values } from \"../Utils\";\nimport { Interrupt, Module, Register } from \"@microchip/scf-device\";\nimport {\n AppModel,\n ModuleConfig as MyModuleConfig,\n MyComponentValueList,\n} from \"../types/AutoModuleTypes\";\nimport { MyComponentNames, MyImportNames } from \"../types\";\nimport { ExportArg } from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { TableComponent } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { Handle, InterfaceId } from \"@microchip/scf-common\";\nimport {\n createTableUids,\n getCellValidationInfo,\n getCellStyle,\n calculateColumnWidth,\n getTableActions,\n getTableComponentSchema,\n getTableFormData,\n getTableUiSchema,\n} from \"../tables/tables\";\nimport { ComponentValue } from \"@microchip/scf-automodule-interface/lib/src/types\";\nimport { getAutoSdlHelp } from \"./ContextualHelp\";\nimport * as registerFilter from \"./RegisterFilterMode\";\nimport { DefaultPeripheral } from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { SoftwareStringComponent } from \"@microchip/scf-automodule-interface/lib/src/SoftwareComponents\";\nimport { Meta } from \"@microchip/scf-device/lib/Meta\";\n\nexport const createAutoViewPayloads = (\n model: AppModel,\n config?: MyModuleConfig,\n): SimpleFormPayloads<any> => {\n config = getConfigData(model, config);\n const payloads: SimpleFormPayloads<any> = {\n main: {},\n };\n if (config?.tabs) {\n Object.keys(config.tabs).forEach((tab) => {\n if (tab === \"register\") {\n payloads[tab] = createSimpleFormPayloadRegister();\n } else {\n payloads[tab] = {\n schema: createSchema(tab),\n uiSchema: createUiSchema(tab),\n formData: createFormData(tab),\n scfUiSchema: createScfUiSchema(tab),\n name: config?.tabs[tab],\n table: shouldPopulateView()\n ? model?.getDerivedFunction(\"getTableData\")\n : undefined,\n expandGroupsByDefault: config?.UIGroupCollapse\n ? config.UIGroupCollapse\n : true,\n };\n }\n });\n }\n return payloads;\n\n function createSchema(tab: string): any {\n let schema: any = {};\n if (config) {\n const populateView = shouldPopulateView();\n schema = {\n description:\n model?.getDerivedFunctions()?.getModuleDescription?.() ??\n getModuleDefaultDescription(),\n title: config.moduleName,\n type: \"object\",\n properties: {},\n };\n\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n const schemaBuilder = {\n properties: {},\n };\n values(components ?? {})?.forEach((entry) => {\n const component = entry.component;\n\n if (!populateView && component.category != \"import\") return; //always display imports\n if (component.tabs.indexOf(tab) == -1) return;\n\n if (!schemaBuilder[component.group]) {\n schemaBuilder[component.group] = {\n title:\n model\n .getDerivedFunctions()\n .overrideGroupTitle?.(component.group) ??\n config?.UIGroups[component.group],\n description: model\n .getDerivedFunctions()\n .overrideGroupDescription?.(component.group),\n type: \"object\",\n properties: {},\n };\n }\n schemaBuilder[component.group].properties = {\n ...schemaBuilder[component.group].properties,\n ...getComponentSchema(component, tab),\n };\n });\n\n //Sort groups based on order of UIGroups and remove groups with no components\n getKeys(config.UIGroups ?? {})?.forEach((group) => {\n if ((getKeys(schemaBuilder[group]?.properties ?? {})?.length ?? -1) > 0) {\n schema.properties[group] = schemaBuilder[group];\n }\n });\n }\n return schema;\n }\n\n function createUiSchema(tab: string): any {\n const uiSchema = {};\n if (config) {\n if (config.UIOrder) {\n getKeys(config.UIOrder ?? {})?.forEach((group) => {\n uiSchema[group] = {\n \"ui:order\": config?.UIOrder?.[group],\n };\n });\n }\n //components\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n values(components ?? {})?.forEach((entry) => {\n if (entry.component.tabs?.indexOf(tab) == -1) return;\n if (entry.component.category === \"table\") {\n const table: TableComponent = entry.component;\n const tableCols = table.columns;\n const colNames: string[] = Object.keys(tableCols);\n const columns: TableColumn[] = [];\n const defaultColumnWidth: string = calculateColumnWidth(tableCols);\n colNames.forEach((name) => {\n const isColEditable = !tableCols[name].readonly;\n columns.push({\n dataField: name,\n editable: isColEditable ? undefined : false,\n columnWidth: tableCols[name].columnWidth\n ? tableCols[name].columnWidth + \"%\"\n : defaultColumnWidth,\n width: tableCols[name].width\n ? tableCols[name].width + \"%\"\n : defaultColumnWidth,\n dataSort: tableCols[name].isSortable,\n headerAlign:\n tableCols[name].headerAlign ??\n tableCols[name].dataAlign ??\n \"left\",\n dataAlign:\n tableCols[name].dataAlign ??\n tableCols[name].headerAlign ??\n \"left\",\n tdStyle: getCellStyle(tableCols[name].readonly),\n headerText: tableCols[name]?.[\"columnTip\"],\n });\n });\n uiSchema[table.group] = {\n ...uiSchema[table.group],\n [table.name]: getTableUiSchema(table, columns),\n };\n } else {\n uiSchema[entry.component.group] = {\n ...uiSchema[entry.component.group],\n [entry.component.name]: {\n ...getUiBehavior(entry.component),\n ...getUiSchemaExportArg(entry.component.name),\n },\n };\n }\n });\n }\n return uiSchema;\n }\n\n function createFormData(tab: string): any {\n const formData: any = {};\n if (config) {\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n values(components)?.forEach((entry) => {\n if (!config) return;\n const component = entry.component;\n let value: any = model.getComponentValue(component.name);\n\n if (\n component.type === \"boolean\" &&\n (value === config.booleanValues.true ||\n value === config.booleanValues.false)\n ) {\n value = value === config.booleanValues.true;\n }\n\n if (component.tabs.indexOf(tab) == -1) return;\n\n if (component.category === \"table\") {\n value = getTableFormData(model, component, tab);\n }\n formData[component.group] = {\n ...formData[component.group],\n [component.name]: value,\n };\n });\n }\n return formData;\n }\n\n function createScfUiSchema(tab: string): any {\n const scfUiSchema: CustomUiPropertiesWrapper = {};\n if (config) {\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n values(components)?.forEach((entry) => {\n const component = entry.component;\n\n if (component.tabs.indexOf(tab) == -1) return;\n\n if (!scfUiSchema[component.group]) {\n scfUiSchema[component.group] = {};\n }\n if (!scfUiSchema[component.group][component.name]) {\n scfUiSchema[component.group][component.name] = {};\n }\n\n let actions: ActionsObject | ActionsObject[] | undefined =\n component.category === \"import\"\n ? getDependencySelectorActions(component)\n : getActions(component);\n\n const transformErrors: Error[] | undefined = model.getDerivedFunction(\n \"getCustomUiErrors\",\n component.name,\n );\n const deviceMeta: Meta = model.getImportValue(\"device_meta\");\n const hasSdlSupport: boolean = deviceMeta?.hasSdlSupport ?? false;\n\n if (component.sdlHelp && hasSdlSupport) {\n scfUiSchema[component.group][component.name][\"helpKeyword\"] =\n model.getDerivedFunction(\n \"getHelpUrl\",\n component.name,\n component.sdlHelp.url,\n ) ?? getAutoSdlHelp(model, component.name, component.sdlHelp.url);\n }\n if (component.category === \"table\") {\n const tableState = model?.getState()?.[tab]?.[component.group]?.[\n component.name\n ];\n const uids = createTableUids(component, tab, model, tableState);\n const cellValidationInfo = getCellValidationInfo(component);\n scfUiSchema[component.group][component.name][\"table\"] = {\n canRemoveRows: component.canRemoveRows,\n canInsertRows: component.canInsertRows,\n canAddRows: component.canAddRows,\n canMoveRowDown: component.canMoveRowDown,\n canMoveRowUp: component.canMoveRowUp,\n uids: uids,\n cellValidationInfo: cellValidationInfo,\n };\n actions = getTableActions(component, tab, model, uids);\n }\n if (actions) {\n scfUiSchema[component.group][component.name][\"actions\"] = actions;\n }\n if (transformErrors) {\n scfUiSchema[component.group][component.name][\n \"transformErrors\"\n ] = transformErrors;\n }\n });\n }\n return scfUiSchema;\n }\n function getDependencySelectorActions(\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ): ActionsObject {\n const depSelector: DependencySelector = new DependencySelector(model, component);\n const options: DependencyDropdownOption[] = depSelector.generateDropdownOptions();\n const dependencySelectorActions: ImportAction[] = [];\n options.forEach((dropdownOption) => {\n const option = dropdownOption.value;\n dependencySelectorActions.push({\n type: \"[Import] SET\",\n payload: {\n importId: component.importId,\n handle: option?.handle,\n interfaceId: option?.interfaceId,\n option: dropdownOption.label,\n },\n });\n });\n return JSON.stringify(dependencySelectorActions);\n }\n\n function getActions(component: ModuleConfig.Component): ActionsObject | undefined {\n const actions: ModuleConfig.AutoAction | undefined = model.getDerivedFunction(\n \"getActions\",\n component.name,\n component.actions,\n );\n return JSON.stringify(actions); //TODO: support map\n }\n\n function shouldPopulateView(): boolean {\n if (displayViewOnImportAssigned() === false) return false;\n\n if (\n model.getDerivedFunctions().shouldPopulateViewAtStartup?.() === true ||\n isFullyAssigned(model.getPrototypeModule().imports)\n ) {\n return true;\n }\n return false;\n }\n\n function displayViewOnImportAssigned(): boolean {\n let shouldPopulateView = true;\n if (config?.displayViewOnImportAssigned) {\n config.displayViewOnImportAssigned.forEach((impKey) => {\n if (model.getAssignedImport(impKey as MyImportNames) == undefined) {\n shouldPopulateView = false;\n }\n });\n }\n return shouldPopulateView;\n }\n\n function getComponentSchema(\n component: ModuleConfig.Component<MyComponentNames>,\n tab: string,\n ): any {\n let schema = {};\n\n if (component.tabs.indexOf(tab) == -1) return schema;\n\n //check isVisible - user override\n const isVisible: boolean = model.getDerivedFunction(\"isVisible\", component.name);\n if (isVisible === false) {\n return schema;\n }\n if (\n component.isVisibleProperty &&\n model?.getDerivedFunction(component.isVisibleProperty) == false\n ) {\n return schema;\n }\n //check for modes\n if (isModeActive(\"isVisible\", component) === false) {\n return schema;\n }\n if (component.category === \"software\") {\n //add software component\n schema = getSoftwareComponentSchema(component);\n } else if (component.category === \"hardware\") {\n //add hardware component\n schema = getHardwareComponentSchema(component);\n } else if (component.category === \"import\") {\n schema = getDependencyComponentSchema(component);\n } else if (component[\"category\"] === \"table\") {\n //add table component\n schema = getTableComponentSchema(component, model);\n }\n if (schema == undefined) return schema;\n\n //add validator if present\n if (\n component.validation &&\n model &&\n model.getDerivedFunctions()[component.name + \"Validator\"]\n ) {\n schema = {\n ...schema,\n ...model.getDerivedFunctions()[component.name + \"Validator\"](),\n };\n }\n\n schema = {\n [component.name]: {\n ...schema,\n },\n };\n return schema;\n }\n\n function getSoftwareComponentSchema(\n component: ModuleConfig.SoftwareComponent<MyComponentNames>,\n ): any {\n let schema = {};\n if (component.type === \"ComboBox\") {\n schema = {\n type: \"string\",\n title:\n model.getDerivedFunctions().overrideTitle?.(component.name) ??\n component.description,\n default: AutoModuleHelper.getDefaultValue(\n model.getDerivedFunctions().overrideDefaultValues,\n component,\n ),\n enum: AutoModuleHelper.getComboOptions(\n model.getDerivedFunctions().overrideOptions,\n component,\n ),\n };\n } else if (component.type === \"hex\") {\n schema = {\n type: \"integer\",\n title:\n model.getDerivedFunctions().overrideTitle?.(component.name) ??\n component.description,\n format: \"hex\",\n default: AutoModuleHelper.getDefaultValue(\n model.getDerivedFunctions().overrideDefaultValues,\n component,\n ),\n };\n } else {\n schema = {\n type: component.type,\n title:\n model.getDerivedFunctions().overrideTitle?.(component.name) ??\n component.description,\n };\n if (isUrl(component) && component.urlDescription) {\n schema = {\n ...schema,\n description: component.urlDescription,\n };\n }\n if (isImage(component) && component.imageDescription) {\n schema = {\n ...schema,\n description: component.imageDescription,\n };\n }\n }\n return schema;\n }\n\n function getDependencyComponentSchema(\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ): any {\n let schema = {};\n\n if (component.type === \"ComboBox\") {\n const dependencySelector: AutoModuleHelper.DependencySelector = new AutoModuleHelper.DependencySelector(\n model,\n component,\n );\n if (dependencySelector.getDropdownOptionNames().length <= 0) {\n return schema;\n }\n\n const dropdownOptions = dependencySelector.getDropdownOptionNames();\n const assignedImport = model\n .getImportInterfaces()\n .createProcessedImports(\"views\")?.[component.importId];\n let assignedName = \"None\";\n if (assignedImport?.handle) {\n assignedName = dependencySelector.createOptionLabel(\n assignedImport.handle,\n assignedImport.payload,\n );\n dropdownOptions.push(assignedName);\n }\n schema = {\n type: \"string\",\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n default: assignedName,\n enum: dropdownOptions,\n };\n }\n return schema;\n }\n\n function getHardwareComponentSchema(\n component: ModuleConfig.HardwareComponent<MyComponentNames>,\n ): any {\n let schema = {};\n if (\n model &&\n model.getComponentValue(component.name) !== undefined &&\n component.type !== \"register\"\n ) {\n if (component.type === \"ComboBox\") {\n const setting:\n | Setting\n | undefined = AutoModuleHelper.getSettingFromComponent(\n model,\n component,\n );\n schema = {\n type: \"string\",\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n default: AutoModuleHelper.getSettingDefaultIfPresent(\n component,\n setting,\n model\n .getDerivedFunctions()\n .overrideDefaultValues?.(component.name),\n ),\n enum: AutoModuleHelper.getSettingOptionsIfPresent(\n component,\n setting,\n model.getComponentValue(\n component.mode?.masterComponent ?? \"\",\n ) as string,\n ),\n };\n } else {\n schema = {\n type: component.type,\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n };\n }\n }\n return schema;\n }\n\n function isModeActive(\n mode: ModuleConfig.ModeOperation,\n component: ModuleConfig.Component<MyComponentNames>,\n ): boolean | undefined {\n if (component?.mode?.operation !== mode) return undefined; //No mode selected\n\n const masterComponent = model.getComponent(component.mode.masterComponent);\n if (component.mode?.matchRegEx) {\n const value =\n masterComponent?.value?.toString()?.match(component.mode.matchRegEx)\n ?.length ?? 0;\n return value > 0;\n }\n return undefined;\n }\n\n function getUiSchemaExportArg(name: MyComponentNames): any {\n let uiSchema = {};\n if (model.isControlledByInterface(name)) {\n const expArg:\n | ExportArg\n | undefined = model.getExportInterfaces().getProcessedArgValue(name);\n if (expArg) {\n uiSchema = {\n \"ui:readonly\": true,\n \"ui:help\": \"Controlled by \" + expArg.interface,\n };\n }\n }\n return uiSchema;\n }\n\n function getUiBehavior(component: ModuleConfig.Component<MyComponentNames>): any {\n let uiBehavior = {};\n if (component.uiBehavior) {\n getKeys(component.uiBehavior ?? {})?.forEach((key) => {\n switch (key) {\n case \"readonly\":\n uiBehavior[\"ui:readonly\"] = component.uiBehavior?.[key];\n break;\n default:\n uiBehavior[key] = component.uiBehavior?.[key];\n break;\n }\n });\n }\n if (isUrl(component)) {\n uiBehavior[\"ui:widget\"] = \"url\";\n } else if (isImage(component)) {\n uiBehavior[\"ui:widget\"] = \"image\";\n }\n let overriddenBehavior: any = {};\n if (model) {\n const overriddenValue = model.getDerivedFunction(\n \"getUiBehavior\",\n component.name,\n );\n if (overriddenValue != undefined) {\n overriddenBehavior = {\n ...overriddenBehavior,\n ...overriddenValue,\n };\n if (getKeys(overriddenBehavior ?? {})?.indexOf(\"readonly\") != -1) {\n overriddenBehavior[\"ui:readonly\"] = overriddenBehavior[\"readonly\"];\n delete overriddenBehavior[\"readonly\"];\n }\n }\n const isEnabled =\n model.getDerivedFunction(\"isEnabled\", component.name) ??\n isModeActive(\"isEnabled\", component);\n if (isEnabled != undefined) {\n overriddenBehavior = {\n ...overriddenBehavior,\n [\"ui:readonly\"]: !isEnabled,\n };\n }\n const isVisible = model.getDerivedFunction(\"isVisible\", component.name);\n if (isVisible != undefined) {\n if (!isVisible) {\n overriddenBehavior = {\n ...overriddenBehavior,\n [\"ui:widget\"]: \"hidden\",\n };\n }\n }\n }\n uiBehavior = {\n ...uiBehavior,\n ...overriddenBehavior,\n };\n return uiBehavior;\n }\n\n function createSimpleFormPayloadRegister(): SimpleFormPayload<any> {\n if (!config?.peripherals) return {};\n\n const registerViewPayloads: SimpleFormPayload[] = [];\n\n config.peripherals.forEach((peripheral) => {\n if (AutoModuleHelper.hasConfigBits(peripheral.interfaceId.name)) return;\n let hardwarePeripheral: DefaultPeripheral | undefined = model\n .getHardware(peripheral.interfaceId.name)\n ?.getPeripheral();\n if (!hardwarePeripheral?.registers) return;\n\n const registerValues = model.getRegisterValues(\n peripheral.interfaceId.name,\n config,\n );\n\n const interrupts:\n | Partial<Record<string, Interrupt>>\n | undefined = model.getInterrupts();\n\n hardwarePeripheral = registerFilter.processRegisterModes(\n peripheral,\n hardwarePeripheral,\n model,\n );\n\n //TODO: implement for all peripherals\n const registerView = CreateRegisterView.for(hardwarePeripheral as Module);\n if (registerValues) {\n getKeys(registerValues ?? {})?.forEach((registerName) => {\n const foundRegister: Register = hardwarePeripheral?.registers?.[\n registerName\n ] as Register;\n if (foundRegister) {\n registerView.withRegisterValue(\n foundRegister,\n registerValues[registerName].value,\n );\n }\n });\n }\n for (const interruptsKey in interrupts ?? {}) {\n const interrupt: Interrupt | undefined = interrupts?.[interruptsKey];\n if (interrupt) {\n const interruptComponent:\n | ComponentValue<any>\n | undefined = model.getComponent(interruptsKey.toLowerCase());\n\n const interruptCompVal: string =\n typeof interruptComponent?.value === \"boolean\"\n ? interruptComponent?.value\n ? \"enabled\"\n : \"disabled\"\n : interruptComponent?.value;\n\n registerView\n .withInterruptValue(\n interrupt,\n interruptCompVal ?? interrupt.defaultValue ?? \"disabled\",\n )\n .withInterruptOptions(\n interrupt,\n interruptComponent?.component?.[\"defaultValue\"]?.options ?? [\n \"enabled\",\n \"disabled\",\n ],\n );\n }\n }\n registerViewPayloads.push(registerView.create());\n });\n\n return registerViewPayloads[0];\n }\n\n function isUrl(\n component: ModuleConfig.Component<MyComponentNames>,\n ): component is SoftwareStringComponent<MyComponentNames> {\n return (\n component.category === \"software\" &&\n component.type === \"string\" &&\n component.format === \"url\"\n );\n }\n\n function isImage(\n component: ModuleConfig.Component<MyComponentNames>,\n ): component is SoftwareStringComponent<MyComponentNames> {\n return (\n component.category === \"software\" &&\n component.type === \"string\" &&\n component.format === \"image\"\n );\n }\n};\n\ninterface ImportAction {\n type: \"[Import] SET\";\n payload: {\n importId: string;\n handle: Handle | undefined;\n interfaceId: InterfaceId | undefined;\n option: string;\n };\n}\n","import { Meta } from \"@microchip/scf-device/lib/Meta\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\n/**\n * Returns the valid link for each component of a module\n *\n * @param dataModel - AppModel for current module\n * @param componentName - Current component under the module\n * @param helpUrl - Generic url\n * @returns Valid link to microchip docs\n */\nexport const getAutoSdlHelp = (\n dataModel: AppModel,\n componentName: string,\n helpUrl: string,\n): string => {\n const deviceMeta: Meta = dataModel.getImportValue(\"device_meta\");\n const deviceName = deviceMeta?.deviceName ?? \"\";\n const moduleName = dataModel.getHardware()?.getPeripheral()?.group ?? \"\";\n const dosid = dataModel.getHardware()?.getPeripheral()?.dosid ?? \"\";\n const comp: any = dataModel.getComponent(componentName)?.component ?? \"\";\n const setting = comp?.setting?.toLowerCase() ?? \"\";\n const registerName = componentName.toLowerCase().replace(setting, \"\");\n const registerAlias = registerName?.toUpperCase() ?? \"\";\n const deviceRegister =\n dataModel.getPeripheralDescription()?.registers?.[registerAlias]?.name ?? \"\";\n const register = registerAlias == deviceRegister ? registerAlias : deviceRegister;\n const url = helpUrl\n .replace(\"${deviceName}\", deviceName ?? \"\")\n .replace(\"${registerName}\", register ?? \"\")\n .replace(\"${moduleName}\", moduleName ?? \"\")\n .replace(\"${dosId}\", dosid ?? \"\");\n return url;\n};\n","import { Peripheral } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { DefaultPeripheral } from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { getKeys } from \"../Utils\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\n\nexport const processRegisterModes = (\n peripheral: Peripheral,\n hardwarePeripheral: DefaultPeripheral,\n model: AppModel,\n): DefaultPeripheral => {\n if (!hasModes(peripheral)) {\n return hardwarePeripheral;\n }\n const modifiedHardwarePeripheral = {\n ...hardwarePeripheral,\n registers: {\n ...hardwarePeripheral.registers,\n },\n };\n getKeys(peripheral?.registers ?? {})?.forEach((registerName) => {\n const settings = peripheral?.registers?.[registerName];\n let delFlag = false;\n settings?.forEach((setting) => {\n /* const mode = find(setting.tabs, (mode => {\n return mode === \"registerFilter\"\n })) */ // TODO : Multiple modes support\n if (setting?.mode?.operation === \"registerFilter\") {\n const targetStr = model?.getComponent(setting?.mode?.masterComponent)\n ?.value;\n const matchRegEx = new RegExp(setting?.mode?.matchRegEx ?? \"\");\n if (!matchRegEx.test(targetStr)) {\n const settingObj =\n modifiedHardwarePeripheral?.registers?.[registerName]?.settings?.[\n setting.setting\n ];\n if (settingObj !== undefined) {\n delete modifiedHardwarePeripheral?.registers?.[registerName]\n ?.settings?.[setting.setting];\n } else {\n delete modifiedHardwarePeripheral?.registers?.[registerName];\n }\n delFlag = true;\n }\n }\n });\n if (\n delFlag &&\n getKeys(modifiedHardwarePeripheral?.registers?.[registerName]?.settings ?? [])\n .length <= 0\n ) {\n delete modifiedHardwarePeripheral?.registers?.[registerName]?.settings;\n delete modifiedHardwarePeripheral?.registers?.[registerName];\n }\n });\n return modifiedHardwarePeripheral as DefaultPeripheral;\n};\n\nexport const hasModes = (peripheral: Peripheral): boolean => {\n let flag = false;\n getKeys(peripheral?.registers ?? {})?.forEach((registerName) => {\n const settings = peripheral?.registers?.[registerName];\n for (const setting of settings ?? []) {\n if (setting?.mode !== undefined) {\n flag = true;\n }\n }\n });\n return flag;\n};\n","/* eslint-disable @typescript-eslint/no-var-requires */\nimport { ModuleConfig as MyModuleConfig } from \"../types/AutoModuleTypes\";\nimport { toDictionary } from \"../Utils\";\nimport * as path from \"path\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\nimport { SoftwareComponent } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { MyComponentNames } from \"../types\";\n\nconst configPath = \"../../../src/moduleConfig.json\";\nlet config: MyModuleConfig = require(\"../../../src/moduleConfig.json\");\n\nexport const getConfigData = (\n model?: AppModel,\n newConfig?: MyModuleConfig,\n): MyModuleConfig => {\n if (!config || newConfig) {\n config = ConfigBuilder.for(newConfig)\n .withDynamicConfigData(model)\n .withDynamicComponents(model)\n .build();\n }\n\n return config;\n};\n\nconst getConfigFile = (configPath: string): MyModuleConfig => {\n try {\n return require(configPath);\n } catch {\n throw Error(\"Cannot find moduleConfig.json at: \" + configPath);\n }\n};\n\nclass ConfigBuilder {\n private config: MyModuleConfig;\n\n constructor(config: MyModuleConfig) {\n this.config = config;\n }\n\n public static fromNew = (): ConfigBuilder =>\n ConfigBuilder.fromPath(path.resolve(__dirname, configPath));\n\n public static fromPath = (path: string): ConfigBuilder => {\n if (!config) {\n config = getConfigFile(path);\n }\n return new ConfigBuilder(config);\n };\n\n public static for = (config?: MyModuleConfig): ConfigBuilder => {\n if (!config) return ConfigBuilder.fromNew();\n\n return new ConfigBuilder(config);\n };\n\n public build = (): MyModuleConfig => {\n return this.config;\n };\n\n public withDynamicConfigData = (model?: AppModel): ConfigBuilder => {\n return new ConfigBuilder(\n model?.getDerivedFunction(\"getDynamicConfigData\", this.config) ?? this.config,\n );\n };\n\n public withDynamicComponents = (model?: AppModel): ConfigBuilder => {\n const dynamicComponents = model?.getDerivedFunctions().getDynamicComponents?.();\n if (dynamicComponents) {\n const dynamicComponentMap = toDictionary(\n dynamicComponents,\n (component) => {\n this.config.UIGroups[component.group] =\n this.config.UIGroups[component.group] ?? component.group;\n return component.name;\n },\n (component) => component,\n );\n this.config.softwareData = {\n ...this.config.softwareData,\n ...(dynamicComponentMap as Record<\n string,\n SoftwareComponent<MyComponentNames>\n >),\n };\n }\n return new ConfigBuilder(this.config);\n };\n}\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { find, getKeys } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { InterfaceId } from \"@microchip/scf-common/lib/InterfaceId\";\nimport { getConfigData } from \"../autoModule/getConfigData\";\nimport {\n ExportInterfaces,\n ExportArg,\n} from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { MyComponentNames, MyExportNames, MyExports, MyProcessedExports } from \"../types\";\nimport { AppModel, MyExportInterfaceTypes } from \"../types/AutoModuleTypes\";\nimport { ModuleConfig } from \"../types/AutoModuleTypes\";\n\nexport const createExportInterfaces = (\n exports: MyExports,\n model: AppModel,\n config?: ModuleConfig,\n): MyExportInterfaces => {\n return new MyExportInterfaces(exports, model, config);\n};\n\nexport class MyExportInterfaces\n implements ExportInterfaces<MyExports, MyExportNames, MyComponentNames> {\n private exports: MyExports;\n private model: AppModel;\n private config: ModuleConfig;\n private components: string[];\n\n constructor(exports: MyExports, model: AppModel, config?: ModuleConfig) {\n this.exports = exports;\n this.model = model;\n this.config = getConfigData(model, config);\n this.components = this.createComponentList();\n }\n\n public createProcessedExports = (): MyProcessedExports => {\n let exportPayload: MyProcessedExports = this.exports as MyProcessedExports;\n if (this.config && this.config.exports) {\n getKeys(this.config.exports ?? {})?.forEach((key) => {\n const exp = this.config.exports?.[key];\n exportPayload = {\n ...exportPayload,\n [key]: {\n ...this.config.exports?.[key],\n interfaces: [],\n name:\n this.model.getDerivedFunction(\"exportName\", key) ??\n exportPayload[key]?.name,\n },\n };\n exp?.interfaces.forEach((int) => {\n const processedInterface = this.getInterface(\n key as MyExportNames,\n int.interfaceId,\n );\n if (processedInterface) {\n exportPayload[key].interfaces.push({\n ...processedInterface,\n payload:\n this.model?.getDerivedFunction(\n int.interfaceId.name + \"_payload\",\n ) ?? {},\n payloads:\n this.model?.getDerivedFunction(\n int.interfaceId.name + \"_payloads\",\n ) ?? {},\n });\n }\n });\n });\n }\n return exportPayload;\n };\n\n public getInterface(\n interfaceKey: MyExportNames,\n interfaceId: InterfaceId,\n ): MyExportInterfaceTypes | undefined;\n public getInterface(\n interfaceKey: string,\n interfaceId: InterfaceId,\n ): Processor.Interface | undefined {\n if (!this.exports[interfaceKey]) return undefined;\n\n return find(\n this.exports[interfaceKey].interfaces ?? [],\n (i) => JSON.stringify(i.interfaceId) === JSON.stringify(interfaceId),\n );\n }\n\n public getInterfaceArgs = (\n interfaceKey: MyExportNames,\n interfaceId: InterfaceId,\n ): MyExportInterfaceTypes[\"args\"] | undefined => {\n return this.getInterface(interfaceKey, interfaceId)?.args;\n };\n\n public getInterfaceResults = (\n interfaceKey: MyExportNames,\n interfaceId: InterfaceId,\n ): MyExportInterfaceTypes[\"results\"] | undefined => {\n return this.getInterface(interfaceKey, interfaceId)?.results;\n };\n\n private createComponentList = (): string[] => {\n const componentList: string[] = [];\n const exports = this.config?.exports ?? {};\n getKeys(exports)?.forEach((key) => {\n const exp = exports[key];\n exp.interfaces.forEach((int) => {\n if (int.components) {\n componentList.push(...int.components);\n }\n });\n });\n\n return componentList;\n };\n\n public isControlledByInterface = (componentName: MyComponentNames): boolean => {\n return this.components.indexOf(componentName) != -1;\n };\n\n public getProcessedArgValue = (\n componentName: MyComponentNames,\n ): ExportArg | undefined => {\n let processedArgValue: ExportArg | undefined;\n const interfaceData: ExportArg[] | undefined = this.getInterfaceData();\n if (\n this.model &&\n this.model.getDerivedFunctions().getProcessedArgValue &&\n interfaceData != undefined\n ) {\n processedArgValue = this.model\n .getDerivedFunctions()\n ?.getProcessedArgValue?.(componentName, interfaceData);\n }\n return processedArgValue;\n };\n\n public getInterfaceData = (): ExportArg[] | undefined => {\n let argValues: ExportArg[] | undefined;\n const exports = this.config.exports ?? {};\n getKeys(exports)?.forEach((key: MyExportNames) => {\n const exp = exports[key];\n exp.interfaces.forEach((int) => {\n const args: Record<string, any> | undefined = this.getInterfaceArgs(\n key,\n int.interfaceId,\n );\n if (args) {\n getKeys(args)?.forEach((key) => {\n getKeys(args[key])?.forEach((arg) => {\n if (!argValues) argValues = [];\n argValues.push({\n interface: int.interfaceId.name,\n name: arg,\n value: args[key][arg],\n module: key,\n });\n });\n });\n }\n });\n });\n return argValues;\n };\n}\n\nexport const isInterface = (idA: InterfaceId, idB: InterfaceId): boolean => {\n return JSON.stringify(idA) === JSON.stringify(idB);\n};\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { getConfigData } from \"../autoModule/getConfigData\";\nimport { values, getKeys } from \"../Utils\";\nimport { MyComponentNames, MyImports } from \"../types\";\nimport {\n ImportInterfaces,\n ProcessorStages,\n} from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { AppModel, ModuleConfig } from \"../types/AutoModuleTypes\";\nimport { getProcessedHandle } from \"../autoModule/AutoModuleHelpers\";\nimport { getDefaultInterruptActions } from \"../interrupts/InterruptActions\";\nimport { find } from \"@microchip/scf-device/lib/util/Arrays\";\n\nexport const createImportInterfaces = (\n imports: MyImports,\n model: AppModel,\n config?: ModuleConfig,\n): MyImportInterfaces => {\n return new MyImportInterfaces(imports, model, config);\n};\n\nexport class MyImportInterfaces implements ImportInterfaces<MyImports> {\n private imports: MyImports;\n private model: AppModel;\n private config: ModuleConfig;\n\n constructor(imports: MyImports, model: AppModel, config?: ModuleConfig) {\n this.imports = imports;\n this.model = model;\n this.config = getConfigData(model, config);\n }\n\n public createProcessedImports = (stage: ProcessorStages): MyImports => {\n let processedImports = this.filterImports();\n getKeys(processedImports ?? {})?.forEach((key) => {\n processedImports = {\n ...processedImports,\n [key]: {\n ...processedImports[key],\n args:\n stage === \"arguments\"\n ? this.model?.getDerivedFunction(key + \"_args\")\n : processedImports[key]?.args,\n results:\n stage === \"results\"\n ? this.getResults(processedImports, key)\n : processedImports[key]?.results,\n name:\n this.model.getDerivedFunction(\"importName\", key) ??\n processedImports[key]?.name,\n handle: getProcessedHandle(\n processedImports[key].handle,\n processedImports[key].payload,\n ),\n options:\n this.getProcessedImportOptions(\n key,\n processedImports[key]?.options ?? [],\n ) ?? processedImports[key].options,\n },\n };\n });\n return processedImports;\n };\n\n public filterImports = (): MyImports => {\n const filteredImports: MyImports =\n this.model.getDerivedFunctions().filterImports?.(this.imports) ??\n this.imports;\n\n return filteredImports;\n };\n\n //Populates option labels with a custom module name if provided in export payload\n private getProcessedImportOptions = (\n importKey: string,\n options: Processor.Option[],\n ): Processor.Option[] => {\n const modifiedOptions: Processor.Option[] = [];\n options?.forEach((option, index) => {\n modifiedOptions[index] = {\n ...option,\n handle: {\n ...option.handle,\n label:\n this.model.getDerivedFunction(\n \"importOptionLabel\",\n importKey,\n option,\n ) ?? option.payload?.moduleName,\n },\n };\n });\n return modifiedOptions;\n };\n\n private getResults = (imports: MyImports, key: string): any | undefined => {\n const importResults = this.model?.getDerivedFunction(key + \"_results\");\n if (importResults) return importResults;\n const imp = imports[key];\n if (imp.interfaceId.name === \"initializer-system\") {\n const initResults = {\n initializer: {\n name: this.model.getName() + \"_Initialize\",\n header: this.model?.getDerivedFunction(\"headerFile\") ?? {\n name: this.model.getName().toLowerCase() + \".h\",\n path: \"include/\",\n },\n },\n };\n return initResults;\n } else if (imp.interfaceId.name === \"pin-standard\") {\n return this.model.getPCPHelper?.().getData();\n } else if (imp.interfaceId.name === \"interrupt-standard\") {\n const interrupts: any[] = [];\n let actions = {};\n const isHighPriority =\n this.model?.getImportValue(\"interrupt_standard\")?.isHighPriority ?? {};\n\n values(this.model.getHardware()?.getPeripheral().interrupts ?? {})?.forEach(\n (interrupt) => {\n if (!interrupt) return;\n const filterInterrupt: boolean =\n this.model\n .getDerivedFunctions()\n .filterInterrupts?.(interrupt.name) ?? true;\n\n if (filterInterrupt) {\n const interruptComponentName =\n this.getInterruptComponentName(interrupt.name) ??\n interrupt.name.toLowerCase() ??\n \"\";\n const isEnabled =\n this.model.isComponentValue(interruptComponentName ?? \"\") ??\n false;\n\n interrupts.push({\n //Standard\n name: interrupt.name ?? \"\",\n module:\n this.model.getHardware()?.getName() ??\n this.model.getName() ??\n \"\",\n isEnabled: isEnabled,\n\n //Callback Extension\n isrCallback: this.model\n ?.getDerivedFunctions()\n .isrCallback?.(interrupt.name) ?? {\n name: this.model.getName() + interrupt.handlerName,\n header: this.model\n ?.getDerivedFunctions()\n .headerFile?.() ?? {\n name: this.model.getName().toLowerCase() + \".h\",\n path: \"include/\",\n },\n },\n generateISR: isEnabled,\n\n //Priority Extension\n isHighPriority: isHighPriority[interrupt.name] ?? true,\n });\n\n const isEnableActions = (\n this.model\n .getDerivedFunctions()\n .getInterruptActions?.(interrupt.name, \"isEnabled\") ?? []\n ).concat(\n ...getDefaultInterruptActions(\n this.model,\n interruptComponentName as MyComponentNames | undefined,\n ),\n );\n const isEnableAction = find(\n isEnableActions,\n (action: any) => action[\"validFor\"] !== isEnabled,\n );\n\n actions = {\n ...actions,\n [interrupt.name]: {\n ...actions?.[interrupt.name],\n isEnabled: isEnableAction ? [isEnableAction] : [],\n },\n };\n }\n },\n );\n return {\n interruptList: interrupts,\n interruptActions: actions,\n moduleName: this.model.getName() ?? \"\",\n };\n } else if (imp.interfaceId.name === \"api-prefix-registration\") {\n const apiPrefixResults = {\n apiPrefix:\n this.model?.getDerivedFunctions()?.apiPrefix ??\n this.model?.getComponentValue(\"componentName\"),\n moduleName: this.model?.getName(),\n };\n return apiPrefixResults;\n }\n };\n\n private getInterruptComponentName = (\n interruptName: string,\n ): MyComponentNames | undefined => {\n return this.model.getDerivedFunctions()?.interruptComponentName?.(interruptName);\n };\n}\n","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport {\n InterruptActions,\n InterruptActionsBuilderInterface,\n} from \"@microchip/scf-automodule-interface/lib/src/InterruptTypes\";\nimport { getSettingFromComponent } from \"../autoModule/AutoModuleHelpers\";\nimport { MyComponentNames } from \"../types\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\n\nexport class InterruptActionsBuilder\n implements InterruptActionsBuilderInterface<MyComponentNames> {\n private actions: InterruptActions = [];\n private curComponent: ModuleConfig.Component | undefined;\n private curComponentName: MyComponentNames | undefined;\n private model: AppModel;\n private tableRowId: number | undefined;\n private tableRowCol: string | undefined;\n private tableCellPath: string | undefined;\n\n private constructor(model: AppModel) {\n this.model = model;\n }\n\n public static createActionBuilder = (model: AppModel): InterruptActionsBuilder =>\n new InterruptActionsBuilder(model);\n\n public createActionFor = (\n componentName: MyComponentNames | undefined,\n ): InterruptActionsBuilder => {\n this.actions = this.buildActions();\n\n this.curComponent = componentName\n ? this.model.getComponent(componentName)?.component\n : undefined;\n this.curComponentName = componentName;\n this.tableRowId = undefined;\n this.tableRowCol = undefined;\n this.tableCellPath = undefined;\n\n return this;\n };\n\n addActionIfEnabled = (\n actionValue: boolean | number | string | undefined,\n ): InterruptActionsBuilder => {\n if (!this.curComponentName || !this.curComponent) return this;\n\n if (!this.isActionValueAcceptable(this.curComponent, actionValue)) return this;\n\n let payload: any = {\n tabId: this.curComponent.tabs[0],\n value: actionValue,\n };\n\n if (this.curComponent.category === \"table\") {\n if (!this.tableCellPath) return this;\n\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}.${this.tableCellPath}`,\n rowId: this.tableRowId,\n };\n } else {\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}`,\n };\n }\n\n this.actions.push({\n validFor: true,\n action: {\n type: \"[FORM] SUBMIT\",\n payload: payload,\n },\n });\n\n return this;\n };\n\n addActionIfDisabled = (\n actionValue: boolean | number | string | undefined,\n ): InterruptActionsBuilder => {\n if (!this.curComponentName || !this.curComponent) return this;\n\n if (!this.isActionValueAcceptable(this.curComponent, actionValue)) return this;\n\n let payload: any = {\n tabId: this.curComponent.tabs[0],\n value: actionValue,\n };\n\n if (this.curComponent.category === \"table\") {\n if (!this.tableCellPath) return this;\n\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}.${this.tableCellPath}`,\n rowId: this.tableRowId,\n };\n } else {\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}`,\n };\n }\n\n this.actions.push({\n validFor: false,\n action: {\n type: \"[FORM] SUBMIT\",\n payload: payload,\n },\n });\n\n return this;\n };\n\n setPathToTableCell = (rowIndex: number, colName: string): InterruptActionsBuilder => {\n if (this.curComponent?.category !== \"table\") return this;\n\n this.tableRowId = rowIndex;\n this.tableRowCol = colName;\n this.tableCellPath = `${rowIndex}.${colName}`;\n\n return this;\n };\n\n private isActionValueAcceptable = (\n component: ModuleConfig.Component,\n actionValue: string | number | boolean | undefined,\n ): boolean => {\n if (component.category === \"hardware\") {\n if (component.type === \"ComboBox\") {\n const options = getSettingFromComponent(this.model, component)?.options;\n\n if (\n !options?.some(\n (option) =>\n option[component[\"displayOptionSetting\"] ?? \"alias\"] ===\n actionValue,\n )\n ) {\n return false;\n }\n } else if (component.type === \"boolean\") {\n // if (actionValue !== \"enabled\" && actionValue !== \"disabled\") {\n if (actionValue !== true && actionValue !== false) {\n return false;\n }\n }\n } else if (component.category === \"software\") {\n if (component.type === \"ComboBox\") {\n const options = component[\"options\"];\n\n if (!options?.some((option) => option === actionValue)) {\n return false;\n }\n } else if (component.type === \"boolean\") {\n if (actionValue !== true && actionValue !== false) {\n return false;\n }\n }\n } else if (component.category === \"table\") {\n if (!this.tableRowCol) return false;\n if (component.columns?.[this.tableRowCol]?.type === \"ComboBox\") {\n const options =\n component.columns?.[this.tableRowCol]?.defaultValue?.[\"options\"];\n\n if (!options?.some((option) => option === actionValue)) {\n return false;\n }\n } else if (component.columns?.[this.tableRowCol]?.type === \"boolean\") {\n if (actionValue !== true && actionValue !== false) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n buildActions = (): InterruptActions => {\n return this.actions;\n };\n}\n\nexport function getDefaultInterruptActions(\n model: AppModel,\n componentName: MyComponentNames | undefined,\n): InterruptActions {\n if (!componentName) return [];\n\n return (\n InterruptActionsBuilder.createActionBuilder(model)\n .createActionFor(componentName)\n .addActionIfEnabled(true)\n .addActionIfDisabled(false)\n // .addActionIfEnabled(\"enabled\")\n // .addActionIfDisabled(\"disabled\")\n .buildActions()\n );\n}\n","import { pin_row, intf_data } from \"@microchip/pin-standard\";\nimport {\n PCPHelper as PCPHelperInterface,\n PinCallbacks,\n} from \"@microchip/scf-automodule-interface/lib/src/pins\";\nimport { PCPStateActionBuilder } from \"./PCPStateActionBuilder\";\n\nconst getPinJsonObj = (): any => {\n try {\n return require(\"../../../src/pinsdata.json\");\n } catch (ex) {\n return { rows: [] };\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pinjsonobj = getPinJsonObj();\n\nexport class PCPHelper implements PCPHelperInterface {\n pinCallbacks: PinCallbacks | undefined = undefined;\n\n //TODO: Figure out if this needs to be in the interface\n public static stateActionBuilder(pinRow: pin_row): PCPStateActionBuilder {\n return new PCPStateActionBuilder(pinRow);\n }\n\n public setCallbacks(callbacks: PinCallbacks): void {\n this.pinCallbacks = callbacks;\n }\n\n private getAllFilteredRows = (allRows: pin_row[]): pin_row[] => {\n const validRows: pin_row[] = [];\n allRows.forEach((eachRow) => {\n const userRowData = this.userRowData(eachRow);\n // check the validity of user provided data\n if (userRowData && this.isRowValid(userRowData)) {\n validRows.push(userRowData);\n }\n });\n return validRows;\n };\n\n private isRowValid = (eachRow: pin_row): boolean => {\n if (\n eachRow?.name &&\n eachRow?.module &&\n eachRow?.function &&\n eachRow?.direction &&\n eachRow?.behaviour\n ) {\n return true;\n } else {\n return false;\n }\n };\n\n private userRowData = (eachRow: pin_row): pin_row | undefined => {\n let eachrowret: pin_row | undefined = eachRow;\n if (this.pinCallbacks?.getRowData) {\n eachrowret = this.pinCallbacks.getRowData({ ...eachRow });\n }\n return eachrowret;\n };\n\n private getAllRows = (): pin_row[] => {\n let pinRows: pin_row[] = pinjsonobj?.rows;\n let userdata: any = {};\n if (this.pinCallbacks?.getCompletePinData) {\n userdata = this.pinCallbacks.getCompletePinData();\n if (userdata && userdata?.rows) {\n pinRows = userdata.rows;\n }\n }\n return pinRows;\n };\n\n public getData = (): intf_data => {\n const retData = {\n rows: this.getAllFilteredRows(this.getAllRows()),\n };\n return retData;\n };\n}\n","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport {\n pin_state,\n pin_row,\n pin_attribs_enum,\n actiontype,\n} from \"@microchip/pin-standard\";\nimport { PCPStateActionBuilder as PCPStateActionBuilderInterface } from \"@microchip/scf-automodule-interface/lib/src/pins\";\n\ntype ActionData = {\n pinstate: pin_state;\n validFor: string;\n value: any;\n actiontype?: actiontype;\n};\n\ntype PinAttributes = {\n attribs: pin_attribs_enum[];\n};\n\nexport class PCPStateActionBuilder implements PCPStateActionBuilderInterface {\n component: ModuleConfig.Component;\n rowName: string;\n pinRow: pin_row;\n tabId: string;\n actionDataArr: ActionData[] = [];\n\n constructor(pinRow: pin_row) {\n this.pinRow = pinRow;\n this.tabId = \"main\";\n }\n\n rowWithName(rowName: string): PCPStateActionBuilder {\n this.rowName = rowName;\n return this;\n }\n\n /**\n *\n * @param tabId - default tabId is \"main\", please change this as per your needs.\n * @returns PCPStateActionBuilder\n */\n compWithTabId(tabId: string): PCPStateActionBuilder {\n this.tabId = tabId;\n return this;\n }\n\n addIfLockedSetValue(pinRegEx: string, value: any): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.LOCKED,\n validFor: pinRegEx,\n value: value,\n actiontype: actiontype.SETACTION,\n });\n return this;\n }\n\n addIfLockedProvideAttribs(\n pinRegEx: string,\n attribs: pin_attribs_enum[],\n ): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.LOCKED,\n validFor: pinRegEx,\n value: this.formAttribs(attribs),\n actiontype: actiontype.ATTRIBACTION,\n });\n return this;\n }\n\n addIfUnlockedProvideAttribs(\n pinRegEx: string,\n attribs: pin_attribs_enum[],\n ): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.UNLOCK,\n validFor: pinRegEx,\n value: this.formAttribs(attribs),\n actiontype: actiontype.ATTRIBACTION,\n });\n return this;\n }\n\n formAttribs(attribarray: pin_attribs_enum[]): PinAttributes {\n return {\n attribs: attribarray,\n };\n }\n\n addIfUnLockedSetValue(pinRegEx: string, value: any): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.UNLOCK,\n validFor: pinRegEx,\n value: value,\n actiontype: actiontype.SETACTION,\n });\n return this;\n }\n\n forComponent(component: ModuleConfig.Component): PCPStateActionBuilder {\n this.component = component;\n return this;\n }\n\n build(): any {\n const actionArr: any[] = [];\n\n if (this.pinRow.name === this.rowName) {\n this.actionDataArr.forEach((eachData: ActionData) => {\n actionArr.push({\n validFor: eachData.validFor,\n state: {\n [eachData.pinstate]: {\n type: \"[FORM] SUBMIT\",\n payload: {\n tabId: this.tabId,\n path: this.component.group + \".\" + this.component.name,\n value: eachData.value,\n },\n },\n },\n actiontype: eachData.actiontype ?? \"\",\n });\n });\n }\n\n return actionArr;\n }\n}\n/*\n PCPHelper\n .stateActionBuilder(rowData)\n .rowWithName(\"dacoutx\")\n .forComponent(dacOPEnCompo)\n .addIfLockedSetValue(\"DAC1OUT1\", \"DACOUT1 Enabled and DACOUT2 Disabled\")\n .addIfLockedSetValue(\"DAC1OUT2\", \"DACOUT2 Enabled and DACOUT1 Disabled\")\n .addIfUnLockedSetValue(\".*\", \"DACOUT1 and DACOUT2 are Disabled\")\n .build()\n*/\n","/* eslint-disable no-fallthrough */\n/*\n * @license:\n * © 2019 Microchip Technology Inc. and its subsidiaries.\n *\n * You may use this software and any derivatives exclusively with Microchip products.\n *\n * THIS SOFTWARE IS SUPPLIED BY MICROCHIP \"AS IS\". NO WARRANTIES, WHETHER EXPRESS,\n * IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF\n * NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS\n * INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE\n * IN ANY APPLICATION.\n *\n * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL\n * OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO\n * THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY\n * OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S\n * TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED\n * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.\n *\n * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE TERMS.\n */\nimport * as Types from \"./types\";\nimport * as AutoModuleTypes from \"./types/AutoModuleTypes\";\nimport { getModel } from \"./App/AppModel\";\nimport { getDerivedData as myDerivedData } from \"../../src/DerivedData\";\nimport { getConfigData } from \"./autoModule/getConfigData\";\nimport { createAutoViewPayloads } from \"./autoModule/AutoModuleView\";\nimport { getTemplates } from \"./autoModule/AutoModuleTemplates\";\nimport { ProcessorStages } from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { getModuleDefaultDescription } from \"./autoModule/AutoModuleHelpers\";\n\n/**\n * Processor Stage Refactor\n * Step 1:\n * @param initialModule\n * @param stage\n */\nexport const process = (\n initialModule: AutoModuleTypes.MyModule,\n stage?: ProcessorStages,\n getDerivedData?: (dataModel: AutoModuleTypes.AppModel) => AutoModuleTypes.DerivedData,\n): AutoModuleTypes.MyProcessedModule => {\n // console.log(`Processor Stage: ${stage}`);\n // let time = Date.now();\n\n if (!getDerivedData) getDerivedData = myDerivedData;\n\n const model: AutoModuleTypes.AppModel | undefined = getModel(\n initialModule,\n getDerivedData,\n );\n if (!model) return initialModule as AutoModuleTypes.MyProcessedModule;\n\n let processedOutput: AutoModuleTypes.MyProcessedModule = {\n ...(initialModule as AutoModuleTypes.MyProcessedModule),\n };\n\n switch (stage) {\n case \"arguments\":\n processedOutput = {\n ...processedOutput,\n imports:\n (model\n .getImportInterfaces()\n .createProcessedImports(stage) as Types.MyImports) ??\n initialModule.imports,\n };\n break;\n case \"payloads\":\n processedOutput = {\n ...processedOutput,\n exports:\n (model\n .getExportInterfaces()\n .createProcessedExports() as Types.MyProcessedExports) ??\n initialModule.exports,\n name: model.getName(),\n help:\n model?.getDerivedFunctions()?.overrideModuleLevelHelp?.() ??\n getConfigData(model).help,\n };\n break;\n case \"results\":\n processedOutput = {\n ...processedOutput,\n imports:\n (model\n .getImportInterfaces()\n .createProcessedImports(stage) as Types.MyImports) ??\n initialModule.imports,\n };\n break;\n case \"views\":\n {\n const customTemplateData =\n model?.getDerivedFunctions().templateData?.() ?? {};\n const view = createAutoViewPayloads(model);\n processedOutput = {\n ...processedOutput,\n payload: {\n ...initialModule.payload,\n auto: view,\n customView: model\n ?.getDerivedFunctions()\n ?.getCustomView?.(initialModule),\n },\n templateData: customTemplateData,\n templates: getTemplates(model),\n alerts: model?.getDerivedFunctions().alerts?.(),\n name: model.getActiveName(),\n description:\n model?.getDerivedFunctions()?.getModuleDescription?.() ??\n getModuleDefaultDescription(),\n };\n }\n break;\n default:\n return initialModule as AutoModuleTypes.MyProcessedModule;\n }\n // time = Date.now() - time;\n // console.log(`\\nProcessor Time: ${time}ms\\n`);\n return processedOutput;\n};\n","import { UidMap } from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { RowFormData } from \"./tables\";\n\nexport class UidMapBuilder {\n private uidMap: UidMap = {};\n\n public addDefaultRows(rowData: RowFormData[]): this {\n rowData.forEach((row, rowCount) => {\n this.uidMap[row.uid] = row.rowId ?? rowCount;\n });\n return this;\n }\n public addDynamicRows(tableState: RowFormData[]): this {\n tableState.forEach((row) => {\n const uid: string | undefined = row?.uid;\n if (uid && uid.indexOf(\"dynamicRow_\") > -1) {\n this.incrementUidAndShift(uid, row.rowId);\n }\n });\n return this;\n }\n\n public removeRows(tableState: RowFormData[]): this {\n tableState.forEach((row) => {\n const uid: string | undefined = row?.uid;\n if (uid && row?.dynamicallyRemoved) {\n this.uidMap[uid] = -1;\n }\n });\n return this;\n }\n public sortByValue(): this {\n let count = 0;\n let sortedUids: UidMap[] = [];\n\n this.getUidKeys().forEach((uid) => {\n sortedUids.push({ [uid]: this.uidMap[uid] });\n });\n sortedUids = sortedUids.sort(\n (a, b) => a[Object.keys(a)[0]] - b[Object.keys(b)[0]],\n );\n sortedUids.forEach((uid) => {\n const uidKey = Object.keys(uid)[0];\n if (this.uidMap[uidKey] > -1) {\n this.uidMap[uidKey] = count++;\n }\n });\n return this;\n }\n\n public create(): UidMap {\n return this.uidMap;\n }\n\n private incrementUidAndShift(uid: string, rowId: number): void {\n this.getUidKeys().forEach((uid) => {\n if (this.uidMap[uid] >= rowId) {\n this.uidMap[uid]++;\n }\n });\n this.uidMap[uid] = rowId;\n }\n\n private getUidKeys(): string[] {\n return Object.keys(this.uidMap);\n }\n}\n","import {\n ColumnBasic,\n ColumnComboBox,\n RowData,\n TableComponent,\n} from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport {\n ActionsObject,\n CellValidationInfo,\n TableAction,\n TableColumn,\n TableSchema,\n TableSchemaProperties,\n TableUiSchema,\n UidMap,\n} from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { AppModel, ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport { MyComponentNames } from \"../types\";\nimport { DerivedFunctions } from \"../types/AutoModuleTypes\";\nimport { UidMapBuilder } from \"./UidMapBuilder\";\nimport { find } from \"@microchip/scf-device/lib/util/Arrays\";\n\nexport interface RowFormData {\n [key: string]: any;\n}\nexport interface Cell {\n rowId: number;\n columnName: string;\n value: any;\n}\nexport enum RowPrefix {\n Default = \"defaultRow_\",\n Dynamic = \"dynamicRow_\",\n}\nexport interface Columns {\n [key: string]: ColumnBasic | ColumnComboBox;\n}\n\nexport function overrideTableDefaultsWithChanges(\n rowChanged: RowFormData[],\n initialFormData: RowFormData[],\n uidMap: UidMap,\n): RowFormData[] {\n const value: RowFormData[] = [...initialFormData];\n\n if (Array.isArray(rowChanged)) {\n rowChanged.forEach((changedRow) => {\n const changedUid = changedRow.uid;\n const rowChangeNum = uidMap[changedUid];\n value[rowChangeNum] = { ...value[rowChangeNum], ...changedRow };\n });\n }\n return value;\n}\nexport function isTableInState(tabState: any, component: TableComponent): boolean {\n return (\n tabState && tabState[component.group] && tabState[component.group][component.name]\n );\n}\n\nexport function calculateColumnWidth(columns: Columns | undefined): string {\n return columns ? 100 / Object.keys(columns).length + \"%\" : \"auto\";\n}\n\nexport function getInitialTableFormData(\n table: TableComponent,\n columnNames: string[],\n model: AppModel,\n): RowFormData[] {\n let value: RowFormData[] = [];\n const tableFormData: RowFormData = {};\n columnNames.forEach((columnName) => {\n if (!tableFormData[columnName]) {\n tableFormData[columnName] = getDefaultValue(\n model.getDerivedFunctions().overrideTableDefaultValues,\n table.columns[columnName],\n columnName,\n table.name,\n );\n }\n });\n if (!table?.rowData) {\n value = createInitialRows(table, tableFormData);\n } else {\n let rowId = 0;\n table?.rowData.forEach((row) => {\n const rowDataCols: string[] = Object.keys(row);\n columnNames.forEach((colName) => {\n if (rowDataCols.indexOf(colName) === -1) {\n row = {\n ...row,\n [colName]: tableFormData[colName],\n uid: createRowUid(RowPrefix.Default, rowId),\n };\n }\n });\n\n value.push({\n ...row,\n rowId: rowId++,\n uid: createRowUid(RowPrefix.Default, rowId),\n });\n });\n }\n return value;\n}\nexport function createInitialRows(\n table: TableComponent,\n tableFormData: RowFormData = {},\n): RowData[] {\n const value: RowData[] = [];\n const initialRows = table?.defaultRowNum ?? 1;\n for (let i = 0; i < initialRows; i++) {\n value.push({\n ...tableFormData,\n rowId: i,\n uid: createRowUid(RowPrefix.Default, i),\n });\n }\n return value;\n}\nfunction createDefaultTableAction(\n component,\n row: number,\n column: string,\n tab: string,\n uid: string,\n): ModuleConfig.AutoAction {\n return {\n type: \"[Table] EDIT_CELL\",\n payload: {\n tabId: tab ?? \"main\",\n path: `${component?.group}.${component?.name}`,\n column: column,\n value: \"%v\",\n uid: uid,\n rowId: row,\n },\n };\n}\nexport function overrideCellValue(tableData: RowFormData[], cell: Cell): RowFormData[] {\n const modifiedTableData = [...tableData];\n modifiedTableData[cell.rowId][cell.columnName] = cell.value;\n return modifiedTableData;\n}\nexport function addRowsToTable(\n tableData: RowFormData[],\n columns: Columns,\n newRow: RowFormData,\n numberOfRows: number,\n): RowFormData[] {\n if (numberOfRows <= 0) {\n return tableData;\n }\n const value = addRowToTable(tableData, columns, {\n ...newRow,\n uid: RowPrefix.Dynamic + (numberOfRows - 1),\n });\n return addRowsToTable(value, columns, newRow, numberOfRows - 1);\n}\nexport function addRowToTable(\n tableData: RowFormData[],\n columns: Columns,\n newRow: RowFormData,\n): RowFormData[] {\n const columnNames: string[] = Object.keys(columns);\n const newRowCols: string[] = Object.keys(newRow);\n const newRowId: number = newRow.rowId;\n const defaultColumnWidth: string = calculateColumnWidth(columns);\n let filteredTableTemp: RowFormData[] = [];\n if (tableData.length === 0) {\n filteredTableTemp.push(newRow);\n return filteredTableTemp;\n }\n if (newRowId != null) {\n columnNames.forEach((colName) => {\n if (newRowCols.indexOf(colName) === -1) {\n newRow = {\n ...newRow,\n [colName]:\n columns[colName].defaultValue?.[\"value\"] ??\n columns[colName].defaultValue,\n columnWidth: columns[colName].columnWidth\n ? columns[colName].columnWidth + \"%\"\n : defaultColumnWidth,\n };\n }\n });\n const tableFirstHalf: RowFormData[] = tableData.slice(0, newRowId);\n const tableSecondHalf: RowFormData[] = tableData.slice(newRowId);\n for (let i = 0; i < tableSecondHalf.length; i++) {\n const currentRowId = tableSecondHalf[i].rowId;\n tableSecondHalf[i] = { ...tableSecondHalf[i], rowId: currentRowId + 1 };\n const actions: ModuleConfig.AutoAction = tableSecondHalf[i]?.actions;\n if (actions) {\n tableSecondHalf[i][\"actions\"] = updateActionsRowId(\n actions,\n currentRowId + 1,\n );\n }\n }\n tableFirstHalf.push(newRow);\n filteredTableTemp = [...tableFirstHalf, ...tableSecondHalf];\n return filteredTableTemp;\n }\n return tableData;\n}\n\nexport function removeRowFromTable(\n tableData: RowFormData[],\n rowId: number,\n): RowFormData[] {\n const tableRemoved = tableData.filter((row) => row.rowId !== rowId);\n for (let i = 0; i < tableRemoved.length; i++) {\n tableRemoved[i].rowId = i;\n const actions: ModuleConfig.AutoAction = tableRemoved[i]?.actions;\n if (actions) {\n tableRemoved[i][\"actions\"] = updateActionsRowId(actions, i);\n }\n }\n return tableRemoved;\n}\n\nfunction updateActionsRowId(\n currentActions: ModuleConfig.AutoAction,\n rowId: number,\n): ModuleConfig.AutoAction {\n const modifiedActions = { ...currentActions };\n const columnNames = Object.keys(currentActions);\n columnNames.forEach((columnName) => {\n const payload = modifiedActions[columnName]?.[\"payload\"];\n if (payload) {\n const path = payload[\"path\"].split(\".\");\n path[path.length - 2] = rowId;\n modifiedActions[columnName][\"payload\"][\"rowId\"] = rowId;\n modifiedActions[columnName][\"payload\"][\"path\"] = path.join(\".\");\n }\n });\n return modifiedActions;\n}\n\nexport function getTableFormData(\n model: AppModel,\n table: TableComponent,\n tab: string,\n): any {\n return (\n model.getDerivedFunction(table.name, table, model, tab) ??\n getValueBasedOnState(table, model, tab)\n );\n}\nexport function getValueBasedOnState(\n table: TableComponent,\n model: AppModel,\n tab: string,\n): RowFormData[] {\n const columnNames: string[] = Object.keys(table.columns);\n const modelState = model.getState();\n const tabState = modelState ? modelState[tab] : undefined;\n const initialFormData: RowFormData[] = getInitialTableFormData(\n table,\n columnNames,\n model,\n );\n if (!isTableInState(tabState, table)) {\n return initialFormData;\n } else {\n const rowChanged: RowFormData[] = tabState[table.group][table.name];\n const tableUids: UidMap = createTableUids(table, tab, model, rowChanged);\n return overrideDefaultsAndFilterRows(\n rowChanged,\n initialFormData,\n table.columns,\n tableUids,\n table,\n tab,\n );\n }\n}\n\nexport function overrideDefaultsAndFilterRows(\n rowChanged: RowFormData[],\n initialFormData: RowFormData[],\n columns: Columns,\n tableUids: any,\n component: TableComponent,\n tab: string,\n): RowFormData[] {\n const modifiedForData: RowFormData[] = [...initialFormData];\n\n const keys = Object.keys(tableUids);\n rowChanged = rowChanged.filter((row) => row != null);\n rowChanged.forEach((row) => {\n if (row.uid.indexOf(RowPrefix.Dynamic) > -1) {\n modifiedForData.push(row);\n }\n });\n let filteredModifed: RowFormData[] = [];\n keys.forEach((uid) => {\n modifiedForData.forEach((row) => {\n if (row.uid === uid) {\n filteredModifed[tableUids[uid]] = { ...initialFormData[0], ...row };\n }\n });\n });\n filteredModifed = filteredModifed.filter((row) => row);\n for (let i = 0; i < filteredModifed.length; i++) {\n if (filteredModifed[i].uid.indexOf(RowPrefix.Dynamic) > -1) continue;\n filteredModifed[i].rowId++;\n }\n for (let i = 0; i < modifiedForData.length; i++) {\n Object.keys(columns).forEach((columnName) => {\n modifiedForData[i].actions = updateActionsRowId(\n createDefaultTableAction(component, i, columnName, tab, tableUids),\n i,\n );\n });\n }\n return overrideTableDefaultsWithChanges(rowChanged, filteredModifed, tableUids);\n}\n\nexport function createTableUids(\n component: TableComponent,\n tab: string,\n model: AppModel | undefined,\n tableState: RowFormData[],\n): UidMap {\n const table: TableComponent = component;\n const dynamicTableData: RowData[] = model?.getDerivedFunction(\n component.name,\n component,\n model,\n tab,\n );\n let rowData: RowFormData[] | undefined = table[\"rowData\"];\n if (!dynamicTableData && rowData) {\n for (let i = 0; i < rowData.length; i++) {\n if (!rowData[i].uid) {\n rowData[i].uid = createRowUid(RowPrefix.Default, i);\n }\n rowData[i].rowId =\n find(tableState ?? [], (row) => row.uid === rowData?.[i].uid)?.rowId ??\n rowData[i].rowId;\n }\n } else {\n rowData =\n dynamicTableData ??\n createInitialRows(table).map((row) => {\n return {\n ...(row ?? {}),\n rowId:\n find(tableState ?? [], (r) => r.uid === row?.uid)?.rowId ??\n row.rowId,\n };\n });\n }\n return new UidMapBuilder()\n .addDefaultRows(rowData)\n .addDynamicRows(tableState ?? [])\n .removeRows(tableState ?? [])\n .sortByValue()\n .create();\n}\n\nexport function getCellValidationInfo(\n component: TableComponent,\n): Array<CellValidationInfo | undefined> {\n const table: TableComponent = component;\n const colInfo: Array<CellValidationInfo | undefined> = [];\n const columns = table.columns;\n\n for (const column in columns) {\n const colData: any = table.columns[column];\n let info: CellValidationInfo | undefined;\n if (colData[\"cellValidator\"]) {\n info = {\n type: colData[\"type\"],\n minValue: colData[\"cellValidator\"][\"minValue\"],\n maxValue: colData[\"cellValidator\"][\"maxValue\"],\n errMessage: colData[\"cellValidator\"][\"errorMessage\"],\n errTitle: colData[\"cellValidator\"][\"errorTitle\"],\n cValidation: colData[\"cellValidator\"][\"cValidation\"],\n cValidationErrTitle: colData[\"cellValidator\"][\"cValidationErrorTitle\"],\n cValidationErrMessage:\n colData[\"cellValidator\"][\"cValidationErrorMessage\"],\n };\n }\n colInfo.push(info);\n }\n\n return colInfo;\n}\n\nexport function getTableActions(\n component: TableComponent,\n tab: string,\n model: AppModel | undefined,\n uids: any,\n rowFormData?: RowFormData[],\n): ActionsObject {\n const table: TableComponent = component;\n let dynamicTableData: RowFormData[] | undefined;\n if (!rowFormData) {\n dynamicTableData = model?.getDerivedFunction(\n component.name,\n component,\n model,\n tab,\n );\n }\n\n const rowData =\n rowFormData ?? dynamicTableData ?? table[\"rowData\"] ?? createInitialRows(table);\n const columnNames: string[] = Object.keys(table.columns);\n const tableActions = { table: {} };\n let rowCount = 0;\n const tableState = model?.getState()?.[tab]?.[component.group]?.[component.name];\n\n rowData.forEach((row) => {\n columnNames.forEach((columnName) => {\n if (!tableActions[\"table\"][row.uid]) {\n tableActions[\"table\"][row.uid] = {};\n }\n let uid;\n for (const uidsKey in uids) {\n if (uids[uidsKey] === row.rowId) {\n uid = uidsKey;\n }\n }\n uid = uid ?? createRowUid(RowPrefix.Default, rowCount);\n let defaultAction: ModuleConfig.AutoAction = createDefaultTableAction(\n component,\n rowCount,\n columnName,\n tab,\n uid,\n );\n\n if (tableState) {\n let ind = -1;\n const filtered = tableState.filter(function (row, index) {\n ind = index;\n return row.uid === uid;\n });\n if (filtered.length) {\n defaultAction = createDefaultTableAction(\n component,\n ind,\n columnName,\n tab,\n uid ?? createRowUid(RowPrefix.Default, rowCount),\n );\n }\n }\n if (component.columns[columnName].type == \"ComboBox\") {\n defaultAction[\"payload\"] = {\n ...defaultAction[\"payload\"],\n options: getComboOptions(\n model?.getDerivedFunctions()?.overrideTableOptions,\n table.columns[columnName],\n columnName,\n component.name,\n ),\n };\n }\n const cellAction: ModuleConfig.AutoAction | undefined =\n row.actions?.[columnName] ?? defaultAction;\n\n tableActions[\"table\"][row.uid][columnName] =\n model?.getDerivedFunction(\"getActions\", table.name, cellAction) ??\n cellAction;\n });\n rowCount++;\n });\n const uidKeys = Object.keys(uids);\n uidKeys.forEach((uidKey) => {\n columnNames.forEach((columnName) => {\n if (uids[uidKey] > -1) {\n if (!tableActions[\"table\"][uidKey]) {\n tableActions[\"table\"][uidKey] = {};\n tableActions[\"table\"][uidKey][columnName] = createDefaultTableAction(\n table,\n uids[uidKey],\n columnName,\n tab,\n uidKey,\n );\n } else if (!tableActions[\"table\"][uidKey][columnName]) {\n tableActions[\"table\"][uidKey][columnName] = createDefaultTableAction(\n table,\n uids[uidKey],\n columnName,\n tab,\n uidKey,\n );\n }\n }\n });\n });\n return JSON.stringify(tableActions);\n}\nexport function getTableUiSchema(\n table: TableComponent,\n columns: TableColumn[],\n): TableUiSchema {\n let tableUi: any = {\n tableCols: columns,\n search: table[\"isSearchable\"],\n striped: true,\n bordered: false,\n };\n if (table[\"canRemoveRows\"]) {\n tableUi = {\n ...tableUi,\n rightActions: getTableRightActions(),\n };\n }\n if (table[\"canInsertRows\"]) {\n tableUi = {\n ...tableUi,\n leftActions: getTableLeftActions(),\n };\n }\n if (table.canMoveRowDown) {\n tableUi = {\n ...tableUi,\n leftActions: (tableUi.leftActions ?? []).concat(getTableMoveRowActions()[0]),\n };\n }\n if (table.canMoveRowUp) {\n tableUi = {\n ...tableUi,\n leftActions: (tableUi.leftActions ?? []).concat(getTableMoveRowActions()[1]),\n };\n }\n\n return {\n \"ui:field\": \"table\",\n className: \"col-md-12 individualComponent\",\n table: { ...tableUi },\n };\n}\nexport function getTableComponentSchema(\n component: TableComponent<MyComponentNames>,\n model: AppModel,\n): TableSchema {\n const tableColumns: TableSchemaProperties = {};\n for (const columnsKey in component.columns) {\n let rjsfType;\n if (component.columns[columnsKey].type === \"ComboBox\") {\n const colBox: ColumnComboBox = component.columns[\n columnsKey\n ] as ColumnComboBox;\n rjsfType = \"string\";\n tableColumns[columnsKey] = {\n type: rjsfType,\n title: colBox.title,\n default: getDefaultValue(\n model.getDerivedFunctions().overrideDefaultValues,\n colBox,\n columnsKey,\n component.name,\n ),\n enum: getComboOptions(\n model.getDerivedFunctions().overrideTableOptions,\n colBox,\n columnsKey,\n component.name,\n ),\n };\n } else {\n rjsfType = component?.columns[columnsKey]?.type;\n tableColumns[columnsKey] = {\n type: rjsfType,\n title: component.columns[columnsKey].title,\n default: component.columns[columnsKey].defaultValue,\n };\n }\n }\n return {\n type: \"array\",\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n items: {\n type: \"object\",\n properties: {\n ...tableColumns,\n },\n },\n };\n}\n\nconst getDefaultValue = (\n overrideDefaultValues: DerivedFunctions[\"overrideTableDefaultValues\"],\n component: ColumnComboBox | ColumnBasic,\n componentName: string,\n tableName: string,\n): ModuleConfig.SoftwareComponent[\"defaultValue\"] => {\n return (\n overrideDefaultValues?.(tableName, componentName) ??\n (component.type === \"ComboBox\"\n ? component.defaultValue.value\n : component.defaultValue)\n );\n};\n\nconst getComboOptions = (\n overrideOptions: DerivedFunctions[\"overrideTableOptions\"],\n component: ColumnComboBox | ColumnBasic,\n componentName: string,\n tableName: string,\n): any[] => {\n const dynamicOptions: any[] | undefined = overrideOptions?.(tableName, componentName);\n return dynamicOptions && dynamicOptions.length > 0\n ? dynamicOptions\n : component?.defaultValue?.[\"options\"];\n};\n\nfunction getTableLeftActions(): TableAction[] {\n return [\n {\n dataField: \"insert-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n ];\n}\n\nfunction getTableRightActions(): TableAction[] {\n return [\n {\n dataField: \"delete-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n ];\n}\n\nfunction getTableMoveRowActions(): TableAction[] {\n return [\n {\n dataField: \"row-down-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n {\n dataField: \"row-up-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n ];\n}\n\nexport function getCellStyle(isReadonly: boolean | undefined): CellStyles {\n const tdStyle = {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n };\n if (isReadonly) {\n tdStyle[\"backgroundColor\"] = \"#EEEEEE\";\n }\n return tdStyle;\n}\n\nexport function createRowUid(prefix: RowPrefix, postfix: number): string {\n return prefix + postfix;\n}\n\ninterface CellStyles {\n [styleAttribute: string]: string;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar initializer_system_1 = require(\"./initializer-system\");\nexports.Interface = initializer_system_1.Interface;\nexports.INIT_PRIORITY = initializer_system_1.INIT_PRIORITY;\nexports.sortInitializers = initializer_system_1.sortInitializers;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar InterfaceTypes = __importStar(require(\"@microchip/scf-interface\"));\nvar pkgJson = __importStar(require(\"../package.json\"));\nvar getInterfaceId = function () {\n return {\n name: InterfaceTypes.getInterfaceName(pkgJson),\n version: InterfaceTypes.getInterfaceVersion(pkgJson),\n };\n};\nexports.sortInitializers = function (initializers) {\n var retinitializers = __spreadArrays(initializers);\n retinitializers.sort(prioritySorter);\n return retinitializers;\n};\nvar prioritySorter = function (a, b) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var result = 0;\n var apriority = (_b = (_a = a === null || a === void 0 ? void 0 : a.initializer) === null || _a === void 0 ? void 0 : _a.priority) !== null && _b !== void 0 ? _b : INIT_PRIORITY.DEFAULT;\n var bpriority = (_d = (_c = b === null || b === void 0 ? void 0 : b.initializer) === null || _c === void 0 ? void 0 : _c.priority) !== null && _d !== void 0 ? _d : INIT_PRIORITY.DEFAULT;\n if (apriority < bpriority) {\n result = -1;\n }\n else if (apriority > bpriority) {\n result = 1;\n }\n else {\n //same priority sort via intializer name alphabetically\n result = (_h = (_f = (_e = a === null || a === void 0 ? void 0 : a.initializer) === null || _e === void 0 ? void 0 : _e.name) === null || _f === void 0 ? void 0 : _f.localeCompare((_g = b === null || b === void 0 ? void 0 : b.initializer) === null || _g === void 0 ? void 0 : _g.name)) !== null && _h !== void 0 ? _h : 0;\n }\n return result;\n};\nvar INIT_PRIORITY;\n(function (INIT_PRIORITY) {\n INIT_PRIORITY[INIT_PRIORITY[\"START\"] = 1] = \"START\";\n INIT_PRIORITY[INIT_PRIORITY[\"PRE_PERIPHERAL\"] = 50] = \"PRE_PERIPHERAL\";\n INIT_PRIORITY[INIT_PRIORITY[\"PERIPHERAL\"] = 100] = \"PERIPHERAL\";\n INIT_PRIORITY[INIT_PRIORITY[\"POST_PERIPHERAL\"] = 150] = \"POST_PERIPHERAL\";\n INIT_PRIORITY[INIT_PRIORITY[\"DEFAULT\"] = 200] = \"DEFAULT\";\n INIT_PRIORITY[INIT_PRIORITY[\"PRE_SOFTWARE\"] = 250] = \"PRE_SOFTWARE\";\n INIT_PRIORITY[INIT_PRIORITY[\"SOFTWARE\"] = 300] = \"SOFTWARE\";\n INIT_PRIORITY[INIT_PRIORITY[\"POST_SOFTWARE\"] = 350] = \"POST_SOFTWARE\";\n INIT_PRIORITY[INIT_PRIORITY[\"END\"] = 400] = \"END\";\n})(INIT_PRIORITY = exports.INIT_PRIORITY || (exports.INIT_PRIORITY = {}));\nvar createMock = function () {\n return {\n interfaceId: getInterfaceId(),\n payload: {\n moduleName: \"MyModule\",\n },\n args: {},\n results: {\n requestId: {\n initializer: {\n name: \"mymodule_init\",\n header: {\n name: \"mymodule.h\",\n path: \"include/\",\n },\n },\n registerInit: [\n {\n name: \"OSCCON1\",\n comment: \"//Comments\",\n value: 55,\n valueAsHex: \"0x55\",\n },\n ],\n },\n },\n };\n};\nvar createPrototypeImport = function () {\n return {\n interfaceId: getInterfaceId(),\n };\n};\nvar createPrototypeExport = function () {\n return {\n interfaces: [{ interfaceId: getInterfaceId() }],\n };\n};\nexports.Interface = {\n createPrototypeExport: createPrototypeExport,\n createPrototypeImport: createPrototypeImport,\n getInterfaceId: getInterfaceId,\n createMock: createMock,\n};\n//# sourceMappingURL=initializer-system.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pin_standard_1 = require(\"./pin-standard\");\nexports.pin_standard = pin_standard_1.pin_standard;\nexports.pin_state = pin_standard_1.pin_state;\nexports.direction = pin_standard_1.direction;\nexports.behaviour = pin_standard_1.behaviour;\nexports.data_schema = pin_standard_1.data_schema;\nexports.pin_attribs_enum = pin_standard_1.pin_attribs_enum;\nexports.actiontype = pin_standard_1.actiontype;\nexports.QueryAdapterKey = pin_standard_1.QueryAdapterKey;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pin_standard = function () {\n return {\n interfaceId: {\n name: \"pin-standard\",\n version: \"0.1.0\",\n },\n };\n};\nvar QueryAdapterKey;\n(function (QueryAdapterKey) {\n QueryAdapterKey[\"ALLPINS\"] = \"allpins\";\n QueryAdapterKey[\"PPS\"] = \"pps\";\n QueryAdapterKey[\"PORTMUX\"] = \"portmux\";\n})(QueryAdapterKey = exports.QueryAdapterKey || (exports.QueryAdapterKey = {}));\nvar pin_state;\n(function (pin_state) {\n pin_state[\"EMPTY\"] = \"E\";\n pin_state[\"LOCKED\"] = \"L\";\n pin_state[\"UNLOCK\"] = \"UL\";\n pin_state[\"DiSABLE_LOCK\"] = \"DL\";\n pin_state[\"UNLOCKED_DISABLED\"] = \"DUL\";\n pin_state[\"LOCKED_LINK\"] = \"LL\";\n pin_state[\"UNLOCKED_MUX\"] = \"MUL\";\n pin_state[\"LOCKED_CONFLICT\"] = \"CL\";\n})(pin_state = exports.pin_state || (exports.pin_state = {}));\nvar pin_interrupts_enum;\n(function (pin_interrupts_enum) {\n pin_interrupts_enum[\"INTDIS_BUFFEN\"] = \"INTDIS_BUFFEN\";\n pin_interrupts_enum[\"BOTH_EDGES\"] = \"BOTH_EDGES\";\n pin_interrupts_enum[\"RISING_EDGE\"] = \"RISING_EDGE\";\n pin_interrupts_enum[\"FALLING_EDGE\"] = \"FALLING_EDGE\";\n pin_interrupts_enum[\"NONE\"] = \"NONE\";\n pin_interrupts_enum[\"LOW_LEVEL\"] = \"LOW_LEVEL\";\n})(pin_interrupts_enum = exports.pin_interrupts_enum || (exports.pin_interrupts_enum = {}));\nvar pin_attribs_enum;\n(function (pin_attribs_enum) {\n pin_attribs_enum[\"aliasReEx\"] = \"aliasReEx\";\n pin_attribs_enum[\"cname\"] = \"cname\";\n pin_attribs_enum[\"high\"] = \"high\";\n pin_attribs_enum[\"inv\"] = \"inv\";\n pin_attribs_enum[\"wpu\"] = \"wpu\";\n pin_attribs_enum[\"od\"] = \"od\";\n pin_attribs_enum[\"analog\"] = \"analog\";\n pin_attribs_enum[\"ioc\"] = \"ioc\";\n pin_attribs_enum[\"intcallback\"] = \"intcallback\";\n pin_attribs_enum[\"alias\"] = \"alias\";\n})(pin_attribs_enum = exports.pin_attribs_enum || (exports.pin_attribs_enum = {}));\nvar actiontype;\n(function (actiontype) {\n actiontype[\"SETACTION\"] = \"SETACTION\";\n actiontype[\"ATTRIBACTION\"] = \"ATTRIBACTION\";\n})(actiontype = exports.actiontype || (exports.actiontype = {}));\nvar direction;\n(function (direction) {\n direction[\"output\"] = \"output\";\n direction[\"input\"] = \"input\";\n direction[\"bidirectional\"] = \"bidirectional\";\n})(direction = exports.direction || (exports.direction = {}));\nvar behaviour;\n(function (behaviour) {\n behaviour[\"LOCK_UNLOCK\"] = \"LOCK_UNLOCK\";\n behaviour[\"ALWAYS_LOCKED\"] = \"ALWAYS_LOCKED\";\n behaviour[\"SINGLE_PIN_MUX\"] = \"SINGLE_PIN_MUX\";\n behaviour[\"OPTIONAL_PIN_MUX\"] = \"OPTIONAL_PIN_MUX\";\n behaviour[\"PPS\"] = \"PPS\";\n behaviour[\"PORTMUX\"] = \"PORTMUX\";\n behaviour[\"EXCLUSIVE_LOCK\"] = \"EXCLUSIVE_LOCK\";\n})(behaviour = exports.behaviour || (exports.behaviour = {}));\n//------------------------------------ schema ------------------------------------//\nexports.data_schema = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n $ref: \"#/definitions/intf_data\",\n definitions: {\n intf_data: {\n type: \"object\",\n properties: {\n rows: {\n type: \"array\",\n items: {\n $ref: \"#/definitions/pin_row\",\n },\n },\n },\n required: [\"rows\"],\n additionalProperties: false,\n },\n pin_row: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n module: {\n type: \"string\",\n },\n function: {\n type: \"string\",\n },\n direction: {\n $ref: \"#/definitions/direction\",\n },\n filter: {\n $ref: \"#/definitions/filter\",\n },\n behaviour: {\n $ref: \"#/definitions/behaviour\",\n },\n behaviourMeta: {\n $ref: \"#/definitions/behaviourMeta\",\n },\n attribs: {\n type: \"array\",\n items: {\n $ref: \"#/definitions/pin_attribs\",\n },\n },\n groupsdata: {\n $ref: \"#/definitions/pingroups_data\",\n },\n actions: {},\n },\n required: [\"name\", \"module\", \"function\", \"direction\", \"filter\", \"behaviour\"],\n additionalProperties: false,\n },\n direction: {\n type: \"string\",\n enum: [\"output\", \"input\", \"bidirectional\"],\n },\n filter: {\n type: \"object\",\n properties: {\n module: {\n type: \"string\",\n },\n aliasReEx: {\n type: \"string\",\n },\n },\n required: [\"module\", \"aliasReEx\"],\n additionalProperties: false,\n },\n behaviour: {\n type: \"string\",\n enum: [\n \"LOCK_UNLOCK\",\n \"ALWAYS_LOCKED\",\n \"SINGLE_PIN_MUX\",\n \"OPTIONAL_PIN_MUX\",\n \"PPS\",\n \"PORTMUX\",\n \"EXCLUSIVE_LOCK\",\n ],\n },\n behaviourMeta: {\n type: \"object\",\n properties: {\n lockPinRegEx: {\n type: \"string\",\n },\n },\n required: [\"lockPinRegEx\"],\n additionalProperties: false,\n },\n pin_attribs: {\n type: \"object\",\n properties: {\n aliasReEx: {\n type: \"string\",\n },\n cname: {\n type: \"string\",\n },\n high: {\n type: \"boolean\",\n },\n inv: {\n type: \"boolean\",\n },\n wpu: {\n type: \"boolean\",\n },\n od: {\n type: \"boolean\",\n },\n analog: {\n type: \"boolean\",\n },\n ioc: {\n $ref: \"#/definitions/pin_interrupts_enum\",\n },\n bidirection_out: {\n type: \"boolean\",\n },\n },\n required: [\"aliasReEx\"],\n additionalProperties: false,\n },\n pin_interrupts_enum: {\n type: \"string\",\n enum: [\n \"INTDIS_BUFFEN\",\n \"BOTH_EDGES\",\n \"RISING_EDGE\",\n \"FALLING_EDGE\",\n \"NONE\",\n \"LOW_LEVEL\",\n ],\n },\n pingroups_data: {\n type: \"object\",\n properties: {\n groups: {\n type: \"array\",\n items: {\n $ref: \"#/definitions/pins_group\",\n },\n },\n },\n required: [\"groups\"],\n additionalProperties: false,\n },\n pins_group: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n filter: {\n $ref: \"#/definitions/grpfilter\",\n },\n datapath: {\n type: \"string\",\n },\n },\n required: [\"name\", \"filter\"],\n additionalProperties: false,\n },\n grpfilter: {\n type: \"object\",\n properties: {\n aliasReEx: {\n type: \"string\",\n },\n },\n required: [\"aliasReEx\"],\n additionalProperties: false,\n },\n },\n};\n//# sourceMappingURL=pin-standard.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AlertTypes;\n(function (AlertTypes) {\n AlertTypes[\"Error\"] = \"error\";\n AlertTypes[\"Warning\"] = \"warning\";\n AlertTypes[\"Hint\"] = \"hint\";\n})(AlertTypes = exports.AlertTypes || (exports.AlertTypes = {}));\n/**\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n */\nfunction hasOptions(dep) {\n return dep.options !== undefined;\n}\nexports.hasOptions = hasOptions;\n/**\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n */\nfunction isAssigned(dep) {\n return typeof dep.handle !== \"undefined\";\n}\nexports.isAssigned = isAssigned;\n/**\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n */\nfunction isUnassigned(dep) {\n return typeof dep.handle === \"undefined\";\n}\nexports.isUnassigned = isUnassigned;\n/**\n * Type guard function for SingletonExport\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n * @param resource the export to check on being a singleton\n * @deprecated No longer used. Replaced with dynamic singleton identification\n * at runtime.\n */\nfunction isSingleton(resource) {\n return typeof resource.isSingleton !== \"undefined\" && resource.isSingleton;\n}\nexports.isSingleton = isSingleton;\n/**\n * Returns a copy of `populatedImport` with all options removed which\n * cause `optionFilter` to return false.\n */\nfunction filterOptions(populatedImport, optionFilter) {\n if (populatedImport.options) {\n return __assign({}, populatedImport, { options: populatedImport.options.filter(optionFilter) });\n }\n return populatedImport;\n}\nexports.filterOptions = filterOptions;\n/**\n * Returns a copy of `populatedImport` with the options' handle labels\n * mapped according to `labelFactory`.\n */\nfunction mapOptionLabels(populatedImport, labelFactory) {\n if (populatedImport.options) {\n return __assign({}, populatedImport, { options: populatedImport.options.map(function (option) {\n return __assign({}, option, { handle: __assign({}, option.handle, { label: labelFactory(option) }) });\n }) });\n }\n return populatedImport;\n}\nexports.mapOptionLabels = mapOptionLabels;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Setting_1 = require(\"./Setting\");\nvar Register_1 = require(\"./Register\");\nvar Arrays_1 = require(\"./util/Arrays\");\n/** Builder pattern */\nvar CalculateRegisterValue = /** @class */ (function () {\n function CalculateRegisterValue(register) {\n var _this = this;\n this.modifiedSettings = [];\n /** Assign a numerical value to the given `Setting`. */\n this.withNumberValue = function (setting, value) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign number value to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new NumberSettingValue(setting, value)\n ]);\n return _this;\n };\n /** Assign the given `Option` to the given `Setting`. */\n this.withOption = function (setting, option) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n if (!_this.getOption(setting, option)) {\n throw new Error(\"Option \" + option.name + \" is not present in Setting \" + setting.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new OptionSettingValue(setting, option)\n ]);\n return _this;\n };\n /** Assign the `Option` matching the given alias to the given `Setting`. */\n this.withOptionAlias = function (setting, optionAlias) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option alias to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByAlias(optionAlias, setting);\n if (option === undefined) {\n throw new Error(\"Option Alias: \\\"\" + optionAlias + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given name to the given `Setting`. */\n this.withOptionName = function (setting, optionName) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option name to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByName(optionName, setting);\n if (option === undefined) {\n throw new Error(\"Option Name: \\\"\" + optionName + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given description to the given `Setting`. */\n this.withOptionDescription = function (setting, optionDescription) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option description to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByDescription(optionDescription, setting);\n if (option === undefined) {\n throw new Error(\"Option Description: \\\"\" + optionDescription + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n this.getSetting = function (setting) {\n return Register_1.getSettingByAlias(setting.alias, _this.register);\n };\n this.getOption = function (setting, option) {\n return Setting_1.getOptionByName(option.name, setting);\n };\n this.calculate = function () {\n var registerValue = 0;\n _this.modifiedSettings.forEach(function (modifiedSetting) {\n registerValue = _this.setValue(modifiedSetting, registerValue);\n });\n var unmodifiedSettings = _this.getUnmodifiedSettings();\n unmodifiedSettings.forEach(function (unmodifiedSetting) {\n registerValue = _this.setValue(SettingValue.defaultValue(unmodifiedSetting), registerValue);\n });\n return Number(registerValue);\n };\n this.setValue = function (setting, registerValue) {\n var value = registerValue;\n value &= ~setting.getMask(); // Clear bits\n value |= setting.getShiftedValue(); // Set bits\n return value;\n };\n this.getUnmodifiedSettings = function () {\n var _a;\n var modifiedSettingNames = Arrays_1.map(_this.modifiedSettings, function (setting) { return setting.getName(); });\n return Arrays_1.filter((_a = Arrays_1.values(_this.register.settings)) !== null && _a !== void 0 ? _a : [], function (setting) { return modifiedSettingNames.indexOf(setting.name) < 0; });\n };\n /** Calculate and print the register's value as a hex string. */\n this.asHexString = function () { return CalculateRegisterValue.toHexString(_this.calculate()); };\n /** Calculate and print the register's value as a binary string. */\n this.asBinaryString = function () { return CalculateRegisterValue.toBinaryString(_this.calculate()); };\n /** Calculate and print the register's value as a decimal string. */\n this.asDecimalString = function () { return CalculateRegisterValue.toDecimalString(_this.calculate()); };\n /** Calculate and return the register's value as a number. */\n this.asNumber = function () { return _this.calculate(); };\n this.register = register;\n }\n /** Creates a register value calculation object for the given register. */\n CalculateRegisterValue.for = function (register) {\n return new CalculateRegisterValue(register);\n };\n /** Format the given number as a hex string value. */\n CalculateRegisterValue.toHexString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toHexString() illegal argument exception. Value must not be null.\");\n }\n return \"0x\" + value.toString(16);\n };\n /** Format the given number as a binary string value. */\n CalculateRegisterValue.toBinaryString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toBinaryString() illegal argument exception. Value must not be null.\");\n }\n return \"0b\" + value.toString(2);\n };\n /** Format the given number as a decimal string value. */\n CalculateRegisterValue.toDecimalString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toDecimalString() illegal argument exception. Value must not be null.\");\n }\n return value.toString();\n };\n return CalculateRegisterValue;\n}());\nexports.default = CalculateRegisterValue;\nvar SettingValue = /** @class */ (function () {\n function SettingValue(setting) {\n var _this = this;\n this.getMask = function () { return Number(_this.setting.mask); };\n this.getShift = function () {\n var mask = _this.getMask();\n var shiftIndex = 0;\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n shiftIndex++;\n }\n return shiftIndex;\n };\n this.getShiftedValue = function () { return _this.getValue() << _this.getShift(); };\n this.getName = function () { return _this.setting.name; };\n this.setting = setting;\n }\n SettingValue.defaultValue = function (setting) {\n var value = Number(setting.porDefault);\n return new NumberSettingValue(setting, value);\n };\n return SettingValue;\n}());\nvar NumberSettingValue = /** @class */ (function (_super) {\n __extends(NumberSettingValue, _super);\n function NumberSettingValue(setting, value) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return _this.value; };\n _this.value = value;\n return _this;\n }\n return NumberSettingValue;\n}(SettingValue));\nvar OptionSettingValue = /** @class */ (function (_super) {\n __extends(OptionSettingValue, _super);\n function OptionSettingValue(setting, option) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return Number(_this.option.value); };\n _this.option = option;\n return _this;\n }\n OptionSettingValue.fromDefaultValue = function (setting, value) {\n var foundValueByName = Setting_1.getOptionByName(value, setting);\n if (foundValueByName)\n return new OptionSettingValue(setting, foundValueByName);\n var foundValueByAlias = Setting_1.getOptionByAlias(value, setting);\n if (foundValueByAlias)\n return new OptionSettingValue(setting, foundValueByAlias);\n throw new Error(\"Unable to create default value '\" + value + \"' for setting '\" + setting.name + \"'.\");\n };\n return OptionSettingValue;\n}(SettingValue));\n//# sourceMappingURL=CalculateRegisterValue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSettingByAlias = void 0;\nexports.getSettingByAlias = function (alias, register) {\n return register.settings[alias];\n};\n//# sourceMappingURL=Register.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOptionDescriptions = exports.getOptionNames = exports.getOptionByDescription = exports.getOptionByName = exports.getOptionByAlias = void 0;\nvar Arrays_1 = require(\"./util/Arrays\");\nexports.getOptionByAlias = function (alias, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.alias == alias; });\n};\nexports.getOptionByName = function (name, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name == name; });\n};\nexports.getOptionByDescription = function (description, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description == description; });\n};\nexports.getOptionNames = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name; });\n};\nexports.getOptionDescriptions = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description; });\n};\n//# sourceMappingURL=Setting.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.values = exports.getKeys = exports.find = exports.filter = exports.map = void 0;\nexports.map = function (arr, callback) {\n var result = [];\n arr.forEach(function (value, index) {\n result[index] = callback(value);\n });\n return result;\n};\nexports.filter = function (arr, callback) {\n var result = [];\n arr.forEach(function (value) {\n if (callback(value)) {\n result.push(value);\n }\n });\n return result;\n};\n/**\n * Iterates over elements of the array, returning the first element that the predicate returns truthy for.\n */\nexports.find = function (arr, callback) {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n};\n/** @returns the non-prototype keys of the given object */\nexports.getKeys = function (obj) {\n if (!obj)\n return undefined;\n return Object.getOwnPropertyNames(obj);\n};\nexports.values = function (obj) {\n if (!obj)\n return undefined;\n return exports.getKeys(obj).map(function (key) { return obj[key]; });\n};\n//# sourceMappingURL=Arrays.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildSimpleApi = function (functions) {\n var api = {};\n for (var key in functions) {\n api[key] = buildFunction(functions[key]);\n }\n return api;\n};\nvar buildFunction = function (cFunction) {\n return cFunction.returns + \" \" + cFunction.name + \"(\" + buildArguments(cFunction.arguments) + \")\";\n};\nvar buildArguments = function (args) {\n if (args) {\n return args.map(function (arg) { return arg.type + \" \" + arg.name; }).join(\", \");\n }\n else {\n return \"void\";\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInterfaceName = function (pkgJson) {\n var strReplace = \"@microchip/\";\n var interfaceName;\n if (pkgJson) {\n interfaceName = pkgJson[\"name\"];\n if (interfaceName) {\n interfaceName = interfaceName.replace(strReplace, \"\");\n }\n }\n if (!interfaceName) {\n throw new Error(\"Invalid Interface Name...!\");\n }\n return interfaceName;\n};\nexports.getInterfaceVersion = function (pkgJson) {\n var versionRegex = new RegExp(\"\\\\d+.\\\\d+.\\\\d+\");\n var version;\n if (pkgJson) {\n version = pkgJson[\"version\"];\n }\n if (!version && !versionRegex.test(version)) {\n throw new Error(\"Invalid Interface Version...!\");\n }\n return version;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar c_function_types_1 = require(\"./c-function-types\");\nexports.buildSimpleApi = c_function_types_1.buildSimpleApi;\nvar helpers_1 = require(\"./helpers\");\nexports.getInterfaceName = helpers_1.getInterfaceName;\nexports.getInterfaceVersion = helpers_1.getInterfaceVersion;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateRegisterView = void 0;\nvar CalculateRegisterValue_1 = __importDefault(require(\"@microchip/scf-device/lib/CalculateRegisterValue\"));\nvar Arrays_1 = require(\"@microchip/scf-device/lib/util/Arrays\");\nvar ViewSchemaBuilder_1 = require(\"./ViewSchemaBuilder\");\nvar Model_1 = require(\"./Model\");\nvar throwError = function (message) {\n throw new Error(message);\n};\nvar CreateRegisterView = /** @class */ (function () {\n function CreateRegisterView(module) {\n var _this = this;\n this.registers = [];\n this.interrupts = [];\n /** Create a register view */\n this.create = function () {\n var schemaBuilder = new ViewSchemaBuilder_1.ViewSchemaBuilder()\n .withSchema({\n title: \"Register Settings\",\n type: \"object\",\n })\n .withTabName(\"Register Initialization\")\n .withExpandedDefault(false);\n _this.registers.forEach(function (reg) {\n schemaBuilder.addChildComponent(reg.getRegister().name, _this.createRegisterView(reg));\n });\n schemaBuilder.addChildComponent(\"interrupts\", _this.createInterruptView());\n return schemaBuilder.build();\n };\n /** Assign a numerical value to the given register. */\n this.withRegisterValue = function (register, value) {\n _this.getSafeRegisterViewModel(register).setValue(value);\n return _this;\n };\n /** Assign a string value to the given interrupt. */\n this.withInterruptValue = function (interrupt, value) {\n _this.getSafeInterruptViewModel(interrupt).setValue(value);\n return _this;\n };\n /** Assign the interrupt combobox options. */\n this.withInterruptOptions = function (interrupt, options) {\n _this.getSafeInterruptViewModel(interrupt).setOptions(options);\n return _this;\n };\n /** Make all settings in all registers editable */\n this.withAllEditable = function () {\n _this.registers.forEach(function (register) {\n return _this.withEditableRegister(register.getRegister());\n });\n _this.interrupts.forEach(function (interrupt) {\n _this.withEditableInterrupt(interrupt.getInterrupt());\n });\n return _this;\n };\n /** Make all settings in the given register editable */\n this.withEditableRegister = function (register) {\n _this.getSafeRegisterViewModel(register).setReadonly(false);\n return _this;\n };\n /** Make a given setting in register editable */\n this.withEditableSetting = function (register, setting) {\n _this.getSafeSettingViewModel(register, setting).setReadonly(false);\n return _this;\n };\n /** Make a given interrupt editable */\n this.withEditableInterrupt = function (interrupt) {\n _this.getSafeInterruptViewModel(interrupt).setReadonly(false);\n return _this;\n };\n this.getSafeRegisterViewModel = function (register) { var _a; return (_a = _this.getRegisterViewModel(register !== null && register !== void 0 ? register : throwError(\"Invalid register parameter.\"))) !== null && _a !== void 0 ? _a : throwError(\"Cannot get register view model for '\" + register.name + \"'. Not found in this module.\"); };\n this.getSafeInterruptViewModel = function (interrupt) { var _a; return (_a = _this.getInterruptViewModel(interrupt !== null && interrupt !== void 0 ? interrupt : throwError(\"Invalid interrupt parameter.\"))) !== null && _a !== void 0 ? _a : throwError(\"Cannot get interrupt view model for '\" + interrupt.name + \"'. Not found in this module.\"); };\n this.getSafeSettingViewModel = function (register, setting) { var _a; return (_a = _this.getSafeRegisterViewModel(register).getSettingViewModel(setting !== null && setting !== void 0 ? setting : throwError(\"Invalid setting parameter.\"))) !== null && _a !== void 0 ? _a : throwError(\"Cannot get setting view model for '\" + setting.name + \"'. Not found in this module.\"); };\n this.getRegisterViewModel = function (register) {\n var name = register.name;\n return Arrays_1.find(_this.registers, function (rv) { return rv.getRegister().name === name; });\n };\n this.getInterruptViewModel = function (interrupt) {\n var name = interrupt.name;\n return Arrays_1.find(_this.interrupts, function (rv) { return rv.getInterrupt().name === name; });\n };\n this.createRegisterView = function (register) {\n var registerValue = register.getValue() || 0;\n var schemaBuilder = new ViewSchemaBuilder_1.ViewSchemaBuilder()\n .withSchema({\n type: \"object\",\n title: register.getName() +\n \" : \" +\n CalculateRegisterValue_1.default.toHexString(registerValue),\n description: register.getDescription(),\n properties: {},\n })\n .withUiSchema({})\n .withFormData({});\n register.forEachSetting(function (setting) {\n schemaBuilder.addChildComponent(setting.getName(), _this.createSettingView(setting));\n });\n return schemaBuilder.build();\n };\n this.createSettingView = function (setting) {\n return setting.hasOptions()\n ? _this.createHasOptionsViewSchema(setting)\n : _this.getNoOptionsViewSchema(setting);\n };\n this.createInterruptView = function () {\n var schemaBuilder = new ViewSchemaBuilder_1.ViewSchemaBuilder()\n .withSchema({\n type: \"object\",\n title: \"Interrupts\",\n properties: {},\n })\n .withUiSchema({})\n .withFormData({});\n _this.interrupts.forEach(function (int) {\n schemaBuilder.addChildComponent(int.getInterrupt().name, _this.createInterruptViewSchema(int));\n });\n return schemaBuilder.build();\n };\n this.module = module;\n this.registers = this.createRegisterViewModelForEachRegister(module);\n this.interrupts = this.createInterruptViewModelForEachInterrupt(module);\n }\n CreateRegisterView.prototype.createRegisterViewModelForEachRegister = function (module) {\n var _a;\n var models = [];\n var registers = (_a = module.registers) !== null && _a !== void 0 ? _a : [];\n Object.keys(registers).forEach(function (registerKey) {\n models.push(new Model_1.RegisterViewModel(registers[registerKey]));\n });\n return models;\n };\n CreateRegisterView.prototype.createInterruptViewModelForEachInterrupt = function (module) {\n var _a;\n var models = [];\n var interrupts = (_a = module.interrupts) !== null && _a !== void 0 ? _a : [];\n Object.keys(interrupts).forEach(function (interruptKey) {\n models.push(new Model_1.InterruptViewModel(interrupts[interruptKey]));\n });\n return models;\n };\n CreateRegisterView.prototype.getNoOptionsViewSchema = function (setting) {\n return {\n schema: this.createSettingViewSchema(setting),\n uiSchema: setting.getMaxValue() > 1\n ? { \"ui:readonly\": setting.getIsReadonly() }\n : this.getBinarySettingUiSchema(setting),\n formData: setting.mapToOptionNameIfExists(setting.getValue()),\n };\n };\n CreateRegisterView.prototype.createHasOptionsViewSchema = function (setting) {\n var schemaBuilder = new ViewSchemaBuilder_1.SchemaBuilder(\"string\", setting.getName())\n .withEnum(setting.getOptionNames())\n .withDefault(setting.mapToOptionNameIfExists(setting.getValue()));\n return {\n schema: schemaBuilder.build(),\n uiSchema: { \"ui:readonly\": setting.getIsReadonly() },\n formData: setting.mapToOptionNameIfExists(setting.getValue()),\n };\n };\n CreateRegisterView.prototype.createSettingViewSchema = function (setting) {\n var schema = new ViewSchemaBuilder_1.SchemaBuilder(\"integer\", setting.getName()).withDefault(setting.mapToOptionNameIfExists(setting.getPORDefault()));\n setting.getMaxValue() > 1\n ? schema.withMaximum(setting.getMaxValue()).withMinimum(0)\n : schema.withEnum([0, 1]);\n return schema.build();\n };\n CreateRegisterView.prototype.createInterruptViewSchema = function (interrupt) {\n var schema = new ViewSchemaBuilder_1.SchemaBuilder(\"string\", interrupt.getInterrupt().name)\n .withEnum(interrupt.getOptions())\n .withDefault(interrupt.getValue());\n return {\n schema: schema.build(),\n uiSchema: { \"ui:readonly\": interrupt.getIsReadonly() },\n formData: interrupt.getValue(),\n };\n };\n CreateRegisterView.prototype.getBinarySettingUiSchema = function (setting) {\n return new ViewSchemaBuilder_1.UiSchemaBuilder()\n .withReadonlyValue(setting.getIsReadonly())\n .withWidget(\"radio\")\n .withOptions({ inline: true })\n .build();\n };\n /** Creates Register View Builder for the given module. */\n CreateRegisterView.for = function (moduleDescription) {\n if (!moduleDescription) {\n throwError(\"Creation failed. Invalid module parameter.\");\n }\n if (!moduleDescription.registers && !moduleDescription.interrupts) {\n throwError(\"Creation failed for \" + moduleDescription.name + \". Input module contains no registers or interrupts.\");\n }\n return new CreateRegisterView(moduleDescription);\n };\n return CreateRegisterView;\n}());\nexports.CreateRegisterView = CreateRegisterView;\n//# sourceMappingURL=CreateRegisterView.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SettingViewModel = exports.RegisterViewModel = exports.InterruptViewModel = void 0;\nvar CalculateRegisterValue_1 = __importDefault(require(\"@microchip/scf-device/lib/CalculateRegisterValue\"));\nvar Arrays_1 = require(\"@microchip/scf-device/lib/util/Arrays\");\nvar InterruptViewModel = /** @class */ (function () {\n function InterruptViewModel(interrupt) {\n var _this = this;\n this.isReadOnly = true;\n this.getInterrupt = function () { return _this.interrupt; };\n this.setValue = function (value) {\n _this.value = value;\n };\n this.getValue = function () { return _this.value; };\n this.setOptions = function (options) {\n _this.options = options;\n };\n this.getOptions = function () { return _this.options; };\n this.getIsReadonly = function () { return _this.isReadOnly; };\n this.setReadonly = function (isReadOnly) {\n _this.isReadOnly = isReadOnly;\n };\n if (!interrupt) {\n throw new Error(\"IllegalInputArgument for 'interrupt' in InterruptValue\");\n }\n this.interrupt = interrupt;\n }\n return InterruptViewModel;\n}());\nexports.InterruptViewModel = InterruptViewModel;\nvar RegisterViewModel = /** @class */ (function () {\n function RegisterViewModel(register) {\n var _this = this;\n this.settings = [];\n this.getSettings = function () { return _this.settings; };\n this.getSettingViewModel = function (setting) {\n var name = setting.name;\n return Arrays_1.find(_this.settings, function (rv) { return rv.getSetting().name === name; });\n };\n this.forEachSetting = function (doThis) {\n _this.settings.forEach(doThis);\n };\n this.getRegister = function () { return _this.register; };\n this.getName = function () { return _this.register.name; };\n this.getDescription = function () { return _this.register.desc; };\n this.getValue = function () { return _this.value; };\n this.setValue = function (value) {\n _this.value = value;\n };\n this.setReadonly = function (value) {\n if (value === void 0) { value = true; }\n _this.forEachSetting(function (setting) { return setting.setReadonly(value); });\n };\n this.getDefaultValue = function () {\n return CalculateRegisterValue_1.default.for(_this.register).asNumber();\n };\n this.getValueOrDefault = function () {\n var value = _this.getValue();\n return value !== null && value !== void 0 ? value : _this.getDefaultValue();\n };\n if (!register) {\n throw new Error(\"IllegalInputArgument for 'register' in RegisterValue\");\n }\n this.register = register;\n if (register.settings) {\n this.settings = this.createSettingViewModels(register);\n }\n }\n RegisterViewModel.prototype.createSettingViewModels = function (register) {\n var _this = this;\n var _a;\n var models = [];\n var settings = (_a = register.settings) !== null && _a !== void 0 ? _a : [];\n Object.keys(settings).forEach(function (settingKey) {\n models.push(new SettingViewModel(settings[settingKey], _this.getValueOrDefault));\n });\n return models;\n };\n return RegisterViewModel;\n}());\nexports.RegisterViewModel = RegisterViewModel;\nvar SettingViewModel = /** @class */ (function () {\n function SettingViewModel(setting, getRegisterValue) {\n var _this = this;\n this.isReadonly = true;\n this.setReadonly = function (value) {\n if (value === void 0) { value = true; }\n _this.isReadonly = value;\n };\n this.getIsReadonly = function () { return _this.isReadonly; };\n this.getSetting = function () { return _this.setting; };\n this.getName = function () { return _this.setting.name; };\n this.getDescription = function () { return _this.setting.description; };\n this.getPORDefault = function () { return Number(_this.setting.porDefault); };\n this.getMask = function () { return Number(_this.setting.mask); };\n this.hasOptions = function () {\n return !!_this.setting.options;\n };\n this.getOptionNames = function () {\n return Arrays_1.map(nullSafe(_this.setting.options), function (option) { return option.name; });\n };\n this.mapToOptionNameIfExists = function (value) {\n var option = _this.getOptionForValue(value);\n return option != null ? option.name : value;\n };\n this.getOptionForValue = function (value) {\n return Arrays_1.find(nullSafe(_this.setting.options), function (option) {\n var optionValue = option.value;\n return optionValue != undefined\n ? parseInt(optionValue) === value\n : false;\n });\n };\n this.getValue = function () {\n var value = _this.getRegisterValue();\n value &= _this.getMask();\n return value >> _this.getShift();\n };\n this.getShift = function () {\n var mask = _this.getMask();\n var shiftIndex = 0;\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n shiftIndex++;\n }\n return shiftIndex;\n };\n this.getMaxValue = function () {\n var mask = _this.getMask();\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n }\n return mask;\n };\n if (!setting) {\n throw new Error(\"SettingViewModel: Invalid input argument\");\n }\n this.setting = setting;\n this.getRegisterValue = getRegisterValue;\n }\n return SettingViewModel;\n}());\nexports.SettingViewModel = SettingViewModel;\nvar nullSafe = function (array) {\n return array ? array : [];\n};\n//# sourceMappingURL=Model.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UiSchemaBuilder = exports.SchemaBuilder = exports.ViewSchemaBuilder = void 0;\nvar ViewSchemaBuilder = /** @class */ (function () {\n function ViewSchemaBuilder() {\n this.schema = {};\n this.uiSchema = {};\n this.formData = {};\n this.tabName = \"main\";\n this.expandGroupsByDefault = true;\n }\n ViewSchemaBuilder.prototype.withSchema = function (schema) {\n this.schema = schema;\n return this;\n };\n ViewSchemaBuilder.prototype.withUiSchema = function (uiSchema) {\n this.uiSchema = uiSchema;\n return this;\n };\n ViewSchemaBuilder.prototype.withFormData = function (formData) {\n this.formData = formData;\n return this;\n };\n ViewSchemaBuilder.prototype.withTabName = function (name) {\n this.tabName = name;\n return this;\n };\n ViewSchemaBuilder.prototype.withExpandedDefault = function (expandGroupsByDefault) {\n this.expandGroupsByDefault = expandGroupsByDefault;\n return this;\n };\n ViewSchemaBuilder.prototype.addChildComponent = function (childName, child) {\n var _a, _b, _c;\n this.schema = __assign(__assign({}, this.schema), { properties: __assign(__assign({}, this.schema.properties), (_a = {}, _a[childName] = child.schema, _a)) });\n this.uiSchema = __assign(__assign({}, this.uiSchema), (_b = {}, _b[childName] = child.uiSchema, _b));\n this.formData = __assign(__assign({}, this.formData), (_c = {}, _c[childName] = child.formData, _c));\n };\n ViewSchemaBuilder.prototype.build = function () {\n return {\n schema: this.schema,\n uiSchema: this.uiSchema,\n formData: this.formData,\n name: this.tabName,\n expandGroupsByDefault: this.expandGroupsByDefault,\n };\n };\n return ViewSchemaBuilder;\n}());\nexports.ViewSchemaBuilder = ViewSchemaBuilder;\nvar SchemaBuilder = /** @class */ (function () {\n function SchemaBuilder(type, title) {\n this.title = title;\n this.type = type;\n }\n SchemaBuilder.prototype.withProperties = function (properties) {\n this.properties = properties;\n return this;\n };\n SchemaBuilder.prototype.withDefault = function (defaultValue) {\n this.default = defaultValue;\n return this;\n };\n SchemaBuilder.prototype.withMaximum = function (maximum) {\n this.maximum = maximum;\n return this;\n };\n SchemaBuilder.prototype.withMinimum = function (minimum) {\n this.minimum = minimum;\n return this;\n };\n SchemaBuilder.prototype.withEnum = function (vals) {\n this.enum = vals;\n return this;\n };\n SchemaBuilder.prototype.build = function () {\n return {\n type: this.type,\n title: this.title,\n properties: this.properties,\n default: this.default,\n maximum: this.maximum,\n minimum: this.minimum,\n enum: this.enum,\n };\n };\n return SchemaBuilder;\n}());\nexports.SchemaBuilder = SchemaBuilder;\nvar UiSchemaBuilder = /** @class */ (function () {\n function UiSchemaBuilder() {\n }\n UiSchemaBuilder.prototype.withReadonlyValue = function (isReadonly) {\n this.isReadOnly = isReadonly;\n return this;\n };\n UiSchemaBuilder.prototype.withWidget = function (widgetName) {\n this.widget = widgetName;\n return this;\n };\n UiSchemaBuilder.prototype.withOptions = function (options) {\n this.options = options;\n return this;\n };\n UiSchemaBuilder.prototype.build = function () {\n return {\n \"ui:readonly\": this.isReadOnly,\n \"ui:widget\": this.widget,\n \"ui:options\": this.options,\n };\n };\n return UiSchemaBuilder;\n}());\nexports.UiSchemaBuilder = UiSchemaBuilder;\n//# sourceMappingURL=ViewSchemaBuilder.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Setting_1 = require(\"./Setting\");\nvar Register_1 = require(\"./Register\");\nvar Arrays_1 = require(\"./util/Arrays\");\n/** Builder pattern */\nvar CalculateRegisterValue = /** @class */ (function () {\n function CalculateRegisterValue(register) {\n var _this = this;\n this.modifiedSettings = [];\n /** Assign a numerical value to the given `Setting`. */\n this.withNumberValue = function (setting, value) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign number value to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new NumberSettingValue(setting, value)\n ]);\n return _this;\n };\n /** Assign the given `Option` to the given `Setting`. */\n this.withOption = function (setting, option) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n if (!_this.getOption(setting, option)) {\n throw new Error(\"Option \" + option.name + \" is not present in Setting \" + setting.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new OptionSettingValue(setting, option)\n ]);\n return _this;\n };\n /** Assign the `Option` matching the given alias to the given `Setting`. */\n this.withOptionAlias = function (setting, optionAlias) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option alias to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByAlias(optionAlias, setting);\n if (option === undefined) {\n throw new Error(\"Option Alias: \\\"\" + optionAlias + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given name to the given `Setting`. */\n this.withOptionName = function (setting, optionName) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option name to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByName(optionName, setting);\n if (option === undefined) {\n throw new Error(\"Option Name: \\\"\" + optionName + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given description to the given `Setting`. */\n this.withOptionDescription = function (setting, optionDescription) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option description to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByDescription(optionDescription, setting);\n if (option === undefined) {\n throw new Error(\"Option Description: \\\"\" + optionDescription + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n this.getSetting = function (setting) {\n return Register_1.getSettingByAlias(setting.alias, _this.register);\n };\n this.getOption = function (setting, option) {\n return Setting_1.getOptionByName(option.name, setting);\n };\n this.calculate = function () {\n var registerValue = 0;\n _this.modifiedSettings.forEach(function (modifiedSetting) {\n registerValue = _this.setValue(modifiedSetting, registerValue);\n });\n var unmodifiedSettings = _this.getUnmodifiedSettings();\n unmodifiedSettings.forEach(function (unmodifiedSetting) {\n registerValue = _this.setValue(SettingValue.defaultValue(unmodifiedSetting), registerValue);\n });\n return Number(registerValue);\n };\n this.setValue = function (setting, registerValue) {\n var value = registerValue;\n value &= ~setting.getMask(); // Clear bits\n value |= setting.getShiftedValue(); // Set bits\n return value;\n };\n this.getUnmodifiedSettings = function () {\n var _a;\n var modifiedSettingNames = Arrays_1.map(_this.modifiedSettings, function (setting) { return setting.getName(); });\n return Arrays_1.filter((_a = Arrays_1.values(_this.register.settings)) !== null && _a !== void 0 ? _a : [], function (setting) { return modifiedSettingNames.indexOf(setting.name) < 0; });\n };\n /** Calculate and print the register's value as a hex string. */\n this.asHexString = function () { return CalculateRegisterValue.toHexString(_this.calculate()); };\n /** Calculate and print the register's value as a binary string. */\n this.asBinaryString = function () { return CalculateRegisterValue.toBinaryString(_this.calculate()); };\n /** Calculate and print the register's value as a decimal string. */\n this.asDecimalString = function () { return CalculateRegisterValue.toDecimalString(_this.calculate()); };\n /** Calculate and return the register's value as a number. */\n this.asNumber = function () { return _this.calculate(); };\n this.register = register;\n }\n /** Creates a register value calculation object for the given register. */\n CalculateRegisterValue.for = function (register) {\n return new CalculateRegisterValue(register);\n };\n /** Format the given number as a hex string value. */\n CalculateRegisterValue.toHexString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toHexString() illegal argument exception. Value must not be null.\");\n }\n return \"0x\" + value.toString(16);\n };\n /** Format the given number as a binary string value. */\n CalculateRegisterValue.toBinaryString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toBinaryString() illegal argument exception. Value must not be null.\");\n }\n return \"0b\" + value.toString(2);\n };\n /** Format the given number as a decimal string value. */\n CalculateRegisterValue.toDecimalString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toDecimalString() illegal argument exception. Value must not be null.\");\n }\n return value.toString();\n };\n return CalculateRegisterValue;\n}());\nexports.default = CalculateRegisterValue;\nvar SettingValue = /** @class */ (function () {\n function SettingValue(setting) {\n var _this = this;\n this.getMask = function () { return Number(_this.setting.mask); };\n this.getShift = function () {\n var mask = _this.getMask();\n var shiftIndex = 0;\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n shiftIndex++;\n }\n return shiftIndex;\n };\n this.getShiftedValue = function () { return _this.getValue() << _this.getShift(); };\n this.getName = function () { return _this.setting.name; };\n this.setting = setting;\n }\n SettingValue.defaultValue = function (setting) {\n var value = Number(setting.porDefault);\n return new NumberSettingValue(setting, value);\n };\n return SettingValue;\n}());\nvar NumberSettingValue = /** @class */ (function (_super) {\n __extends(NumberSettingValue, _super);\n function NumberSettingValue(setting, value) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return _this.value; };\n _this.value = value;\n return _this;\n }\n return NumberSettingValue;\n}(SettingValue));\nvar OptionSettingValue = /** @class */ (function (_super) {\n __extends(OptionSettingValue, _super);\n function OptionSettingValue(setting, option) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return Number(_this.option.value); };\n _this.option = option;\n return _this;\n }\n OptionSettingValue.fromDefaultValue = function (setting, value) {\n var foundValueByName = Setting_1.getOptionByName(value, setting);\n if (foundValueByName)\n return new OptionSettingValue(setting, foundValueByName);\n var foundValueByAlias = Setting_1.getOptionByAlias(value, setting);\n if (foundValueByAlias)\n return new OptionSettingValue(setting, foundValueByAlias);\n throw new Error(\"Unable to create default value '\" + value + \"' for setting '\" + setting.name + \"'.\");\n };\n return OptionSettingValue;\n}(SettingValue));\n//# sourceMappingURL=CalculateRegisterValue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSettingByAlias = void 0;\nexports.getSettingByAlias = function (alias, register) {\n return register.settings[alias];\n};\n//# sourceMappingURL=Register.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOptionDescriptions = exports.getOptionNames = exports.getOptionByDescription = exports.getOptionByName = exports.getOptionByAlias = void 0;\nvar Arrays_1 = require(\"./util/Arrays\");\nexports.getOptionByAlias = function (alias, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.alias == alias; });\n};\nexports.getOptionByName = function (name, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name == name; });\n};\nexports.getOptionByDescription = function (description, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description == description; });\n};\nexports.getOptionNames = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name; });\n};\nexports.getOptionDescriptions = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description; });\n};\n//# sourceMappingURL=Setting.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.values = exports.getKeys = exports.find = exports.filter = exports.map = void 0;\nexports.map = function (arr, callback) {\n var result = [];\n arr.forEach(function (value, index) {\n result[index] = callback(value);\n });\n return result;\n};\nexports.filter = function (arr, callback) {\n var result = [];\n arr.forEach(function (value) {\n if (callback(value)) {\n result.push(value);\n }\n });\n return result;\n};\n/**\n * Iterates over elements of the array, returning the first element that the predicate returns truthy for.\n */\nexports.find = function (arr, callback) {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n};\n/** @returns the non-prototype keys of the given object */\nexports.getKeys = function (obj) {\n if (!obj)\n return undefined;\n return Object.getOwnPropertyNames(obj);\n};\nexports.values = function (obj) {\n if (!obj)\n return undefined;\n return exports.getKeys(obj).map(function (key) { return obj[key]; });\n};\n//# sourceMappingURL=Arrays.js.map","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import { StringConstants } from \"./StringConstants\";\n\nexport class ClockCalculator {\n private lfintosc = \"31000\";\n private mfintosc = \"500000\";\n private mfintosc_31KHz = \"31250\";\n private sosc = \"32768\";\n private oscSelect: string;\n private HFInternalClk: string;\n private externalClk: number;\n private clkDivider: number;\n\n MAX_PLL = 16000000; // in Hz\n MIN_PLL = 3000000; // in Hz\n\n public constructor(\n oscSelect: string,\n HFInternalClk: string,\n externalClk: number,\n clkDivider: number,\n ) {\n this.oscSelect = oscSelect;\n this.HFInternalClk = HFInternalClk;\n this.externalClk = externalClk;\n this.clkDivider = clkDivider;\n }\n\n public getCurrentSystemClk = (): number => {\n let currentSystemClk: number;\n let HFClk: number;\n\n if (this.oscSelect === StringConstants.SOSC) {\n currentSystemClk = 32768 / this.clkDivider;\n } else if (this.oscSelect === StringConstants.LFINTOSC) {\n currentSystemClk = 31000 / this.clkDivider;\n } else if (this.oscSelect === StringConstants.HFINTOSC) {\n HFClk = parseInt(this.HFInternalClk?.replace(\"_MHz\", \"\") ?? \"1000000\");\n currentSystemClk = (HFClk * 1000000) / this.clkDivider;\n } else if (this.oscSelect === StringConstants.HFINTOSC_2xPLL) {\n HFClk = parseInt(this.HFInternalClk?.replace(\"_MHz\", \"\") ?? \"1000000\");\n if (HFClk == 8 || HFClk == 12 || HFClk == 16) {\n currentSystemClk = (HFClk * 2 * 1000000) / this.clkDivider;\n } else {\n currentSystemClk = (HFClk * 1000000) / this.clkDivider;\n }\n } else if (this.oscSelect === StringConstants.EXTOSC) {\n currentSystemClk = this.externalClk / this.clkDivider;\n } else {\n if (this.externalClk <= this.MIN_PLL || this.externalClk > this.MAX_PLL) {\n currentSystemClk = this.externalClk / this.clkDivider;\n } else {\n currentSystemClk = (this.externalClk * 4) / this.clkDivider;\n }\n }\n return Math.round(currentSystemClk);\n };\n\n public getHfIntOsc = (): string => {\n return this.HFInternalClk?.replace(\"_MHz\", \"000000\") ?? \"1000000\";\n };\n\n public getMfIntOsc = (): string => {\n return this.mfintosc;\n };\n\n public getMfIntOsc_31KHz = (): string => {\n return this.mfintosc_31KHz;\n };\n\n public getLfIntOsc = (): string => {\n return this.lfintosc;\n };\n\n public getExtOsc = (): string => {\n return this.externalClk.toString();\n };\n\n public getSosc = (): string => {\n return this.sosc;\n };\n}\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { ClockCalculator } from \"./ClockCalculator\";\nimport * as initializer_system from \"@microchip/initializer-system\";\nimport * as config_device from \"@microchip/config-device\";\nimport { StringConstants } from \"./StringConstants\";\nimport osc_clocks from \"@microchip/osc-clocks\";\nimport * as config_request from \"@microchip/config-request\";\nimport {\n AppModel,\n DerivedData,\n DerivedFunctions,\n} from \"../generated_module/src/types/AutoModuleTypes\";\nimport * as InterfaceTypes from \"@microchip/scf-interface\";\n\nexport const getDerivedData = (dataModel: AppModel): DerivedData => {\n if (dataModel) {\n return new MyDerivedData(dataModel);\n }\n return new EmptyDerivedData();\n};\n\n//This data will be used at the creator stage and relies on only the state\nclass EmptyDerivedData implements DerivedData {\n getMyFunctions = (): DerivedFunctions => {\n return {};\n };\n getModel = (): AppModel | undefined => {\n return undefined;\n };\n}\n\n//This data will be used at the processor stage\nclass MyDerivedData implements DerivedData {\n private dataModel: AppModel;\n private clockCalculator: ClockCalculator;\n\n constructor(dataModel: AppModel) {\n this.dataModel = dataModel;\n }\n\n getClockCalculator = (): ClockCalculator => {\n if (!this.clockCalculator) {\n this.clockCalculator = new ClockCalculator(\n this.getModel().getComponentValue(\"noscOsccon1\") ?? \"\",\n this.getModel().getComponentValue(\"hffrqOscfrq\") ?? \"\",\n this.getModel().getComponentValue(\"externalClk\") ?? 32768,\n parseInt(this.getModel().getComponentValue(\"ndivOsccon1\") ?? \"\"),\n );\n }\n return this.clockCalculator;\n };\n\n getMyFunctions = (): DerivedFunctions => {\n return {\n moduleName: this.getModuleName,\n alerts: this.getMyAlerts,\n isEnabled: this.isEnabled,\n isVisible: this.isVisible,\n currentSystemClk: (): number =>\n this.getClockCalculator()?.getCurrentSystemClk(),\n \"fosc-hz_payload\": (): string =>\n this.getClockCalculator()?.getCurrentSystemClk()?.toString() ?? \"1000000\",\n initializer_system_results: this.initializer_system_results,\n config_device_results: this.config_device_results,\n templateData: this.getTemplateData,\n config_request_args: (): config_request.Arguments => [\n \"FEXTOSC\",\n \"CLKOUTEN\",\n \"MCLRE\",\n \"LVP\",\n ],\n \"osc-clocks_payload\": this.getOscClocksProcessedPayload,\n };\n };\n\n private getOscClocksProcessedPayload = (): osc_clocks.ProcessedPayload => {\n const oscObj: osc_clocks.ProcessedPayload = {\n extosc: this.getClockCalculator().getExtOsc() ?? \"32768\",\n fosc: this.getClockCalculator().getCurrentSystemClk().toString() ?? \"1000000\",\n hfintosc: this.getClockCalculator().getHfIntOsc() ?? \"1000000\",\n lfintosc: this.getClockCalculator().getLfIntOsc() ?? \"31000\",\n mfintosc: this.getClockCalculator().getMfIntOsc() ?? \"500000\",\n mfintosc_31Khz: this.getClockCalculator().getMfIntOsc_31KHz() ?? \"31250\",\n sosc: this.getClockCalculator().getSosc() ?? \"32768\",\n };\n const hasSosc: boolean =\n this.dataModel.isComponentValue(\"soscenOscen\") !== undefined ? true : false;\n if (hasSosc) {\n oscObj.hasSosc = true;\n oscObj.soscEnabled = this.dataModel.isComponentValue(\"soscenOscen\");\n oscObj.soscPowerMode = this.dataModel.getComponentValue(\"soscpwrOsccon3\");\n }\n return oscObj;\n };\n\n public getModuleName = (): string => {\n return \"Clock Control\";\n };\n public getModel = (): AppModel => {\n return this.dataModel;\n };\n\n private getTemplateData = (): any => {\n const headers: InterfaceTypes.HeaderFile = {\n name: \"clock.h\",\n path: \"../\",\n };\n const initRegisters = this.dataModel.getRegisterValues();\n return {\n productName: \"CCL\",\n productVersion: \"1.8.2\",\n compiler: \"XC8 v2.20\",\n tool: \"MPLAB X 5.40\",\n\n deviceFrequency:\n this.getClockCalculator()?.getCurrentSystemClk()?.toString() ?? \"1000000\",\n\n initRegisters: initRegisters,\n header: headers,\n\n moduleNameUpperCase: this.getModuleName()?.toUpperCase() ?? \"\",\n moduleNameLowerCase: this.getModuleName()?.toLowerCase() ?? \"\",\n };\n };\n private initializer_system_results = (): initializer_system.Results => {\n return {\n initializer: {\n name: \"CLOCK_Initialize\",\n header: {\n name: \"clock.h\",\n path: \"system/\",\n },\n priority: initializer_system.INIT_PRIORITY.START,\n },\n };\n };\n\n private config_device_results = (): config_device.Results => {\n return {\n headers: [\n {\n name: \"clock.h\",\n path: \"system/\",\n },\n ],\n };\n };\n\n private isEnabled = (componentName: string): boolean => {\n switch (componentName) {\n case \"hffrqOscfrq\":\n return (\n this.dataModel.getComponentValue(\"noscOsccon1\")?.indexOf(\"HF\") != -1\n );\n case \"currentSystemClk\":\n return false;\n case \"lfIntOscFreq\":\n return false;\n default:\n return true;\n }\n };\n\n private isVisible = (componentName: string): boolean => {\n const componentValue = this.dataModel.getComponentValue(\"noscOsccon1\");\n switch (componentName) {\n case \"externalClk\":\n if (\n componentValue === StringConstants.EXTOSC ||\n componentValue === StringConstants.EXTOSC_4xPLL\n ) {\n return true;\n } else {\n return false;\n }\n case \"lfIntOscFreq\":\n if (componentValue != StringConstants.LFINTOSC) {\n return false;\n } else {\n return true;\n }\n case \"hffrqOscfrq\":\n if (\n componentValue != StringConstants.HFINTOSC &&\n componentValue != StringConstants.HFINTOSC_2xPLL\n ) {\n return false;\n } else {\n return true;\n }\n default:\n return true;\n }\n };\n\n private getDynamicComponetDefaultValue = (\n componentName: string,\n ): string | undefined => {\n const externalClkSelectedOptions = this.dataModel.getImportValue(\n \"config_request\",\n )?.[componentName];\n let selectedOptionVal: string | undefined;\n if (externalClkSelectedOptions) {\n selectedOptionVal = externalClkSelectedOptions[\"defaultValue\"]?.[\"value\"];\n }\n return selectedOptionVal ?? undefined;\n };\n\n private getMyAlerts = (): Processor.Alert[] => {\n const alerts: Processor.Alert[] = [];\n const selectedOptionVal: string =\n this.getDynamicComponetDefaultValue(\"FEXTOSC\") ?? \"\";\n const noscOsccon1 = this.dataModel.getComponentValue(\"noscOsccon1\");\n\n if (\n noscOsccon1 === StringConstants.EXTOSC_4xPLL ||\n noscOsccon1 === StringConstants.EXTOSC\n ) {\n alerts.push({\n type: Processor.AlertTypes.Hint,\n text:\n 'Please configure required \"External Oscillator Selection\" in System Module config bits',\n });\n }\n\n if (\n noscOsccon1 === StringConstants.EXTOSC_4xPLL &&\n ((this.getModel().getComponentValue(\"externalClk\") ?? 0) <=\n this.getClockCalculator().MIN_PLL ||\n (this.getModel().getComponentValue(\"externalClk\") ?? 0) >\n this.getClockCalculator().MAX_PLL)\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"The frequency selected does not fall within the PLL locking range. Therefore, the actual frequency produced by hardware maybe unpredictable when the PLL is enabled. Either change the clock frequency or select a different option in Oscillator select.\",\n });\n }\n\n if (\n noscOsccon1 === StringConstants.EXTOSC_4xPLL ||\n noscOsccon1 === StringConstants.EXTOSC\n ) {\n if (\n selectedOptionVal?.indexOf(\"external clock\") != -1 &&\n this.getClockCalculator().getCurrentSystemClk() >\n StringConstants.ExtClkFreq_64MHz\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"External clock frequency is greater than recommended value (\" +\n StringConstants.ExtClkFreq_64MHz +\n \" Hz)\",\n });\n }\n\n if (\n selectedOptionVal?.indexOf(\"crystal oscillator\") != -1 &&\n (this.getModel().getComponentValue(\"externalClk\") ?? 0) > 16000000 &&\n this.getClockCalculator().getCurrentSystemClk() >\n StringConstants.ExtClkFreq_20MHz\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"External clock frequency is greater than recommended value (\" +\n StringConstants.ExtClkFreq_20MHz +\n \" Hz)\",\n });\n }\n\n if (\n selectedOptionVal.indexOf(\"Oscillator not enabled\") != -1 &&\n this.getClockCalculator().getCurrentSystemClk() >\n StringConstants.ExtClkFreq_32MHz\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"External clock frequency is greater than recommended value (\" +\n StringConstants.ExtClkFreq_32MHz +\n \" Hz)\",\n });\n }\n }\n\n const HFClk = parseInt(\n this.dataModel.getComponentValue(\"hffrqOscfrq\")?.replace(\"_MHz\", \"\") ?? \"0\",\n );\n if (\n this.dataModel.getComponentValue(\"noscOsccon1\") ===\n StringConstants.HFINTOSC_2xPLL &&\n (HFClk == 1 || HFClk == 2 || HFClk == 4 || HFClk == 32)\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"The frequency set in HF Internal Clock may not get generated by the clock hardware properly since it does not fall within the 2xPLL range of 8-16 MHz. Therefore, it is recommended that the option 'HFINTOSC' be selected in the Oscillator select combo box.\",\n });\n }\n\n return alerts;\n };\n}\n","import { pin_row, pin_state } from \"@microchip/pin-standard\";\nimport { PCPHelper } from \"../generated_module/src/pins/PCPHelper\";\nimport { AppModel } from \"../generated_module/src/types/AutoModuleTypes\";\n\n// provide complete dynamic data for all pin rows. It overrides static pindata.json\nexport const getCompletePinData = (appModel: AppModel): any => {\n // way to programatically override the json data\n return {};\n};\n\n// overrides pin data for a particular row based on model.\nexport function getRowData(appModel: AppModel, rowData: pin_row): pin_row | undefined {\n let retRowJSONdata: pin_row | undefined = rowData;\n let rowActions: any = [];\n const clockOutEnable = appModel.getImportValue(\"config_request\")?.[\"CLKOUTEN\"];\n\n if (clockOutEnable) {\n delete clockOutEnable[\"setting\"];\n delete clockOutEnable[\"displayOptionSetting\"];\n const selectedOption: string = clockOutEnable?.[\"defaultValue\"]?.[\"value\"];\n\n if (selectedOption.indexOf(\"CLKOUT function is enabled\") != -1) {\n if (rowData.name === \"clockout\") {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"CLKOUT\" },\n };\n }\n }\n\n const isPic18ClkOut: boolean =\n selectedOption === \"CLKOUT function is enabled\" ||\n selectedOption === \"CLKOUT function is disabled\"\n ? true\n : false;\n const actionArr = PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"clockout\")\n .forComponent(clockOutEnable)\n .addIfLockedSetValue(\n \"CLKOUT\",\n isPic18ClkOut\n ? \"CLKOUT function is enabled\"\n : \"CLKOUT function is enabled; FOSC/4 clock appears at OSC2\",\n )\n .addIfUnLockedSetValue(\n \".*\",\n isPic18ClkOut\n ? \"CLKOUT function is disabled\"\n : \"CLKOUT function is disabled; i/o or oscillator function on OSC2\",\n )\n .build();\n // Provide the module reference(scriptID) of remote config bits module\n for (const eachAction of actionArr) {\n const lockedState = eachAction.state[pin_state.LOCKED];\n if (lockedState) {\n lockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle?.providerId,\n };\n }\n const unlockedState = eachAction.state[pin_state.UNLOCK];\n if (unlockedState) {\n unlockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle?.providerId,\n };\n }\n rowActions.push(eachAction);\n }\n }\n\n const extClkSelect = appModel.getImportValue(\"config_request\")?.[\"FEXTOSC\"];\n\n if (extClkSelect) {\n delete extClkSelect[\"setting\"];\n delete extClkSelect[\"displayOptionSetting\"];\n\n const selectedOption: string = extClkSelect?.[\"defaultValue\"]?.[\"value\"];\n\n if (\n selectedOption.indexOf(\"(external clock)\") != -1 ||\n selectedOption.indexOf(\"EC\") != -1\n ) {\n if (rowData.name === \"osc1\" || rowData.name === \"osc2\") {\n retRowJSONdata = undefined;\n }\n }\n\n if (selectedOption.indexOf(\"(crystal oscillator)\") != -1) {\n if (rowData.name === \"clockin\") {\n retRowJSONdata = undefined;\n }\n }\n\n if (\n selectedOption.indexOf(\"Oscillator not enabled\") != -1 ||\n selectedOption.indexOf(\"Reserved\") != -1\n ) {\n if (\n rowData.name === \"clockin\" ||\n rowData.name === \"osc1\" ||\n rowData.name === \"osc2\"\n ) {\n retRowJSONdata = undefined;\n }\n }\n // Restricting pin actions for clockin, osc1 and osc2 pin rows\n const mclrKey = appModel.getComponent(\"mclrUnusedKey\")?.component;\n if (mclrKey) {\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"clockin\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"osc1\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"osc2\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n }\n }\n\n const mclrEnable = appModel.getImportValue(\"config_request\")?.[\"MCLRE\"];\n const lvpEnable = appModel.getImportValue(\"config_request\")?.[\"LVP\"];\n\n if (mclrEnable && lvpEnable) {\n delete mclrEnable[\"setting\"];\n delete mclrEnable[\"displayOptionSetting\"];\n const selectedMclrOption: string = mclrEnable?.[\"defaultValue\"]?.[\"value\"];\n\n delete lvpEnable[\"setting\"];\n delete lvpEnable[\"displayOptionSetting\"];\n const selectedLvpOption: string = lvpEnable?.[\"defaultValue\"]?.[\"value\"];\n\n if (\n selectedLvpOption.indexOf(\"HV on MCLR/VPP must be used for programming\") !=\n -1 ||\n selectedLvpOption.indexOf(\n \"High Voltage on MCLR/Vpp must be used for programming\",\n ) != -1\n ) {\n if (\n selectedMclrOption.indexOf(\"MCLR pin is MCLR\") != -1 ||\n selectedMclrOption.indexOf(\"MCLR pin is Master Clear function\") != -1 ||\n selectedMclrOption === \"MCLR pin (RE3) is MCLR\"\n ) {\n if (rowData.name === \"reset\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"MCLR\" },\n };\n }\n }\n const isPic18Mclr: boolean =\n selectedMclrOption ===\n \"If LVP = 0, MCLR pin is MCLR; If LVP = 1, RE3 pin function is MCLR \" ||\n selectedMclrOption ===\n \"If LVP = 0, MCLR pin function is port defined function; If LVP =1, RE3 pin fuction is MCLR\"\n ? true\n : false;\n const isQ10Mclr: boolean =\n selectedMclrOption === \"MCLR pin (RE3) is MCLR\" ||\n selectedMclrOption ===\n \"If LVP = 0, MCLR pin (RE3) is an input; If LVP =1, MCLR pin (RE3) is MCLR\"\n ? true\n : false;\n let actionArr: any = [];\n\n // For handling Q10 devices\n if (isQ10Mclr) {\n actionArr = PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"reset\")\n .forComponent(mclrEnable)\n .addIfLockedSetValue(\"MCLR\", \"MCLR pin (RE3) is MCLR\")\n .addIfUnLockedSetValue(\n \".*\",\n \"If LVP = 0, MCLR pin (RE3) is an input; If LVP =1, MCLR pin (RE3) is MCLR\",\n )\n .build();\n } else {\n actionArr = PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"reset\")\n .forComponent(mclrEnable)\n .addIfLockedSetValue(\n \"MCLR\",\n isPic18Mclr\n ? \"If LVP = 0, MCLR pin is MCLR; If LVP = 1, RE3 pin function is MCLR \"\n : \"MCLR pin is Master Clear function\",\n )\n .addIfUnLockedSetValue(\n \".*\",\n isPic18Mclr\n ? \"If LVP = 0, MCLR pin function is port defined function; If LVP =1, RE3 pin fuction is MCLR\"\n : \"MCLR pin function is port defined function\",\n )\n .build();\n }\n\n // Provide the module reference(scriptID) of remote config bits module\n for (const eachAction of actionArr) {\n const lockedState = eachAction.state[pin_state.LOCKED];\n if (lockedState) {\n lockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle\n ?.providerId,\n };\n }\n const unlockedState = eachAction.state[pin_state.UNLOCK];\n if (unlockedState) {\n unlockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle\n ?.providerId,\n };\n }\n rowActions.push(eachAction);\n }\n } else {\n if (selectedMclrOption) {\n if (rowData.name === \"reset\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"MCLR\" },\n };\n }\n }\n const mclrKey = appModel.getComponent(\"mclrUnusedKey\")?.component;\n if (mclrKey) {\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"reset\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n }\n }\n }\n\n const noscOsccon1 = appModel.getComponentValue(\"noscOsccon1\");\n if (\n noscOsccon1 === \"HFINTOSC\" ||\n noscOsccon1 === \"LFINTOSC\" ||\n noscOsccon1 === \"SOSC\" ||\n noscOsccon1 === \"HFINTOSC with 2x PLL\"\n ) {\n if (rowData.name === \"clockin\") {\n retRowJSONdata = undefined;\n }\n if (rowData.name === \"osc1\") {\n retRowJSONdata = undefined;\n }\n if (rowData.name === \"osc2\") {\n retRowJSONdata = undefined;\n }\n }\n\n if (rowData.name === \"sosci\") {\n if (noscOsccon1 === \"SOSC\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"SOSCI\" },\n };\n } else {\n retRowJSONdata = undefined;\n }\n }\n\n if (rowData.name === \"sosco\") {\n if (noscOsccon1 === \"SOSC\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"SOSCO\" },\n };\n } else {\n retRowJSONdata = undefined;\n }\n }\n\n if (retRowJSONdata) retRowJSONdata = { ...retRowJSONdata, actions: rowActions };\n\n return retRowJSONdata;\n}\n","export class StringConstants {\n static readonly SOSC = \"SOSC\";\n static readonly LFINTOSC = \"LFINTOSC\";\n static readonly HFINTOSC = \"HFINTOSC\";\n static readonly HFINTOSC_2xPLL = \"HFINTOSC with 2x PLL\";\n static readonly EXTOSC = \"EXTOSC\";\n static readonly EXTOSC_4xPLL = \"EXTOSC with 4x PLL\";\n static readonly OSC_NOT_NEEDED = \"Oscillator not needed\";\n static readonly ON = \"ON\";\n static readonly ExtClkFreq_64MHz = 64000000;\n static readonly ExtClkFreq_20MHz = 20000000;\n static readonly ExtClkFreq_32MHz = 32000000;\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://processor/webpack/bootstrap","webpack://processor/./generated_module/src/App/AppModel.ts","webpack://processor/./generated_module/src/Utils.ts","webpack://processor/./generated_module/src/autoModule sync","webpack://processor/./generated_module/src/autoModule/AutoModuleAppModel.tsx","webpack://processor/./generated_module/src/autoModule/AutoModuleHardware.ts","webpack://processor/./generated_module/src/autoModule/AutoModuleHelpers.tsx","webpack://processor/./generated_module/src/autoModule/AutoModuleTemplates.tsx","webpack://processor/./generated_module/src/autoModule/AutoModuleView.tsx","webpack://processor/./generated_module/src/autoModule/ContextualHelp.ts","webpack://processor/./generated_module/src/autoModule/RegisterFilterMode.ts","webpack://processor/./generated_module/src/autoModule/getConfigData.ts","webpack://processor/./generated_module/src/interfaces/exports.tsx","webpack://processor/./generated_module/src/interfaces/imports.tsx","webpack://processor/./generated_module/src/interrupts/InterruptActions.ts","webpack://processor/./generated_module/src/pins/PCPHelper.ts","webpack://processor/./generated_module/src/pins/PCPStateActionBuilder.ts","webpack://processor/./generated_module/src/processor.tsx","webpack://processor/./generated_module/src/tables/UidMapBuilder.ts","webpack://processor/./generated_module/src/tables/tables.ts","webpack://processor/./node_modules/@microchip/initializer-system/lib/src/index.js","webpack://processor/./node_modules/@microchip/initializer-system/lib/src/initializer-system.js","webpack://processor/./node_modules/@microchip/pin-standard/lib/index.js","webpack://processor/./node_modules/@microchip/pin-standard/lib/pin-standard.js","webpack://processor/./node_modules/@microchip/scf-common/lib/Processor.js","webpack://processor/./node_modules/@microchip/scf-device/lib/CalculateRegisterValue.js","webpack://processor/./node_modules/@microchip/scf-device/lib/Register.js","webpack://processor/./node_modules/@microchip/scf-device/lib/Setting.js","webpack://processor/./node_modules/@microchip/scf-device/lib/util/Arrays.js","webpack://processor/./node_modules/@microchip/scf-interface/lib/c-function-types.js","webpack://processor/./node_modules/@microchip/scf-interface/lib/helpers.js","webpack://processor/./node_modules/@microchip/scf-interface/lib/index.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/lib/CreateRegisterView.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/lib/Model.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/lib/ViewSchemaBuilder.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/CalculateRegisterValue.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/Register.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/Setting.js","webpack://processor/./node_modules/@microchip/scf-register-view-helper/node_modules/@microchip/scf-device/lib/util/Arrays.js","webpack://processor/./node_modules/path-browserify/index.js","webpack://processor/./node_modules/process/browser.js","webpack://processor/./src/ClockCalculator.ts","webpack://processor/./src/DerivedData.ts","webpack://processor/./src/PinsLogic.ts","webpack://processor/./src/StringConstants.ts"],"names":["getPinsLogic","require","ex","getCompletePinData","appModel","getRowData","rowData","getModel","prototype","getDerivedData","AppModel","getDerivedDataFunction","derivedData","exportInterfaces","importInterfaces","autoModuleAppModel","registerValues","interrupts","properties","registers","pcpHelper","defaultHardware","getState","state","getPayload","payload","getImports","imports","getExports","exports","getName","getAutoModuleAppModel","getModuleName","getActiveName","getDerivedFunctions","createAutoModuleAppModel","getPrototypeModule","getRegisterValues","interfaceName","config","getInterrupts","getHardware","getPeripheral","getProperties","getRegisters","getFriendlyInterfaceId","peripheral","undefined","name","instanceNumber","Number","instance","replace","group","peripheralName","getConfigData","peripherals","interfaceId","getPeripheralDescription","getMyFunctions","getDerivedFunction","functionName","args","getExportInterfaces","createExportInterfaces","getImportInterfaces","createImportInterfaces","isControlledByInterface","componentName","getAssignedImport","importName","Processor","getImportValue","filterImportBySetting","populatedImports","importKey","optionFilter","filteredImports","option","isComponentValue","value","getComponentValue","getComponent","getPCPHelper","PCPHelper","setCallbacks","getKeys","obj","Object","getOwnPropertyNames","values","map","key","forEach","action","mapper","assertNotNull","val","msg","Error","toDictionary","arr","keyMapper","valueMapper","result","entry","model","MyAutoModuleAppModel","hardware","componentList","moduleName","createComponentList","components","getComponentList","componentsWithDynamicDependencySelectors","getDefaultDependencySelectors","component","getAllComponents","softwareData","push","registerName","setting","hardwareRegister","settings","type","getDynamicComponents","getActions","actions","getDefaultComponentAction","tabId","path","getSoftwareComponentValue","tab","overriddenValue","processedArg","getProcessedArgValue","AutoModuleHelper","overrideDefaultValues","getHardwareComponentValue","overriddenCompValue","overrideDefaultValue","getDefaultValue","displayOptionSetting","mode","operation","options","masterComponent","indexOf","getHardwareComponentBooleanValue","booleanValues","getDependencyComponentValue","dependencySelector","imp","importId","handle","createOptionLabel","optionType","defaultValue","getOptionByName","dynamicDependencySelectors","defaultTab","defaultGroup","length","tabs","importedNames","keys","dependencySelectors","filter","category","description","componentValue","createPrototypeImport","isFullyAssigned","interfaces","getHardwareInterfaces","i","isAssigned","castComponent","getComboOptions","overrideOptions","hasConfigBits","regName","registerValue","reg","comment","valueAsHex","alias","registerVal","CalculateRegisterValue","comments","set","getSettingBits","deviceType","withNumberValue","getOptionValueByName","asNumber","toString","toUpperCase","sortComments","register","sort","a","b","settingA","split","settingB","mask","join","setValNumber","getOptionByAlias","settingValue","valueAsDescription","bitName","getRegisterFromComponent","toLowerCase","modifiedRegName","getSettingFromComponent","desc","porDefault","optionName","optionValue","getSettingDefaultIfPresent","getOverrideDefaultValue","getSettingOptionsIfPresent","masterComponentValue","filteredOptions","filterModeOptions","find","optionModes","match","getProcessedHandle","label","providerId","exportId","DependencySelector","noneSelection","createOptionEntry","dropdownOptions","thisImport","shouldAllowUnselectDependency","names","generateDropdownOptions","isUnassignable","getModuleDefaultDescription","packageJson","scf","getTemplates","templates","template","newTemplate","dest","templateName","src","shouldGenerate","generateWithHardware","isGeneratableProperty","getTemplatePayload","templatePayload","uppercase","lowercase","filename","source","header","getComponentPayload","getTemplateSettings","getConfigBits","configModule","templateConfigBits","configName","configBits","configBit","createAutoViewPayloads","payloads","main","createSimpleFormPayloadRegister","schema","createSchema","uiSchema","createUiSchema","formData","createFormData","scfUiSchema","createScfUiSchema","table","shouldPopulateView","expandGroupsByDefault","UIGroupCollapse","populateView","getModuleDescription","title","schemaBuilder","overrideGroupTitle","UIGroups","overrideGroupDescription","getComponentSchema","UIOrder","isGroupHidden","tabIndex","isComponentGroupHidden","isHidden","uiBehavior","tableCols","columns","colNames","defaultColumnWidth","calculateColumnWidth","isColEditable","readonly","dataField","editable","columnWidth","width","dataSort","isSortable","headerAlign","dataAlign","tdStyle","getCellStyle","headerText","getTableUiSchema","getUiBehavior","getUiSchemaExportArg","getTableFormData","getDependencySelectorActions","transformErrors","deviceMeta","hasSdlSupport","sdlHelp","url","getAutoSdlHelp","tableState","uids","createTableUids","cellValidationInfo","getCellValidationInfo","canRemoveRows","canInsertRows","canAddRows","canMoveRowDown","canMoveRowUp","getTableActions","depSelector","dependencySelectorActions","dropdownOption","JSON","stringify","displayViewOnImportAssigned","shouldPopulateViewAtStartup","impKey","isVisible","isVisibleProperty","isModeActive","getSoftwareComponentSchema","getHardwareComponentSchema","getDependencyComponentSchema","getTableComponentSchema","validation","overrideTitle","format","isUrl","urlDescription","isImage","imageDescription","getDropdownOptionNames","assignedImport","createProcessedImports","assignedName","matchRegEx","expArg","overriddenBehavior","isEnabled","registerViewPayloads","hardwarePeripheral","registerFilter","registerView","CreateRegisterView","foundRegister","withRegisterValue","interruptsKey","interrupt","interruptComponent","interruptCompVal","withInterruptValue","withInterruptOptions","create","dataModel","helpUrl","deviceName","dosid","comp","registerAlias","deviceRegister","processRegisterModes","hasModes","modifiedHardwarePeripheral","delFlag","targetStr","RegExp","test","settingObj","flag","configPath","newConfig","ConfigBuilder","withDynamicConfigData","withDynamicComponents","build","getConfigFile","dynamicComponents","dynamicComponentMap","fromNew","fromPath","__dirname","MyExportInterfaces","createProcessedExports","exportPayload","exp","int","processedInterface","getInterface","getInterfaceArgs","interfaceKey","getInterfaceResults","results","processedArgValue","interfaceData","getInterfaceData","argValues","arg","module","isInterface","idA","idB","MyImportInterfaces","stage","processedImports","filterImports","getResults","getProcessedImportOptions","modifiedOptions","index","importResults","initResults","initializer","getData","isHighPriority","filterInterrupt","filterInterrupts","interruptComponentName","getInterruptComponentName","isrCallback","handlerName","headerFile","generateISR","isEnableActions","getInterruptActions","concat","getDefaultInterruptActions","isEnableAction","interruptList","interruptActions","apiPrefixResults","apiPrefix","interruptName","InterruptActionsBuilder","curComponent","curComponentName","tableRowId","tableRowCol","tableCellPath","createActionFor","buildActions","addActionIfEnabled","actionValue","isActionValueAcceptable","rowId","validFor","addActionIfDisabled","setPathToTableCell","rowIndex","colName","some","createActionBuilder","getPinJsonObj","rows","pinjsonobj","pinCallbacks","getAllFilteredRows","allRows","validRows","eachRow","userRowData","isRowValid","direction","behaviour","eachrowret","getAllRows","pinRows","userdata","retData","callbacks","pinRow","PCPStateActionBuilder","rowName","actionDataArr","pinRegEx","pinstate","pin_state","LOCKED","actiontype","SETACTION","attribs","formAttribs","ATTRIBACTION","UNLOCK","attribarray","actionArr","eachData","process","initialModule","myDerivedData","processedOutput","help","overrideModuleLevelHelp","customTemplateData","templateData","view","auto","customView","getCustomView","alerts","UidMapBuilder","uidMap","row","rowCount","uid","incrementUidAndShift","dynamicallyRemoved","count","sortedUids","getUidKeys","uidKey","RowPrefix","overrideTableDefaultsWithChanges","rowChanged","initialFormData","Array","isArray","changedRow","changedUid","rowChangeNum","isTableInState","tabState","getInitialTableFormData","columnNames","tableFormData","columnName","overrideTableDefaultValues","createInitialRows","rowDataCols","createRowUid","Default","initialRows","defaultRowNum","createDefaultTableAction","column","overrideCellValue","tableData","cell","modifiedTableData","addRowsToTable","newRow","numberOfRows","addRowToTable","Dynamic","newRowCols","newRowId","filteredTableTemp","tableFirstHalf","slice","tableSecondHalf","currentRowId","updateActionsRowId","removeRowFromTable","tableRemoved","currentActions","modifiedActions","getValueBasedOnState","modelState","tableUids","overrideDefaultsAndFilterRows","modifiedForData","filteredModifed","dynamicTableData","rowNum","r","addDefaultRows","addDynamicRows","removeRows","sortByValue","colInfo","colData","info","minValue","maxValue","errMessage","errTitle","cValidation","cValidationErrTitle","cValidationErrMessage","rowFormData","tableActions","uidsKey","defaultAction","ind","filtered","overrideTableOptions","cellAction","uidKeys","tableUi","search","striped","bordered","rightActions","getTableRightActions","leftActions","getTableLeftActions","getTableMoveRowActions","className","tableColumns","columnsKey","rjsfType","colBox","items","tableName","dynamicOptions","displayName","isReadonly","overflow","textOverflow","prefix","postfix","ClockCalculator","oscSelect","HFInternalClk","externalClk","clkDivider","lfintosc","mfintosc","mfintosc_31KHz","sosc","MAX_PLL","MIN_PLL","getCurrentSystemClk","currentSystemClk","HFClk","StringConstants","SOSC","LFINTOSC","HFINTOSC","parseInt","HFINTOSC_2xPLL","EXTOSC","Math","round","getHfIntOsc","getMfIntOsc","getMfIntOsc_31KHz","getLfIntOsc","getExtOsc","getSosc","MyDerivedData","EmptyDerivedData","clockCalculator","getClockCalculator","getMyAlerts","initializer_system_results","config_device_results","getTemplateData","config_request_args","getOscClocksProcessedPayload","oscObj","extosc","fosc","hfintosc","mfintosc_31Khz","hasSosc","soscEnabled","soscPowerMode","headers","initRegisters","productName","productVersion","compiler","tool","deviceFrequency","moduleNameUpperCase","moduleNameLowerCase","priority","initializer_system","START","EXTOSC_4xPLL","getDynamicComponetDefaultValue","externalClkSelectedOptions","selectedOptionVal","noscOsccon1","Hint","text","Warning","ExtClkFreq_64MHz","ExtClkFreq_20MHz","ExtClkFreq_32MHz","retRowJSONdata","rowActions","clockOutEnable","selectedOption","behaviourMeta","lockPinRegEx","isPic18ClkOut","stateActionBuilder","rowWithName","forComponent","addIfLockedSetValue","addIfUnLockedSetValue","eachAction","lockedState","meta","to","unlockedState","extClkSelect","mclrKey","mclrEnable","lvpEnable","selectedMclrOption","selectedLvpOption","isPic18Mclr","isQ10Mclr","OSC_NOT_NEEDED","ON"],"mappings":"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AAE;AALX,GARG,CAAP;AAgBH;;AAEM,SAASM,YAAT,CAAsBgU,UAAtB,EAAmE;AACtE,MAAMjU,OAAO,GAAG;AACZkU,YAAQ,EAAE,QADE;AAEZC,gBAAY,EAAE;AAFF,GAAhB;;AAIA,MAAIF,UAAJ,EAAgB;AACZjU,WAAO,CAAC,iBAAD,CAAP,GAA6B,SAA7B;AACH;;AACD,SAAOA,OAAP;AACH;AAEM,SAASoP,YAAT,CAAsBgF,MAAtB,EAAyCC,OAAzC,EAAkE;AACrE,SAAOD,MAAM,GAAGC,OAAhB;AACH,C;;;;;;;;;;;;;;;;;;;;;;;AChrBY;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,wGAAsB;AACzD;AACA;AACA;AACA,iC;;;;;;;;;;;;ACNa;AACb;AACA,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,kCAAkC,mBAAO,CAAC,sFAA0B;AACpE,2BAA2B,mBAAO,CAAC,sFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE;AACvE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8C;;;;;;;;;;;;ACtGa;AACb,8CAA8C,cAAc;AAC5D,qBAAqB,mBAAO,CAAC,kFAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;;;;;;ACXa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4EAA4E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wFAAwF;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,+EAA+E;AAChF;AACA;AACA;AACA;AACA,CAAC,6DAA6D;AAC9D;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,wC;;;;;;;;;;;;AC3Pa;AACb;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC,6DAA6D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB,wDAAwD;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C,kCAAkC,WAAW,oBAAoB,kBAAkB,8BAA8B,GAAG;AACpH,aAAa,GAAG;AAChB;AACA;AACA;AACA;;;;;;;;;;;;;AC9Ea;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,sEAAW;AACnC,iBAAiB,mBAAO,CAAC,wEAAY;AACrC,eAAe,mBAAO,CAAC,8EAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wCAAwC;AACxC,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,gGAAgG,0BAA0B,EAAE;AAC5H,4IAA4I,uDAAuD,EAAE;AACrM;AACA;AACA,wCAAwC,8DAA8D;AACtG;AACA,2CAA2C,iEAAiE;AAC5G;AACA,4CAA4C,kEAAkE;AAC9G;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6CAA6C;AACzF,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kD;;;;;;;;;;;;AClNa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA,oC;;;;;;;;;;;;ACNa;AACb,8CAA8C,cAAc;AAC5D;AACA,eAAe,mBAAO,CAAC,8EAAe;AACtC;AACA;AACA,wGAAwG,8BAA8B,EAAE;AACxI;AACA;AACA;AACA,wGAAwG,4BAA4B,EAAE;AACtI;AACA;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,uGAAuG,oBAAoB,EAAE;AAC7H;AACA;AACA;AACA,uGAAuG,2BAA2B,EAAE;AACpI;AACA,mC;;;;;;;;;;;;ACxBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,iBAAiB,EAAE;AACvE;AACA,kC;;;;;;;;;;;;ACzCa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kCAAkC,EAAE;AAC5E;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1Ba;AACb,8CAA8C,cAAc;AAC5D,yBAAyB,mBAAO,CAAC,2FAAoB;AACrD;AACA,gBAAgB,mBAAO,CAAC,yEAAW;AACnC;AACA;;;;;;;;;;;;;ACNa;AACb;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,+CAA+C,mBAAO,CAAC,6KAAkD;AACzG,eAAe,mBAAO,CAAC,uJAAuC;AAC9D,0BAA0B,mBAAO,CAAC,wGAAqB;AACvD,cAAc,mBAAO,CAAC,gFAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,QAAQ,gRAAgR;AACrV,+DAA+D,QAAQ,uRAAuR;AAC9V,qEAAqE,QAAQ,4SAA4S;AACzX;AACA;AACA,iEAAiE,uCAAuC,EAAE;AAC1G;AACA;AACA;AACA,kEAAkE,wCAAwC,EAAE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2CAA2C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,8C;;;;;;;;;;;;ACvMa;AACb;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,+CAA+C,mBAAO,CAAC,6KAAkD;AACzG,eAAe,mBAAO,CAAC,uJAAuC;AAC9D;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA,gEAAgE,sCAAsC,EAAE;AACxG;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D,oCAAoC,4BAA4B;AAChE,2CAA2C,4BAA4B;AACvE,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD,qDAAqD,mCAAmC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA,0CAA0C,yBAAyB;AACnE,uCAAuC,sBAAsB;AAC7D,oCAAoC,2BAA2B;AAC/D,2CAA2C,kCAAkC;AAC7E,0CAA0C,yCAAyC;AACnF,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA,oFAAoF,oBAAoB,EAAE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iC;;;;;;;;;;;;ACrJa;AACb;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB,iCAAiC,mCAAmC,sCAAsC;AACrK,4CAA4C,0BAA0B;AACtE,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,6C;;;;;;;;;;;;AC5Ha;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,uHAAW;AACnC,iBAAiB,mBAAO,CAAC,yHAAY;AACrC,eAAe,mBAAO,CAAC,+HAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wCAAwC;AACxC,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,gGAAgG,0BAA0B,EAAE;AAC5H,4IAA4I,uDAAuD,EAAE;AACrM;AACA;AACA,wCAAwC,8DAA8D;AACtG;AACA,2CAA2C,iEAAiE;AAC5G;AACA,4CAA4C,kEAAkE;AAC9G;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6CAA6C;AACzF,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kD;;;;;;;;;;;;AClNa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA,oC;;;;;;;;;;;;ACNa;AACb,8CAA8C,cAAc;AAC5D;AACA,eAAe,mBAAO,CAAC,+HAAe;AACtC;AACA;AACA,wGAAwG,8BAA8B,EAAE;AACxI;AACA;AACA;AACA,wGAAwG,4BAA4B,EAAE;AACtI;AACA;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,uGAAuG,oBAAoB,EAAE;AAC7H;AACA;AACA;AACA,uGAAuG,2BAA2B,EAAE;AACpI;AACA,mC;;;;;;;;;;;;ACxBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,iBAAiB,EAAE;AACvE;AACA,kC;;;;;;;;;;;ACzCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvLtC;AAEO,IAAMC,eAAb,GAUwB;AACD;AAEnB,yBACIC,SADJ,EAEIC,aAFJ,EAGIC,WAHJ,EAIIC,UAJJ,EAKE;AAAA;;AAAA;;AAAA,OAjBMC,QAiBN,GAjBiB,OAiBjB;AAAA,OAhBMC,QAgBN,GAhBiB,QAgBjB;AAAA,OAfMC,cAeN,GAfuB,OAevB;AAAA,OAdMC,IAcN,GAda,OAcb;AAAA,OAbMP,SAaN;AAAA,OAZMC,aAYN;AAAA,OAXMC,WAWN;AAAA,OAVMC,UAUN;AAAA,OARFK,OAQE,GARQ,QAQR;AAAA,OAPFC,OAOE,GAPQ,OAOR;;AAAA,OAOKC,mBAPL,GAO2B,YAAc;AACvC,QAAIC,gBAAJ;AACA,QAAIC,KAAJ;;AAEA,QAAI,KAAI,C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","file":"processor.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./generated_module/src/processor.tsx\");\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { MyExportInterfaces, createExportInterfaces } from \"../interfaces/exports\";\nimport { MyImportInterfaces, createImportInterfaces } from \"../interfaces/imports\";\nimport * as Types from \"../types\";\nimport { pin_row } from \"@microchip/pin-standard\";\nimport * as AutoModuleTypes from \"../types/AutoModuleTypes\";\nimport {\n MyAutoModuleAppModel,\n createAutoModuleAppModel,\n} from \"../autoModule/AutoModuleAppModel\";\nimport {\n getFriendlyInterfaceId,\n getRegisterValues,\n} from \"../autoModule/AutoModuleHelpers\";\nimport { ModuleConfig } from \"../types/AutoModuleTypes\";\nimport { PCPHelper } from \"../pins/PCPHelper\";\nimport { getConfigData } from \"../autoModule/getConfigData\";\n\ninterface PinsLogic {\n getCompletePinData(appModel: AppModel): any;\n getRowData(appModel: AppModel, rowData: pin_row): pin_row;\n}\n\nconst getPinsLogic = (): PinsLogic => {\n try {\n return require(\"../../../src/PinsLogic.ts\");\n } catch (ex) {\n const getCompletePinData = (appModel: AppModel): any => {\n return {};\n };\n const getRowData = (appModel: AppModel, rowData: pin_row): pin_row => {\n return rowData;\n };\n return {\n getCompletePinData: getCompletePinData,\n getRowData: getRowData,\n };\n }\n};\n\nexport const getModel = (\n prototype: AutoModuleTypes.MyModule,\n getDerivedData: (appModel: AutoModuleTypes.AppModel) => AutoModuleTypes.DerivedData,\n): AutoModuleTypes.AppModel | undefined => {\n return new AppModel(prototype, getDerivedData);\n};\n\nclass AppModel implements AutoModuleTypes.AppModel {\n private prototype: AutoModuleTypes.MyModule;\n private getDerivedDataFunction: (\n appModel: AutoModuleTypes.AppModel,\n ) => AutoModuleTypes.DerivedData;\n private derivedData: AutoModuleTypes.DerivedData;\n private exportInterfaces: MyExportInterfaces;\n private importInterfaces: MyImportInterfaces;\n private autoModuleAppModel: MyAutoModuleAppModel;\n private registerValues: AutoModuleTypes.MyRegisterValues | undefined;\n private interrupts: Types.Interrupts | undefined;\n private properties: Types.Properties | undefined;\n private registers: Types.Registers | undefined;\n private pcpHelper: PCPHelper;\n private defaultHardware: AutoModuleTypes.MyHardware;\n\n constructor(\n prototype: AutoModuleTypes.MyModule,\n getDerivedData: (\n appModel: AutoModuleTypes.AppModel,\n ) => AutoModuleTypes.DerivedData,\n ) {\n this.prototype = prototype;\n this.getDerivedDataFunction = getDerivedData;\n this.pcpHelper = new PCPHelper();\n this.pcpHelper.setCallbacks({\n getCompletePinData: () => getPinsLogic().getCompletePinData(this),\n getRowData: (rowData) => getPinsLogic().getRowData(this, rowData),\n });\n }\n\n public getState = (): AutoModuleTypes.MyState | undefined => this.prototype.state;\n\n public getPayload = (): AutoModuleTypes.MyPayload => this.prototype.payload;\n\n public getImports = (): Types.MyImports => this.prototype.imports;\n\n public getExports = (): Types.MyExports => this.prototype.exports;\n\n public getName = (): string => {\n return this.getAutoModuleAppModel().getModuleName();\n };\n\n public getActiveName = (): string => {\n return this.getDerivedFunctions().getActiveName?.() ?? this.getName();\n };\n\n public getAutoModuleAppModel = (): MyAutoModuleAppModel => {\n if (this.autoModuleAppModel) return this.autoModuleAppModel;\n this.autoModuleAppModel = createAutoModuleAppModel(this);\n return this.autoModuleAppModel;\n };\n\n public getPrototypeModule = (): AutoModuleTypes.MyModule => {\n return this.prototype;\n };\n\n public getRegisterValues = (\n interfaceName?: string,\n config?: ModuleConfig,\n ): AutoModuleTypes.MyRegisterValues | undefined => {\n if (this.registerValues) return this.registerValues;\n this.registerValues = getRegisterValues(this, interfaceName, config);\n return this.registerValues;\n };\n\n public getInterrupts = (): Types.Interrupts | undefined => {\n if (this.interrupts) return this.interrupts;\n this.interrupts = this.getHardware()?.getPeripheral()?.interrupts;\n return this.interrupts;\n };\n\n public getProperties = (): Types.Properties | undefined => {\n if (this.properties) return this.properties;\n this.properties = this.getHardware()?.getPeripheral()?.properties;\n return this.properties;\n };\n\n public getRegisters = (): Types.Registers | undefined => {\n if (this.registers) return this.registers;\n this.registers = this.getHardware()?.getPeripheral()?.registers;\n return this.registers;\n };\n\n public getHardware = (\n interfaceName?: string,\n config?: ModuleConfig,\n ): AutoModuleTypes.MyHardware | undefined => {\n interfaceName = getFriendlyInterfaceId(interfaceName);\n if (interfaceName) {\n const peripheral = this.getPrototypeModule()?.imports?.[interfaceName]\n ?.payload as Types.MyPeripheral;\n if (!peripheral) return undefined;\n return {\n getPeripheral: (): Types.MyPeripheral => peripheral,\n getName: (): string => peripheral.name,\n instanceNumber: Number(\n peripheral.instance ?? peripheral.name.replace(peripheral.group, \"\"),\n ),\n };\n }\n if (!this.defaultHardware) {\n const peripheralName: string | undefined = getFriendlyInterfaceId(\n getConfigData(this, config)?.peripherals?.[0]?.interfaceId.name,\n );\n const peripheral = this.getPrototypeModule()?.imports?.[peripheralName ?? \"\"]\n ?.payload;\n if (peripheral) {\n this.defaultHardware = {\n getPeripheral: (): Types.MyPeripheral =>\n peripheral as Types.MyPeripheral,\n getName: (): string => peripheral.name,\n instanceNumber: Number(\n peripheral.instance ??\n peripheral.name.replace(peripheral.group, \"\"),\n ),\n };\n }\n }\n return this.defaultHardware;\n };\n\n public getPeripheralDescription = (): Types.MyPeripheral | undefined => {\n return this.getHardware()?.getPeripheral();\n };\n\n public getDerivedData = (): AutoModuleTypes.DerivedData => {\n if (this.derivedData) return this.derivedData;\n this.derivedData = this.getDerivedDataFunction(this);\n return this.derivedData;\n };\n\n public getDerivedFunctions = (): AutoModuleTypes.DerivedFunctions => {\n return this.getDerivedData().getMyFunctions();\n };\n\n public getDerivedFunction = (\n functionName: AutoModuleTypes.DerivedFunctionNames,\n ...args: any[]\n ): any | undefined => {\n return this.getDerivedFunctions()?.[functionName]?.(...args);\n };\n\n public getExportInterfaces = (): MyExportInterfaces => {\n if (this.exportInterfaces) return this.exportInterfaces;\n this.exportInterfaces = createExportInterfaces(this.prototype.exports, this);\n return this.exportInterfaces;\n };\n\n public getImportInterfaces = (): MyImportInterfaces => {\n if (this.importInterfaces) return this.importInterfaces;\n this.importInterfaces = createImportInterfaces(this.prototype.imports, this);\n return this.importInterfaces;\n };\n\n public isControlledByInterface = (componentName: Types.MyComponentNames): boolean => {\n return this.getExportInterfaces()?.isControlledByInterface(componentName) == true;\n };\n\n public getAssignedImport = <T extends Types.MyImportNames>(\n importName: T,\n ): Types.MyImports[T] | undefined => {\n if (\n this.prototype.imports?.[importName] &&\n Processor.isAssigned(this.prototype.imports[importName])\n ) {\n return this.prototype.imports[importName];\n }\n return undefined;\n };\n\n public getImportValue = <T extends Types.MyImportNames>(\n importName: T,\n ): Types.MyImports[T][\"payload\"] => {\n return this.getAssignedImport(importName)?.payload;\n };\n\n public filterImportBySetting = <T extends Types.MyImportNames = Types.MyImportNames>(\n populatedImports: Types.MyImports,\n importKey: T,\n optionFilter: (\n option: Processor.Option<Types.MyImports[T][\"payload\"]>,\n ) => boolean,\n ): Types.MyImports => {\n let filteredImports: Types.MyImports = {\n ...populatedImports,\n };\n if (populatedImports[importKey]) {\n filteredImports = {\n ...filteredImports,\n [importKey]: Processor.filterOptions(\n populatedImports[importKey],\n (option) => {\n return optionFilter(option);\n },\n ),\n };\n }\n return filteredImports;\n };\n\n public getComponentValue(componentName: string): any | undefined {\n return this.getAutoModuleAppModel().getComponentValue(componentName);\n }\n\n public isComponentValue = (componentName: Types.MyComponentNames): boolean => {\n const value = this.getComponentValue(componentName);\n return value === true || value === \"enabled\";\n };\n\n public getComponent = (\n componentName: Types.MyComponentNames,\n ): AutoModuleTypes.MyComponent | undefined => {\n return this.getAutoModuleAppModel().getComponent(componentName);\n };\n\n public getPCPHelper = (): PCPHelper => {\n return this.pcpHelper;\n };\n}\n","export type Dictionary<T> = Record<string, T>;\n\n/** @returns the non-prototype keys of the given object */\nexport const getKeys = (obj: object): string[] => {\n /* eslint-disable-line */\n return Object.getOwnPropertyNames(obj);\n};\n\nexport const values = <T = any>(obj: { [key: string]: T }): T[] => {\n return getKeys(obj).map((key: string): T => obj[key]);\n};\n\nexport const forEach = <T>(\n obj: Dictionary<T>,\n action: (key: string, value: T) => void,\n): void => {\n getKeys(obj).forEach((key: string): void => action(key, obj[key]));\n};\n\nexport const map = <T, R>(\n obj: Dictionary<T>,\n mapper: (key: string, value: T) => R,\n): R[] => {\n return getKeys(obj).map((key: string): R => mapper(key, obj[key]));\n};\n\ntype NonNullAssertion = <T>(val: T, msg?: string) => asserts val is NonNullable<T>;\n\nexport const assertNotNull: NonNullAssertion = <T>(\n val: T,\n msg?: string,\n): asserts val is NonNullable<T> => {\n if (val == null) {\n throw new Error(msg);\n }\n};\n\nexport const toDictionary = <T, V>(\n arr: T[],\n keyMapper: (input: T) => string,\n valueMapper: (input: T) => V,\n): Dictionary<V> => {\n const result: Dictionary<V> = {};\n arr.forEach((entry) => {\n result[keyMapper(entry)] = valueMapper(entry);\n });\n return result;\n};\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./generated_module/src/autoModule sync recursive\";","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport {\n ModuleConfig as MyModuleConfig,\n MyComponent,\n MyComponentValueList,\n} from \"../types/AutoModuleTypes\";\nimport * as AutoModuleHelper from \"./AutoModuleHelpers\";\nimport { Setting } from \"@microchip/scf-device\";\nimport { getOptionByName } from \"@microchip/scf-device/lib/Setting\";\nimport { getConfigData } from \"./getConfigData\";\nimport { values } from \"../Utils\";\nimport { AppModel, MyHardware, MyState } from \"../types/AutoModuleTypes\";\nimport { getKeys } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { AutoModuleAppModel } from \"@microchip/scf-automodule-interface/lib/src/types\";\nimport { MyComponentNames } from \"../types\";\n\nexport const createAutoModuleAppModel = (\n model: AppModel,\n config?: MyModuleConfig,\n): MyAutoModuleAppModel => {\n return new MyAutoModuleAppModel(model, config);\n};\n\nexport class MyAutoModuleAppModel implements AutoModuleAppModel<MyComponentNames> {\n private model: AppModel;\n private state: MyState | undefined;\n private hardware: MyHardware | undefined;\n private config: MyModuleConfig;\n private componentList: any;\n private moduleName: string;\n\n constructor(model: AppModel, config?: MyModuleConfig) {\n this.model = model;\n this.state = this.model.getState();\n this.hardware = this.model.getHardware();\n this.config = getConfigData(model, config);\n this.componentList = this.createComponentList();\n }\n\n public getModuleName = (): string => {\n if (this.moduleName) return this.moduleName;\n\n this.moduleName =\n this.model.getDerivedFunctions().moduleName?.() ??\n (this.model.getComponentValue(\"componentName\") as string) ??\n this.model.getHardware()?.getName() ??\n this.config?.moduleName ??\n \"Module\";\n return this.moduleName;\n };\n\n private createComponentList = (): MyComponentValueList => {\n const componentList = {};\n\n const components: ModuleConfig.Component<\n MyComponentNames | string\n >[] = this.getComponentList(this.config);\n\n const componentsWithDynamicDependencySelectors = [\n ...components,\n ...this.getDefaultDependencySelectors(components),\n ];\n\n if (componentsWithDynamicDependencySelectors) {\n componentsWithDynamicDependencySelectors.forEach((component) => {\n componentList[component.name] = {\n component: component,\n };\n });\n }\n\n return componentList as MyComponentValueList;\n };\n\n private getDefaultDependencySelectors(\n components: ModuleConfig.Component<MyComponentNames | string>[],\n ): ModuleConfig.Component<MyComponentNames | string>[] {\n const dynamicDependencySelectors: ModuleConfig.Component<\n MyComponentNames | string\n >[] = [];\n\n let defaultTab = \"main\";\n let defaultGroup = \"software\";\n if (components.length > 0) {\n defaultTab = components[0].tabs[0];\n defaultGroup = components[0].group;\n }\n const imports = this.model.getImports();\n if (imports) {\n const importedNames = Object.keys(imports);\n\n importedNames.forEach((name) => {\n const dependencySelectors = components.filter(\n (component) =>\n component[\"importId\"] && component[\"importId\"] === name,\n );\n if (dependencySelectors.length === 0) {\n dynamicDependencySelectors.push({\n name: name + \" dependency selector\",\n importId: name,\n category: \"import\",\n type: \"ComboBox\",\n description: name + \" dependency selector\",\n group: defaultGroup,\n tabs: [defaultTab],\n });\n }\n });\n }\n\n return dynamicDependencySelectors;\n }\n\n public getAllComponents = (): MyComponentValueList => this.componentList;\n\n private getComponentList = (\n config?: MyModuleConfig,\n ): ModuleConfig.Component<MyComponentNames>[] => {\n const components: ModuleConfig.Component<MyComponentNames>[] = [];\n config = getConfigData(this.model, config);\n if (!config) return components;\n\n //Software Components\n values(config.softwareData ?? {})?.forEach((entry) => {\n components.push(entry);\n });\n\n //Hardware Components\n config.peripherals?.forEach((peripheral) => {\n if (peripheral.registers) {\n getKeys(peripheral.registers)?.forEach((registerName) => {\n peripheral.registers?.[registerName]?.forEach((setting) => {\n //Only add hardware components that exist at runtime\n const hardwareRegister = this.model.getHardware()?.getPeripheral()\n .registers?.[registerName];\n if (\n !hardwareRegister?.settings ||\n hardwareRegister.settings[setting.setting] ||\n hardwareRegister.type === \"register\"\n ) {\n components.push(setting);\n }\n });\n });\n }\n });\n\n //Custom Dynamic Components\n this.model\n .getDerivedFunctions()\n .getDynamicComponents?.()\n .forEach((component) => {\n components.push(component as ModuleConfig.Component<MyComponentNames>);\n });\n return components;\n };\n\n public isComponent(componentName: MyComponentNames): boolean | undefined;\n public isComponent(componentName: string): boolean | undefined;\n public isComponent(componentName: string): boolean | undefined {\n const component: ModuleConfig.Component<MyComponentNames> = this.componentList[\n componentName\n ]?.component;\n const componentValue = this.getComponentValue(componentName);\n if (component.category === \"software\") {\n if (component.type === \"boolean\") {\n return this.getComponentValue(componentName) as boolean;\n }\n return componentValue !== undefined;\n } else if (component.category === \"hardware\") {\n return componentValue === this.config.booleanValues.true;\n }\n return undefined;\n }\n\n public getComponentValue<T extends MyComponentNames = MyComponentNames>(\n componentName: T,\n ): MyComponent<T>[\"value\"] | undefined;\n public getComponentValue(\n componentName: string,\n ): MyComponent<any>[\"value\"] | undefined;\n public getComponentValue(\n componentName: string,\n ): MyComponent<any>[\"value\"] | undefined {\n return this.getComponent(componentName)?.value;\n }\n\n public getComponent<T extends MyComponentNames = MyComponentNames>(\n componentName: T,\n ): MyComponent<T> | undefined;\n public getComponent(componentName: string): MyComponent<any> | undefined;\n public getComponent(componentName: string): MyComponent<any> | undefined {\n if (this.componentList[componentName]?.value != undefined)\n return this.componentList[componentName];\n\n const component: ModuleConfig.Component<any> = this.componentList[componentName]\n ?.component;\n component?.tabs.forEach((tab) => {\n if (component) {\n if (component.category === \"software\") {\n this.componentList[\n componentName\n ].value = this.getSoftwareComponentValue(tab, component);\n } else if (component.category === \"hardware\") {\n const setting:\n | Setting\n | undefined = AutoModuleHelper.getSettingFromComponent(\n this.model,\n component,\n );\n if (component.type === \"boolean\") {\n this.componentList[\n componentName\n ].value = this.getHardwareComponentBooleanValue(\n tab,\n component,\n setting,\n );\n } else {\n this.componentList[\n componentName\n ].value = this.getHardwareComponentValue(tab, component, setting);\n }\n } else if (component.category === \"import\") {\n this.componentList[\n componentName\n ].value = this.getDependencyComponentValue(component);\n }\n this.componentList[componentName].component.actions = this.getActions(\n component,\n );\n }\n });\n\n return this.componentList[componentName];\n }\n\n private getActions = (\n component: ModuleConfig.Component<MyComponentNames>,\n ): ModuleConfig.AutoAction | undefined => {\n return (\n this.model.getDerivedFunctions().getActions?.(component.name) ??\n component.actions\n );\n };\n\n public getDefaultComponentAction = (\n componentName: MyComponentNames,\n ): ModuleConfig.AutoAction => {\n const component = this.getComponent(componentName)?.component;\n return {\n type: \"[FORM] SUBMIT\",\n payload: {\n tabId: \"main\",\n path: `${component?.group}.${component?.name}`,\n value: \"%v\",\n },\n };\n };\n\n private getSoftwareComponentValue = (\n tab: string,\n component: ModuleConfig.SoftwareComponent<MyComponentNames>,\n ): any => {\n const overriddenValue = this.model.getDerivedFunction(component.name);\n if (overriddenValue != undefined) {\n return overriddenValue;\n }\n if (this.model.isControlledByInterface(component.name)) {\n const processedArg = this.model\n .getExportInterfaces()\n .getProcessedArgValue(component.name);\n if (processedArg != undefined) {\n return processedArg.value;\n }\n }\n return (\n this.state?.[tab]?.[component.group]?.[component.name] ??\n AutoModuleHelper.getDefaultValue(\n this.model.getDerivedFunctions().overrideDefaultValues,\n component,\n )\n );\n };\n\n public getHardwareComponentValue = (\n tab: string,\n component: ModuleConfig.HardwareComponent<MyComponentNames>,\n setting: Setting | undefined,\n ): string | undefined => {\n if (!this.hardware) return undefined;\n\n const overriddenValue = this.model.getDerivedFunction(component.name);\n if (overriddenValue != undefined) {\n return overriddenValue;\n }\n\n if (this.model.isControlledByInterface(component.name)) {\n const processedArg = this.model\n .getExportInterfaces()\n .getProcessedArgValue(component.name);\n if (processedArg != undefined) {\n return processedArg.value;\n }\n }\n const overriddenCompValue = AutoModuleHelper.getOverrideDefaultValue(\n component,\n this.model,\n );\n\n let value: any; // value based on priority\n if (this.state?.[tab]?.[component.group]?.[component.name] != null) {\n value = this.state[tab][component.group][component.name];\n } else if (overriddenCompValue !== undefined) {\n value = overriddenCompValue;\n } else {\n value =\n setting !== undefined\n ? component.overrideDefaultValue\n ? component.overrideDefaultValue\n : this.getDefaultValue(component.displayOptionSetting, setting)\n : component.overrideDefaultValue ?? undefined;\n }\n\n //if filtered mode -> get options\n if (value != undefined && component.mode?.operation === \"filterOptions\") {\n const options = AutoModuleHelper.getSettingOptionsIfPresent(\n component,\n setting,\n this.model.getComponent(component.mode?.masterComponent)?.value,\n );\n if (options.indexOf(value) == -1) {\n value = options[0];\n }\n }\n return value;\n };\n\n public getHardwareComponentBooleanValue = (\n tab: string,\n component: ModuleConfig.HardwareComponent<MyComponentNames>,\n setting: Setting | undefined,\n ): string | undefined => {\n if (!this.hardware) return undefined;\n\n const overriddenValue = this.model.getDerivedFunction(component.name);\n if (overriddenValue != undefined) {\n return overriddenValue;\n }\n\n if (this.model.isControlledByInterface(component.name)) {\n const processedArg = this.model\n .getExportInterfaces()\n .getProcessedArgValue(component.name);\n if (processedArg != undefined) {\n return processedArg.value;\n }\n }\n\n const overriddenCompValue = AutoModuleHelper.getOverrideDefaultValue(\n component,\n this.model,\n );\n\n return this.state?.[tab]?.[component.group]?.[component.name] != null\n ? this.state[tab][component.group][component.name]\n ? this.config.booleanValues.true\n : this.config.booleanValues.false\n : overriddenCompValue !== undefined\n ? overriddenCompValue\n : setting !== undefined\n ? component.overrideDefaultValue\n ? component.overrideDefaultValue\n : this.getDefaultValue(component.displayOptionSetting, setting)\n : undefined;\n };\n\n public getDependencyComponentValue = (\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ): string | undefined => {\n const dependencySelector: AutoModuleHelper.DependencySelector = new AutoModuleHelper.DependencySelector(\n this.model,\n component,\n );\n const imp = this.model.getImports()[component.importId];\n if (imp?.handle) {\n return dependencySelector.createOptionLabel(imp.handle, imp.payload);\n }\n return \"None\";\n };\n\n private getDefaultValue = (\n optionType: string | undefined,\n setting: Setting,\n ): string | undefined => {\n if (optionType == undefined) return setting.defaultValue;\n if (setting.defaultValue) {\n return getOptionByName(setting.defaultValue, setting)?.[optionType];\n }\n return undefined;\n };\n}\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport * as Creator from \"@microchip/scf-common/lib/Creator\";\nimport { ModuleConfig } from \"../types/AutoModuleTypes\";\nimport { isAssigned } from \"@microchip/scf-common/lib/Processor\";\nimport { getConfigData } from \"./getConfigData\";\nimport { map } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { Peripheral } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { getFriendlyInterfaceId } from \"./AutoModuleHelpers\";\n\nexport const createPrototypeImport = (\n interfaceName: string,\n config?: ModuleConfig,\n): Creator.Interface | undefined => {\n config = getConfigData(undefined, config);\n return config?.imports?.[interfaceName]?.import;\n};\n\nexport const isFullyAssigned = <T extends Processor.Imports = Processor.Imports>(\n imports: T,\n config?: ModuleConfig,\n): boolean => {\n config = getConfigData(undefined, config);\n\n //get peripheral interfaces.\n const interfaces = getHardwareInterfaces(config?.peripherals ?? []);\n\n for (let i = 0; i < interfaces.length; i++) {\n const imp = imports[interfaces[i]];\n if (!imp || !isAssigned(imp)) {\n return false;\n }\n }\n return true;\n};\n\n//Assumes hardware import keys are the same as the interface IDs\nconst getHardwareInterfaces = (peripherals: Peripheral[]): string[] => {\n const interfaces: string[] = map(peripherals, (peripheral) => {\n return getFriendlyInterfaceId(peripheral.interfaceId.name) ?? \"\";\n });\n return interfaces;\n};\n","/* eslint @typescript-eslint/no-var-requires: \"off\" */\nimport { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport * as Device from \"@microchip/scf-device\";\nimport { find, filter, map } from \"@microchip/scf-device/lib/util/Arrays\";\nimport CalculateRegisterValue from \"@microchip/scf-device/lib/CalculateRegisterValue\";\nimport { Setting } from \"@microchip/scf-device\";\nimport { getOptionByAlias, getOptionByName } from \"@microchip/scf-device/lib/Setting\";\nimport { getConfigData } from \"./getConfigData\";\nimport { getKeys } from \"../Utils\";\nimport { MyComponentNames, MyPeripheral, Register } from \"../types\";\nimport {\n AppModel,\n ModuleConfig as MyModuleConfig,\n MyRegisterValues,\n} from \"../types/AutoModuleTypes\";\nimport {\n RegisterValue,\n SettingValue,\n} from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { SoftwareComboBoxComponent } from \"@microchip/scf-automodule-interface/lib/src/SoftwareComponents\";\nimport { Import, Option } from \"@microchip/scf-common/lib/Processor\";\nimport { Handle } from \"@microchip/scf-common\";\n\nexport const castComponent = (\n component: ModuleConfig.Component<MyComponentNames>,\n): ModuleConfig.Component<MyComponentNames> => {\n switch (component.category) {\n case \"software\":\n return component;\n case \"import\":\n return component;\n case \"hardware\":\n return component;\n default:\n throw Error(\"Unsupported Component Type\");\n }\n};\n\nexport const getDefaultValue = (\n overrideDefaultValues: ((componentName: MyComponentNames) => any) | undefined,\n component: ModuleConfig.SoftwareComponent<MyComponentNames>,\n): ModuleConfig.SoftwareComponent[\"defaultValue\"] => {\n return (\n overrideDefaultValues?.(component.name) ??\n (component.type === \"ComboBox\"\n ? component.defaultValue.value\n : component.defaultValue)\n );\n};\n\nexport const getComboOptions = (\n overrideOptions: ((componentName: MyComponentNames) => string[]) | undefined,\n component: SoftwareComboBoxComponent<MyComponentNames>,\n): any[] => {\n return overrideOptions?.(component.name) ?? component?.defaultValue?.[\"options\"];\n};\n\nexport const hasConfigBits = (interfaceName: string): boolean => {\n return getFriendlyInterfaceId(interfaceName)?.indexOf(\"configuration_bits\") != -1;\n};\n\nexport const getRegisterValues = (\n model: AppModel,\n interfaceName?: string,\n config?: MyModuleConfig,\n): MyRegisterValues => {\n const registers: MyRegisterValues = {} as MyRegisterValues;\n config = getConfigData(model, config);\n interfaceName = getFriendlyInterfaceId(interfaceName);\n\n config?.peripherals?.forEach((peripheral) => {\n const peripheralName = getFriendlyInterfaceId(peripheral.interfaceId.name) ?? \"\";\n if (hasConfigBits(peripheralName)) return;\n if (\n (interfaceName != undefined && peripheralName !== interfaceName) ||\n !peripheral.registers\n )\n return;\n getKeys(peripheral.registers ?? {})?.forEach((regName) => {\n let registerValue: RegisterValue<string>;\n const reg = model.getHardware(peripheralName)?.getPeripheral().registers?.[\n regName\n ];\n if (reg) {\n registerValue = {\n comment: \"\",\n value: 0,\n valueAsHex: \"0x00\",\n name: reg?.name,\n alias: reg?.alias ?? reg?.name,\n settings: {},\n };\n } else {\n return;\n }\n\n const registerVal = CalculateRegisterValue.for(reg as Device.Register);\n const comments: string[] = [];\n peripheral.registers?.[regName].forEach((set) => {\n const setting: Device.Setting | undefined = reg.settings?.[set.setting];\n if (setting) {\n if (setting.type !== \"R\") {\n //Add Comments\n comments.push(\n `${set.setting} ${model.getComponentValue(set.name)}; `,\n );\n }\n if (registerValue?.settings) {\n registerValue.settings[setting.alias] = getSettingBits(\n reg,\n setting,\n model.getComponent(set.name)?.value as string,\n config?.deviceType ?? \"PIC\",\n );\n }\n switch (set.type) {\n case \"ComboBox\":\n case \"boolean\":\n registerVal.withNumberValue(\n setting,\n getOptionValueByName(\n setting,\n model.getComponent(set.name)?.value as string,\n ) ?? 0,\n );\n break;\n case \"number\":\n registerVal.withNumberValue(\n setting,\n model.getComponentValue(set.name as string) as number,\n );\n break;\n case \"register\":\n case \"string\":\n registerVal.withNumberValue(\n setting,\n Number(model.getComponentValue(set.name)),\n );\n break;\n default:\n break;\n }\n }\n });\n if (reg.settings) {\n registerValue.value = registerVal.asNumber();\n } else {\n registerValue.value = Number(\n model.getComponentValue(\n peripheral.registers?.[regName]?.[0]?.name ?? \"\",\n ) ?? 0,\n );\n comments.push(`${registerValue.name} ${registerValue.value}; `);\n }\n registerValue.valueAsHex =\n \"0x\" + registerValue.value.toString(16).toUpperCase();\n registerValue.comment = sortComments(comments, reg);\n\n registers[reg?.alias ?? reg.name] = registerValue;\n });\n });\n\n return registers;\n};\n\nconst sortComments = (comments: string[], register: Register): string => {\n comments.sort((a, b): number => {\n const settingA = register.settings?.[a.split[\" \"]?.[0]];\n const settingB = register.settings?.[b.split(\" \")?.[0]];\n return Number(settingB?.mask) - Number(settingA?.mask);\n });\n\n return comments.join(\"\");\n};\n\nexport const getSettingBits = (\n register: Register,\n setting: Device.Setting,\n value: string,\n deviceType: string,\n): SettingValue => {\n const setValNumber = Number(getOptionByAlias(value, setting)?.value ?? 0);\n const settingValue: SettingValue = {\n alias: setting.alias,\n name: setting.name,\n value: setValNumber ?? 0,\n valueAsHex: \"0x\" + setValNumber.toString(16).toUpperCase(),\n valueAsDescription: value,\n bitName:\n deviceType === \"PIC\"\n ? `${register.name}bits.${setting.name}`\n : `${register.name}.${setting.name}`,\n };\n return settingValue;\n};\n\nconst getRegisterFromComponent = (\n hardware: MyPeripheral | undefined,\n component: ModuleConfig.HardwareComponent,\n): Register | undefined => {\n const registerName = component.name\n .replace(component.setting.toLowerCase(), \"\")\n ?.toUpperCase();\n const register = hardware?.registers?.[registerName];\n\n if (register) {\n return register;\n } else {\n const regName = component.name\n .replace(component.setting.toLowerCase(), \"\")\n ?.toUpperCase();\n let registers: string[] | undefined = getKeys(hardware?.registers ?? {});\n for (let reg of registers ?? []) {\n const modifiedRegName = reg.replace(/\\_/g, \"\");\n if (regName === modifiedRegName) {\n return hardware?.registers?.[reg];\n }\n }\n }\n};\n\nexport const getSettingFromComponent = (\n model: AppModel,\n component: ModuleConfig.HardwareComponent,\n config?: MyModuleConfig,\n): Device.Setting | undefined => {\n config = getConfigData(model, config);\n let setting: Device.Setting | undefined;\n\n if (model) {\n config?.peripherals?.forEach((peripheral) => {\n if (setting) return;\n const peripheralName = getFriendlyInterfaceId(peripheral.interfaceId.name);\n const hardware = model.getHardware(peripheralName, config)?.getPeripheral();\n const register = getRegisterFromComponent(hardware, component);\n if (register && !register.settings) {\n //No settings for this particular register. Create one\n setting = {\n alias: register.alias ?? register.name,\n name: register.name,\n defaultValue: register.defaultValue,\n type: register.type,\n description: register.desc,\n porDefault: register.defaultValue,\n };\n } else {\n setting = register?.settings?.[component.setting];\n }\n });\n }\n\n return setting;\n};\n\nexport const getOptionValueByName = (\n setting: Device.Setting,\n optionName: string,\n): number | undefined => {\n if (!setting) return undefined;\n\n let optionValue: string | undefined = setting.porDefault;\n if (setting.options) {\n setting.options.forEach((option) => {\n if (option.name === optionName || option.description === optionName) {\n optionValue = option.value;\n }\n });\n }\n return Number(optionValue);\n};\n\nexport const getSettingDefaultIfPresent = (\n component: ModuleConfig.HardwareComponent,\n setting: Setting | undefined,\n overrideDefaultValue: any | undefined,\n): string | undefined => {\n let defaultValue: string | undefined;\n if (overrideDefaultValue !== undefined) {\n return overrideDefaultValue;\n }\n if (component.overrideDefaultValue) {\n return component.overrideDefaultValue;\n }\n\n if (setting?.defaultValue) {\n const option = getOptionByName(setting.defaultValue, setting);\n defaultValue =\n option?.[component.displayOptionSetting ?? \"alias\"] ?? setting.defaultValue;\n }\n return defaultValue;\n};\nexport const getOverrideDefaultValue = (\n component: ModuleConfig.HardwareComponent,\n model: AppModel,\n): string | undefined => {\n return model.getDerivedFunctions().overrideDefaultValues?.(component.name);\n};\n\nexport const getSettingOptionsIfPresent = (\n component: ModuleConfig.HardwareComponent,\n setting: Device.Setting | undefined,\n masterComponentValue?: string,\n): string[] => {\n let options = [\"\"];\n\n if (setting) {\n const filteredOptions = component.mode\n ? filterModeOptions(setting.options ?? [], component, masterComponentValue)\n : setting.options;\n options = map(\n filteredOptions ?? [],\n (option) => option[component.displayOptionSetting ?? \"alias\"] ?? option.alias,\n );\n }\n return options;\n};\n\nconst filterModeOptions = (\n options: Device.Option[],\n component: ModuleConfig.Component,\n masterComponentValue?: string,\n): Device.Option[] => {\n if (component.mode?.operation != \"filterOptions\" || masterComponentValue == undefined)\n return options;\n //Determine mode\n const mode: string = find(\n getKeys(component.mode?.optionModes ?? {}) ?? [],\n (mode) => {\n const match = component.mode?.optionModes?.[mode];\n if (match) {\n return (masterComponentValue?.match(match)?.length ?? -1) > 0;\n }\n return false;\n },\n );\n const filteredOptions = filter(options ?? [], (option) => {\n if (option.mode) {\n const match = component.mode?.optionModes?.[mode];\n if (match) {\n return (option.mode.match(match)?.length ?? -1) > 0;\n }\n }\n return true;\n });\n return filteredOptions;\n};\n\nexport const getProcessedHandle = (\n handle: Handle | undefined,\n payload: Import[\"payload\"] | undefined,\n): Handle | undefined => {\n if (handle) {\n handle = {\n ...handle,\n label:\n payload?.moduleName ??\n payload?.name ??\n handle.label ??\n handle.providerId + \" : \" + handle.exportId,\n };\n }\n\n return handle;\n};\n\nexport interface DependencyDropdownOption {\n label: string;\n value?: Option<any, any>;\n}\nexport class DependencySelector {\n private noneSelection: DependencyDropdownOption = { label: \"None\" };\n private model: AppModel;\n private component: ModuleConfig.DependencyComponent<MyComponentNames>;\n\n constructor(\n model: AppModel,\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ) {\n this.model = model;\n this.component = component;\n }\n\n generateDropdownOptions(): DependencyDropdownOption[] {\n const dropdownOptions: DependencyDropdownOption[] = [];\n const thisImport: Import | undefined = this.model.getImports()[\n this.component.importId\n ];\n const options: Option<any, any>[] | undefined = thisImport?.options;\n\n if (this.shouldAllowUnselectDependency(thisImport, options)) {\n dropdownOptions.push(this.noneSelection);\n }\n if (options) {\n for (const option in options) {\n dropdownOptions.push(this.createOptionEntry(options[option]));\n }\n }\n\n return dropdownOptions;\n }\n\n getDropdownOptionNames(): string[] {\n const names: string[] = [];\n this.generateDropdownOptions().forEach((option) => names.push(option.label));\n return names;\n }\n\n private createOptionEntry = (option: Option): DependencyDropdownOption => {\n return {\n label: this.createOptionLabel(option.handle, option.payload),\n value: option,\n };\n };\n\n createOptionLabel = (handle: Handle, payload: Import[\"payload\"]): string => {\n return getProcessedHandle(handle, payload)?.label ?? \"\";\n };\n\n private shouldAllowUnselectDependency(\n thisImport: Import | undefined,\n options: Option<any, any>[] | undefined,\n ): boolean {\n return (\n thisImport != undefined &&\n thisImport.isUnassignable != false &&\n options !== undefined\n );\n }\n}\n\nexport function getModuleDefaultDescription(): string | undefined {\n const packageJson = require(\"../../../package.json\");\n let desc: string | undefined;\n if (packageJson) {\n desc = packageJson.scf?.description;\n } else {\n desc = undefined;\n }\n return desc;\n}\n\nexport const getFriendlyInterfaceId = (\n interfaceName: string | undefined,\n): string | undefined => {\n interfaceName = interfaceName?.replace(/ /g, \"\").replace(/-/g, \"_\");\n\n return interfaceName;\n};\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport * as AutoModuleHelper from \"./AutoModuleHelpers\";\nimport {\n AppModel,\n TemplateSettings,\n ModuleConfig as MyModuleConfig,\n MyComponentValueList,\n} from \"../types/AutoModuleTypes\";\nimport { ConfigValues } from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { Setting } from \"@microchip/scf-device\";\nimport { find } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { getConfigData } from \"./getConfigData\";\nimport { values, getKeys } from \"../Utils\";\nimport { isFullyAssigned } from \"./AutoModuleHardware\";\nimport { getComboOptions } from \"./AutoModuleHelpers\";\nimport { MyComponentNames } from \"../types\";\nimport { ComponentValueTypes } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { ComboBox } from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { SoftwareComboBoxComponent } from \"@microchip/scf-automodule-interface/lib/src/SoftwareComponents\";\n\nexport const getTemplates = (\n model: AppModel | undefined,\n config?: MyModuleConfig,\n): Processor.Template[] => {\n config = getConfigData(model, config);\n\n const templates: Processor.Template[] = [];\n config?.templates?.forEach((template) => {\n const newTemplate: ModuleConfig.AutoTemplate = {\n ...template,\n };\n if (!model) return;\n\n newTemplate.dest =\n model.getDerivedFunctions().templateName?.(newTemplate.src) ??\n newTemplate.dest;\n\n newTemplate.dest = newTemplate.dest.replace(\n \"${sourceFileName}\",\n model.getName().toLowerCase() + \".c\",\n );\n newTemplate.dest = newTemplate.dest.replace(\n \"${headerFileName}\",\n model.getName().toLowerCase() + \".h\",\n );\n\n if (shouldGenerate(newTemplate, model)) {\n templates.push(newTemplate);\n }\n });\n\n return templates;\n};\n\nconst shouldGenerate = (\n template: ModuleConfig.AutoTemplate,\n model: AppModel,\n): boolean => {\n let shouldGenerate = true;\n if (!model) return shouldGenerate;\n if (\n shouldGenerate &&\n template.generateWithHardware == true &&\n !isFullyAssigned(model.getPrototypeModule().imports)\n ) {\n shouldGenerate = false;\n }\n if (\n shouldGenerate &&\n template.isGeneratableProperty &&\n model.getDerivedFunction(template.isGeneratableProperty) != true\n ) {\n shouldGenerate = false;\n }\n return shouldGenerate;\n};\n\nexport const getTemplatePayload = (\n model: AppModel | undefined,\n config?: MyModuleConfig,\n): any => {\n if (!model) return undefined;\n config = getConfigData(model, config);\n const moduleName = model.getName();\n\n let templatePayload = {\n name: {\n uppercase: moduleName.toUpperCase(),\n lowercase: moduleName.toLowerCase(),\n instance: moduleName,\n },\n filename: {\n source: `${moduleName.toLowerCase()}.c`,\n header: `${moduleName.toLowerCase()}.h`,\n },\n };\n\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n values(components)?.forEach((entry) => {\n templatePayload[entry.component.name] = getComponentPayload(\n entry.component,\n model,\n );\n });\n\n templatePayload = {\n ...templatePayload,\n ...getTemplateSettings(model, config),\n };\n\n return templatePayload;\n};\n\nexport const getTemplateSettings = (\n model: AppModel,\n config?: MyModuleConfig,\n): TemplateSettings | undefined => {\n if (!model?.getHardware()) return undefined;\n\n return {\n registers: model.getRegisterValues(undefined, config),\n interrupts: model.getHardware()?.getPeripheral().interrupts,\n properties: model.getHardware()?.getPeripheral().properties,\n };\n};\n\nexport const getConfigBits = (model: AppModel, config?: MyModuleConfig): ConfigValues => {\n config = getConfigData(model, config);\n const configModule: ModuleConfig.Peripheral<MyComponentNames> = find(\n config?.peripherals ?? [],\n (peripheral) => {\n return AutoModuleHelper.hasConfigBits(peripheral.interfaceId.name);\n },\n );\n if (configModule) {\n const interfaceName = AutoModuleHelper.getFriendlyInterfaceId(\n configModule.interfaceId.name,\n );\n let templateConfigBits: ConfigValues = {};\n const registers = model.getHardware(interfaceName)?.getPeripheral().registers;\n getKeys(registers ?? [])?.forEach((configName) => {\n const configBits = configModule.registers?.[configName];\n templateConfigBits = {\n ...templateConfigBits,\n [configName]: {},\n };\n configBits?.forEach((configBit) => {\n const register = registers?.[configName];\n let value: string;\n if (register && !register.settings) {\n //missing settings for register\n value = model.getComponent(configBit.name)?.value ?? \"\";\n } else {\n const setting: Setting | undefined =\n registers?.[configName]?.settings?.[configBit.setting];\n value = find(\n setting?.options ?? [],\n (option) =>\n option.description ===\n model.getComponent(configBit.name)?.value ||\n option.alias === model.getComponent(configBit.name)?.value ||\n option.name === model.getComponent(configBit.name)?.value,\n )?.name;\n }\n\n templateConfigBits[configName][configBit.setting] = {\n name: configBit.setting,\n value: value,\n description: configBit.description,\n valueAsDescription: model.getComponent(configBit.name)\n ?.value as string,\n };\n });\n });\n return templateConfigBits;\n } else {\n return {};\n }\n};\n\nconst getComponentPayload = (\n component: ModuleConfig.Component<MyComponentNames>,\n model: AppModel,\n): ComponentValueTypes | ComboBox => {\n const componentValue = model.getComponentValue(component.name);\n switch (component.type) {\n case \"ComboBox\":\n if (component.category === \"hardware\") {\n const setting:\n | Setting\n | undefined = AutoModuleHelper.getSettingFromComponent(\n model,\n component,\n );\n return {\n value: componentValue,\n options: AutoModuleHelper.getSettingOptionsIfPresent(\n component,\n setting,\n model.getComponentValue(\n component.mode?.masterComponent ?? \"\",\n ) as string,\n ),\n };\n } else if (component.category === \"software\") {\n return {\n value: componentValue,\n options: getComboOptions(\n model.getDerivedFunctions().overrideOptions,\n component as SoftwareComboBoxComponent<MyComponentNames>,\n ),\n };\n }\n break;\n case \"boolean\":\n return model.isComponentValue(component.name);\n case \"number\":\n case \"string\":\n case \"register\":\n default:\n return componentValue;\n }\n};\n","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport * as AutoModuleHelper from \"./AutoModuleHelpers\";\nimport {\n DependencyDropdownOption,\n DependencySelector,\n getModuleDefaultDescription,\n} from \"./AutoModuleHelpers\";\nimport { Setting } from \"@microchip/scf-device/lib/Setting\";\nimport {\n ActionsObject,\n CustomUiPropertiesWrapper,\n Error,\n SimpleFormPayload,\n SimpleFormPayloads,\n TableColumn,\n} from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { CreateRegisterView } from \"@microchip/scf-register-view-helper\";\nimport { isFullyAssigned } from \"./AutoModuleHardware\";\nimport { getConfigData } from \"./getConfigData\";\nimport { getKeys, values } from \"../Utils\";\nimport { Interrupt, Module, Register } from \"@microchip/scf-device\";\nimport {\n AppModel,\n ModuleConfig as MyModuleConfig,\n MyComponentValueList,\n} from \"../types/AutoModuleTypes\";\nimport { MyComponentNames, MyImportNames } from \"../types\";\nimport { ExportArg } from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { TableComponent } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { Handle, InterfaceId } from \"@microchip/scf-common\";\nimport {\n createTableUids,\n getCellValidationInfo,\n getCellStyle,\n calculateColumnWidth,\n getTableActions,\n getTableComponentSchema,\n getTableFormData,\n getTableUiSchema,\n} from \"../tables/tables\";\nimport { ComponentValue } from \"@microchip/scf-automodule-interface/lib/src/types\";\nimport { getAutoSdlHelp } from \"./ContextualHelp\";\nimport * as registerFilter from \"./RegisterFilterMode\";\nimport { DefaultPeripheral } from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { SoftwareStringComponent } from \"@microchip/scf-automodule-interface/lib/src/SoftwareComponents\";\nimport { Meta } from \"@microchip/scf-device/lib/Meta\";\n\nexport const createAutoViewPayloads = (\n model: AppModel,\n config?: MyModuleConfig,\n): SimpleFormPayloads<any> => {\n config = getConfigData(model, config);\n const payloads: SimpleFormPayloads<any> = {\n main: {},\n };\n if (config?.tabs) {\n Object.keys(config.tabs).forEach((tab) => {\n if (tab === \"register\") {\n payloads[tab] = createSimpleFormPayloadRegister();\n } else {\n payloads[tab] = {\n schema: createSchema(tab),\n uiSchema: createUiSchema(tab),\n formData: createFormData(tab),\n scfUiSchema: createScfUiSchema(tab),\n name: config?.tabs[tab],\n table: shouldPopulateView()\n ? model?.getDerivedFunction(\"getTableData\")\n : undefined,\n expandGroupsByDefault: config?.UIGroupCollapse\n ? config.UIGroupCollapse\n : true,\n };\n }\n });\n }\n return payloads;\n\n function createSchema(tab: string): any {\n let schema: any = {};\n if (config) {\n const populateView = shouldPopulateView();\n schema = {\n description:\n model?.getDerivedFunctions()?.getModuleDescription?.() ??\n getModuleDefaultDescription(),\n title: config.moduleName,\n type: \"object\",\n properties: {},\n };\n\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n const schemaBuilder = {\n properties: {},\n };\n values(components ?? {})?.forEach((entry) => {\n const component = entry.component;\n\n if (!populateView && component.category != \"import\") return; //always display imports\n if (component.tabs.indexOf(tab) == -1) return;\n\n if (!schemaBuilder[component.group]) {\n schemaBuilder[component.group] = {\n title:\n model\n .getDerivedFunctions()\n .overrideGroupTitle?.(component.group) ??\n config?.UIGroups[component.group],\n description: model\n .getDerivedFunctions()\n .overrideGroupDescription?.(component.group),\n type: \"object\",\n properties: {},\n };\n }\n schemaBuilder[component.group].properties = {\n ...schemaBuilder[component.group].properties,\n ...getComponentSchema(component, tab),\n };\n });\n\n //Sort groups based on order of UIGroups and remove groups with no components\n getKeys(config.UIGroups ?? {})?.forEach((group) => {\n if ((getKeys(schemaBuilder[group]?.properties ?? {})?.length ?? -1) > 0) {\n schema.properties[group] = schemaBuilder[group];\n }\n });\n }\n return schema;\n }\n\n function createUiSchema(tab: string): any {\n const uiSchema = {};\n if (config) {\n if (config.UIOrder) {\n getKeys(config.UIOrder ?? {})?.forEach((group) => {\n uiSchema[group] = {\n \"ui:order\": config?.UIOrder?.[group],\n };\n });\n }\n //components\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n const isGroupHidden: Record<string, boolean> = {};\n\n values(components ?? {})?.forEach((entry) => {\n const component = entry.component;\n\n const tabIndex = component.tabs?.indexOf(tab) ?? -1;\n if (tabIndex === -1) return;\n\n const isComponentGroupHidden =\n isGroupHidden[component.group] === undefined ||\n isGroupHidden[component.group] === true;\n\n if (isComponentGroupHidden) {\n const isHidden: boolean =\n component.uiBehavior?.[\"ui:widget\"] === \"hidden\" ?? false;\n\n isGroupHidden[component.group] = isHidden;\n }\n\n if (component.category === \"table\") {\n const table: TableComponent = component;\n const tableCols = table.columns;\n const colNames: string[] = Object.keys(tableCols);\n const columns: TableColumn[] = [];\n const defaultColumnWidth: string = calculateColumnWidth(tableCols);\n colNames.forEach((name) => {\n const isColEditable = !tableCols[name].readonly;\n columns.push({\n dataField: name,\n editable: isColEditable ? undefined : false,\n columnWidth: tableCols[name].columnWidth\n ? tableCols[name].columnWidth + \"%\"\n : defaultColumnWidth,\n width: tableCols[name].width\n ? tableCols[name].width + \"%\"\n : defaultColumnWidth,\n dataSort: tableCols[name].isSortable,\n headerAlign:\n tableCols[name].headerAlign ??\n tableCols[name].dataAlign ??\n \"left\",\n dataAlign:\n tableCols[name].dataAlign ??\n tableCols[name].headerAlign ??\n \"left\",\n tdStyle: getCellStyle(tableCols[name].readonly),\n headerText: tableCols[name]?.[\"columnTip\"],\n });\n });\n uiSchema[table.group] = {\n ...uiSchema[table.group],\n [table.name]: getTableUiSchema(table, columns),\n };\n } else {\n uiSchema[component.group] = {\n ...uiSchema[component.group],\n [component.name]: {\n ...getUiBehavior(component),\n ...getUiSchemaExportArg(component.name),\n },\n };\n }\n });\n\n for (const group in isGroupHidden) {\n if (isGroupHidden[group]) {\n uiSchema[group] = {\n ...uiSchema[group],\n [\"ui:widget\"]: \"hidden\",\n };\n }\n }\n }\n return uiSchema;\n }\n\n function createFormData(tab: string): any {\n const formData: any = {};\n if (config) {\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n\n values(components)?.forEach((entry) => {\n if (!config) return;\n const component = entry.component;\n let value: any = model.getComponentValue(component.name);\n\n if (\n component.type === \"boolean\" &&\n (value === config.booleanValues.true ||\n value === config.booleanValues.false)\n ) {\n value = value === config.booleanValues.true;\n }\n\n if (component.tabs.indexOf(tab) == -1) return;\n\n if (component.category === \"table\") {\n value = getTableFormData(model, component, tab);\n }\n formData[component.group] = {\n ...formData[component.group],\n [component.name]: value,\n };\n });\n }\n return formData;\n }\n\n function createScfUiSchema(tab: string): any {\n const scfUiSchema: CustomUiPropertiesWrapper = {};\n if (config) {\n const components: MyComponentValueList = model\n .getAutoModuleAppModel()\n .getAllComponents();\n values(components)?.forEach((entry) => {\n const component = entry.component;\n if (component.tabs.indexOf(tab) == -1) return;\n\n if (!scfUiSchema[component.group]) {\n scfUiSchema[component.group] = {};\n }\n if (!scfUiSchema[component.group][component.name]) {\n scfUiSchema[component.group][component.name] = {};\n }\n\n let actions: ActionsObject | ActionsObject[] | undefined =\n component.category === \"import\"\n ? getDependencySelectorActions(component)\n : getActions(component);\n\n const transformErrors: Error[] | undefined = model.getDerivedFunction(\n \"getCustomUiErrors\",\n component.name,\n );\n if (model.getImports()) {\n const deviceMeta: Meta = model.getImportValue(\"device_meta\");\n const hasSdlSupport: boolean = deviceMeta?.hasSdlSupport ?? false;\n if (component.sdlHelp && hasSdlSupport) {\n scfUiSchema[component.group][component.name][\"helpKeyword\"] =\n model.getDerivedFunction(\n \"getHelpUrl\",\n component.name,\n component.sdlHelp.url,\n ) ??\n getAutoSdlHelp(model, component.name, component.sdlHelp.url);\n }\n }\n if (component.category === \"table\") {\n const tableState = model?.getState()?.[tab]?.[component.group]?.[\n component.name\n ];\n const uids = createTableUids(component, tab, model, tableState);\n const cellValidationInfo = getCellValidationInfo(component);\n scfUiSchema[component.group][component.name][\"table\"] = {\n canRemoveRows: component.canRemoveRows,\n canInsertRows: component.canInsertRows,\n canAddRows: component.canAddRows,\n canMoveRowDown: component.canMoveRowDown,\n canMoveRowUp: component.canMoveRowUp,\n uids: uids,\n cellValidationInfo: cellValidationInfo,\n };\n actions = getTableActions(component, tab, model, uids);\n }\n if (actions) {\n scfUiSchema[component.group][component.name][\"actions\"] = actions;\n }\n if (transformErrors) {\n scfUiSchema[component.group][component.name][\n \"transformErrors\"\n ] = transformErrors;\n }\n });\n }\n return scfUiSchema;\n }\n function getDependencySelectorActions(\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ): ActionsObject {\n const depSelector: DependencySelector = new DependencySelector(model, component);\n const options: DependencyDropdownOption[] = depSelector.generateDropdownOptions();\n const dependencySelectorActions: ImportAction[] = [];\n options.forEach((dropdownOption) => {\n const option = dropdownOption.value;\n dependencySelectorActions.push({\n type: \"[Import] SET\",\n payload: {\n importId: component.importId,\n handle: option?.handle,\n interfaceId: option?.interfaceId,\n option: dropdownOption.label,\n },\n });\n });\n return JSON.stringify(dependencySelectorActions);\n }\n\n function getActions(component: ModuleConfig.Component): ActionsObject | undefined {\n const actions: ModuleConfig.AutoAction | undefined = model.getDerivedFunction(\n \"getActions\",\n component.name,\n component.actions,\n );\n return JSON.stringify(actions); //TODO: support map\n }\n\n function shouldPopulateView(): boolean {\n if (displayViewOnImportAssigned() === false) return false;\n\n if (\n model.getDerivedFunctions().shouldPopulateViewAtStartup?.() === true ||\n isFullyAssigned(model.getPrototypeModule().imports)\n ) {\n return true;\n }\n return false;\n }\n\n function displayViewOnImportAssigned(): boolean {\n let shouldPopulateView = true;\n if (config?.displayViewOnImportAssigned) {\n config.displayViewOnImportAssigned.forEach((impKey) => {\n if (model.getAssignedImport(impKey as MyImportNames) == undefined) {\n shouldPopulateView = false;\n }\n });\n }\n return shouldPopulateView;\n }\n\n function getComponentSchema(\n component: ModuleConfig.Component<MyComponentNames>,\n tab: string,\n ): any {\n let schema = {};\n\n if (component.tabs.indexOf(tab) == -1) return schema;\n //check isVisible - user override\n const isVisible: boolean = model.getDerivedFunction(\"isVisible\", component.name);\n if (isVisible === false) {\n return schema;\n }\n if (\n component.isVisibleProperty &&\n model?.getDerivedFunction(component.isVisibleProperty) == false\n ) {\n return schema;\n }\n //check for modes\n if (isModeActive(\"isVisible\", component) === false) {\n return schema;\n }\n if (component.category === \"software\") {\n //add software component\n schema = getSoftwareComponentSchema(component);\n } else if (component.category === \"hardware\") {\n //add hardware component\n schema = getHardwareComponentSchema(component);\n } else if (component.category === \"import\") {\n schema = getDependencyComponentSchema(component);\n } else if (component[\"category\"] === \"table\") {\n //add table component\n schema = getTableComponentSchema(component, model);\n }\n if (schema == undefined) return schema;\n\n //add validator if present\n if (\n component.validation &&\n model &&\n model.getDerivedFunctions()[component.name + \"Validator\"]\n ) {\n schema = {\n ...schema,\n ...model.getDerivedFunctions()[component.name + \"Validator\"](),\n };\n }\n\n schema = {\n [component.name]: {\n ...schema,\n },\n };\n return schema;\n }\n\n function getSoftwareComponentSchema(\n component: ModuleConfig.SoftwareComponent<MyComponentNames>,\n ): any {\n let schema = {};\n if (component.type === \"ComboBox\") {\n schema = {\n type: \"string\",\n title:\n model.getDerivedFunctions().overrideTitle?.(component.name) ??\n component.description,\n default: AutoModuleHelper.getDefaultValue(\n model.getDerivedFunctions().overrideDefaultValues,\n component,\n ),\n enum: AutoModuleHelper.getComboOptions(\n model.getDerivedFunctions().overrideOptions,\n component,\n ),\n };\n } else if (component.type === \"hex\") {\n schema = {\n type: \"integer\",\n title:\n model.getDerivedFunctions().overrideTitle?.(component.name) ??\n component.description,\n format: \"hex\",\n default: AutoModuleHelper.getDefaultValue(\n model.getDerivedFunctions().overrideDefaultValues,\n component,\n ),\n };\n } else {\n schema = {\n type: component.type,\n title:\n model.getDerivedFunctions().overrideTitle?.(component.name) ??\n component.description,\n };\n if (isUrl(component) && component.urlDescription) {\n schema = {\n ...schema,\n description: component.urlDescription,\n };\n }\n if (isImage(component) && component.imageDescription) {\n schema = {\n ...schema,\n description: component.imageDescription,\n };\n }\n }\n return schema;\n }\n\n function getDependencyComponentSchema(\n component: ModuleConfig.DependencyComponent<MyComponentNames>,\n ): any {\n let schema = {};\n\n if (component.type === \"ComboBox\") {\n const dependencySelector: AutoModuleHelper.DependencySelector = new AutoModuleHelper.DependencySelector(\n model,\n component,\n );\n if (dependencySelector.getDropdownOptionNames().length <= 0) {\n return schema;\n }\n\n const dropdownOptions = dependencySelector.getDropdownOptionNames();\n const assignedImport = model\n .getImportInterfaces()\n .createProcessedImports(\"views\")?.[component.importId];\n let assignedName = \"None\";\n if (assignedImport?.handle) {\n assignedName = dependencySelector.createOptionLabel(\n assignedImport.handle,\n assignedImport.payload,\n );\n dropdownOptions.push(assignedName);\n }\n schema = {\n type: \"string\",\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n default: assignedName,\n enum: dropdownOptions,\n };\n }\n return schema;\n }\n\n function getHardwareComponentSchema(\n component: ModuleConfig.HardwareComponent<MyComponentNames>,\n ): any {\n let schema = {};\n if (\n model &&\n model.getComponentValue(component.name) !== undefined &&\n component.type !== \"register\"\n ) {\n if (component.type === \"ComboBox\") {\n const setting:\n | Setting\n | undefined = AutoModuleHelper.getSettingFromComponent(\n model,\n component,\n );\n schema = {\n type: \"string\",\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n default: AutoModuleHelper.getSettingDefaultIfPresent(\n component,\n setting,\n model\n .getDerivedFunctions()\n .overrideDefaultValues?.(component.name),\n ),\n enum: AutoModuleHelper.getSettingOptionsIfPresent(\n component,\n setting,\n model.getComponentValue(\n component.mode?.masterComponent ?? \"\",\n ) as string,\n ),\n };\n } else {\n schema = {\n type: component.type,\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n };\n }\n }\n return schema;\n }\n\n function isModeActive(\n mode: ModuleConfig.ModeOperation,\n component: ModuleConfig.Component<MyComponentNames>,\n ): boolean | undefined {\n if (component?.mode?.operation !== mode) return undefined; //No mode selected\n\n const masterComponent = model.getComponent(component.mode.masterComponent);\n if (component.mode?.matchRegEx) {\n const value =\n masterComponent?.value?.toString()?.match(component.mode.matchRegEx)\n ?.length ?? 0;\n return value > 0;\n }\n return undefined;\n }\n\n function getUiSchemaExportArg(name: MyComponentNames): any {\n let uiSchema = {};\n if (model.isControlledByInterface(name)) {\n const expArg:\n | ExportArg\n | undefined = model.getExportInterfaces().getProcessedArgValue(name);\n if (expArg) {\n uiSchema = {\n \"ui:readonly\": true,\n \"ui:help\": \"Controlled by \" + expArg.interface,\n };\n }\n }\n return uiSchema;\n }\n\n function getUiBehavior(component: ModuleConfig.Component<MyComponentNames>): any {\n let uiBehavior = {};\n if (component.uiBehavior) {\n getKeys(component.uiBehavior ?? {})?.forEach((key) => {\n switch (key) {\n case \"readonly\":\n uiBehavior[\"ui:readonly\"] = component.uiBehavior?.[key];\n break;\n default:\n uiBehavior[key] = component.uiBehavior?.[key];\n break;\n }\n });\n }\n if (isUrl(component)) {\n uiBehavior[\"ui:widget\"] = \"url\";\n } else if (isImage(component)) {\n uiBehavior[\"ui:widget\"] = \"image\";\n }\n let overriddenBehavior: any = {};\n if (model) {\n const overriddenValue = model.getDerivedFunction(\n \"getUiBehavior\",\n component.name,\n );\n if (overriddenValue != undefined) {\n overriddenBehavior = {\n ...overriddenBehavior,\n ...overriddenValue,\n };\n if (getKeys(overriddenBehavior ?? {})?.indexOf(\"readonly\") != -1) {\n overriddenBehavior[\"ui:readonly\"] = overriddenBehavior[\"readonly\"];\n delete overriddenBehavior[\"readonly\"];\n }\n }\n const isEnabled =\n model.getDerivedFunction(\"isEnabled\", component.name) ??\n isModeActive(\"isEnabled\", component);\n if (isEnabled != undefined) {\n overriddenBehavior = {\n ...overriddenBehavior,\n [\"ui:readonly\"]: !isEnabled,\n };\n }\n const isVisible = model.getDerivedFunction(\"isVisible\", component.name);\n if (isVisible != undefined) {\n if (!isVisible) {\n overriddenBehavior = {\n ...overriddenBehavior,\n [\"ui:widget\"]: \"hidden\",\n };\n }\n }\n }\n uiBehavior = {\n ...uiBehavior,\n ...overriddenBehavior,\n };\n return uiBehavior;\n }\n\n function createSimpleFormPayloadRegister(): SimpleFormPayload<any> {\n if (!config?.peripherals) return {};\n\n const registerViewPayloads: SimpleFormPayload[] = [];\n\n config.peripherals.forEach((peripheral) => {\n if (AutoModuleHelper.hasConfigBits(peripheral.interfaceId.name)) return;\n let hardwarePeripheral: DefaultPeripheral | undefined = model\n .getHardware(peripheral.interfaceId.name)\n ?.getPeripheral();\n if (!hardwarePeripheral?.registers) return;\n\n const registerValues = model.getRegisterValues(\n peripheral.interfaceId.name,\n config,\n );\n\n const interrupts:\n | Partial<Record<string, Interrupt>>\n | undefined = model.getInterrupts();\n\n hardwarePeripheral = registerFilter.processRegisterModes(\n peripheral,\n hardwarePeripheral,\n model,\n );\n\n //TODO: implement for all peripherals\n const registerView = CreateRegisterView.for(hardwarePeripheral as Module);\n if (registerValues) {\n getKeys(registerValues ?? {})?.forEach((registerName) => {\n const foundRegister: Register = hardwarePeripheral?.registers?.[\n registerName\n ] as Register;\n if (foundRegister) {\n registerView.withRegisterValue(\n foundRegister,\n registerValues[registerName].value,\n );\n }\n });\n }\n for (const interruptsKey in interrupts ?? {}) {\n const interrupt: Interrupt | undefined = interrupts?.[interruptsKey];\n if (interrupt) {\n const interruptComponent:\n | ComponentValue<any>\n | undefined = model.getComponent(interruptsKey.toLowerCase());\n\n const interruptCompVal: string =\n typeof interruptComponent?.value === \"boolean\"\n ? interruptComponent?.value\n ? \"enabled\"\n : \"disabled\"\n : interruptComponent?.value;\n\n registerView\n .withInterruptValue(\n interrupt,\n interruptCompVal ?? interrupt.defaultValue ?? \"disabled\",\n )\n .withInterruptOptions(\n interrupt,\n interruptComponent?.component?.[\"defaultValue\"]?.options ?? [\n \"enabled\",\n \"disabled\",\n ],\n );\n }\n }\n registerViewPayloads.push(registerView.create());\n });\n\n return registerViewPayloads[0];\n }\n\n function isUrl(\n component: ModuleConfig.Component<MyComponentNames>,\n ): component is SoftwareStringComponent<MyComponentNames> {\n return (\n component.category === \"software\" &&\n component.type === \"string\" &&\n component.format === \"url\"\n );\n }\n\n function isImage(\n component: ModuleConfig.Component<MyComponentNames>,\n ): component is SoftwareStringComponent<MyComponentNames> {\n return (\n component.category === \"software\" &&\n component.type === \"string\" &&\n component.format === \"image\"\n );\n }\n};\n\ninterface ImportAction {\n type: \"[Import] SET\";\n payload: {\n importId: string;\n handle: Handle | undefined;\n interfaceId: InterfaceId | undefined;\n option: string;\n };\n}\n","import { Meta } from \"@microchip/scf-device/lib/Meta\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\n/**\n * Returns the valid link for each component of a module\n *\n * @param dataModel - AppModel for current module\n * @param componentName - Current component under the module\n * @param helpUrl - Generic url\n * @returns Valid link to microchip docs\n */\nexport const getAutoSdlHelp = (\n dataModel: AppModel,\n componentName: string,\n helpUrl: string,\n): string => {\n const deviceMeta: Meta = dataModel.getImportValue(\"device_meta\");\n const deviceName = deviceMeta?.deviceName ?? \"\";\n const moduleName = dataModel.getHardware()?.getPeripheral()?.group ?? \"\";\n const dosid = dataModel.getHardware()?.getPeripheral()?.dosid ?? \"\";\n const comp: any = dataModel.getComponent(componentName)?.component ?? \"\";\n const setting = comp?.setting?.toLowerCase() ?? \"\";\n const registerName = componentName.toLowerCase().replace(setting, \"\");\n const registerAlias = registerName?.toUpperCase() ?? \"\";\n const deviceRegister =\n dataModel.getPeripheralDescription()?.registers?.[registerAlias]?.name ?? \"\";\n const register = registerAlias == deviceRegister ? registerAlias : deviceRegister;\n const url = helpUrl\n .replace(\"${deviceName}\", deviceName ?? \"\")\n .replace(\"${registerName}\", register ?? \"\")\n .replace(\"${moduleName}\", moduleName ?? \"\")\n .replace(\"${dosId}\", dosid ?? \"\");\n return url;\n};\n","import { Peripheral } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { DefaultPeripheral } from \"@microchip/scf-automodule-interface/lib/src/HardwareTypes\";\nimport { getKeys } from \"../Utils\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\n\nexport const processRegisterModes = (\n peripheral: Peripheral,\n hardwarePeripheral: DefaultPeripheral,\n model: AppModel,\n): DefaultPeripheral => {\n if (!hasModes(peripheral)) {\n return hardwarePeripheral;\n }\n const modifiedHardwarePeripheral = {\n ...hardwarePeripheral,\n registers: {\n ...hardwarePeripheral.registers,\n },\n };\n getKeys(peripheral?.registers ?? {})?.forEach((registerName) => {\n const settings = peripheral?.registers?.[registerName];\n let delFlag = false;\n settings?.forEach((setting) => {\n /* const mode = find(setting.tabs, (mode => {\n return mode === \"registerFilter\"\n })) */ // TODO : Multiple modes support\n if (setting?.mode?.operation === \"registerFilter\") {\n const targetStr = model?.getComponent(setting?.mode?.masterComponent)\n ?.value;\n const matchRegEx = new RegExp(setting?.mode?.matchRegEx ?? \"\");\n if (!matchRegEx.test(targetStr)) {\n const settingObj =\n modifiedHardwarePeripheral?.registers?.[registerName]?.settings?.[\n setting.setting\n ];\n if (settingObj !== undefined) {\n delete modifiedHardwarePeripheral?.registers?.[registerName]\n ?.settings?.[setting.setting];\n } else {\n delete modifiedHardwarePeripheral?.registers?.[registerName];\n }\n delFlag = true;\n }\n }\n });\n if (\n delFlag &&\n getKeys(modifiedHardwarePeripheral?.registers?.[registerName]?.settings ?? [])\n .length <= 0\n ) {\n delete modifiedHardwarePeripheral?.registers?.[registerName]?.settings;\n delete modifiedHardwarePeripheral?.registers?.[registerName];\n }\n });\n return modifiedHardwarePeripheral as DefaultPeripheral;\n};\n\nexport const hasModes = (peripheral: Peripheral): boolean => {\n let flag = false;\n getKeys(peripheral?.registers ?? {})?.forEach((registerName) => {\n const settings = peripheral?.registers?.[registerName];\n for (const setting of settings ?? []) {\n if (setting?.mode !== undefined) {\n flag = true;\n }\n }\n });\n return flag;\n};\n","/* eslint-disable @typescript-eslint/no-var-requires */\nimport { ModuleConfig as MyModuleConfig } from \"../types/AutoModuleTypes\";\nimport { toDictionary } from \"../Utils\";\nimport * as path from \"path\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\nimport { SoftwareComponent } from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport { MyComponentNames } from \"../types\";\n\nconst configPath = \"../../../src/moduleConfig.json\";\nlet config: MyModuleConfig = require(\"../../../src/moduleConfig.json\");\n\nexport const getConfigData = (\n model?: AppModel,\n newConfig?: MyModuleConfig,\n): MyModuleConfig => {\n if (!config || newConfig) {\n config = ConfigBuilder.for(newConfig)\n .withDynamicConfigData(model)\n .withDynamicComponents(model)\n .build();\n }\n\n return config;\n};\n\nconst getConfigFile = (configPath: string): MyModuleConfig => {\n try {\n return require(configPath);\n } catch {\n throw Error(\"Cannot find moduleConfig.json at: \" + configPath);\n }\n};\n\nclass ConfigBuilder {\n private config: MyModuleConfig;\n\n constructor(config: MyModuleConfig) {\n this.config = config;\n }\n\n public static fromNew = (): ConfigBuilder =>\n ConfigBuilder.fromPath(path.resolve(__dirname, configPath));\n\n public static fromPath = (path: string): ConfigBuilder => {\n if (!config) {\n config = getConfigFile(path);\n }\n return new ConfigBuilder(config);\n };\n\n public static for = (config?: MyModuleConfig): ConfigBuilder => {\n if (!config) return ConfigBuilder.fromNew();\n\n return new ConfigBuilder(config);\n };\n\n public build = (): MyModuleConfig => {\n return this.config;\n };\n\n public withDynamicConfigData = (model?: AppModel): ConfigBuilder => {\n return new ConfigBuilder(\n model?.getDerivedFunction(\"getDynamicConfigData\", this.config) ?? this.config,\n );\n };\n\n public withDynamicComponents = (model?: AppModel): ConfigBuilder => {\n const dynamicComponents = model?.getDerivedFunctions().getDynamicComponents?.();\n if (dynamicComponents) {\n const dynamicComponentMap = toDictionary(\n dynamicComponents,\n (component) => {\n this.config.UIGroups[component.group] =\n this.config.UIGroups[component.group] ?? component.group;\n return component.name;\n },\n (component) => component,\n );\n this.config.softwareData = {\n ...this.config.softwareData,\n ...(dynamicComponentMap as Record<\n string,\n SoftwareComponent<MyComponentNames>\n >),\n };\n }\n return new ConfigBuilder(this.config);\n };\n}\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { find, getKeys } from \"@microchip/scf-device/lib/util/Arrays\";\nimport { InterfaceId } from \"@microchip/scf-common/lib/InterfaceId\";\nimport { getConfigData } from \"../autoModule/getConfigData\";\nimport {\n ExportInterfaces,\n ExportArg,\n} from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { MyComponentNames, MyExportNames, MyExports, MyProcessedExports } from \"../types\";\nimport { AppModel, MyExportInterfaceTypes } from \"../types/AutoModuleTypes\";\nimport { ModuleConfig } from \"../types/AutoModuleTypes\";\n\nexport const createExportInterfaces = (\n exports: MyExports,\n model: AppModel,\n config?: ModuleConfig,\n): MyExportInterfaces => {\n return new MyExportInterfaces(exports, model, config);\n};\n\nexport class MyExportInterfaces\n implements ExportInterfaces<MyExports, MyExportNames, MyComponentNames> {\n private exports: MyExports;\n private model: AppModel;\n private config: ModuleConfig;\n private components: string[];\n\n constructor(exports: MyExports, model: AppModel, config?: ModuleConfig) {\n this.exports = exports;\n this.model = model;\n this.config = getConfigData(model, config);\n this.components = this.createComponentList();\n }\n\n public createProcessedExports = (): MyProcessedExports => {\n let exportPayload: MyProcessedExports = this.exports as MyProcessedExports;\n if (this.config && this.config.exports) {\n getKeys(this.config.exports ?? {})?.forEach((key) => {\n const exp = this.config.exports?.[key];\n exportPayload = {\n ...exportPayload,\n [key]: {\n ...this.config.exports?.[key],\n interfaces: [],\n name:\n this.model.getDerivedFunction(\"exportName\", key) ??\n exportPayload[key]?.name,\n },\n };\n exp?.interfaces.forEach((int) => {\n const processedInterface = this.getInterface(\n key as MyExportNames,\n int.interfaceId,\n );\n if (processedInterface) {\n exportPayload[key].interfaces.push({\n ...processedInterface,\n payload:\n this.model?.getDerivedFunction(\n int.interfaceId.name + \"_payload\",\n ) ?? {},\n payloads:\n this.model?.getDerivedFunction(\n int.interfaceId.name + \"_payloads\",\n ) ?? {},\n });\n }\n });\n });\n }\n return exportPayload;\n };\n\n public getInterface(\n interfaceKey: MyExportNames,\n interfaceId: InterfaceId,\n ): MyExportInterfaceTypes | undefined;\n public getInterface(\n interfaceKey: string,\n interfaceId: InterfaceId,\n ): Processor.Interface | undefined {\n if (!this.exports[interfaceKey]) return undefined;\n\n return find(\n this.exports[interfaceKey].interfaces ?? [],\n (i) => JSON.stringify(i.interfaceId) === JSON.stringify(interfaceId),\n );\n }\n\n public getInterfaceArgs = (\n interfaceKey: MyExportNames,\n interfaceId: InterfaceId,\n ): MyExportInterfaceTypes[\"args\"] | undefined => {\n return this.getInterface(interfaceKey, interfaceId)?.args;\n };\n\n public getInterfaceResults = (\n interfaceKey: MyExportNames,\n interfaceId: InterfaceId,\n ): MyExportInterfaceTypes[\"results\"] | undefined => {\n return this.getInterface(interfaceKey, interfaceId)?.results;\n };\n\n private createComponentList = (): string[] => {\n const componentList: string[] = [];\n const exports = this.config?.exports ?? {};\n getKeys(exports)?.forEach((key) => {\n const exp = exports[key];\n exp.interfaces.forEach((int) => {\n if (int.components) {\n componentList.push(...int.components);\n }\n });\n });\n\n return componentList;\n };\n\n public isControlledByInterface = (componentName: MyComponentNames): boolean => {\n return this.components.indexOf(componentName) != -1;\n };\n\n public getProcessedArgValue = (\n componentName: MyComponentNames,\n ): ExportArg | undefined => {\n let processedArgValue: ExportArg | undefined;\n const interfaceData: ExportArg[] | undefined = this.getInterfaceData();\n if (\n this.model &&\n this.model.getDerivedFunctions().getProcessedArgValue &&\n interfaceData != undefined\n ) {\n processedArgValue = this.model\n .getDerivedFunctions()\n ?.getProcessedArgValue?.(componentName, interfaceData);\n }\n return processedArgValue;\n };\n\n public getInterfaceData = (): ExportArg[] | undefined => {\n let argValues: ExportArg[] | undefined;\n const exports = this.config.exports ?? {};\n getKeys(exports)?.forEach((key: MyExportNames) => {\n const exp = exports[key];\n exp.interfaces.forEach((int) => {\n const args: Record<string, any> | undefined = this.getInterfaceArgs(\n key,\n int.interfaceId,\n );\n if (args) {\n getKeys(args)?.forEach((key) => {\n getKeys(args[key])?.forEach((arg) => {\n if (!argValues) argValues = [];\n argValues.push({\n interface: int.interfaceId.name,\n name: arg,\n value: args[key][arg],\n module: key,\n });\n });\n });\n }\n });\n });\n return argValues;\n };\n}\n\nexport const isInterface = (idA: InterfaceId, idB: InterfaceId): boolean => {\n return JSON.stringify(idA) === JSON.stringify(idB);\n};\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { getConfigData } from \"../autoModule/getConfigData\";\nimport { values, getKeys } from \"../Utils\";\nimport { MyComponentNames, MyImports } from \"../types\";\nimport {\n ImportInterfaces,\n ProcessorStages,\n} from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { AppModel, ModuleConfig } from \"../types/AutoModuleTypes\";\nimport { getProcessedHandle } from \"../autoModule/AutoModuleHelpers\";\nimport { getDefaultInterruptActions } from \"../interrupts/InterruptActions\";\nimport { find } from \"@microchip/scf-device/lib/util/Arrays\";\n\nexport const createImportInterfaces = (\n imports: MyImports,\n model: AppModel,\n config?: ModuleConfig,\n): MyImportInterfaces => {\n return new MyImportInterfaces(imports, model, config);\n};\n\nexport class MyImportInterfaces implements ImportInterfaces<MyImports> {\n private imports: MyImports;\n private model: AppModel;\n private config: ModuleConfig;\n\n constructor(imports: MyImports, model: AppModel, config?: ModuleConfig) {\n this.imports = imports;\n this.model = model;\n this.config = getConfigData(model, config);\n }\n\n public createProcessedImports = (stage: ProcessorStages): MyImports => {\n let processedImports = this.filterImports();\n getKeys(processedImports ?? {})?.forEach((key) => {\n processedImports = {\n ...processedImports,\n [key]: {\n ...processedImports[key],\n args:\n stage === \"arguments\"\n ? this.model?.getDerivedFunction(key + \"_args\")\n : processedImports[key]?.args,\n results:\n stage === \"results\"\n ? this.getResults(processedImports, key)\n : processedImports[key]?.results,\n name:\n this.model.getDerivedFunction(\"importName\", key) ??\n processedImports[key]?.name,\n handle: getProcessedHandle(\n processedImports[key].handle,\n processedImports[key].payload,\n ),\n options:\n this.getProcessedImportOptions(\n key,\n processedImports[key]?.options ?? [],\n ) ?? processedImports[key].options,\n },\n };\n });\n return processedImports;\n };\n\n public filterImports = (): MyImports => {\n const filteredImports: MyImports =\n this.model.getDerivedFunctions().filterImports?.(this.imports) ??\n this.imports;\n\n return filteredImports;\n };\n\n //Populates option labels with a custom module name if provided in export payload\n private getProcessedImportOptions = (\n importKey: string,\n options: Processor.Option[],\n ): Processor.Option[] => {\n const modifiedOptions: Processor.Option[] = [];\n options?.forEach((option, index) => {\n modifiedOptions[index] = {\n ...option,\n handle: {\n ...option.handle,\n label:\n this.model.getDerivedFunction(\n \"importOptionLabel\",\n importKey,\n option,\n ) ?? option.payload?.moduleName,\n },\n };\n });\n return modifiedOptions;\n };\n\n private getResults = (imports: MyImports, key: string): any | undefined => {\n const importResults = this.model?.getDerivedFunction(key + \"_results\");\n if (importResults) return importResults;\n const imp = imports[key];\n if (imp.interfaceId.name === \"initializer-system\") {\n const initResults = {\n initializer: {\n name: this.model.getName() + \"_Initialize\",\n header: this.model?.getDerivedFunction(\"headerFile\") ?? {\n name: this.model.getName().toLowerCase() + \".h\",\n path: \"include/\",\n },\n },\n };\n return initResults;\n } else if (imp.interfaceId.name === \"pin-standard\") {\n return this.model.getPCPHelper?.().getData();\n } else if (imp.interfaceId.name === \"interrupt-standard\") {\n const interrupts: any[] = [];\n let actions = {};\n const isHighPriority =\n this.model?.getImportValue(\"interrupt_standard\")?.isHighPriority ?? {};\n\n values(this.model.getHardware()?.getPeripheral().interrupts ?? {})?.forEach(\n (interrupt) => {\n if (!interrupt) return;\n const filterInterrupt: boolean =\n this.model\n .getDerivedFunctions()\n .filterInterrupts?.(interrupt.name) ?? true;\n\n if (filterInterrupt) {\n const interruptComponentName =\n this.getInterruptComponentName(interrupt.name) ??\n interrupt.name.toLowerCase() ??\n \"\";\n const isEnabled =\n this.model.isComponentValue(interruptComponentName ?? \"\") ??\n false;\n\n interrupts.push({\n //Standard\n name: interrupt.name ?? \"\",\n module:\n this.model.getHardware()?.getName() ??\n this.model.getName() ??\n \"\",\n isEnabled: isEnabled,\n\n //Callback Extension\n isrCallback: this.model\n ?.getDerivedFunctions()\n .isrCallback?.(interrupt.name) ?? {\n name: this.model.getName() + interrupt.handlerName,\n header: this.model\n ?.getDerivedFunctions()\n .headerFile?.() ?? {\n name: this.model.getName().toLowerCase() + \".h\",\n path: \"include/\",\n },\n },\n generateISR: isEnabled,\n\n //Priority Extension\n isHighPriority: isHighPriority[interrupt.name] ?? true,\n });\n\n const isEnableActions = (\n this.model\n .getDerivedFunctions()\n .getInterruptActions?.(interrupt.name, \"isEnabled\") ?? []\n ).concat(\n ...getDefaultInterruptActions(\n this.model,\n interruptComponentName as MyComponentNames | undefined,\n ),\n );\n const isEnableAction = find(\n isEnableActions,\n (action: any) => action[\"validFor\"] !== isEnabled,\n );\n\n actions = {\n ...actions,\n [interrupt.name]: {\n ...actions?.[interrupt.name],\n isEnabled: isEnableAction ? [isEnableAction] : [],\n },\n };\n }\n },\n );\n return {\n interruptList: interrupts,\n interruptActions: actions,\n moduleName: this.model.getName() ?? \"\",\n };\n } else if (imp.interfaceId.name === \"api-prefix-registration\") {\n const apiPrefixResults = {\n apiPrefix:\n this.model?.getDerivedFunctions()?.apiPrefix ??\n this.model?.getComponentValue(\"componentName\"),\n moduleName: this.model?.getName(),\n };\n return apiPrefixResults;\n }\n };\n\n private getInterruptComponentName = (\n interruptName: string,\n ): MyComponentNames | undefined => {\n return this.model.getDerivedFunctions()?.interruptComponentName?.(interruptName);\n };\n}\n","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport {\n InterruptActions,\n InterruptActionsBuilderInterface,\n} from \"@microchip/scf-automodule-interface/lib/src/InterruptTypes\";\nimport { getSettingFromComponent } from \"../autoModule/AutoModuleHelpers\";\nimport { MyComponentNames } from \"../types\";\nimport { AppModel } from \"../types/AutoModuleTypes\";\n\nexport class InterruptActionsBuilder\n implements InterruptActionsBuilderInterface<MyComponentNames> {\n private actions: InterruptActions = [];\n private curComponent: ModuleConfig.Component | undefined;\n private curComponentName: MyComponentNames | undefined;\n private model: AppModel;\n private tableRowId: number | undefined;\n private tableRowCol: string | undefined;\n private tableCellPath: string | undefined;\n\n private constructor(model: AppModel) {\n this.model = model;\n }\n\n public static createActionBuilder = (model: AppModel): InterruptActionsBuilder =>\n new InterruptActionsBuilder(model);\n\n public createActionFor = (\n componentName: MyComponentNames | undefined,\n ): InterruptActionsBuilder => {\n this.actions = this.buildActions();\n\n this.curComponent = componentName\n ? this.model.getComponent(componentName)?.component\n : undefined;\n this.curComponentName = componentName;\n this.tableRowId = undefined;\n this.tableRowCol = undefined;\n this.tableCellPath = undefined;\n\n return this;\n };\n\n addActionIfEnabled = (\n actionValue: boolean | number | string | undefined,\n ): InterruptActionsBuilder => {\n if (!this.curComponentName || !this.curComponent) return this;\n\n if (!this.isActionValueAcceptable(this.curComponent, actionValue)) return this;\n\n let payload: any = {\n tabId: this.curComponent.tabs[0],\n value: actionValue,\n };\n\n if (this.curComponent.category === \"table\") {\n if (!this.tableCellPath) return this;\n\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}.${this.tableCellPath}`,\n rowId: this.tableRowId,\n };\n } else {\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}`,\n };\n }\n\n this.actions.push({\n validFor: true,\n action: {\n type: \"[FORM] SUBMIT\",\n payload: payload,\n },\n });\n\n return this;\n };\n\n addActionIfDisabled = (\n actionValue: boolean | number | string | undefined,\n ): InterruptActionsBuilder => {\n if (!this.curComponentName || !this.curComponent) return this;\n\n if (!this.isActionValueAcceptable(this.curComponent, actionValue)) return this;\n\n let payload: any = {\n tabId: this.curComponent.tabs[0],\n value: actionValue,\n };\n\n if (this.curComponent.category === \"table\") {\n if (!this.tableCellPath) return this;\n\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}.${this.tableCellPath}`,\n rowId: this.tableRowId,\n };\n } else {\n payload = {\n ...payload,\n path: `${this.curComponent.group}.${this.curComponent.name}`,\n };\n }\n\n this.actions.push({\n validFor: false,\n action: {\n type: \"[FORM] SUBMIT\",\n payload: payload,\n },\n });\n\n return this;\n };\n\n setPathToTableCell = (rowIndex: number, colName: string): InterruptActionsBuilder => {\n if (this.curComponent?.category !== \"table\") return this;\n\n this.tableRowId = rowIndex;\n this.tableRowCol = colName;\n this.tableCellPath = `${rowIndex}.${colName}`;\n\n return this;\n };\n\n private isActionValueAcceptable = (\n component: ModuleConfig.Component,\n actionValue: string | number | boolean | undefined,\n ): boolean => {\n if (component.category === \"hardware\") {\n if (component.type === \"ComboBox\") {\n const options = getSettingFromComponent(this.model, component)?.options;\n\n if (\n !options?.some(\n (option) =>\n option[component[\"displayOptionSetting\"] ?? \"alias\"] ===\n actionValue,\n )\n ) {\n return false;\n }\n } else if (component.type === \"boolean\") {\n // if (actionValue !== \"enabled\" && actionValue !== \"disabled\") {\n if (actionValue !== true && actionValue !== false) {\n return false;\n }\n }\n } else if (component.category === \"software\") {\n if (component.type === \"ComboBox\") {\n const options = component[\"options\"];\n\n if (!options?.some((option) => option === actionValue)) {\n return false;\n }\n } else if (component.type === \"boolean\") {\n if (actionValue !== true && actionValue !== false) {\n return false;\n }\n }\n } else if (component.category === \"table\") {\n if (!this.tableRowCol) return false;\n if (component.columns?.[this.tableRowCol]?.type === \"ComboBox\") {\n const options =\n component.columns?.[this.tableRowCol]?.defaultValue?.[\"options\"];\n\n if (!options?.some((option) => option === actionValue)) {\n return false;\n }\n } else if (component.columns?.[this.tableRowCol]?.type === \"boolean\") {\n if (actionValue !== true && actionValue !== false) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n buildActions = (): InterruptActions => {\n return this.actions;\n };\n}\n\nexport function getDefaultInterruptActions(\n model: AppModel,\n componentName: MyComponentNames | undefined,\n): InterruptActions {\n if (!componentName) return [];\n\n return (\n InterruptActionsBuilder.createActionBuilder(model)\n .createActionFor(componentName)\n .addActionIfEnabled(true)\n .addActionIfDisabled(false)\n // .addActionIfEnabled(\"enabled\")\n // .addActionIfDisabled(\"disabled\")\n .buildActions()\n );\n}\n","import { pin_row, intf_data } from \"@microchip/pin-standard\";\nimport {\n PCPHelper as PCPHelperInterface,\n PinCallbacks,\n} from \"@microchip/scf-automodule-interface/lib/src/pins\";\nimport { PCPStateActionBuilder } from \"./PCPStateActionBuilder\";\n\nconst getPinJsonObj = (): any => {\n try {\n return require(\"../../../src/pinsdata.json\");\n } catch (ex) {\n return { rows: [] };\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pinjsonobj = getPinJsonObj();\n\nexport class PCPHelper implements PCPHelperInterface {\n pinCallbacks: PinCallbacks | undefined = undefined;\n\n //TODO: Figure out if this needs to be in the interface\n public static stateActionBuilder(pinRow: pin_row): PCPStateActionBuilder {\n return new PCPStateActionBuilder(pinRow);\n }\n\n public setCallbacks(callbacks: PinCallbacks): void {\n this.pinCallbacks = callbacks;\n }\n\n private getAllFilteredRows = (allRows: pin_row[]): pin_row[] => {\n const validRows: pin_row[] = [];\n allRows.forEach((eachRow) => {\n const userRowData = this.userRowData(eachRow);\n // check the validity of user provided data\n if (userRowData && this.isRowValid(userRowData)) {\n validRows.push(userRowData);\n }\n });\n return validRows;\n };\n\n private isRowValid = (eachRow: pin_row): boolean => {\n if (\n eachRow?.name &&\n eachRow?.module &&\n eachRow?.function &&\n eachRow?.direction &&\n eachRow?.behaviour\n ) {\n return true;\n } else {\n return false;\n }\n };\n\n private userRowData = (eachRow: pin_row): pin_row | undefined => {\n let eachrowret: pin_row | undefined = eachRow;\n if (this.pinCallbacks?.getRowData) {\n eachrowret = this.pinCallbacks.getRowData({ ...eachRow });\n }\n return eachrowret;\n };\n\n private getAllRows = (): pin_row[] => {\n let pinRows: pin_row[] = pinjsonobj?.rows;\n let userdata: any = {};\n if (this.pinCallbacks?.getCompletePinData) {\n userdata = this.pinCallbacks.getCompletePinData();\n if (userdata && userdata?.rows) {\n pinRows = userdata.rows;\n }\n }\n return pinRows;\n };\n\n public getData = (): intf_data => {\n const retData = {\n rows: this.getAllFilteredRows(this.getAllRows()),\n };\n return retData;\n };\n}\n","import { ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport {\n pin_state,\n pin_row,\n pin_attribs_enum,\n actiontype,\n} from \"@microchip/pin-standard\";\nimport { PCPStateActionBuilder as PCPStateActionBuilderInterface } from \"@microchip/scf-automodule-interface/lib/src/pins\";\n\ntype ActionData = {\n pinstate: pin_state;\n validFor: string;\n value: any;\n actiontype?: actiontype;\n};\n\ntype PinAttributes = {\n attribs: pin_attribs_enum[];\n};\n\nexport class PCPStateActionBuilder implements PCPStateActionBuilderInterface {\n component: ModuleConfig.Component;\n rowName: string;\n pinRow: pin_row;\n tabId: string;\n actionDataArr: ActionData[] = [];\n\n constructor(pinRow: pin_row) {\n this.pinRow = pinRow;\n this.tabId = \"main\";\n }\n\n rowWithName(rowName: string): PCPStateActionBuilder {\n this.rowName = rowName;\n return this;\n }\n\n /**\n *\n * @param tabId - default tabId is \"main\", please change this as per your needs.\n * @returns PCPStateActionBuilder\n */\n compWithTabId(tabId: string): PCPStateActionBuilder {\n this.tabId = tabId;\n return this;\n }\n\n addIfLockedSetValue(pinRegEx: string, value: any): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.LOCKED,\n validFor: pinRegEx,\n value: value,\n actiontype: actiontype.SETACTION,\n });\n return this;\n }\n\n addIfLockedProvideAttribs(\n pinRegEx: string,\n attribs: pin_attribs_enum[],\n ): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.LOCKED,\n validFor: pinRegEx,\n value: this.formAttribs(attribs),\n actiontype: actiontype.ATTRIBACTION,\n });\n return this;\n }\n\n addIfUnlockedProvideAttribs(\n pinRegEx: string,\n attribs: pin_attribs_enum[],\n ): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.UNLOCK,\n validFor: pinRegEx,\n value: this.formAttribs(attribs),\n actiontype: actiontype.ATTRIBACTION,\n });\n return this;\n }\n\n formAttribs(attribarray: pin_attribs_enum[]): PinAttributes {\n return {\n attribs: attribarray,\n };\n }\n\n addIfUnLockedSetValue(pinRegEx: string, value: any): PCPStateActionBuilder {\n this.actionDataArr.push({\n pinstate: pin_state.UNLOCK,\n validFor: pinRegEx,\n value: value,\n actiontype: actiontype.SETACTION,\n });\n return this;\n }\n\n forComponent(component: ModuleConfig.Component): PCPStateActionBuilder {\n this.component = component;\n return this;\n }\n\n build(): any {\n const actionArr: any[] = [];\n\n if (this.pinRow.name === this.rowName) {\n this.actionDataArr.forEach((eachData: ActionData) => {\n actionArr.push({\n validFor: eachData.validFor,\n state: {\n [eachData.pinstate]: {\n type: \"[FORM] SUBMIT\",\n payload: {\n tabId: this.tabId,\n path: this.component.group + \".\" + this.component.name,\n value: eachData.value,\n },\n },\n },\n actiontype: eachData.actiontype ?? \"\",\n });\n });\n }\n\n return actionArr;\n }\n}\n/*\n PCPHelper\n .stateActionBuilder(rowData)\n .rowWithName(\"dacoutx\")\n .forComponent(dacOPEnCompo)\n .addIfLockedSetValue(\"DAC1OUT1\", \"DACOUT1 Enabled and DACOUT2 Disabled\")\n .addIfLockedSetValue(\"DAC1OUT2\", \"DACOUT2 Enabled and DACOUT1 Disabled\")\n .addIfUnLockedSetValue(\".*\", \"DACOUT1 and DACOUT2 are Disabled\")\n .build()\n*/\n","/* eslint-disable no-fallthrough */\n/*\n * @license:\n * © 2019 Microchip Technology Inc. and its subsidiaries.\n *\n * You may use this software and any derivatives exclusively with Microchip products.\n *\n * THIS SOFTWARE IS SUPPLIED BY MICROCHIP \"AS IS\". NO WARRANTIES, WHETHER EXPRESS,\n * IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF\n * NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS\n * INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE\n * IN ANY APPLICATION.\n *\n * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL\n * OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO\n * THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY\n * OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S\n * TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED\n * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.\n *\n * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE TERMS.\n */\nimport * as Types from \"./types\";\nimport * as AutoModuleTypes from \"./types/AutoModuleTypes\";\nimport { getModel } from \"./App/AppModel\";\nimport { getDerivedData as myDerivedData } from \"../../src/DerivedData\";\nimport { getConfigData } from \"./autoModule/getConfigData\";\nimport { createAutoViewPayloads } from \"./autoModule/AutoModuleView\";\nimport { getTemplates } from \"./autoModule/AutoModuleTemplates\";\nimport { ProcessorStages } from \"@microchip/scf-automodule-interface/lib/src/InterfaceTypes\";\nimport { getModuleDefaultDescription } from \"./autoModule/AutoModuleHelpers\";\n\n/**\n * Processor Stage Refactor\n * Step 1:\n * @param initialModule\n * @param stage\n */\nexport const process = (\n initialModule: AutoModuleTypes.MyModule,\n stage?: ProcessorStages,\n getDerivedData?: (dataModel: AutoModuleTypes.AppModel) => AutoModuleTypes.DerivedData,\n): AutoModuleTypes.MyProcessedModule => {\n // console.log(`Processor Stage: ${stage}`);\n // let time = Date.now();\n\n if (!getDerivedData) getDerivedData = myDerivedData;\n\n const model: AutoModuleTypes.AppModel | undefined = getModel(\n initialModule,\n getDerivedData,\n );\n if (!model) return initialModule as AutoModuleTypes.MyProcessedModule;\n\n let processedOutput: AutoModuleTypes.MyProcessedModule = {\n ...(initialModule as AutoModuleTypes.MyProcessedModule),\n };\n\n switch (stage) {\n case \"arguments\":\n processedOutput = {\n ...processedOutput,\n imports:\n (model\n .getImportInterfaces()\n .createProcessedImports(stage) as Types.MyImports) ??\n initialModule.imports,\n };\n break;\n case \"payloads\":\n processedOutput = {\n ...processedOutput,\n exports:\n (model\n .getExportInterfaces()\n .createProcessedExports() as Types.MyProcessedExports) ??\n initialModule.exports,\n name: model.getName(),\n help:\n model?.getDerivedFunctions()?.overrideModuleLevelHelp?.() ??\n getConfigData(model).help,\n };\n break;\n case \"results\":\n processedOutput = {\n ...processedOutput,\n imports:\n (model\n .getImportInterfaces()\n .createProcessedImports(stage) as Types.MyImports) ??\n initialModule.imports,\n };\n break;\n case \"views\":\n {\n const customTemplateData =\n model?.getDerivedFunctions().templateData?.() ?? {};\n const view = createAutoViewPayloads(model);\n processedOutput = {\n ...processedOutput,\n payload: {\n ...initialModule.payload,\n auto: view,\n customView: model\n ?.getDerivedFunctions()\n ?.getCustomView?.(initialModule),\n },\n templateData: customTemplateData,\n templates: getTemplates(model),\n alerts: model?.getDerivedFunctions().alerts?.(),\n name: model.getActiveName(),\n description:\n model?.getDerivedFunctions()?.getModuleDescription?.() ??\n getModuleDefaultDescription(),\n };\n }\n break;\n default:\n return initialModule as AutoModuleTypes.MyProcessedModule;\n }\n // time = Date.now() - time;\n // console.log(`\\nProcessor Time: ${time}ms\\n`);\n return processedOutput;\n};\n","import { UidMap } from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { RowFormData } from \"./tables\";\n\nexport class UidMapBuilder {\n private uidMap: UidMap = {};\n\n public addDefaultRows(rowData: RowFormData[]): this {\n rowData.forEach((row, rowCount) => {\n this.uidMap[row.uid] = row.rowId ?? rowCount;\n });\n return this;\n }\n public addDynamicRows(tableState: RowFormData[]): this {\n tableState.forEach((row) => {\n const uid: string | undefined = row?.uid;\n if (uid && uid.indexOf(\"dynamicRow_\") > -1) {\n this.incrementUidAndShift(uid, row.rowId);\n }\n });\n return this;\n }\n\n public removeRows(tableState: RowFormData[]): this {\n tableState.forEach((row) => {\n const uid: string | undefined = row?.uid;\n if (uid && row?.dynamicallyRemoved) {\n this.uidMap[uid] = -1;\n }\n });\n return this;\n }\n public sortByValue(): this {\n let count = 0;\n let sortedUids: UidMap[] = [];\n\n this.getUidKeys().forEach((uid) => {\n sortedUids.push({ [uid]: this.uidMap[uid] });\n });\n sortedUids = sortedUids.sort(\n (a, b) => a[Object.keys(a)[0]] - b[Object.keys(b)[0]],\n );\n sortedUids.forEach((uid) => {\n const uidKey = Object.keys(uid)[0];\n if (this.uidMap[uidKey] > -1) {\n this.uidMap[uidKey] = count++;\n }\n });\n return this;\n }\n\n public create(): UidMap {\n return this.uidMap;\n }\n\n private incrementUidAndShift(uid: string, rowId: number): void {\n this.getUidKeys().forEach((uid) => {\n if (this.uidMap[uid] >= rowId) {\n this.uidMap[uid]++;\n }\n });\n this.uidMap[uid] = rowId;\n }\n\n private getUidKeys(): string[] {\n return Object.keys(this.uidMap);\n }\n}\n","import {\n ColumnBasic,\n ColumnComboBox,\n RowData,\n TableComponent,\n} from \"@microchip/scf-automodule-interface/lib/src/ModuleConfig\";\nimport {\n ActionsObject,\n CellValidationInfo,\n TableAction,\n TableColumn,\n TableSchema,\n TableSchemaProperties,\n TableUiSchema,\n UidMap,\n} from \"@microchip/scf-autoview/lib/simpleForm/simpleForm-types\";\nimport { AppModel, ModuleConfig } from \"@microchip/scf-automodule-interface\";\nimport { MyComponentNames } from \"../types\";\nimport { DerivedFunctions } from \"../types/AutoModuleTypes\";\nimport { UidMapBuilder } from \"./UidMapBuilder\";\nimport { find } from \"@microchip/scf-device/lib/util/Arrays\";\n\nexport interface RowFormData {\n [key: string]: any;\n}\nexport interface Cell {\n rowId: number;\n columnName: string;\n value: any;\n}\nexport enum RowPrefix {\n Default = \"defaultRow_\",\n Dynamic = \"dynamicRow_\",\n}\nexport interface Columns {\n [key: string]: ColumnBasic | ColumnComboBox;\n}\n\nexport function overrideTableDefaultsWithChanges(\n rowChanged: RowFormData[],\n initialFormData: RowFormData[],\n uidMap: UidMap,\n): RowFormData[] {\n const value: RowFormData[] = [...initialFormData];\n\n if (Array.isArray(rowChanged)) {\n rowChanged.forEach((changedRow) => {\n const changedUid = changedRow.uid;\n const rowChangeNum = uidMap[changedUid];\n value[rowChangeNum] = { ...value[rowChangeNum], ...changedRow };\n });\n }\n return value;\n}\nexport function isTableInState(tabState: any, component: TableComponent): boolean {\n return (\n tabState && tabState[component.group] && tabState[component.group][component.name]\n );\n}\n\nexport function calculateColumnWidth(columns: Columns | undefined): string {\n return columns ? 100 / Object.keys(columns).length + \"%\" : \"auto\";\n}\n\nexport function getInitialTableFormData(\n table: TableComponent,\n columnNames: string[],\n model: AppModel,\n): RowFormData[] {\n let value: RowFormData[] = [];\n const tableFormData: RowFormData = {};\n columnNames.forEach((columnName) => {\n if (!tableFormData[columnName]) {\n tableFormData[columnName] = getDefaultValue(\n model.getDerivedFunctions().overrideTableDefaultValues,\n table.columns[columnName],\n columnName,\n table.name,\n );\n }\n });\n if (!table?.rowData) {\n value = createInitialRows(table, tableFormData);\n } else {\n let rowId = 0;\n table?.rowData.forEach((row) => {\n const rowDataCols: string[] = Object.keys(row);\n columnNames.forEach((colName) => {\n if (rowDataCols.indexOf(colName) === -1) {\n row = {\n ...row,\n [colName]: tableFormData[colName],\n uid: createRowUid(RowPrefix.Default, rowId),\n };\n }\n });\n\n value.push({\n ...row,\n rowId: rowId++,\n uid: createRowUid(RowPrefix.Default, rowId),\n });\n });\n }\n return value;\n}\nexport function createInitialRows(\n table: TableComponent,\n tableFormData: RowFormData = {},\n): RowData[] {\n const value: RowData[] = [];\n const initialRows = table?.defaultRowNum ?? 1;\n for (let i = 0; i < initialRows; i++) {\n value.push({\n ...tableFormData,\n rowId: i,\n uid: createRowUid(RowPrefix.Default, i),\n });\n }\n return value;\n}\nfunction createDefaultTableAction(\n component,\n row: number,\n column: string,\n tab: string,\n uid: string,\n): ModuleConfig.AutoAction {\n return {\n type: \"[Table] EDIT_CELL\",\n payload: {\n tabId: tab ?? \"main\",\n path: `${component?.group}.${component?.name}`,\n column: column,\n value: \"%v\",\n uid: uid,\n rowId: row,\n },\n };\n}\nexport function overrideCellValue(tableData: RowFormData[], cell: Cell): RowFormData[] {\n const modifiedTableData = [...tableData];\n modifiedTableData[cell.rowId][cell.columnName] = cell.value;\n return modifiedTableData;\n}\nexport function addRowsToTable(\n tableData: RowFormData[],\n columns: Columns,\n newRow: RowFormData,\n numberOfRows: number,\n): RowFormData[] {\n if (numberOfRows <= 0) {\n return tableData;\n }\n const value = addRowToTable(tableData, columns, {\n ...newRow,\n uid: RowPrefix.Dynamic + (numberOfRows - 1),\n });\n return addRowsToTable(value, columns, newRow, numberOfRows - 1);\n}\nexport function addRowToTable(\n tableData: RowFormData[],\n columns: Columns,\n newRow: RowFormData,\n): RowFormData[] {\n const columnNames: string[] = Object.keys(columns);\n const newRowCols: string[] = Object.keys(newRow);\n const newRowId: number = newRow.rowId;\n const defaultColumnWidth: string = calculateColumnWidth(columns);\n let filteredTableTemp: RowFormData[] = [];\n if (tableData.length === 0) {\n filteredTableTemp.push(newRow);\n return filteredTableTemp;\n }\n if (newRowId != null) {\n columnNames.forEach((colName) => {\n if (newRowCols.indexOf(colName) === -1) {\n newRow = {\n ...newRow,\n [colName]:\n columns[colName].defaultValue?.[\"value\"] ??\n columns[colName].defaultValue,\n columnWidth: columns[colName].columnWidth\n ? columns[colName].columnWidth + \"%\"\n : defaultColumnWidth,\n };\n }\n });\n const tableFirstHalf: RowFormData[] = tableData.slice(0, newRowId);\n const tableSecondHalf: RowFormData[] = tableData.slice(newRowId);\n for (let i = 0; i < tableSecondHalf.length; i++) {\n const currentRowId = tableSecondHalf[i].rowId;\n tableSecondHalf[i] = { ...tableSecondHalf[i], rowId: currentRowId + 1 };\n const actions: ModuleConfig.AutoAction = tableSecondHalf[i]?.actions;\n if (actions) {\n tableSecondHalf[i][\"actions\"] = updateActionsRowId(\n actions,\n currentRowId + 1,\n );\n }\n }\n tableFirstHalf.push(newRow);\n filteredTableTemp = [...tableFirstHalf, ...tableSecondHalf];\n return filteredTableTemp;\n }\n return tableData;\n}\n\nexport function removeRowFromTable(\n tableData: RowFormData[],\n rowId: number,\n): RowFormData[] {\n const tableRemoved = tableData.filter((row) => row.rowId !== rowId);\n for (let i = 0; i < tableRemoved.length; i++) {\n tableRemoved[i].rowId = i;\n const actions: ModuleConfig.AutoAction = tableRemoved[i]?.actions;\n if (actions) {\n tableRemoved[i][\"actions\"] = updateActionsRowId(actions, i);\n }\n }\n return tableRemoved;\n}\n\nfunction updateActionsRowId(\n currentActions: ModuleConfig.AutoAction,\n rowId: number,\n): ModuleConfig.AutoAction {\n const modifiedActions = { ...currentActions };\n const columnNames = Object.keys(currentActions);\n columnNames.forEach((columnName) => {\n const payload = modifiedActions[columnName]?.[\"payload\"];\n if (payload) {\n const path = payload[\"path\"].split(\".\");\n path[path.length - 2] = rowId;\n modifiedActions[columnName][\"payload\"][\"rowId\"] = rowId;\n modifiedActions[columnName][\"payload\"][\"path\"] = path.join(\".\");\n }\n });\n return modifiedActions;\n}\n\nexport function getTableFormData(\n model: AppModel,\n table: TableComponent,\n tab: string,\n): any {\n return (\n model.getDerivedFunction(table.name, table, model, tab) ??\n getValueBasedOnState(table, model, tab)\n );\n}\nexport function getValueBasedOnState(\n table: TableComponent,\n model: AppModel,\n tab: string,\n): RowFormData[] {\n const columnNames: string[] = Object.keys(table.columns);\n const modelState = model.getState();\n const tabState = modelState ? modelState[tab] : undefined;\n const initialFormData: RowFormData[] = getInitialTableFormData(\n table,\n columnNames,\n model,\n );\n if (!isTableInState(tabState, table)) {\n return initialFormData;\n } else {\n const rowChanged: RowFormData[] = tabState[table.group][table.name];\n const tableUids: UidMap = createTableUids(table, tab, model, rowChanged);\n return overrideDefaultsAndFilterRows(\n rowChanged,\n initialFormData,\n table.columns,\n tableUids,\n table,\n tab,\n );\n }\n}\n\nexport function overrideDefaultsAndFilterRows(\n rowChanged: RowFormData[],\n initialFormData: RowFormData[],\n columns: Columns,\n tableUids: any,\n component: TableComponent,\n tab: string,\n): RowFormData[] {\n const modifiedForData: RowFormData[] = [...initialFormData];\n\n const keys = Object.keys(tableUids);\n rowChanged = rowChanged.filter((row) => row != null);\n rowChanged.forEach((row) => {\n if (row.uid.indexOf(RowPrefix.Dynamic) > -1) {\n modifiedForData.push(row);\n }\n });\n let filteredModifed: RowFormData[] = [];\n keys.forEach((uid) => {\n modifiedForData.forEach((row) => {\n if (row.uid === uid) {\n filteredModifed[tableUids[uid]] = { ...initialFormData[0], ...row };\n }\n });\n });\n filteredModifed = filteredModifed.filter((row) => row);\n for (let i = 0; i < filteredModifed.length; i++) {\n if (filteredModifed[i].uid.indexOf(RowPrefix.Dynamic) > -1) continue;\n filteredModifed[i].rowId++;\n }\n for (let i = 0; i < modifiedForData.length; i++) {\n Object.keys(columns).forEach((columnName) => {\n modifiedForData[i].actions = updateActionsRowId(\n createDefaultTableAction(component, i, columnName, tab, tableUids),\n i,\n );\n });\n }\n return overrideTableDefaultsWithChanges(rowChanged, filteredModifed, tableUids);\n}\n\nexport function createTableUids(\n component: TableComponent,\n tab: string,\n model: AppModel | undefined,\n tableState: RowFormData[],\n): UidMap {\n const table: TableComponent = component;\n const dynamicTableData: RowData[] = model?.getDerivedFunction(\n component.name,\n component,\n model,\n tab,\n );\n\n if (dynamicTableData) {\n const uidMap: UidMap = {};\n let rowNum = 0;\n dynamicTableData.forEach((entry) => {\n const uid = entry?.uid;\n if (uid !== undefined) {\n uidMap[uid] = rowNum++;\n }\n });\n return uidMap;\n }\n\n let rowData: RowFormData[] | undefined = table[\"rowData\"];\n if (!dynamicTableData && rowData) {\n for (let i = 0; i < rowData.length; i++) {\n if (!rowData[i].uid) {\n rowData[i].uid = createRowUid(RowPrefix.Default, i);\n }\n rowData[i].rowId =\n find(tableState ?? [], (row) => row.uid === rowData?.[i].uid)?.rowId ??\n rowData[i].rowId;\n }\n } else {\n rowData =\n dynamicTableData ??\n createInitialRows(table).map((row) => {\n return {\n ...(row ?? {}),\n rowId:\n find(tableState ?? [], (r) => r.uid === row?.uid)?.rowId ??\n row.rowId,\n };\n });\n }\n return new UidMapBuilder()\n .addDefaultRows(rowData)\n .addDynamicRows(tableState ?? [])\n .removeRows(tableState ?? [])\n .sortByValue()\n .create();\n}\n\nexport function getCellValidationInfo(\n component: TableComponent,\n): Array<CellValidationInfo | undefined> {\n const table: TableComponent = component;\n const colInfo: Array<CellValidationInfo | undefined> = [];\n const columns = table.columns;\n\n for (const column in columns) {\n const colData: any = table.columns[column];\n let info: CellValidationInfo | undefined;\n if (colData[\"cellValidator\"]) {\n info = {\n type: colData[\"type\"],\n minValue: colData[\"cellValidator\"][\"minValue\"],\n maxValue: colData[\"cellValidator\"][\"maxValue\"],\n errMessage: colData[\"cellValidator\"][\"errorMessage\"],\n errTitle: colData[\"cellValidator\"][\"errorTitle\"],\n cValidation: colData[\"cellValidator\"][\"cValidation\"],\n cValidationErrTitle: colData[\"cellValidator\"][\"cValidationErrorTitle\"],\n cValidationErrMessage:\n colData[\"cellValidator\"][\"cValidationErrorMessage\"],\n };\n }\n colInfo.push(info);\n }\n\n return colInfo;\n}\n\nexport function getTableActions(\n component: TableComponent,\n tab: string,\n model: AppModel | undefined,\n uids: any,\n rowFormData?: RowFormData[],\n): ActionsObject {\n const table: TableComponent = component;\n let dynamicTableData: RowFormData[] | undefined;\n if (!rowFormData) {\n dynamicTableData = model?.getDerivedFunction(\n component.name,\n component,\n model,\n tab,\n );\n }\n\n const rowData =\n rowFormData ?? dynamicTableData ?? table[\"rowData\"] ?? createInitialRows(table);\n const columnNames: string[] = Object.keys(table.columns);\n const tableActions = { table: {} };\n let rowCount = 0;\n const tableState = model?.getState()?.[tab]?.[component.group]?.[component.name];\n\n rowData.forEach((row) => {\n columnNames.forEach((columnName) => {\n if (!tableActions[\"table\"][row.uid]) {\n tableActions[\"table\"][row.uid] = {};\n }\n let uid;\n for (const uidsKey in uids) {\n if (uids[uidsKey] === row.rowId) {\n uid = uidsKey;\n }\n }\n uid = uid ?? createRowUid(RowPrefix.Default, rowCount);\n let defaultAction: ModuleConfig.AutoAction = createDefaultTableAction(\n component,\n rowCount,\n columnName,\n tab,\n uid,\n );\n\n if (tableState) {\n let ind = -1;\n const filtered = tableState.filter(function (row, index) {\n ind = index;\n return row.uid === uid;\n });\n if (filtered.length) {\n defaultAction = createDefaultTableAction(\n component,\n ind,\n columnName,\n tab,\n uid ?? createRowUid(RowPrefix.Default, rowCount),\n );\n }\n }\n if (component.columns[columnName].type == \"ComboBox\") {\n defaultAction[\"payload\"] = {\n ...defaultAction[\"payload\"],\n options: getComboOptions(\n model?.getDerivedFunctions()?.overrideTableOptions,\n table.columns[columnName],\n columnName,\n component.name,\n ),\n };\n }\n const cellAction: ModuleConfig.AutoAction | undefined =\n row.actions?.[columnName] ?? defaultAction;\n\n tableActions[\"table\"][row.uid][columnName] =\n model?.getDerivedFunction(\"getActions\", table.name, cellAction) ??\n cellAction;\n });\n rowCount++;\n });\n const uidKeys = Object.keys(uids);\n uidKeys.forEach((uidKey) => {\n columnNames.forEach((columnName) => {\n if (uids[uidKey] > -1) {\n if (!tableActions[\"table\"][uidKey]) {\n tableActions[\"table\"][uidKey] = {};\n tableActions[\"table\"][uidKey][columnName] = createDefaultTableAction(\n table,\n uids[uidKey],\n columnName,\n tab,\n uidKey,\n );\n } else if (!tableActions[\"table\"][uidKey][columnName]) {\n tableActions[\"table\"][uidKey][columnName] = createDefaultTableAction(\n table,\n uids[uidKey],\n columnName,\n tab,\n uidKey,\n );\n }\n }\n });\n });\n return JSON.stringify(tableActions);\n}\nexport function getTableUiSchema(\n table: TableComponent,\n columns: TableColumn[],\n): TableUiSchema {\n let tableUi: any = {\n tableCols: columns,\n search: table[\"isSearchable\"],\n striped: true,\n bordered: false,\n };\n if (table[\"canRemoveRows\"]) {\n tableUi = {\n ...tableUi,\n rightActions: getTableRightActions(),\n };\n }\n if (table[\"canInsertRows\"]) {\n tableUi = {\n ...tableUi,\n leftActions: getTableLeftActions(),\n };\n }\n if (table.canMoveRowDown) {\n tableUi = {\n ...tableUi,\n leftActions: (tableUi.leftActions ?? []).concat(getTableMoveRowActions()[0]),\n };\n }\n if (table.canMoveRowUp) {\n tableUi = {\n ...tableUi,\n leftActions: (tableUi.leftActions ?? []).concat(getTableMoveRowActions()[1]),\n };\n }\n\n return {\n \"ui:field\": \"table\",\n className: \"col-md-12 individualComponent\",\n table: { ...tableUi },\n };\n}\nexport function getTableComponentSchema(\n component: TableComponent<MyComponentNames>,\n model: AppModel,\n): TableSchema {\n const tableColumns: TableSchemaProperties = {};\n for (const columnsKey in component.columns) {\n let rjsfType;\n if (component.columns[columnsKey].type === \"ComboBox\") {\n const colBox: ColumnComboBox = component.columns[\n columnsKey\n ] as ColumnComboBox;\n rjsfType = \"string\";\n tableColumns[columnsKey] = {\n type: rjsfType,\n title: colBox.title,\n default: getDefaultValue(\n model.getDerivedFunctions().overrideDefaultValues,\n colBox,\n columnsKey,\n component.name,\n ),\n enum: getComboOptions(\n model.getDerivedFunctions().overrideTableOptions,\n colBox,\n columnsKey,\n component.name,\n ),\n };\n } else {\n rjsfType = component?.columns[columnsKey]?.type;\n tableColumns[columnsKey] = {\n type: rjsfType,\n title: component.columns[columnsKey].title,\n default: component.columns[columnsKey].defaultValue,\n };\n }\n }\n return {\n type: \"array\",\n title:\n model.getDerivedFunction(\"overrideTitle\", component.name) ??\n component.description,\n items: {\n type: \"object\",\n properties: {\n ...tableColumns,\n },\n },\n };\n}\n\nconst getDefaultValue = (\n overrideDefaultValues: DerivedFunctions[\"overrideTableDefaultValues\"],\n component: ColumnComboBox | ColumnBasic,\n componentName: string,\n tableName: string,\n): ModuleConfig.SoftwareComponent[\"defaultValue\"] => {\n return (\n overrideDefaultValues?.(tableName, componentName) ??\n (component.type === \"ComboBox\"\n ? component.defaultValue.value\n : component.defaultValue)\n );\n};\n\nconst getComboOptions = (\n overrideOptions: DerivedFunctions[\"overrideTableOptions\"],\n component: ColumnComboBox | ColumnBasic,\n componentName: string,\n tableName: string,\n): any[] => {\n const dynamicOptions: any[] | undefined = overrideOptions?.(tableName, componentName);\n return dynamicOptions && dynamicOptions.length > 0\n ? dynamicOptions\n : component?.defaultValue?.[\"options\"];\n};\n\nfunction getTableLeftActions(): TableAction[] {\n return [\n {\n dataField: \"insert-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n ];\n}\n\nfunction getTableRightActions(): TableAction[] {\n return [\n {\n dataField: \"delete-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n ];\n}\n\nfunction getTableMoveRowActions(): TableAction[] {\n return [\n {\n dataField: \"row-down-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n {\n dataField: \"row-up-button\",\n editable: false,\n displayName: \"\",\n columnWidth: \"6%\",\n width: \"6%\",\n },\n ];\n}\n\nexport function getCellStyle(isReadonly: boolean | undefined): CellStyles {\n const tdStyle = {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n };\n if (isReadonly) {\n tdStyle[\"backgroundColor\"] = \"#EEEEEE\";\n }\n return tdStyle;\n}\n\nexport function createRowUid(prefix: RowPrefix, postfix: number): string {\n return prefix + postfix;\n}\n\ninterface CellStyles {\n [styleAttribute: string]: string;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar initializer_system_1 = require(\"./initializer-system\");\nexports.Interface = initializer_system_1.Interface;\nexports.INIT_PRIORITY = initializer_system_1.INIT_PRIORITY;\nexports.sortInitializers = initializer_system_1.sortInitializers;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar InterfaceTypes = __importStar(require(\"@microchip/scf-interface\"));\nvar pkgJson = __importStar(require(\"../package.json\"));\nvar getInterfaceId = function () {\n return {\n name: InterfaceTypes.getInterfaceName(pkgJson),\n version: InterfaceTypes.getInterfaceVersion(pkgJson),\n };\n};\nexports.sortInitializers = function (initializers) {\n var retinitializers = __spreadArrays(initializers);\n retinitializers.sort(prioritySorter);\n return retinitializers;\n};\nvar prioritySorter = function (a, b) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var result = 0;\n var apriority = (_b = (_a = a === null || a === void 0 ? void 0 : a.initializer) === null || _a === void 0 ? void 0 : _a.priority) !== null && _b !== void 0 ? _b : INIT_PRIORITY.DEFAULT;\n var bpriority = (_d = (_c = b === null || b === void 0 ? void 0 : b.initializer) === null || _c === void 0 ? void 0 : _c.priority) !== null && _d !== void 0 ? _d : INIT_PRIORITY.DEFAULT;\n if (apriority < bpriority) {\n result = -1;\n }\n else if (apriority > bpriority) {\n result = 1;\n }\n else {\n //same priority sort via intializer name alphabetically\n result = (_h = (_f = (_e = a === null || a === void 0 ? void 0 : a.initializer) === null || _e === void 0 ? void 0 : _e.name) === null || _f === void 0 ? void 0 : _f.localeCompare((_g = b === null || b === void 0 ? void 0 : b.initializer) === null || _g === void 0 ? void 0 : _g.name)) !== null && _h !== void 0 ? _h : 0;\n }\n return result;\n};\nvar INIT_PRIORITY;\n(function (INIT_PRIORITY) {\n INIT_PRIORITY[INIT_PRIORITY[\"START\"] = 1] = \"START\";\n INIT_PRIORITY[INIT_PRIORITY[\"PRE_PERIPHERAL\"] = 50] = \"PRE_PERIPHERAL\";\n INIT_PRIORITY[INIT_PRIORITY[\"PERIPHERAL\"] = 100] = \"PERIPHERAL\";\n INIT_PRIORITY[INIT_PRIORITY[\"POST_PERIPHERAL\"] = 150] = \"POST_PERIPHERAL\";\n INIT_PRIORITY[INIT_PRIORITY[\"DEFAULT\"] = 200] = \"DEFAULT\";\n INIT_PRIORITY[INIT_PRIORITY[\"PRE_SOFTWARE\"] = 250] = \"PRE_SOFTWARE\";\n INIT_PRIORITY[INIT_PRIORITY[\"SOFTWARE\"] = 300] = \"SOFTWARE\";\n INIT_PRIORITY[INIT_PRIORITY[\"POST_SOFTWARE\"] = 350] = \"POST_SOFTWARE\";\n INIT_PRIORITY[INIT_PRIORITY[\"END\"] = 400] = \"END\";\n})(INIT_PRIORITY = exports.INIT_PRIORITY || (exports.INIT_PRIORITY = {}));\nvar createMock = function () {\n return {\n interfaceId: getInterfaceId(),\n payload: {\n moduleName: \"MyModule\",\n },\n args: {},\n results: {\n requestId: {\n initializer: {\n name: \"mymodule_init\",\n header: {\n name: \"mymodule.h\",\n path: \"include/\",\n },\n },\n registerInit: [\n {\n name: \"OSCCON1\",\n comment: \"//Comments\",\n value: 55,\n valueAsHex: \"0x55\",\n },\n ],\n },\n },\n };\n};\nvar createPrototypeImport = function () {\n return {\n interfaceId: getInterfaceId(),\n };\n};\nvar createPrototypeExport = function () {\n return {\n interfaces: [{ interfaceId: getInterfaceId() }],\n };\n};\nexports.Interface = {\n createPrototypeExport: createPrototypeExport,\n createPrototypeImport: createPrototypeImport,\n getInterfaceId: getInterfaceId,\n createMock: createMock,\n};\n//# sourceMappingURL=initializer-system.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pin_standard_1 = require(\"./pin-standard\");\nexports.pin_standard = pin_standard_1.pin_standard;\nexports.pin_state = pin_standard_1.pin_state;\nexports.direction = pin_standard_1.direction;\nexports.behaviour = pin_standard_1.behaviour;\nexports.data_schema = pin_standard_1.data_schema;\nexports.pin_attribs_enum = pin_standard_1.pin_attribs_enum;\nexports.actiontype = pin_standard_1.actiontype;\nexports.QueryAdapterKey = pin_standard_1.QueryAdapterKey;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pin_standard = function () {\n return {\n interfaceId: {\n name: \"pin-standard\",\n version: \"0.1.0\",\n },\n };\n};\nvar QueryAdapterKey;\n(function (QueryAdapterKey) {\n QueryAdapterKey[\"ALLPINS\"] = \"allpins\";\n QueryAdapterKey[\"PPS\"] = \"pps\";\n QueryAdapterKey[\"PORTMUX\"] = \"portmux\";\n})(QueryAdapterKey = exports.QueryAdapterKey || (exports.QueryAdapterKey = {}));\nvar pin_state;\n(function (pin_state) {\n pin_state[\"EMPTY\"] = \"E\";\n pin_state[\"LOCKED\"] = \"L\";\n pin_state[\"UNLOCK\"] = \"UL\";\n pin_state[\"DiSABLE_LOCK\"] = \"DL\";\n pin_state[\"UNLOCKED_DISABLED\"] = \"DUL\";\n pin_state[\"LOCKED_LINK\"] = \"LL\";\n pin_state[\"UNLOCKED_MUX\"] = \"MUL\";\n pin_state[\"LOCKED_CONFLICT\"] = \"CL\";\n})(pin_state = exports.pin_state || (exports.pin_state = {}));\nvar pin_interrupts_enum;\n(function (pin_interrupts_enum) {\n pin_interrupts_enum[\"INTDIS_BUFFEN\"] = \"INTDIS_BUFFEN\";\n pin_interrupts_enum[\"BOTH_EDGES\"] = \"BOTH_EDGES\";\n pin_interrupts_enum[\"RISING_EDGE\"] = \"RISING_EDGE\";\n pin_interrupts_enum[\"FALLING_EDGE\"] = \"FALLING_EDGE\";\n pin_interrupts_enum[\"NONE\"] = \"NONE\";\n pin_interrupts_enum[\"LOW_LEVEL\"] = \"LOW_LEVEL\";\n})(pin_interrupts_enum = exports.pin_interrupts_enum || (exports.pin_interrupts_enum = {}));\nvar pin_attribs_enum;\n(function (pin_attribs_enum) {\n pin_attribs_enum[\"aliasReEx\"] = \"aliasReEx\";\n pin_attribs_enum[\"cname\"] = \"cname\";\n pin_attribs_enum[\"high\"] = \"high\";\n pin_attribs_enum[\"inv\"] = \"inv\";\n pin_attribs_enum[\"wpu\"] = \"wpu\";\n pin_attribs_enum[\"od\"] = \"od\";\n pin_attribs_enum[\"analog\"] = \"analog\";\n pin_attribs_enum[\"ioc\"] = \"ioc\";\n pin_attribs_enum[\"intcallback\"] = \"intcallback\";\n pin_attribs_enum[\"alias\"] = \"alias\";\n})(pin_attribs_enum = exports.pin_attribs_enum || (exports.pin_attribs_enum = {}));\nvar actiontype;\n(function (actiontype) {\n actiontype[\"SETACTION\"] = \"SETACTION\";\n actiontype[\"ATTRIBACTION\"] = \"ATTRIBACTION\";\n})(actiontype = exports.actiontype || (exports.actiontype = {}));\nvar direction;\n(function (direction) {\n direction[\"output\"] = \"output\";\n direction[\"input\"] = \"input\";\n direction[\"bidirectional\"] = \"bidirectional\";\n})(direction = exports.direction || (exports.direction = {}));\nvar behaviour;\n(function (behaviour) {\n behaviour[\"LOCK_UNLOCK\"] = \"LOCK_UNLOCK\";\n behaviour[\"ALWAYS_LOCKED\"] = \"ALWAYS_LOCKED\";\n behaviour[\"SINGLE_PIN_MUX\"] = \"SINGLE_PIN_MUX\";\n behaviour[\"OPTIONAL_PIN_MUX\"] = \"OPTIONAL_PIN_MUX\";\n behaviour[\"PPS\"] = \"PPS\";\n behaviour[\"PORTMUX\"] = \"PORTMUX\";\n behaviour[\"EXCLUSIVE_LOCK\"] = \"EXCLUSIVE_LOCK\";\n})(behaviour = exports.behaviour || (exports.behaviour = {}));\n//------------------------------------ schema ------------------------------------//\nexports.data_schema = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n $ref: \"#/definitions/intf_data\",\n definitions: {\n intf_data: {\n type: \"object\",\n properties: {\n rows: {\n type: \"array\",\n items: {\n $ref: \"#/definitions/pin_row\",\n },\n },\n },\n required: [\"rows\"],\n additionalProperties: false,\n },\n pin_row: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n module: {\n type: \"string\",\n },\n function: {\n type: \"string\",\n },\n direction: {\n $ref: \"#/definitions/direction\",\n },\n filter: {\n $ref: \"#/definitions/filter\",\n },\n behaviour: {\n $ref: \"#/definitions/behaviour\",\n },\n behaviourMeta: {\n $ref: \"#/definitions/behaviourMeta\",\n },\n attribs: {\n type: \"array\",\n items: {\n $ref: \"#/definitions/pin_attribs\",\n },\n },\n groupsdata: {\n $ref: \"#/definitions/pingroups_data\",\n },\n actions: {},\n },\n required: [\"name\", \"module\", \"function\", \"direction\", \"filter\", \"behaviour\"],\n additionalProperties: false,\n },\n direction: {\n type: \"string\",\n enum: [\"output\", \"input\", \"bidirectional\"],\n },\n filter: {\n type: \"object\",\n properties: {\n module: {\n type: \"string\",\n },\n aliasReEx: {\n type: \"string\",\n },\n },\n required: [\"module\", \"aliasReEx\"],\n additionalProperties: false,\n },\n behaviour: {\n type: \"string\",\n enum: [\n \"LOCK_UNLOCK\",\n \"ALWAYS_LOCKED\",\n \"SINGLE_PIN_MUX\",\n \"OPTIONAL_PIN_MUX\",\n \"PPS\",\n \"PORTMUX\",\n \"EXCLUSIVE_LOCK\",\n ],\n },\n behaviourMeta: {\n type: \"object\",\n properties: {\n lockPinRegEx: {\n type: \"string\",\n },\n },\n required: [\"lockPinRegEx\"],\n additionalProperties: false,\n },\n pin_attribs: {\n type: \"object\",\n properties: {\n aliasReEx: {\n type: \"string\",\n },\n cname: {\n type: \"string\",\n },\n high: {\n type: \"boolean\",\n },\n inv: {\n type: \"boolean\",\n },\n wpu: {\n type: \"boolean\",\n },\n od: {\n type: \"boolean\",\n },\n analog: {\n type: \"boolean\",\n },\n ioc: {\n $ref: \"#/definitions/pin_interrupts_enum\",\n },\n bidirection_out: {\n type: \"boolean\",\n },\n },\n required: [\"aliasReEx\"],\n additionalProperties: false,\n },\n pin_interrupts_enum: {\n type: \"string\",\n enum: [\n \"INTDIS_BUFFEN\",\n \"BOTH_EDGES\",\n \"RISING_EDGE\",\n \"FALLING_EDGE\",\n \"NONE\",\n \"LOW_LEVEL\",\n ],\n },\n pingroups_data: {\n type: \"object\",\n properties: {\n groups: {\n type: \"array\",\n items: {\n $ref: \"#/definitions/pins_group\",\n },\n },\n },\n required: [\"groups\"],\n additionalProperties: false,\n },\n pins_group: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n filter: {\n $ref: \"#/definitions/grpfilter\",\n },\n datapath: {\n type: \"string\",\n },\n },\n required: [\"name\", \"filter\"],\n additionalProperties: false,\n },\n grpfilter: {\n type: \"object\",\n properties: {\n aliasReEx: {\n type: \"string\",\n },\n },\n required: [\"aliasReEx\"],\n additionalProperties: false,\n },\n },\n};\n//# sourceMappingURL=pin-standard.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AlertTypes;\n(function (AlertTypes) {\n AlertTypes[\"Error\"] = \"error\";\n AlertTypes[\"Warning\"] = \"warning\";\n AlertTypes[\"Hint\"] = \"hint\";\n})(AlertTypes = exports.AlertTypes || (exports.AlertTypes = {}));\n/**\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n */\nfunction hasOptions(dep) {\n return dep.options !== undefined;\n}\nexports.hasOptions = hasOptions;\n/**\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n */\nfunction isAssigned(dep) {\n return typeof dep.handle !== \"undefined\";\n}\nexports.isAssigned = isAssigned;\n/**\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n */\nfunction isUnassigned(dep) {\n return typeof dep.handle === \"undefined\";\n}\nexports.isUnassigned = isUnassigned;\n/**\n * Type guard function for SingletonExport\n * See User-Defined Type Guards in the Typescript Handbook on Advanced Types\n * @see https://www.typescriptlang.org/docs/handbook/advanced-types.html\n * @param resource the export to check on being a singleton\n * @deprecated No longer used. Replaced with dynamic singleton identification\n * at runtime.\n */\nfunction isSingleton(resource) {\n return typeof resource.isSingleton !== \"undefined\" && resource.isSingleton;\n}\nexports.isSingleton = isSingleton;\n/**\n * Returns a copy of `populatedImport` with all options removed which\n * cause `optionFilter` to return false.\n */\nfunction filterOptions(populatedImport, optionFilter) {\n if (populatedImport.options) {\n return __assign({}, populatedImport, { options: populatedImport.options.filter(optionFilter) });\n }\n return populatedImport;\n}\nexports.filterOptions = filterOptions;\n/**\n * Returns a copy of `populatedImport` with the options' handle labels\n * mapped according to `labelFactory`.\n */\nfunction mapOptionLabels(populatedImport, labelFactory) {\n if (populatedImport.options) {\n return __assign({}, populatedImport, { options: populatedImport.options.map(function (option) {\n return __assign({}, option, { handle: __assign({}, option.handle, { label: labelFactory(option) }) });\n }) });\n }\n return populatedImport;\n}\nexports.mapOptionLabels = mapOptionLabels;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Setting_1 = require(\"./Setting\");\nvar Register_1 = require(\"./Register\");\nvar Arrays_1 = require(\"./util/Arrays\");\n/** Builder pattern */\nvar CalculateRegisterValue = /** @class */ (function () {\n function CalculateRegisterValue(register) {\n var _this = this;\n this.modifiedSettings = [];\n /** Assign a numerical value to the given `Setting`. */\n this.withNumberValue = function (setting, value) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign number value to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new NumberSettingValue(setting, value)\n ]);\n return _this;\n };\n /** Assign the given `Option` to the given `Setting`. */\n this.withOption = function (setting, option) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n if (!_this.getOption(setting, option)) {\n throw new Error(\"Option \" + option.name + \" is not present in Setting \" + setting.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new OptionSettingValue(setting, option)\n ]);\n return _this;\n };\n /** Assign the `Option` matching the given alias to the given `Setting`. */\n this.withOptionAlias = function (setting, optionAlias) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option alias to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByAlias(optionAlias, setting);\n if (option === undefined) {\n throw new Error(\"Option Alias: \\\"\" + optionAlias + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given name to the given `Setting`. */\n this.withOptionName = function (setting, optionName) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option name to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByName(optionName, setting);\n if (option === undefined) {\n throw new Error(\"Option Name: \\\"\" + optionName + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given description to the given `Setting`. */\n this.withOptionDescription = function (setting, optionDescription) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option description to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByDescription(optionDescription, setting);\n if (option === undefined) {\n throw new Error(\"Option Description: \\\"\" + optionDescription + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n this.getSetting = function (setting) {\n return Register_1.getSettingByAlias(setting.alias, _this.register);\n };\n this.getOption = function (setting, option) {\n return Setting_1.getOptionByName(option.name, setting);\n };\n this.calculate = function () {\n var registerValue = 0;\n _this.modifiedSettings.forEach(function (modifiedSetting) {\n registerValue = _this.setValue(modifiedSetting, registerValue);\n });\n var unmodifiedSettings = _this.getUnmodifiedSettings();\n unmodifiedSettings.forEach(function (unmodifiedSetting) {\n registerValue = _this.setValue(SettingValue.defaultValue(unmodifiedSetting), registerValue);\n });\n return Number(registerValue);\n };\n this.setValue = function (setting, registerValue) {\n var value = registerValue;\n value &= ~setting.getMask(); // Clear bits\n value |= setting.getShiftedValue(); // Set bits\n return value;\n };\n this.getUnmodifiedSettings = function () {\n var _a;\n var modifiedSettingNames = Arrays_1.map(_this.modifiedSettings, function (setting) { return setting.getName(); });\n return Arrays_1.filter((_a = Arrays_1.values(_this.register.settings)) !== null && _a !== void 0 ? _a : [], function (setting) { return modifiedSettingNames.indexOf(setting.name) < 0; });\n };\n /** Calculate and print the register's value as a hex string. */\n this.asHexString = function () { return CalculateRegisterValue.toHexString(_this.calculate()); };\n /** Calculate and print the register's value as a binary string. */\n this.asBinaryString = function () { return CalculateRegisterValue.toBinaryString(_this.calculate()); };\n /** Calculate and print the register's value as a decimal string. */\n this.asDecimalString = function () { return CalculateRegisterValue.toDecimalString(_this.calculate()); };\n /** Calculate and return the register's value as a number. */\n this.asNumber = function () { return _this.calculate(); };\n this.register = register;\n }\n /** Creates a register value calculation object for the given register. */\n CalculateRegisterValue.for = function (register) {\n return new CalculateRegisterValue(register);\n };\n /** Format the given number as a hex string value. */\n CalculateRegisterValue.toHexString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toHexString() illegal argument exception. Value must not be null.\");\n }\n return \"0x\" + value.toString(16);\n };\n /** Format the given number as a binary string value. */\n CalculateRegisterValue.toBinaryString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toBinaryString() illegal argument exception. Value must not be null.\");\n }\n return \"0b\" + value.toString(2);\n };\n /** Format the given number as a decimal string value. */\n CalculateRegisterValue.toDecimalString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toDecimalString() illegal argument exception. Value must not be null.\");\n }\n return value.toString();\n };\n return CalculateRegisterValue;\n}());\nexports.default = CalculateRegisterValue;\nvar SettingValue = /** @class */ (function () {\n function SettingValue(setting) {\n var _this = this;\n this.getMask = function () { return Number(_this.setting.mask); };\n this.getShift = function () {\n var mask = _this.getMask();\n var shiftIndex = 0;\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n shiftIndex++;\n }\n return shiftIndex;\n };\n this.getShiftedValue = function () { return _this.getValue() << _this.getShift(); };\n this.getName = function () { return _this.setting.name; };\n this.setting = setting;\n }\n SettingValue.defaultValue = function (setting) {\n var value = Number(setting.porDefault);\n return new NumberSettingValue(setting, value);\n };\n return SettingValue;\n}());\nvar NumberSettingValue = /** @class */ (function (_super) {\n __extends(NumberSettingValue, _super);\n function NumberSettingValue(setting, value) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return _this.value; };\n _this.value = value;\n return _this;\n }\n return NumberSettingValue;\n}(SettingValue));\nvar OptionSettingValue = /** @class */ (function (_super) {\n __extends(OptionSettingValue, _super);\n function OptionSettingValue(setting, option) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return Number(_this.option.value); };\n _this.option = option;\n return _this;\n }\n OptionSettingValue.fromDefaultValue = function (setting, value) {\n var foundValueByName = Setting_1.getOptionByName(value, setting);\n if (foundValueByName)\n return new OptionSettingValue(setting, foundValueByName);\n var foundValueByAlias = Setting_1.getOptionByAlias(value, setting);\n if (foundValueByAlias)\n return new OptionSettingValue(setting, foundValueByAlias);\n throw new Error(\"Unable to create default value '\" + value + \"' for setting '\" + setting.name + \"'.\");\n };\n return OptionSettingValue;\n}(SettingValue));\n//# sourceMappingURL=CalculateRegisterValue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSettingByAlias = void 0;\nexports.getSettingByAlias = function (alias, register) {\n return register.settings[alias];\n};\n//# sourceMappingURL=Register.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOptionDescriptions = exports.getOptionNames = exports.getOptionByDescription = exports.getOptionByName = exports.getOptionByAlias = void 0;\nvar Arrays_1 = require(\"./util/Arrays\");\nexports.getOptionByAlias = function (alias, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.alias == alias; });\n};\nexports.getOptionByName = function (name, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name == name; });\n};\nexports.getOptionByDescription = function (description, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description == description; });\n};\nexports.getOptionNames = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name; });\n};\nexports.getOptionDescriptions = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description; });\n};\n//# sourceMappingURL=Setting.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.values = exports.getKeys = exports.find = exports.filter = exports.map = void 0;\nexports.map = function (arr, callback) {\n var result = [];\n arr.forEach(function (value, index) {\n result[index] = callback(value);\n });\n return result;\n};\nexports.filter = function (arr, callback) {\n var result = [];\n arr.forEach(function (value) {\n if (callback(value)) {\n result.push(value);\n }\n });\n return result;\n};\n/**\n * Iterates over elements of the array, returning the first element that the predicate returns truthy for.\n */\nexports.find = function (arr, callback) {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n};\n/** @returns the non-prototype keys of the given object */\nexports.getKeys = function (obj) {\n if (!obj)\n return undefined;\n return Object.getOwnPropertyNames(obj);\n};\nexports.values = function (obj) {\n if (!obj)\n return undefined;\n return exports.getKeys(obj).map(function (key) { return obj[key]; });\n};\n//# sourceMappingURL=Arrays.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildSimpleApi = function (functions) {\n var api = {};\n for (var key in functions) {\n api[key] = buildFunction(functions[key]);\n }\n return api;\n};\nvar buildFunction = function (cFunction) {\n return cFunction.returns + \" \" + cFunction.name + \"(\" + buildArguments(cFunction.arguments) + \")\";\n};\nvar buildArguments = function (args) {\n if (args) {\n return args.map(function (arg) { return arg.type + \" \" + arg.name; }).join(\", \");\n }\n else {\n return \"void\";\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInterfaceName = function (pkgJson) {\n var strReplace = \"@microchip/\";\n var interfaceName;\n if (pkgJson) {\n interfaceName = pkgJson[\"name\"];\n if (interfaceName) {\n interfaceName = interfaceName.replace(strReplace, \"\");\n }\n }\n if (!interfaceName) {\n throw new Error(\"Invalid Interface Name...!\");\n }\n return interfaceName;\n};\nexports.getInterfaceVersion = function (pkgJson) {\n var versionRegex = new RegExp(\"\\\\d+.\\\\d+.\\\\d+\");\n var version;\n if (pkgJson) {\n version = pkgJson[\"version\"];\n }\n if (!version && !versionRegex.test(version)) {\n throw new Error(\"Invalid Interface Version...!\");\n }\n return version;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar c_function_types_1 = require(\"./c-function-types\");\nexports.buildSimpleApi = c_function_types_1.buildSimpleApi;\nvar helpers_1 = require(\"./helpers\");\nexports.getInterfaceName = helpers_1.getInterfaceName;\nexports.getInterfaceVersion = helpers_1.getInterfaceVersion;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateRegisterView = void 0;\nvar CalculateRegisterValue_1 = __importDefault(require(\"@microchip/scf-device/lib/CalculateRegisterValue\"));\nvar Arrays_1 = require(\"@microchip/scf-device/lib/util/Arrays\");\nvar ViewSchemaBuilder_1 = require(\"./ViewSchemaBuilder\");\nvar Model_1 = require(\"./Model\");\nvar throwError = function (message) {\n throw new Error(message);\n};\nvar CreateRegisterView = /** @class */ (function () {\n function CreateRegisterView(module) {\n var _this = this;\n this.registers = [];\n this.interrupts = [];\n /** Create a register view */\n this.create = function () {\n var schemaBuilder = new ViewSchemaBuilder_1.ViewSchemaBuilder()\n .withSchema({\n title: \"Register Settings\",\n type: \"object\",\n })\n .withTabName(\"Register Initialization\")\n .withExpandedDefault(false);\n _this.registers.forEach(function (reg) {\n schemaBuilder.addChildComponent(reg.getRegister().name, _this.createRegisterView(reg));\n });\n schemaBuilder.addChildComponent(\"interrupts\", _this.createInterruptView());\n return schemaBuilder.build();\n };\n /** Assign a numerical value to the given register. */\n this.withRegisterValue = function (register, value) {\n _this.getSafeRegisterViewModel(register).setValue(value);\n return _this;\n };\n /** Assign a string value to the given interrupt. */\n this.withInterruptValue = function (interrupt, value) {\n _this.getSafeInterruptViewModel(interrupt).setValue(value);\n return _this;\n };\n /** Assign the interrupt combobox options. */\n this.withInterruptOptions = function (interrupt, options) {\n _this.getSafeInterruptViewModel(interrupt).setOptions(options);\n return _this;\n };\n /** Make all settings in all registers editable */\n this.withAllEditable = function () {\n _this.registers.forEach(function (register) {\n return _this.withEditableRegister(register.getRegister());\n });\n _this.interrupts.forEach(function (interrupt) {\n _this.withEditableInterrupt(interrupt.getInterrupt());\n });\n return _this;\n };\n /** Make all settings in the given register editable */\n this.withEditableRegister = function (register) {\n _this.getSafeRegisterViewModel(register).setReadonly(false);\n return _this;\n };\n /** Make a given setting in register editable */\n this.withEditableSetting = function (register, setting) {\n _this.getSafeSettingViewModel(register, setting).setReadonly(false);\n return _this;\n };\n /** Make a given interrupt editable */\n this.withEditableInterrupt = function (interrupt) {\n _this.getSafeInterruptViewModel(interrupt).setReadonly(false);\n return _this;\n };\n this.getSafeRegisterViewModel = function (register) { var _a; return (_a = _this.getRegisterViewModel(register !== null && register !== void 0 ? register : throwError(\"Invalid register parameter.\"))) !== null && _a !== void 0 ? _a : throwError(\"Cannot get register view model for '\" + register.name + \"'. Not found in this module.\"); };\n this.getSafeInterruptViewModel = function (interrupt) { var _a; return (_a = _this.getInterruptViewModel(interrupt !== null && interrupt !== void 0 ? interrupt : throwError(\"Invalid interrupt parameter.\"))) !== null && _a !== void 0 ? _a : throwError(\"Cannot get interrupt view model for '\" + interrupt.name + \"'. Not found in this module.\"); };\n this.getSafeSettingViewModel = function (register, setting) { var _a; return (_a = _this.getSafeRegisterViewModel(register).getSettingViewModel(setting !== null && setting !== void 0 ? setting : throwError(\"Invalid setting parameter.\"))) !== null && _a !== void 0 ? _a : throwError(\"Cannot get setting view model for '\" + setting.name + \"'. Not found in this module.\"); };\n this.getRegisterViewModel = function (register) {\n var name = register.name;\n return Arrays_1.find(_this.registers, function (rv) { return rv.getRegister().name === name; });\n };\n this.getInterruptViewModel = function (interrupt) {\n var name = interrupt.name;\n return Arrays_1.find(_this.interrupts, function (rv) { return rv.getInterrupt().name === name; });\n };\n this.createRegisterView = function (register) {\n var registerValue = register.getValue() || 0;\n var schemaBuilder = new ViewSchemaBuilder_1.ViewSchemaBuilder()\n .withSchema({\n type: \"object\",\n title: register.getName() +\n \" : \" +\n CalculateRegisterValue_1.default.toHexString(registerValue),\n description: register.getDescription(),\n properties: {},\n })\n .withUiSchema({})\n .withFormData({});\n register.forEachSetting(function (setting) {\n schemaBuilder.addChildComponent(setting.getName(), _this.createSettingView(setting));\n });\n return schemaBuilder.build();\n };\n this.createSettingView = function (setting) {\n return setting.hasOptions()\n ? _this.createHasOptionsViewSchema(setting)\n : _this.getNoOptionsViewSchema(setting);\n };\n this.createInterruptView = function () {\n var schemaBuilder = new ViewSchemaBuilder_1.ViewSchemaBuilder()\n .withSchema({\n type: \"object\",\n title: \"Interrupts\",\n properties: {},\n })\n .withUiSchema({})\n .withFormData({});\n _this.interrupts.forEach(function (int) {\n schemaBuilder.addChildComponent(int.getInterrupt().name, _this.createInterruptViewSchema(int));\n });\n return schemaBuilder.build();\n };\n this.module = module;\n this.registers = this.createRegisterViewModelForEachRegister(module);\n this.interrupts = this.createInterruptViewModelForEachInterrupt(module);\n }\n CreateRegisterView.prototype.createRegisterViewModelForEachRegister = function (module) {\n var _a;\n var models = [];\n var registers = (_a = module.registers) !== null && _a !== void 0 ? _a : [];\n Object.keys(registers).forEach(function (registerKey) {\n models.push(new Model_1.RegisterViewModel(registers[registerKey]));\n });\n return models;\n };\n CreateRegisterView.prototype.createInterruptViewModelForEachInterrupt = function (module) {\n var _a;\n var models = [];\n var interrupts = (_a = module.interrupts) !== null && _a !== void 0 ? _a : [];\n Object.keys(interrupts).forEach(function (interruptKey) {\n models.push(new Model_1.InterruptViewModel(interrupts[interruptKey]));\n });\n return models;\n };\n CreateRegisterView.prototype.getNoOptionsViewSchema = function (setting) {\n return {\n schema: this.createSettingViewSchema(setting),\n uiSchema: setting.getMaxValue() > 1\n ? { \"ui:readonly\": setting.getIsReadonly() }\n : this.getBinarySettingUiSchema(setting),\n formData: setting.mapToOptionNameIfExists(setting.getValue()),\n };\n };\n CreateRegisterView.prototype.createHasOptionsViewSchema = function (setting) {\n var schemaBuilder = new ViewSchemaBuilder_1.SchemaBuilder(\"string\", setting.getName())\n .withEnum(setting.getOptionNames())\n .withDefault(setting.mapToOptionNameIfExists(setting.getValue()));\n return {\n schema: schemaBuilder.build(),\n uiSchema: { \"ui:readonly\": setting.getIsReadonly() },\n formData: setting.mapToOptionNameIfExists(setting.getValue()),\n };\n };\n CreateRegisterView.prototype.createSettingViewSchema = function (setting) {\n var schema = new ViewSchemaBuilder_1.SchemaBuilder(\"integer\", setting.getName()).withDefault(setting.mapToOptionNameIfExists(setting.getPORDefault()));\n setting.getMaxValue() > 1\n ? schema.withMaximum(setting.getMaxValue()).withMinimum(0)\n : schema.withEnum([0, 1]);\n return schema.build();\n };\n CreateRegisterView.prototype.createInterruptViewSchema = function (interrupt) {\n var schema = new ViewSchemaBuilder_1.SchemaBuilder(\"string\", interrupt.getInterrupt().name)\n .withEnum(interrupt.getOptions())\n .withDefault(interrupt.getValue());\n return {\n schema: schema.build(),\n uiSchema: { \"ui:readonly\": interrupt.getIsReadonly() },\n formData: interrupt.getValue(),\n };\n };\n CreateRegisterView.prototype.getBinarySettingUiSchema = function (setting) {\n return new ViewSchemaBuilder_1.UiSchemaBuilder()\n .withReadonlyValue(setting.getIsReadonly())\n .withWidget(\"radio\")\n .withOptions({ inline: true })\n .build();\n };\n /** Creates Register View Builder for the given module. */\n CreateRegisterView.for = function (moduleDescription) {\n if (!moduleDescription) {\n throwError(\"Creation failed. Invalid module parameter.\");\n }\n if (!moduleDescription.registers && !moduleDescription.interrupts) {\n throwError(\"Creation failed for \" + moduleDescription.name + \". Input module contains no registers or interrupts.\");\n }\n return new CreateRegisterView(moduleDescription);\n };\n return CreateRegisterView;\n}());\nexports.CreateRegisterView = CreateRegisterView;\n//# sourceMappingURL=CreateRegisterView.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SettingViewModel = exports.RegisterViewModel = exports.InterruptViewModel = void 0;\nvar CalculateRegisterValue_1 = __importDefault(require(\"@microchip/scf-device/lib/CalculateRegisterValue\"));\nvar Arrays_1 = require(\"@microchip/scf-device/lib/util/Arrays\");\nvar InterruptViewModel = /** @class */ (function () {\n function InterruptViewModel(interrupt) {\n var _this = this;\n this.isReadOnly = true;\n this.getInterrupt = function () { return _this.interrupt; };\n this.setValue = function (value) {\n _this.value = value;\n };\n this.getValue = function () { return _this.value; };\n this.setOptions = function (options) {\n _this.options = options;\n };\n this.getOptions = function () { return _this.options; };\n this.getIsReadonly = function () { return _this.isReadOnly; };\n this.setReadonly = function (isReadOnly) {\n _this.isReadOnly = isReadOnly;\n };\n if (!interrupt) {\n throw new Error(\"IllegalInputArgument for 'interrupt' in InterruptValue\");\n }\n this.interrupt = interrupt;\n }\n return InterruptViewModel;\n}());\nexports.InterruptViewModel = InterruptViewModel;\nvar RegisterViewModel = /** @class */ (function () {\n function RegisterViewModel(register) {\n var _this = this;\n this.settings = [];\n this.getSettings = function () { return _this.settings; };\n this.getSettingViewModel = function (setting) {\n var name = setting.name;\n return Arrays_1.find(_this.settings, function (rv) { return rv.getSetting().name === name; });\n };\n this.forEachSetting = function (doThis) {\n _this.settings.forEach(doThis);\n };\n this.getRegister = function () { return _this.register; };\n this.getName = function () { return _this.register.name; };\n this.getDescription = function () { return _this.register.desc; };\n this.getValue = function () { return _this.value; };\n this.setValue = function (value) {\n _this.value = value;\n };\n this.setReadonly = function (value) {\n if (value === void 0) { value = true; }\n _this.forEachSetting(function (setting) { return setting.setReadonly(value); });\n };\n this.getDefaultValue = function () {\n return CalculateRegisterValue_1.default.for(_this.register).asNumber();\n };\n this.getValueOrDefault = function () {\n var value = _this.getValue();\n return value !== null && value !== void 0 ? value : _this.getDefaultValue();\n };\n if (!register) {\n throw new Error(\"IllegalInputArgument for 'register' in RegisterValue\");\n }\n this.register = register;\n if (register.settings) {\n this.settings = this.createSettingViewModels(register);\n }\n }\n RegisterViewModel.prototype.createSettingViewModels = function (register) {\n var _this = this;\n var _a;\n var models = [];\n var settings = (_a = register.settings) !== null && _a !== void 0 ? _a : [];\n Object.keys(settings).forEach(function (settingKey) {\n models.push(new SettingViewModel(settings[settingKey], _this.getValueOrDefault));\n });\n return models;\n };\n return RegisterViewModel;\n}());\nexports.RegisterViewModel = RegisterViewModel;\nvar SettingViewModel = /** @class */ (function () {\n function SettingViewModel(setting, getRegisterValue) {\n var _this = this;\n this.isReadonly = true;\n this.setReadonly = function (value) {\n if (value === void 0) { value = true; }\n _this.isReadonly = value;\n };\n this.getIsReadonly = function () { return _this.isReadonly; };\n this.getSetting = function () { return _this.setting; };\n this.getName = function () { return _this.setting.name; };\n this.getDescription = function () { return _this.setting.description; };\n this.getPORDefault = function () { return Number(_this.setting.porDefault); };\n this.getMask = function () { return Number(_this.setting.mask); };\n this.hasOptions = function () {\n return !!_this.setting.options;\n };\n this.getOptionNames = function () {\n return Arrays_1.map(nullSafe(_this.setting.options), function (option) { return option.name; });\n };\n this.mapToOptionNameIfExists = function (value) {\n var option = _this.getOptionForValue(value);\n return option != null ? option.name : value;\n };\n this.getOptionForValue = function (value) {\n return Arrays_1.find(nullSafe(_this.setting.options), function (option) {\n var optionValue = option.value;\n return optionValue != undefined\n ? parseInt(optionValue) === value\n : false;\n });\n };\n this.getValue = function () {\n var value = _this.getRegisterValue();\n value &= _this.getMask();\n return value >> _this.getShift();\n };\n this.getShift = function () {\n var mask = _this.getMask();\n var shiftIndex = 0;\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n shiftIndex++;\n }\n return shiftIndex;\n };\n this.getMaxValue = function () {\n var mask = _this.getMask();\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n }\n return mask;\n };\n if (!setting) {\n throw new Error(\"SettingViewModel: Invalid input argument\");\n }\n this.setting = setting;\n this.getRegisterValue = getRegisterValue;\n }\n return SettingViewModel;\n}());\nexports.SettingViewModel = SettingViewModel;\nvar nullSafe = function (array) {\n return array ? array : [];\n};\n//# sourceMappingURL=Model.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UiSchemaBuilder = exports.SchemaBuilder = exports.ViewSchemaBuilder = void 0;\nvar ViewSchemaBuilder = /** @class */ (function () {\n function ViewSchemaBuilder() {\n this.schema = {};\n this.uiSchema = {};\n this.formData = {};\n this.tabName = \"main\";\n this.expandGroupsByDefault = true;\n }\n ViewSchemaBuilder.prototype.withSchema = function (schema) {\n this.schema = schema;\n return this;\n };\n ViewSchemaBuilder.prototype.withUiSchema = function (uiSchema) {\n this.uiSchema = uiSchema;\n return this;\n };\n ViewSchemaBuilder.prototype.withFormData = function (formData) {\n this.formData = formData;\n return this;\n };\n ViewSchemaBuilder.prototype.withTabName = function (name) {\n this.tabName = name;\n return this;\n };\n ViewSchemaBuilder.prototype.withExpandedDefault = function (expandGroupsByDefault) {\n this.expandGroupsByDefault = expandGroupsByDefault;\n return this;\n };\n ViewSchemaBuilder.prototype.addChildComponent = function (childName, child) {\n var _a, _b, _c;\n this.schema = __assign(__assign({}, this.schema), { properties: __assign(__assign({}, this.schema.properties), (_a = {}, _a[childName] = child.schema, _a)) });\n this.uiSchema = __assign(__assign({}, this.uiSchema), (_b = {}, _b[childName] = child.uiSchema, _b));\n this.formData = __assign(__assign({}, this.formData), (_c = {}, _c[childName] = child.formData, _c));\n };\n ViewSchemaBuilder.prototype.build = function () {\n return {\n schema: this.schema,\n uiSchema: this.uiSchema,\n formData: this.formData,\n name: this.tabName,\n expandGroupsByDefault: this.expandGroupsByDefault,\n };\n };\n return ViewSchemaBuilder;\n}());\nexports.ViewSchemaBuilder = ViewSchemaBuilder;\nvar SchemaBuilder = /** @class */ (function () {\n function SchemaBuilder(type, title) {\n this.title = title;\n this.type = type;\n }\n SchemaBuilder.prototype.withProperties = function (properties) {\n this.properties = properties;\n return this;\n };\n SchemaBuilder.prototype.withDefault = function (defaultValue) {\n this.default = defaultValue;\n return this;\n };\n SchemaBuilder.prototype.withMaximum = function (maximum) {\n this.maximum = maximum;\n return this;\n };\n SchemaBuilder.prototype.withMinimum = function (minimum) {\n this.minimum = minimum;\n return this;\n };\n SchemaBuilder.prototype.withEnum = function (vals) {\n this.enum = vals;\n return this;\n };\n SchemaBuilder.prototype.build = function () {\n return {\n type: this.type,\n title: this.title,\n properties: this.properties,\n default: this.default,\n maximum: this.maximum,\n minimum: this.minimum,\n enum: this.enum,\n };\n };\n return SchemaBuilder;\n}());\nexports.SchemaBuilder = SchemaBuilder;\nvar UiSchemaBuilder = /** @class */ (function () {\n function UiSchemaBuilder() {\n }\n UiSchemaBuilder.prototype.withReadonlyValue = function (isReadonly) {\n this.isReadOnly = isReadonly;\n return this;\n };\n UiSchemaBuilder.prototype.withWidget = function (widgetName) {\n this.widget = widgetName;\n return this;\n };\n UiSchemaBuilder.prototype.withOptions = function (options) {\n this.options = options;\n return this;\n };\n UiSchemaBuilder.prototype.build = function () {\n return {\n \"ui:readonly\": this.isReadOnly,\n \"ui:widget\": this.widget,\n \"ui:options\": this.options,\n };\n };\n return UiSchemaBuilder;\n}());\nexports.UiSchemaBuilder = UiSchemaBuilder;\n//# sourceMappingURL=ViewSchemaBuilder.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Setting_1 = require(\"./Setting\");\nvar Register_1 = require(\"./Register\");\nvar Arrays_1 = require(\"./util/Arrays\");\n/** Builder pattern */\nvar CalculateRegisterValue = /** @class */ (function () {\n function CalculateRegisterValue(register) {\n var _this = this;\n this.modifiedSettings = [];\n /** Assign a numerical value to the given `Setting`. */\n this.withNumberValue = function (setting, value) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign number value to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new NumberSettingValue(setting, value)\n ]);\n return _this;\n };\n /** Assign the given `Option` to the given `Setting`. */\n this.withOption = function (setting, option) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option to setting, setting is undefined.\");\n }\n if (!_this.getSetting(setting)) {\n throw new Error(\"Setting \" + setting.alias + \" is not present in Register \" + _this.register.name);\n }\n if (!_this.getOption(setting, option)) {\n throw new Error(\"Option \" + option.name + \" is not present in Setting \" + setting.name);\n }\n _this.modifiedSettings = __spreadArrays(_this.modifiedSettings, [\n new OptionSettingValue(setting, option)\n ]);\n return _this;\n };\n /** Assign the `Option` matching the given alias to the given `Setting`. */\n this.withOptionAlias = function (setting, optionAlias) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option alias to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByAlias(optionAlias, setting);\n if (option === undefined) {\n throw new Error(\"Option Alias: \\\"\" + optionAlias + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given name to the given `Setting`. */\n this.withOptionName = function (setting, optionName) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option name to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByName(optionName, setting);\n if (option === undefined) {\n throw new Error(\"Option Name: \\\"\" + optionName + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n /** Assign the `Option` matching the given description to the given `Setting`. */\n this.withOptionDescription = function (setting, optionDescription) {\n if (setting === undefined) {\n throw new Error(\"Cannot assign option description to setting, setting is undefined.\");\n }\n var option = Setting_1.getOptionByDescription(optionDescription, setting);\n if (option === undefined) {\n throw new Error(\"Option Description: \\\"\" + optionDescription + \"\\\" not present in Setting: \\\"\" + setting.name + \"\\\".\");\n }\n return _this.withOption(setting, option);\n };\n this.getSetting = function (setting) {\n return Register_1.getSettingByAlias(setting.alias, _this.register);\n };\n this.getOption = function (setting, option) {\n return Setting_1.getOptionByName(option.name, setting);\n };\n this.calculate = function () {\n var registerValue = 0;\n _this.modifiedSettings.forEach(function (modifiedSetting) {\n registerValue = _this.setValue(modifiedSetting, registerValue);\n });\n var unmodifiedSettings = _this.getUnmodifiedSettings();\n unmodifiedSettings.forEach(function (unmodifiedSetting) {\n registerValue = _this.setValue(SettingValue.defaultValue(unmodifiedSetting), registerValue);\n });\n return Number(registerValue);\n };\n this.setValue = function (setting, registerValue) {\n var value = registerValue;\n value &= ~setting.getMask(); // Clear bits\n value |= setting.getShiftedValue(); // Set bits\n return value;\n };\n this.getUnmodifiedSettings = function () {\n var _a;\n var modifiedSettingNames = Arrays_1.map(_this.modifiedSettings, function (setting) { return setting.getName(); });\n return Arrays_1.filter((_a = Arrays_1.values(_this.register.settings)) !== null && _a !== void 0 ? _a : [], function (setting) { return modifiedSettingNames.indexOf(setting.name) < 0; });\n };\n /** Calculate and print the register's value as a hex string. */\n this.asHexString = function () { return CalculateRegisterValue.toHexString(_this.calculate()); };\n /** Calculate and print the register's value as a binary string. */\n this.asBinaryString = function () { return CalculateRegisterValue.toBinaryString(_this.calculate()); };\n /** Calculate and print the register's value as a decimal string. */\n this.asDecimalString = function () { return CalculateRegisterValue.toDecimalString(_this.calculate()); };\n /** Calculate and return the register's value as a number. */\n this.asNumber = function () { return _this.calculate(); };\n this.register = register;\n }\n /** Creates a register value calculation object for the given register. */\n CalculateRegisterValue.for = function (register) {\n return new CalculateRegisterValue(register);\n };\n /** Format the given number as a hex string value. */\n CalculateRegisterValue.toHexString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toHexString() illegal argument exception. Value must not be null.\");\n }\n return \"0x\" + value.toString(16);\n };\n /** Format the given number as a binary string value. */\n CalculateRegisterValue.toBinaryString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toBinaryString() illegal argument exception. Value must not be null.\");\n }\n return \"0b\" + value.toString(2);\n };\n /** Format the given number as a decimal string value. */\n CalculateRegisterValue.toDecimalString = function (value) {\n if (value == null) {\n throw new Error(\"CalculateRegisterValue.toDecimalString() illegal argument exception. Value must not be null.\");\n }\n return value.toString();\n };\n return CalculateRegisterValue;\n}());\nexports.default = CalculateRegisterValue;\nvar SettingValue = /** @class */ (function () {\n function SettingValue(setting) {\n var _this = this;\n this.getMask = function () { return Number(_this.setting.mask); };\n this.getShift = function () {\n var mask = _this.getMask();\n var shiftIndex = 0;\n while (!(mask & 0x1)) {\n mask = mask >> 1;\n shiftIndex++;\n }\n return shiftIndex;\n };\n this.getShiftedValue = function () { return _this.getValue() << _this.getShift(); };\n this.getName = function () { return _this.setting.name; };\n this.setting = setting;\n }\n SettingValue.defaultValue = function (setting) {\n var value = Number(setting.porDefault);\n return new NumberSettingValue(setting, value);\n };\n return SettingValue;\n}());\nvar NumberSettingValue = /** @class */ (function (_super) {\n __extends(NumberSettingValue, _super);\n function NumberSettingValue(setting, value) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return _this.value; };\n _this.value = value;\n return _this;\n }\n return NumberSettingValue;\n}(SettingValue));\nvar OptionSettingValue = /** @class */ (function (_super) {\n __extends(OptionSettingValue, _super);\n function OptionSettingValue(setting, option) {\n var _this = _super.call(this, setting) || this;\n _this.getValue = function () { return Number(_this.option.value); };\n _this.option = option;\n return _this;\n }\n OptionSettingValue.fromDefaultValue = function (setting, value) {\n var foundValueByName = Setting_1.getOptionByName(value, setting);\n if (foundValueByName)\n return new OptionSettingValue(setting, foundValueByName);\n var foundValueByAlias = Setting_1.getOptionByAlias(value, setting);\n if (foundValueByAlias)\n return new OptionSettingValue(setting, foundValueByAlias);\n throw new Error(\"Unable to create default value '\" + value + \"' for setting '\" + setting.name + \"'.\");\n };\n return OptionSettingValue;\n}(SettingValue));\n//# sourceMappingURL=CalculateRegisterValue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSettingByAlias = void 0;\nexports.getSettingByAlias = function (alias, register) {\n return register.settings[alias];\n};\n//# sourceMappingURL=Register.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOptionDescriptions = exports.getOptionNames = exports.getOptionByDescription = exports.getOptionByName = exports.getOptionByAlias = void 0;\nvar Arrays_1 = require(\"./util/Arrays\");\nexports.getOptionByAlias = function (alias, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.alias == alias; });\n};\nexports.getOptionByName = function (name, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name == name; });\n};\nexports.getOptionByDescription = function (description, setting) {\n var _a;\n return Arrays_1.find((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description == description; });\n};\nexports.getOptionNames = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.name; });\n};\nexports.getOptionDescriptions = function (setting) {\n var _a;\n return Arrays_1.map((_a = setting.options) !== null && _a !== void 0 ? _a : [], function (option) { return option.description; });\n};\n//# sourceMappingURL=Setting.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.values = exports.getKeys = exports.find = exports.filter = exports.map = void 0;\nexports.map = function (arr, callback) {\n var result = [];\n arr.forEach(function (value, index) {\n result[index] = callback(value);\n });\n return result;\n};\nexports.filter = function (arr, callback) {\n var result = [];\n arr.forEach(function (value) {\n if (callback(value)) {\n result.push(value);\n }\n });\n return result;\n};\n/**\n * Iterates over elements of the array, returning the first element that the predicate returns truthy for.\n */\nexports.find = function (arr, callback) {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i])) {\n return arr[i];\n }\n }\n return undefined;\n};\n/** @returns the non-prototype keys of the given object */\nexports.getKeys = function (obj) {\n if (!obj)\n return undefined;\n return Object.getOwnPropertyNames(obj);\n};\nexports.values = function (obj) {\n if (!obj)\n return undefined;\n return exports.getKeys(obj).map(function (key) { return obj[key]; });\n};\n//# sourceMappingURL=Arrays.js.map","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import { StringConstants } from \"./StringConstants\";\n\nexport class ClockCalculator {\n private lfintosc = \"31000\";\n private mfintosc = \"500000\";\n private mfintosc_31KHz = \"31250\";\n private sosc = \"32768\";\n private oscSelect: string;\n private HFInternalClk: string;\n private externalClk: number;\n private clkDivider: number;\n\n MAX_PLL = 16000000; // in Hz\n MIN_PLL = 3000000; // in Hz\n\n public constructor(\n oscSelect: string,\n HFInternalClk: string,\n externalClk: number,\n clkDivider: number,\n ) {\n this.oscSelect = oscSelect;\n this.HFInternalClk = HFInternalClk;\n this.externalClk = externalClk;\n this.clkDivider = clkDivider;\n }\n\n public getCurrentSystemClk = (): number => {\n let currentSystemClk: number;\n let HFClk: number;\n\n if (this.oscSelect === StringConstants.SOSC) {\n currentSystemClk = 32768 / this.clkDivider;\n } else if (this.oscSelect === StringConstants.LFINTOSC) {\n currentSystemClk = 31000 / this.clkDivider;\n } else if (this.oscSelect === StringConstants.HFINTOSC) {\n HFClk = parseInt(this.HFInternalClk?.replace(\"_MHz\", \"\") ?? \"1000000\");\n currentSystemClk = (HFClk * 1000000) / this.clkDivider;\n } else if (this.oscSelect === StringConstants.HFINTOSC_2xPLL) {\n HFClk = parseInt(this.HFInternalClk?.replace(\"_MHz\", \"\") ?? \"1000000\");\n if (HFClk == 8 || HFClk == 12 || HFClk == 16) {\n currentSystemClk = (HFClk * 2 * 1000000) / this.clkDivider;\n } else {\n currentSystemClk = (HFClk * 1000000) / this.clkDivider;\n }\n } else if (this.oscSelect === StringConstants.EXTOSC) {\n currentSystemClk = this.externalClk / this.clkDivider;\n } else {\n if (this.externalClk <= this.MIN_PLL || this.externalClk > this.MAX_PLL) {\n currentSystemClk = this.externalClk / this.clkDivider;\n } else {\n currentSystemClk = (this.externalClk * 4) / this.clkDivider;\n }\n }\n return Math.round(currentSystemClk);\n };\n\n public getHfIntOsc = (): string => {\n return this.HFInternalClk?.replace(\"_MHz\", \"000000\") ?? \"1000000\";\n };\n\n public getMfIntOsc = (): string => {\n return this.mfintosc;\n };\n\n public getMfIntOsc_31KHz = (): string => {\n return this.mfintosc_31KHz;\n };\n\n public getLfIntOsc = (): string => {\n return this.lfintosc;\n };\n\n public getExtOsc = (): string => {\n return this.externalClk.toString();\n };\n\n public getSosc = (): string => {\n return this.sosc;\n };\n}\n","import * as Processor from \"@microchip/scf-common/lib/Processor\";\nimport { ClockCalculator } from \"./ClockCalculator\";\nimport * as initializer_system from \"@microchip/initializer-system\";\nimport * as config_device from \"@microchip/config-device\";\nimport { StringConstants } from \"./StringConstants\";\nimport osc_clocks from \"@microchip/osc-clocks\";\nimport * as config_request from \"@microchip/config-request\";\nimport {\n AppModel,\n DerivedData,\n DerivedFunctions,\n} from \"../generated_module/src/types/AutoModuleTypes\";\nimport * as InterfaceTypes from \"@microchip/scf-interface\";\n\nexport const getDerivedData = (dataModel: AppModel | undefined): DerivedData => {\n if (dataModel) {\n return new MyDerivedData(dataModel);\n }\n return new EmptyDerivedData();\n};\n\n//This data will be used at the creator stage and relies on only the state\nexport class EmptyDerivedData implements DerivedData {\n getMyFunctions = (): DerivedFunctions => {\n return {};\n };\n getModel = (): AppModel | undefined => {\n return undefined;\n };\n}\n\n//This data will be used at the processor stage\nexport class MyDerivedData implements DerivedData {\n private dataModel: AppModel;\n private clockCalculator: ClockCalculator;\n\n constructor(dataModel: AppModel) {\n this.dataModel = dataModel;\n }\n\n getClockCalculator = (): ClockCalculator => {\n if (!this.clockCalculator) {\n this.clockCalculator = new ClockCalculator(\n this.getModel().getComponentValue(\"noscOsccon1\") ?? \"\",\n this.getModel().getComponentValue(\"hffrqOscfrq\") ?? \"\",\n this.getModel().getComponentValue(\"externalClk\") ?? 32768,\n parseInt(this.getModel().getComponentValue(\"ndivOsccon1\") ?? \"\"),\n );\n }\n return this.clockCalculator;\n };\n\n getMyFunctions = (): DerivedFunctions => {\n return {\n moduleName: this.getModuleName,\n alerts: this.getMyAlerts,\n isEnabled: this.isEnabled,\n isVisible: this.isVisible,\n currentSystemClk: (): number =>\n this.getClockCalculator().getCurrentSystemClk(),\n \"fosc-hz_payload\": (): string =>\n this.getClockCalculator().getCurrentSystemClk().toString(),\n initializer_system_results: this.initializer_system_results,\n config_device_results: this.config_device_results,\n templateData: this.getTemplateData,\n config_request_args: (): config_request.Arguments => [\n \"FEXTOSC\",\n \"CLKOUTEN\",\n \"MCLRE\",\n \"LVP\",\n ],\n \"osc-clocks_payload\": this.getOscClocksProcessedPayload,\n };\n };\n\n private getOscClocksProcessedPayload = (): osc_clocks.ProcessedPayload => {\n const oscObj: osc_clocks.ProcessedPayload = {\n extosc: this.getClockCalculator().getExtOsc() ?? \"32768\",\n fosc: this.getClockCalculator().getCurrentSystemClk().toString() ?? \"1000000\",\n hfintosc: this.getClockCalculator().getHfIntOsc() ?? \"1000000\",\n lfintosc: this.getClockCalculator().getLfIntOsc() ?? \"31000\",\n mfintosc: this.getClockCalculator().getMfIntOsc() ?? \"500000\",\n mfintosc_31Khz: this.getClockCalculator().getMfIntOsc_31KHz() ?? \"31250\",\n sosc: this.getClockCalculator().getSosc() ?? \"32768\",\n };\n const hasSosc: boolean =\n this.dataModel.isComponentValue(\"soscenOscen\") !== undefined ? true : false;\n if (hasSosc) {\n oscObj.hasSosc = true;\n oscObj.soscEnabled = this.dataModel.isComponentValue(\"soscenOscen\");\n oscObj.soscPowerMode = this.dataModel.getComponentValue(\"soscpwrOsccon3\");\n }\n return oscObj;\n };\n\n public getModuleName = (): string => {\n return \"Clock Control\";\n };\n public getModel = (): AppModel => {\n return this.dataModel;\n };\n\n private getTemplateData = (): any => {\n const headers: InterfaceTypes.HeaderFile = {\n name: \"clock.h\",\n path: \"../\",\n };\n const initRegisters = this.dataModel.getRegisterValues();\n return {\n productName: \"CCL\",\n productVersion: \"1.8.2\",\n compiler: \"XC8 v2.20\",\n tool: \"MPLAB X 5.40\",\n\n deviceFrequency: this.getClockCalculator().getCurrentSystemClk().toString(),\n\n initRegisters: initRegisters,\n header: headers,\n\n moduleNameUpperCase: this.getModuleName().toUpperCase(),\n moduleNameLowerCase: this.getModuleName().toLowerCase(),\n };\n };\n private initializer_system_results = (): initializer_system.Results => {\n return {\n initializer: {\n name: \"CLOCK_Initialize\",\n header: {\n name: \"clock.h\",\n path: \"system/\",\n },\n priority: initializer_system.INIT_PRIORITY.START,\n },\n };\n };\n\n private config_device_results = (): config_device.Results => {\n return {\n headers: [\n {\n name: \"clock.h\",\n path: \"system/\",\n },\n ],\n };\n };\n\n private isEnabled = (componentName: string): boolean => {\n switch (componentName) {\n case \"hffrqOscfrq\":\n return (\n this.dataModel.getComponentValue(\"noscOsccon1\")?.indexOf(\"HF\") != -1\n );\n case \"currentSystemClk\":\n return false;\n case \"lfIntOscFreq\":\n return false;\n default:\n return true;\n }\n };\n\n private isVisible = (componentName: string): boolean => {\n const componentValue = this.dataModel.getComponentValue(\"noscOsccon1\");\n switch (componentName) {\n case \"externalClk\":\n if (\n componentValue === StringConstants.EXTOSC ||\n componentValue === StringConstants.EXTOSC_4xPLL\n ) {\n return true;\n } else {\n return false;\n }\n case \"lfIntOscFreq\":\n if (componentValue != StringConstants.LFINTOSC) {\n return false;\n } else {\n return true;\n }\n case \"hffrqOscfrq\":\n if (\n componentValue != StringConstants.HFINTOSC &&\n componentValue != StringConstants.HFINTOSC_2xPLL\n ) {\n return false;\n } else {\n return true;\n }\n default:\n return true;\n }\n };\n\n private getDynamicComponetDefaultValue = (\n componentName: string,\n ): string | undefined => {\n const externalClkSelectedOptions = this.dataModel.getImportValue(\n \"config_request\",\n )?.[componentName];\n let selectedOptionVal: string | undefined;\n if (externalClkSelectedOptions) {\n selectedOptionVal = externalClkSelectedOptions[\"defaultValue\"][\"value\"];\n }\n return selectedOptionVal ?? undefined;\n };\n\n private getMyAlerts = (): Processor.Alert[] => {\n const alerts: Processor.Alert[] = [];\n const selectedOptionVal: string =\n this.getDynamicComponetDefaultValue(\"FEXTOSC\") ?? \"\";\n const noscOsccon1 = this.dataModel.getComponentValue(\"noscOsccon1\");\n\n if (\n noscOsccon1 === StringConstants.EXTOSC_4xPLL ||\n noscOsccon1 === StringConstants.EXTOSC\n ) {\n alerts.push({\n type: Processor.AlertTypes.Hint,\n text:\n 'Please configure required \"External Oscillator Selection\" in System Module config bits',\n });\n }\n\n if (\n noscOsccon1 === StringConstants.EXTOSC_4xPLL &&\n ((this.getModel().getComponentValue(\"externalClk\") ?? 0) <=\n this.getClockCalculator().MIN_PLL ||\n (this.getModel().getComponentValue(\"externalClk\") ?? 0) >\n this.getClockCalculator().MAX_PLL)\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"The frequency selected does not fall within the PLL locking range. Therefore, the actual frequency produced by hardware maybe unpredictable when the PLL is enabled. Either change the clock frequency or select a different option in Oscillator select.\",\n });\n }\n\n if (\n noscOsccon1 === StringConstants.EXTOSC_4xPLL ||\n noscOsccon1 === StringConstants.EXTOSC\n ) {\n if (\n selectedOptionVal?.indexOf(\"external clock\") != -1 &&\n this.getClockCalculator().getCurrentSystemClk() >\n StringConstants.ExtClkFreq_64MHz\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"External clock frequency is greater than recommended value (\" +\n StringConstants.ExtClkFreq_64MHz +\n \" Hz)\",\n });\n }\n\n if (\n selectedOptionVal?.indexOf(\"crystal oscillator\") != -1 &&\n (this.getModel().getComponentValue(\"externalClk\") ?? 0) > 16000000 &&\n this.getClockCalculator().getCurrentSystemClk() >\n StringConstants.ExtClkFreq_20MHz\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"External clock frequency is greater than recommended value (\" +\n StringConstants.ExtClkFreq_20MHz +\n \" Hz)\",\n });\n }\n\n if (\n selectedOptionVal.indexOf(\"Oscillator not enabled\") != -1 &&\n this.getClockCalculator().getCurrentSystemClk() >\n StringConstants.ExtClkFreq_32MHz\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"External clock frequency is greater than recommended value (\" +\n StringConstants.ExtClkFreq_32MHz +\n \" Hz)\",\n });\n }\n }\n\n const HFClk = parseInt(\n this.dataModel.getComponentValue(\"hffrqOscfrq\")?.replace(\"_MHz\", \"\") ?? \"0\",\n );\n if (\n this.dataModel.getComponentValue(\"noscOsccon1\") ===\n StringConstants.HFINTOSC_2xPLL &&\n (HFClk == 1 || HFClk == 2 || HFClk == 4 || HFClk == 32)\n ) {\n alerts.push({\n type: Processor.AlertTypes.Warning,\n text:\n \"The frequency set in HF Internal Clock may not get generated by the clock hardware properly since it does not fall within the 2xPLL range of 8-16 MHz. Therefore, it is recommended that the option 'HFINTOSC' be selected in the Oscillator select combo box.\",\n });\n }\n\n return alerts;\n };\n}\n","import { pin_row, pin_state } from \"@microchip/pin-standard\";\nimport { PCPHelper } from \"../generated_module/src/pins/PCPHelper\";\nimport { AppModel } from \"../generated_module/src/types/AutoModuleTypes\";\n\n// provide complete dynamic data for all pin rows. It overrides static pindata.json\nexport const getCompletePinData = (appModel: AppModel): any => {\n // way to programatically override the json data\n return {};\n};\n\n// overrides pin data for a particular row based on model.\nexport function getRowData(appModel: AppModel, rowData: pin_row): pin_row | undefined {\n let retRowJSONdata: pin_row | undefined = rowData;\n let rowActions: any = [];\n const clockOutEnable = appModel.getImportValue(\"config_request\")?.[\"CLKOUTEN\"];\n\n if (clockOutEnable) {\n delete clockOutEnable[\"setting\"];\n delete clockOutEnable[\"displayOptionSetting\"];\n const selectedOption: string = clockOutEnable[\"defaultValue\"][\"value\"];\n\n if (selectedOption.indexOf(\"CLKOUT function is enabled\") != -1) {\n if (rowData.name === \"clockout\") {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"CLKOUT\" },\n };\n }\n }\n\n const isPic18ClkOut: boolean =\n selectedOption === \"CLKOUT function is enabled\" ||\n selectedOption === \"CLKOUT function is disabled\"\n ? true\n : false;\n const actionArr = PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"clockout\")\n .forComponent(clockOutEnable)\n .addIfLockedSetValue(\n \"CLKOUT\",\n isPic18ClkOut\n ? \"CLKOUT function is enabled\"\n : \"CLKOUT function is enabled; FOSC/4 clock appears at OSC2\",\n )\n .addIfUnLockedSetValue(\n \".*\",\n isPic18ClkOut\n ? \"CLKOUT function is disabled\"\n : \"CLKOUT function is disabled; i/o or oscillator function on OSC2\",\n )\n .build();\n // Provide the module reference(scriptID) of remote config bits module\n for (const eachAction of actionArr) {\n const lockedState = eachAction.state[pin_state.LOCKED];\n if (lockedState) {\n lockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle?.providerId,\n };\n }\n const unlockedState = eachAction.state[pin_state.UNLOCK];\n if (unlockedState) {\n unlockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle?.providerId,\n };\n }\n rowActions.push(eachAction);\n }\n }\n\n const extClkSelect = appModel.getImportValue(\"config_request\")?.[\"FEXTOSC\"];\n\n if (extClkSelect) {\n delete extClkSelect[\"setting\"];\n delete extClkSelect[\"displayOptionSetting\"];\n\n const selectedOption: string = extClkSelect[\"defaultValue\"][\"value\"];\n\n if (\n selectedOption.indexOf(\"(external clock)\") != -1 ||\n selectedOption.indexOf(\"EC\") != -1\n ) {\n if (rowData.name === \"osc1\" || rowData.name === \"osc2\") {\n retRowJSONdata = undefined;\n }\n }\n\n if (selectedOption.indexOf(\"(crystal oscillator)\") != -1) {\n if (rowData.name === \"clockin\") {\n retRowJSONdata = undefined;\n }\n }\n\n if (\n selectedOption.indexOf(\"Oscillator not enabled\") != -1 ||\n selectedOption.indexOf(\"Reserved\") != -1\n ) {\n if (\n rowData.name === \"clockin\" ||\n rowData.name === \"osc1\" ||\n rowData.name === \"osc2\"\n ) {\n retRowJSONdata = undefined;\n }\n }\n // Restricting pin actions for clockin, osc1 and osc2 pin rows\n const mclrKey = appModel.getComponent(\"mclrUnusedKey\")?.component;\n if (mclrKey) {\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"clockin\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"osc1\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"osc2\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n }\n }\n\n const mclrEnable = appModel.getImportValue(\"config_request\")?.[\"MCLRE\"];\n const lvpEnable = appModel.getImportValue(\"config_request\")?.[\"LVP\"];\n\n if (mclrEnable && lvpEnable) {\n delete mclrEnable[\"setting\"];\n delete mclrEnable[\"displayOptionSetting\"];\n const selectedMclrOption: string = mclrEnable[\"defaultValue\"][\"value\"];\n\n delete lvpEnable[\"setting\"];\n delete lvpEnable[\"displayOptionSetting\"];\n const selectedLvpOption: string = lvpEnable[\"defaultValue\"][\"value\"];\n\n if (\n selectedLvpOption.indexOf(\"HV on MCLR/VPP must be used for programming\") !=\n -1 ||\n selectedLvpOption.indexOf(\n \"High Voltage on MCLR/Vpp must be used for programming\",\n ) != -1\n ) {\n if (\n selectedMclrOption.indexOf(\"MCLR pin is MCLR\") != -1 ||\n selectedMclrOption.indexOf(\"MCLR pin is Master Clear function\") != -1 ||\n selectedMclrOption === \"MCLR pin (RE3) is MCLR\"\n ) {\n if (rowData.name === \"reset\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"MCLR\" },\n };\n }\n }\n const isPic18Mclr: boolean =\n selectedMclrOption ===\n \"If LVP = 0, MCLR pin is MCLR; If LVP = 1, RE3 pin function is MCLR \" ||\n selectedMclrOption ===\n \"If LVP = 0, MCLR pin function is port defined function; If LVP =1, RE3 pin fuction is MCLR\"\n ? true\n : false;\n const isQ10Mclr: boolean =\n selectedMclrOption === \"MCLR pin (RE3) is MCLR\" ||\n selectedMclrOption ===\n \"If LVP = 0, MCLR pin (RE3) is an input; If LVP =1, MCLR pin (RE3) is MCLR\"\n ? true\n : false;\n let actionArr: any = [];\n\n // For handling Q10 devices\n if (isQ10Mclr) {\n actionArr = PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"reset\")\n .forComponent(mclrEnable)\n .addIfLockedSetValue(\"MCLR\", \"MCLR pin (RE3) is MCLR\")\n .addIfUnLockedSetValue(\n \".*\",\n \"If LVP = 0, MCLR pin (RE3) is an input; If LVP =1, MCLR pin (RE3) is MCLR\",\n )\n .build();\n } else {\n actionArr = PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"reset\")\n .forComponent(mclrEnable)\n .addIfLockedSetValue(\n \"MCLR\",\n isPic18Mclr\n ? \"If LVP = 0, MCLR pin is MCLR; If LVP = 1, RE3 pin function is MCLR \"\n : \"MCLR pin is Master Clear function\",\n )\n .addIfUnLockedSetValue(\n \".*\",\n isPic18Mclr\n ? \"If LVP = 0, MCLR pin function is port defined function; If LVP =1, RE3 pin fuction is MCLR\"\n : \"MCLR pin function is port defined function\",\n )\n .build();\n }\n\n // Provide the module reference(scriptID) of remote config bits module\n for (const eachAction of actionArr) {\n const lockedState = eachAction.state[pin_state.LOCKED];\n if (lockedState) {\n lockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle\n ?.providerId,\n };\n }\n const unlockedState = eachAction.state[pin_state.UNLOCK];\n if (unlockedState) {\n unlockedState.meta = {\n to: appModel.getAssignedImport(\"config_request\")?.handle\n ?.providerId,\n };\n }\n rowActions.push(eachAction);\n }\n } else {\n if (selectedMclrOption) {\n if (rowData.name === \"reset\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"MCLR\" },\n };\n }\n }\n const mclrKey = appModel.getComponent(\"mclrUnusedKey\")?.component;\n if (mclrKey) {\n rowActions = rowActions.concat(\n PCPHelper.stateActionBuilder(rowData)\n .rowWithName(\"reset\")\n .forComponent(mclrKey)\n .addIfLockedSetValue(\".*\", \"\")\n .addIfUnLockedSetValue(\".*\", \"\")\n .build(),\n );\n }\n }\n }\n\n const noscOsccon1 = appModel.getComponentValue(\"noscOsccon1\");\n if (\n noscOsccon1 === \"HFINTOSC\" ||\n noscOsccon1 === \"LFINTOSC\" ||\n noscOsccon1 === \"SOSC\" ||\n noscOsccon1 === \"HFINTOSC with 2x PLL\"\n ) {\n if (rowData.name === \"clockin\") {\n retRowJSONdata = undefined;\n }\n if (rowData.name === \"osc1\") {\n retRowJSONdata = undefined;\n }\n if (rowData.name === \"osc2\") {\n retRowJSONdata = undefined;\n }\n }\n\n if (rowData.name === \"sosci\") {\n if (noscOsccon1 === \"SOSC\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"SOSCI\" },\n };\n } else {\n retRowJSONdata = undefined;\n }\n }\n\n if (rowData.name === \"sosco\") {\n if (noscOsccon1 === \"SOSC\" && retRowJSONdata) {\n retRowJSONdata = {\n ...retRowJSONdata,\n behaviourMeta: { lockPinRegEx: \"SOSCO\" },\n };\n } else {\n retRowJSONdata = undefined;\n }\n }\n\n if (retRowJSONdata) retRowJSONdata = { ...retRowJSONdata, actions: rowActions };\n\n return retRowJSONdata;\n}\n","export class StringConstants {\n static readonly SOSC = \"SOSC\";\n static readonly LFINTOSC = \"LFINTOSC\";\n static readonly HFINTOSC = \"HFINTOSC\";\n static readonly HFINTOSC_2xPLL = \"HFINTOSC with 2x PLL\";\n static readonly EXTOSC = \"EXTOSC\";\n static readonly EXTOSC_4xPLL = \"EXTOSC with 4x PLL\";\n static readonly OSC_NOT_NEEDED = \"Oscillator not needed\";\n static readonly ON = \"ON\";\n static readonly ExtClkFreq_64MHz = 64000000;\n static readonly ExtClkFreq_20MHz = 20000000;\n static readonly ExtClkFreq_32MHz = 32000000;\n}\n"],"sourceRoot":""}