From 8216257c47ffdddc33984738599a64379e062dca Mon Sep 17 00:00:00 2001
From: "Carlo A. Nicolau" <cnicolau@km3net.de>
Date: Fri, 28 May 2021 17:55:48 +0200
Subject: [PATCH] Under development (backup commit)

---
 host/python/codegen/analogvariables.py        |  343 +-
 .../output/templates/alarm_callbacks.tpl.c    |  120 +
 .../commands/command_ALARM_ENABLE.tpl.c       |   48 +
 .../command_ALARM_FIRECOUNT_GET.tpl.c         |   43 +
 .../commands/command_ALARM_FIRED_GET.tpl.c    |   43 +
 .../commands/command_ALARM_FIRED_RESET.tpl.c  |   33 +
 .../commands/command_ALARM_MAXCOUNT_GET.tpl.c |   43 +
 .../command_ALARM_MAXCOUNT_RESET.tpl.c        |   33 +
 .../command_ALARM_THRESHOLD_GET.tpl.c         |   43 +
 .../command_ALARM_THRESHOLD_SET.tpl.c         |   35 +
 .../commands/command_ALARM_TIMEOUT_GET.tpl.c  |   43 +
 .../commands/command_ALARM_TIMEOUT_SET.tpl.c  |   35 +
 .../commands/command_BOARDTIME.tpl.c          |   33 +
 .../templates/commands/command_ECHO1.tpl.c    |   35 +
 .../templates/commands/command_ECHO32.tpl.c   |  252 +
 .../templates/commands/command_ECHO4.tpl.c    |   56 +
 .../commands/command_LASTCOMMANDTIME.tpl.c    |   33 +
 .../commands/command_LASTERROR.tpl.c          |   33 +
 .../commands/command_RESCUE_ENABLE.tpl.c      |   38 +
 .../commands/command_RESCUE_STATUS_GET.tpl.c  |   33 +
 .../command_RESCUE_STATUS_RESET.tpl.c         |   28 +
 .../commands/command_RESCUE_TIMEOUT_GET.tpl.c |   33 +
 .../commands/command_RESCUE_TIMEOUT_SET.tpl.c |   30 +
 .../command_SENSOR_AVERAGE_GETALL.tpl.c       |   83 +
 ...mmand_SENSOR_AVERAGING_PRESCALER_GET.tpl.c |   33 +
 ...mmand_SENSOR_AVERAGING_PRESCALER_SET.tpl.c |   33 +
 .../commands/command_SENSOR_GET_SINGLE.tpl.c  |   58 +
 .../command_SENSOR_MAXVALUES_GETALL.tpl.c     |  143 +
 .../command_SENSOR_MAXVALUE_RESET.tpl.c       |   33 +
 .../command_SENSOR_OFFSETS_GETALL.tpl.c       |   83 +
 .../command_SENSOR_VALUES_GETALL.tpl.c        |  143 +
 .../commands/command_SWITCH_CONTROL.tpl.c     |   48 +
 .../commands/command_USER_PIN_CONTROL.tpl.c   |   38 +
 .../templates/commands/command_VALCHECK.tpl.c |   58 +
 .../templates/commands/command_VERSION.tpl.c  |   68 +
 host/python/codegen/versioning.pkl            |    2 +
 micro/BPD-V01-FIRMWARE.X/BPD_MCC_config.mc3   | 5148 +++++++++++++++++
 .../generated/sources/commandstable.c         |   41 +
 .../generated/sources/commandstable.h         |  199 +
 .../generated/sources/datatypes.h             |  433 ++
 .../generated/sources/variables.c             |  899 +++
 .../generated/sources/variables.h             |  283 +
 micro/BPD-V01-FIRMWARE.X/irqs.c               |   83 +
 micro/BPD-V01-FIRMWARE.X/irqs.h               |   19 +
 micro/BPD-V01-FIRMWARE.X/main.c               |  130 +
 .../mcc_generated_files/adc.c                 |  136 +
 .../mcc_generated_files/adc.h                 |  338 ++
 .../mcc_generated_files/ccp5.c                |   60 +
 .../mcc_generated_files/ccp5.h                |   61 +
 .../mcc_generated_files/device_config.c       |  108 +
 .../mcc_generated_files/device_config.h       |   55 +
 .../mcc_generated_files/eusart1.c             |  285 +
 .../mcc_generated_files/eusart1.h             |  516 ++
 .../mcc_generated_files/fvr.c                 |   71 +
 .../mcc_generated_files/fvr.h                 |  139 +
 .../mcc_generated_files/interrupt_manager.c   |   91 +
 .../mcc_generated_files/interrupt_manager.h   |  115 +
 .../mcc_generated_files/mcc.c                 |   81 +
 .../mcc_generated_files/mcc.h                 |   94 +
 .../mcc_generated_files/pin_manager.c         |  107 +
 .../mcc_generated_files/pin_manager.h         |  582 ++
 .../mcc_generated_files/tmr0.c                |  158 +
 .../mcc_generated_files/tmr0.h                |  356 ++
 .../mcc_generated_files/tmr2.c                |  143 +
 .../mcc_generated_files/tmr2.h                |  375 ++
 65 files changed, 13195 insertions(+), 200 deletions(-)
 create mode 100644 host/python/codegen/output/templates/alarm_callbacks.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_ENABLE.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_FIRECOUNT_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_FIRED_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_FIRED_RESET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_RESET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_SET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_SET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_BOARDTIME.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ECHO1.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ECHO32.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_ECHO4.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_LASTCOMMANDTIME.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_LASTERROR.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_RESCUE_ENABLE.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_RESCUE_STATUS_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_RESCUE_STATUS_RESET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_SET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_AVERAGE_GETALL.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_GET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_SET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_GET_SINGLE.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUES_GETALL.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUE_RESET.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_OFFSETS_GETALL.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SENSOR_VALUES_GETALL.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_SWITCH_CONTROL.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_USER_PIN_CONTROL.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_VALCHECK.tpl.c
 create mode 100644 host/python/codegen/output/templates/commands/command_VERSION.tpl.c
 create mode 100644 host/python/codegen/versioning.pkl
 create mode 100644 micro/BPD-V01-FIRMWARE.X/BPD_MCC_config.mc3
 create mode 100644 micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/generated/sources/datatypes.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/generated/sources/variables.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/generated/sources/variables.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/irqs.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/irqs.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/main.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.h
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.c
 create mode 100644 micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.h

diff --git a/host/python/codegen/analogvariables.py b/host/python/codegen/analogvariables.py
index ae60208..659ad54 100644
--- a/host/python/codegen/analogvariables.py
+++ b/host/python/codegen/analogvariables.py
@@ -25,199 +25,142 @@ def voltage2channel_ADC(_voltage):
     return adc_channel
 
 
-DA FARE: definisci una f.ne per invertire (in modo da scrivere meno codice)
-
-convert_chn2meas_DUL_BOARDTEMP
-convert_meas2chn_DUL_BOARDTEMP
-
-convert_chn2meas_TEMP2
-convert_meas2chn_TEMP2
-
-convert_chn2meas_TEMP1
-convert_meas2chn_TEMP1
-
-convert_chn2meas_VEOC_RTN_I
-convert_meas2chn_VEOC_RTN_I
-
-convert_chn2meas_VEOC_FWR_I
-convert_meas2chn_VEOC_FWR_I
-
-convert_chn2meas_HYDRO_I
-convert_meas2chn_HYDRO_I
-
-convert_chn2meas_INPUT_V
-convert_meas2chn_INPUT_V
-
-convert_chn2meas_LBL_I
-convert_meas2chn_LBL_I
-
-convert_chn2meas_GLRA_I
-convert_meas2chn_GLRA_I
-
-convert_chn2meas_GLRB_I
-convert_meas2chn_GLRB_I
-
-convert_chn2meas_PWB_I
-convert_meas2chn_PWB_I
-
-
-
-
-#
-# def channel2current_MON_DU_I(_channel):
-#     """
-#     Converter from ADC channel to current for an ACS724 sensor
-#     According to formula in schematics:
-#         DU_I_MON Voltage Range:
-#         @ Ta=25C to 150C & VCC=4.5V ... 4.9V
-#         Vout=1.21V ... 1.36V @ 0A
-#         Vout=1.78V ... 1.99V @ 600mA
-#         Vout=4.03V ... 4.51V @ 3A
-#         DU_I_Mon(A)=[#ch @ (I_Actual) - #ch @ (0A)]/K
-#         @ Ta=25C K(max)=215.2; K(min)=194.7
-#     Recalculating using nominal component values (and ACS datasheet formula) @ VCC = 5V :
-#         Vadc = (89/33) * (0.5 + 0.4 * I)
-#     Thus:
-#         I = ((33/89) * Vadc - 0.5) / 0.4
-#     """
-#     return ((33. / 89.) * channel2voltage_ADC(_channel) - 0.5) / 0.4
-#
-#
-# def current2channel_MON_DU_I(_current):
-#     """
-#     Converter from current to ADC channel for an ACS724 sensor
-#     see channel2current_MON_DU_I for comments
-#     """
-#     return voltage2channel_ADC((89. / 33.) * (0.5 + 0.4 * _current))
-#
-#
-# def channel2voltage_MON_BPS_V(_channel):
-#     """
-#     Converter from ADC channel to voltage read on the BPS_V_MON (as defined in schematic, or MON_BPS_V, as defined in code)
-#     According to formulas in schematics:
-#     BPS_V_MON Voltage Range:
-#         ~ 3.05V @ 300V
-#         ~ 3.63V @ 360V
-#         ~ 3.73V @ 375V
-#         ~ 3.83V @ 380V
-#     """
-#     x0, y0 = voltage2channel_ADC(3.05), 300.
-#     x1, y1 = voltage2channel_ADC(3.83), 380.
-#     return linear_regression(x0, y0, x1, y1, _channel)
-#
-#
-# def voltage2channel_MON_BPS_V(_voltage):
-#     """
-#     Converter from voltage read on the BPS_V_MON (as defined in schematic, or MON_BPS_V, as defined in code) to ADC channel
-#     see channel2voltage_MON_BPS_V for comments
-#     """
-#     x0, y0 = 300., voltage2channel_ADC(3.05)
-#     x1, y1 = 380., voltage2channel_ADC(3.83)
-#     return linear_regression(x0, y0, x1, y1, _voltage)
-#
-#
-# def channel2current_MON_5V_I(_channel):
-#     """
-#     Converter from ADC channel to current on the 5V
-#     According to formulas in schematics:
-#         5V_I_Mon Vout Range:
-#         ~ 0mV  @ 0mA
-#         ~ 1.8V @ 3A
-#         ~ 5.0V @ 8.3A (Full Scale)
-#         Sens=8.13mA/count
-#     """
-#     x0, y0 = voltage2channel_ADC(0.), 0.
-#     x1, y1 = voltage2channel_ADC(0.5*5.), 0.5*8.3
-#     return linear_regression(x0, y0, x1, y1, _channel)
-#
-#
-# def current2channel_MON_5V_I(_current):
-#     """
-#     Converter from current on the 5V to ADC channel
-#     see channel2current_MON_5V_I for comments
-#     """
-#     x0, y0 = 0., voltage2channel_ADC(0.)
-#     x1, y1 = 0.5* 8.3, voltage2channel_ADC(0.5 * 5.)
-#     return linear_regression(x0, y0, x1, y1, _current)
-#
-#
-# def channel2current_12V(_channel):
-#     """
-#     Converter from ADC channel to current on one of the 12V lines
-#         LBL_I_Mon/HYDRO_I_Mon Vout Range:
-#         1) @ Ta=-40C to 85C & VCC 3.2V ... 3.4V
-#         Vout=38mV ... 610mV @ 0mA
-#         Vout=3.23V ... 4.08V @ 800mA
-#         2) @ Ta=25C & VCC 3.29V ... 3.31V
-#         Vout=206mV ... 370mV @ 0mA
-#         Vout=496mV ... 670mV @ 70mA
-#         Vout=3.52V ... 3.79V @ 800mA
-#         LBL_I_Mon(mA)=[#ch @ (I_Actual) - #ch @ (0mA)]*K
-#         @ Ta=25C K(max)=1.37; K(min)=1.15
-#     We assume data for T=25C
-#     """
-#     x0 = voltage2channel_ADC((0.206 + 0.370) / 2.)
-#     y0 = 0.
-#     x1 = voltage2channel_ADC((3.52 + 3.79) / 2.)
-#     y1 = 0.8
-#     return linear_regression(x0, y0, x1, y1, _channel)
-#
-#
-# def current2channel_12V(_current):
-#     """
-#     Converter from current on one of the 12V lines to ADC channel
-#     see channel2current_12V for comments
-#     """
-#     x0 = 0.
-#     y0 = voltage2channel_ADC((0.206 + 0.370) / 2.)
-#     x1 = 0.8
-#     y1 = voltage2channel_ADC((3.52 + 3.79) / 2.)
-#     return linear_regression(x0, y0, x1, y1, _current)
-#
-#
-# def channel2temperature_THEATSINK(_channel):
-#     """
-#     Converter from ADC channel to heatsink temperature
-#     To be done. For now just use ADC voltage conversion
-#     """
-#     return channel2voltage_ADC(_channel)
-#
-#
-# def temperature2channel_THEATSINK(_temperature):
-#     """
-#     Converter from heatsink temperature to ADC channel
-#     To be done. For now just use ADC voltage conversion
-#     """
-#     return voltage2channel_ADC(_temperature)
-#
-#
-# def channel2temperature_TBOARD(_channel):
-#     """
-#     Converter from ADC channel to heatsink temperature
-#     From schematics:
-#         DUL Board Temperature
-#         Sensor Voltage Range:
-#         ~ 1.0V @ 0C
-#         ~ 1.5V @ 25C
-#         ~ 3.0V @ 100C
-#     """
-#     x0 = voltage2channel_ADC(1.)
-#     y0 = 0.
-#     x1 = voltage2channel_ADC(3.)
-#     y1 = 100.
-#     return linear_regression(x0, y0, x1, y1, _channel)
-#
-#
-# def temperature2channel_TBOARD(_temperature):
-#     """
-#     Converter from ADC channel to heatsink temperature
-#     see channel2temperature_TBOARD for comments
-#     """
-#     x0 = 0.
-#     y0 = voltage2channel_ADC(1.)
-#     x1 = 100.
-#     y1 = voltage2channel_ADC(3.)
-#     return linear_regression(x0, y0, x1, y1, _temperature)
+def convert_chn2meas_DUL_BOARDTEMP(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 1.5V @ 25C
+    # ~ 3.0V @ 100C
+    v = channel2voltage_ADC(_chn)
+    v0 = 1.5; meas0 = 25.; v1 = 3.0; meas1 = 100.
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_TEMP2(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 0.7V@30C
+    # ~ 3.2V@100C
+    v = channel2voltage_ADC(_chn)
+    v0 = 0.7; meas0 = 30.; v1 = 3.2; meas1 = 100.
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_TEMP1(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # same as TEMP2
+    return convert_chn2meas_TEMP2(_chn)
+
+
+def convert_chn2meas_VEOC_RTN_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 1.36V@0A
+    # ~ 4.51V@3A
+    v = channel2voltage_ADC(_chn)
+    v0 = 1.36; meas0 = 0.; v1 = 4.51; meas1 = 3.
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_VEOC_FWR_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # same as VEOC_RTN_I
+    return convert_chn2meas_VEOC_RTN_I(_chn)
+
+
+def convert_chn2meas_HYDRO_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 0.45V@40mA
+    # ~ 4.5V@400mA
+    v = channel2voltage_ADC(_chn)
+    v0 = 0.45; meas0 = 0.040; v1 = 4.5; meas1 = 0.4
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_INPUT_V(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 1,3V@260V
+    # ~ 2.0V@400V
+    v = channel2voltage_ADC(_chn)
+    v0 = 1.3; meas0 = 260.; v1 = 2.; meas1 = 400.
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_LBL_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 0.45V@70mA
+    # ~ 4.5V@700mA
+    v = channel2voltage_ADC(_chn)
+    v0 = 0.45; meas0 = 0.070; v1 = 4.5; meas1 = 0.7
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_GLRA_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 3.6V@5.3A
+    v = channel2voltage_ADC(_chn)
+    v0 = 0.; meas0 = 0.; v1 = 3.6; meas1 = 5.3
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def convert_chn2meas_GLRB_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # same as GLRA_I
+    return convert_chn2meas_GLRA_I(_chn)
+
+
+def convert_chn2meas_PWB_I(_chn):
+    # from Rocco's "mapping" doc (vers. 15.02.2021):
+    # ~ 3.6V@2.6A
+    v = channel2voltage_ADC(_chn)
+    v0 = 0.; meas0 = 0.; v1 = 3.6; meas1 = 2.6
+    return linear_regression(v0, meas0, v1, meas1, v)
+
+
+def __convert_maes2chn_invert_relation(_chn2meas, _meas):
+    meas0 = _chn2meas(100)
+    meas1 = _chn2meas(5000)
+    return linear_regression(meas0, 100, meas1, 5000, _meas)
+
+
+def convert_meas2chn_DUL_BOARDTEMP(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_DUL_BOARDTEMP, _meas)
+
+
+def convert_meas2chn_TEMP2(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_TEMP2, _meas)
+
+
+def convert_meas2chn_TEMP1(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_TEMP1, _meas)
+
+
+def convert_meas2chn_VEOC_RTN_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_VEOC_RTN_I, _meas)
+
+
+def convert_meas2chn_VEOC_FWR_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_VEOC_FWR_I, _meas)
+
+
+def convert_meas2chn_HYDRO_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_HYDRO_I, _meas)
+
+
+def convert_meas2chn_INPUT_V(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_INPUT_V, _meas)
+
+
+def convert_meas2chn_LBL_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_LBL_I, _meas)
+
+
+def convert_meas2chn_GLRA_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_GLRA_I, _meas)
+
+
+def convert_meas2chn_GLRB_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_GLRB_I, _meas)
+
+
+def convert_meas2chn_PWB_I(_meas):
+    return __convert_maes2chn_invert_relation(convert_chn2meas_PWB_I, _meas)
 
 
 class AnalogVariableList:
@@ -396,7 +339,7 @@ class AnalogVariableList:
                 alarm_fast=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index+1,
                     enable_default=False,
-                    threshold_default=0.80,  # TODO
+                    threshold_default=0.35,  # TODO
                     timeout_default_ms=50.  # TODO
                 )
             )
@@ -444,13 +387,13 @@ class AnalogVariableList:
                 alarm_slow=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index,
                     enable_default=False,
-                    threshold_default=0.60,  # TODO
+                    threshold_default=0.50,  # TODO
                     timeout_default_ms=100.  # TODO
                 ),
                 alarm_fast=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index+1,
                     enable_default=False,
-                    threshold_default=0.90,  # TODO
+                    threshold_default=0.60,  # TODO
                     timeout_default_ms=50.  # TODO
                 )
             )
@@ -471,13 +414,13 @@ class AnalogVariableList:
                 alarm_slow=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index,
                     enable_default=False,
-                    threshold_default=12.0,  # TODO
+                    threshold_default=6.0,  # TODO
                     timeout_default_ms=100.  # TODO
                 ),
                 alarm_fast=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index+1,
                     enable_default=False,
-                    threshold_default=12.0,  # TODO
+                    threshold_default=6.0,  # TODO
                     timeout_default_ms=100.  # TODO
                 )
             )
@@ -498,13 +441,13 @@ class AnalogVariableList:
                 alarm_slow=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index,
                     enable_default=False,
-                    threshold_default=12.0,  # TODO
+                    threshold_default=6.0,  # TODO
                     timeout_default_ms=100.  # TODO
                 ),
                 alarm_fast=AnalogAlarmDescriptor(
                     enum_index=alarm_enum_index+1,
                     enable_default=False,
-                    threshold_default=12.0,  # TODO
+                    threshold_default=6.0,  # TODO
                     timeout_default_ms=100.  # TODO
                 )
             )
diff --git a/host/python/codegen/output/templates/alarm_callbacks.tpl.c b/host/python/codegen/output/templates/alarm_callbacks.tpl.c
new file mode 100644
index 0000000..30cb7f1
--- /dev/null
+++ b/host/python/codegen/output/templates/alarm_callbacks.tpl.c
@@ -0,0 +1,120 @@
+// Auto-generated template file: alarm_callbacks.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+#include "generated/sources/variables.h"
+
+// Callback function for alarm on analog variable MON_DUL_BOARDTEMP (DUL board temperature sensor)
+void alarm_MON_DUL_BOARDTEMP() {
+    // TODO implement auto-generated callback function alarm_MON_DUL_BOARDTEMP
+}
+
+// Callback function for alarm on analog variable MON_TEMP2 (VICOR2 Heatsink (connector J12) temperature sensor signal acquisition)
+void alarm_MON_TEMP2() {
+    // TODO implement auto-generated callback function alarm_MON_TEMP2
+}
+
+// Callback function for alarm on analog variable MON_TEMP1 (VICOR1 Heatsink (connector J1) temperature sensor signal acquisition )
+void alarm_MON_TEMP1() {
+    // TODO implement auto-generated callback function alarm_MON_TEMP1
+}
+
+// Callback function for alarm on analog variable MON_VEOC_RTN_I (DU backbone return current sensor signal acquisition )
+void alarm_MON_VEOC_RTN_I() {
+    // TODO implement auto-generated callback function alarm_MON_VEOC_RTN_I
+}
+
+// Callback function for alarm on analog variable MON_VEOC_FWR_I (DU backbone forward current sensor signal acquisition )
+void alarm_MON_VEOC_FWR_I() {
+    // TODO implement auto-generated callback function alarm_MON_VEOC_FWR_I
+}
+
+// Callback function for alarm on analog variable MON_HYDRO_I (HYDRO current sensor signal acquisition )
+void alarm_MON_HYDRO_I() {
+    // TODO implement auto-generated callback function alarm_MON_HYDRO_I
+}
+
+// Callback function for alarm on analog variable MON_INPUT_V (Main Input Line voltage sensor signal acquisition )
+void alarm_MON_INPUT_V() {
+    // TODO implement auto-generated callback function alarm_MON_INPUT_V
+}
+
+// Callback function for alarm on analog variable MON_LBL_I (LBL current sensor signal acquisition )
+void alarm_MON_LBL_I() {
+    // TODO implement auto-generated callback function alarm_MON_LBL_I
+}
+
+// Callback function for alarm on analog variable MON_GLRA_I (GLENAIR-A current sensor signal acquisition)
+void alarm_MON_GLRA_I() {
+    // TODO implement auto-generated callback function alarm_MON_GLRA_I
+}
+
+// Callback function for alarm on analog variable MON_GLRB_I (GLENAIR-B current sensor signal acquisition)
+void alarm_MON_GLRB_I() {
+    // TODO implement auto-generated callback function alarm_MON_GLRB_I
+}
+
+// Callback function for alarm on analog variable MON_PWB_I (POWER BOARD current sensor signal acquisition)
+void alarm_MON_PWB_I() {
+    // TODO implement auto-generated callback function alarm_MON_PWB_I
+}
+
+// Callback function for alarm on analog variable FLAG_DUL_ALARMPOS1 (DUL current limiting on VEOC direct alarm 1)
+void alarm_FLAG_DUL_ALARMPOS1() {
+    // TODO implement auto-generated callback function alarm_FLAG_DUL_ALARMPOS1
+}
+
+// Callback function for alarm on analog variable FLAG_DUL_ALARMPOS2 (DUL current limiting on VEOC direct alarm 2)
+void alarm_FLAG_DUL_ALARMPOS2() {
+    // TODO implement auto-generated callback function alarm_FLAG_DUL_ALARMPOS2
+}
+
+// Callback function for alarm on analog variable FLAG_DUL_ALARMNEG1 (DUL current limiting on VEOC return alarm 1)
+void alarm_FLAG_DUL_ALARMNEG1() {
+    // TODO implement auto-generated callback function alarm_FLAG_DUL_ALARMNEG1
+}
+
+// Callback function for alarm on analog variable FLAG_DUL_ALARMNEG2 (DUL current limiting on VEOC return alarm 2)
+void alarm_FLAG_DUL_ALARMNEG2() {
+    // TODO implement auto-generated callback function alarm_FLAG_DUL_ALARMNEG2
+}
+
+// Callback function for alarm on analog variable FLAG_HYDRO_PWR_FAULT (Fault status acquisition of 12V ISO HYDRO power line)
+void alarm_FLAG_HYDRO_PWR_FAULT() {
+    // TODO implement auto-generated callback function alarm_FLAG_HYDRO_PWR_FAULT
+}
+
+// Callback function for alarm on analog variable FLAG_LBL_PWR_FAULT (Fault status acquisition of 12V ISO LBL power line)
+void alarm_FLAG_LBL_PWR_FAULT() {
+    // TODO implement auto-generated callback function alarm_FLAG_LBL_PWR_FAULT
+}
+
+// Callback function for alarm on analog variable FLAG_GLRA_FAULT (Fault status acquisition of 12V GLENAIR-A power line)
+void alarm_FLAG_GLRA_FAULT() {
+    // TODO implement auto-generated callback function alarm_FLAG_GLRA_FAULT
+}
+
+// Callback function for alarm on analog variable FLAG_GLRB_FAULT (Fault status acquisition of 12V GLENAIR-B power line)
+void alarm_FLAG_GLRB_FAULT() {
+    // TODO implement auto-generated callback function alarm_FLAG_GLRB_FAULT
+}
+
+// Callback function for alarm on analog variable FLAG_POWERBOARD_FAULT (Fault status acquisition of 12V POWER BOARD power line)
+void alarm_FLAG_POWERBOARD_FAULT() {
+    // TODO implement auto-generated callback function alarm_FLAG_POWERBOARD_FAULT
+}
+
+// Callback function for alarm on analog variable FLAG_GLRA_GOOD (Power good status acquisition of 12V GLENAIR-A power line)
+void alarm_FLAG_GLRA_GOOD() {
+    // TODO implement auto-generated callback function alarm_FLAG_GLRA_GOOD
+}
+
+// Callback function for alarm on analog variable FLAG_GLRB_GOOD (Power good status acquisition of 12V GLENAIR-B power line)
+void alarm_FLAG_GLRB_GOOD() {
+    // TODO implement auto-generated callback function alarm_FLAG_GLRB_GOOD
+}
+
+// Callback function for alarm on analog variable FLAG_POWERBOARD_GOOD (Power good status acquisition of 12V POWER BOARD power line)
+void alarm_FLAG_POWERBOARD_GOOD() {
+    // TODO implement auto-generated callback function alarm_FLAG_POWERBOARD_GOOD
+}
+
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_ENABLE.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_ENABLE.tpl.c
new file mode 100644
index 0000000..76df87c
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_ENABLE.tpl.c
@@ -0,0 +1,48 @@
+// Auto-generated template file: command_ALARM_ENABLE.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_ENABLE(void) {
+    // Command: ALARM_ENABLE
+    // Description: Enable or disable one of the alarms. Can be used to get the current enable status without changing it (see request payload field)
+    // 
+    // Request code: CMDCODE_ALARM_ENABLE_REQ
+    // Response code: CMDCODE_ALARM_ENABLE_REQ
+    // Request payload (length in bytes is 2):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    //     field #1   (1 byte) [type: enum_enablestate_nc_t] : ENABLESTATE_NC (Enable state)
+    // Response payload (length in bytes is 2):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    //     field #1   (1 byte) [type: enum_enablestate_t] : ENABLESTATE (Enable state)
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_t req_alarm_number = (enum_alarm_number_t)communication_request_payload_retrieve_uint8_t();
+    enum_enablestate_nc_t req_enablestate_nc = (enum_enablestate_nc_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number
+    if((uint8_t)req_alarm_number < (uint8_t)enum_alarm_number_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number > (uint8_t)enum_alarm_number_t_max) return ERR_RANGE;
+    // checking range for enum field req_enablestate_nc
+    if((uint8_t)req_enablestate_nc < (uint8_t)enum_enablestate_nc_t_min) return ERR_RANGE;
+    if((uint8_t)req_enablestate_nc > (uint8_t)enum_enablestate_nc_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_ENABLE
+
+    // TODO: assign response field ALARM_NUMBER in command ALARM_ENABLE callback
+    enum_alarm_number_t resp_alarm_number = -1;
+
+    // TODO: assign response field ENABLESTATE in command ALARM_ENABLE callback
+    enum_enablestate_t resp_enablestate = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number);
+    communication_response_payload_append_uint8_t((uint8_t)resp_enablestate);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_FIRECOUNT_GET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_FIRECOUNT_GET.tpl.c
new file mode 100644
index 0000000..7e76e1f
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_FIRECOUNT_GET.tpl.c
@@ -0,0 +1,43 @@
+// Auto-generated template file: command_ALARM_FIRECOUNT_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_FIRECOUNT_GET(void) {
+    // Command: ALARM_FIRECOUNT_GET
+    // Description: Get the current fire counter of one alarm
+    // 
+    // Request code: CMDCODE_ALARM_FIRECOUNT_GET_REQ
+    // Response code: CMDCODE_ALARM_FIRECOUNT_GET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    // Response payload (length in bytes is 3):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : FIRECOUNT  (Fire count value)
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_t req_alarm_number = (enum_alarm_number_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number
+    if((uint8_t)req_alarm_number < (uint8_t)enum_alarm_number_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number > (uint8_t)enum_alarm_number_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_FIRECOUNT_GET
+
+    // TODO: assign response field ALARM_NUMBER in command ALARM_FIRECOUNT_GET callback
+    enum_alarm_number_t resp_alarm_number = -1;
+
+    // TODO: assign response field FIRECOUNT in command ALARM_FIRECOUNT_GET callback
+    uint16_t resp_firecount = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number);
+    communication_response_payload_append_uint16_t((uint16_t)resp_firecount);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_FIRED_GET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_FIRED_GET.tpl.c
new file mode 100644
index 0000000..9d96d11
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_FIRED_GET.tpl.c
@@ -0,0 +1,43 @@
+// Auto-generated template file: command_ALARM_FIRED_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_FIRED_GET(void) {
+    // Command: ALARM_FIRED_GET
+    // Description: Get the has-fired flag of one alarm (or all alarms OR-ed)
+    // 
+    // Request code: CMDCODE_ALARM_FIRED_GET_REQ
+    // Response code: CMDCODE_ALARM_FIRED_GET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_ext_t] : ALARM_NUMBER_EXT (Alarm number)
+    // Response payload (length in bytes is 2):
+    //     field #0   (1 byte) [type: enum_alarm_number_ext_t] : ALARM_NUMBER_EXT (Alarm number)
+    //     field #1   (1 byte) [type: enum_firedstate_t] : FIREDSTATE (Fired state)
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_ext_t req_alarm_number_ext = (enum_alarm_number_ext_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number_ext
+    if((uint8_t)req_alarm_number_ext < (uint8_t)enum_alarm_number_ext_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number_ext > (uint8_t)enum_alarm_number_ext_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_FIRED_GET
+
+    // TODO: assign response field ALARM_NUMBER_EXT in command ALARM_FIRED_GET callback
+    enum_alarm_number_ext_t resp_alarm_number_ext = -1;
+
+    // TODO: assign response field FIREDSTATE in command ALARM_FIRED_GET callback
+    enum_firedstate_t resp_firedstate = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number_ext);
+    communication_response_payload_append_uint8_t((uint8_t)resp_firedstate);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_FIRED_RESET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_FIRED_RESET.tpl.c
new file mode 100644
index 0000000..bce1c1d
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_FIRED_RESET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_ALARM_FIRED_RESET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_FIRED_RESET(void) {
+    // Command: ALARM_FIRED_RESET
+    // Description: Reset the has-fired flag of one alarm (or all alarms)
+    // 
+    // Request code: CMDCODE_ALARM_FIRED_RESET_REQ
+    // Response code: CMDCODE_ALARM_FIRED_RESET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_all_t] : ALARM_NUMBER_ALL (Alarm number)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_all_t req_alarm_number_all = (enum_alarm_number_all_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number_all
+    if((uint8_t)req_alarm_number_all < (uint8_t)enum_alarm_number_all_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number_all > (uint8_t)enum_alarm_number_all_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_FIRED_RESET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_GET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_GET.tpl.c
new file mode 100644
index 0000000..3503670
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_GET.tpl.c
@@ -0,0 +1,43 @@
+// Auto-generated template file: command_ALARM_MAXCOUNT_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_MAXCOUNT_GET(void) {
+    // Command: ALARM_MAXCOUNT_GET
+    // Description: Get the maximum counter value reached by one of the alarms (use command ALARM_MAXCOUNT_RESET to reset it to zero)
+    // 
+    // Request code: CMDCODE_ALARM_MAXCOUNT_GET_REQ
+    // Response code: CMDCODE_ALARM_MAXCOUNT_GET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    // Response payload (length in bytes is 3):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : MAXCOUNT   (Max count value)
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_t req_alarm_number = (enum_alarm_number_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number
+    if((uint8_t)req_alarm_number < (uint8_t)enum_alarm_number_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number > (uint8_t)enum_alarm_number_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_MAXCOUNT_GET
+
+    // TODO: assign response field ALARM_NUMBER in command ALARM_MAXCOUNT_GET callback
+    enum_alarm_number_t resp_alarm_number = -1;
+
+    // TODO: assign response field MAXCOUNT in command ALARM_MAXCOUNT_GET callback
+    uint16_t resp_maxcount = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number);
+    communication_response_payload_append_uint16_t((uint16_t)resp_maxcount);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_RESET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_RESET.tpl.c
new file mode 100644
index 0000000..1104076
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_MAXCOUNT_RESET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_ALARM_MAXCOUNT_RESET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_MAXCOUNT_RESET(void) {
+    // Command: ALARM_MAXCOUNT_RESET
+    // Description: Reset the maximum counter value of one alarm (or all alarms)
+    // 
+    // Request code: CMDCODE_ALARM_MAXCOUNT_RESET_REQ
+    // Response code: CMDCODE_ALARM_MAXCOUNT_RESET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_all_t] : ALARM_NUMBER_ALL (Alarm number)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_all_t req_alarm_number_all = (enum_alarm_number_all_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number_all
+    if((uint8_t)req_alarm_number_all < (uint8_t)enum_alarm_number_all_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number_all > (uint8_t)enum_alarm_number_all_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_MAXCOUNT_RESET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_GET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_GET.tpl.c
new file mode 100644
index 0000000..3c3cc61
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_GET.tpl.c
@@ -0,0 +1,43 @@
+// Auto-generated template file: command_ALARM_THRESHOLD_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_THRESHOLD_GET(void) {
+    // Command: ALARM_THRESHOLD_GET
+    // Description: Get the threshold value of one analog alarm
+    // 
+    // Request code: CMDCODE_ALARM_THRESHOLD_GET_REQ
+    // Response code: CMDCODE_ALARM_THRESHOLD_GET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_analog_t] : ALARM_NUMBER_ANALOG (Alarm number)
+    // Response payload (length in bytes is 3):
+    //     field #0   (1 byte) [type: enum_alarm_number_analog_t] : ALARM_NUMBER_ANALOG (Alarm number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : THRESHOLD  (Threshold value)
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_analog_t req_alarm_number_analog = (enum_alarm_number_analog_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number_analog
+    if((uint8_t)req_alarm_number_analog < (uint8_t)enum_alarm_number_analog_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number_analog > (uint8_t)enum_alarm_number_analog_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_THRESHOLD_GET
+
+    // TODO: assign response field ALARM_NUMBER_ANALOG in command ALARM_THRESHOLD_GET callback
+    enum_alarm_number_analog_t resp_alarm_number_analog = -1;
+
+    // TODO: assign response field THRESHOLD in command ALARM_THRESHOLD_GET callback
+    uint16_t resp_threshold = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number_analog);
+    communication_response_payload_append_uint16_t((uint16_t)resp_threshold);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_SET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_SET.tpl.c
new file mode 100644
index 0000000..df47853
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_THRESHOLD_SET.tpl.c
@@ -0,0 +1,35 @@
+// Auto-generated template file: command_ALARM_THRESHOLD_SET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_THRESHOLD_SET(void) {
+    // Command: ALARM_THRESHOLD_SET
+    // Description: Set the threshold value of one analog alarm
+    // 
+    // Request code: CMDCODE_ALARM_THRESHOLD_SET_REQ
+    // Response code: CMDCODE_ALARM_THRESHOLD_SET_REQ
+    // Request payload (length in bytes is 3):
+    //     field #0   (1 byte) [type: enum_alarm_number_analog_t] : ALARM_NUMBER_ANALOG (Alarm number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : THRESHOLD  (Threshold value)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_analog_t req_alarm_number_analog = (enum_alarm_number_analog_t)communication_request_payload_retrieve_uint8_t();
+    uint16_t req_threshold = (uint16_t)communication_request_payload_retrieve_uint16_t();
+    // checking range for enum field req_alarm_number_analog
+    if((uint8_t)req_alarm_number_analog < (uint8_t)enum_alarm_number_analog_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number_analog > (uint8_t)enum_alarm_number_analog_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_THRESHOLD_SET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_GET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_GET.tpl.c
new file mode 100644
index 0000000..3756e75
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_GET.tpl.c
@@ -0,0 +1,43 @@
+// Auto-generated template file: command_ALARM_TIMEOUT_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_TIMEOUT_GET(void) {
+    // Command: ALARM_TIMEOUT_GET
+    // Description: Get the timeout value of one alarm
+    // 
+    // Request code: CMDCODE_ALARM_TIMEOUT_GET_REQ
+    // Response code: CMDCODE_ALARM_TIMEOUT_GET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    // Response payload (length in bytes is 3):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : TIMEOUT    (Timeout value)
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_t req_alarm_number = (enum_alarm_number_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_alarm_number
+    if((uint8_t)req_alarm_number < (uint8_t)enum_alarm_number_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number > (uint8_t)enum_alarm_number_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_TIMEOUT_GET
+
+    // TODO: assign response field ALARM_NUMBER in command ALARM_TIMEOUT_GET callback
+    enum_alarm_number_t resp_alarm_number = -1;
+
+    // TODO: assign response field TIMEOUT in command ALARM_TIMEOUT_GET callback
+    uint16_t resp_timeout = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number);
+    communication_response_payload_append_uint16_t((uint16_t)resp_timeout);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_SET.tpl.c b/host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_SET.tpl.c
new file mode 100644
index 0000000..1c11fa6
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ALARM_TIMEOUT_SET.tpl.c
@@ -0,0 +1,35 @@
+// Auto-generated template file: command_ALARM_TIMEOUT_SET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ALARM_TIMEOUT_SET(void) {
+    // Command: ALARM_TIMEOUT_SET
+    // Description: Set the timeout of one alarm
+    // 
+    // Request code: CMDCODE_ALARM_TIMEOUT_SET_REQ
+    // Response code: CMDCODE_ALARM_TIMEOUT_SET_REQ
+    // Request payload (length in bytes is 3):
+    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : TIMEOUT    (Timeout value)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_alarm_number_t req_alarm_number = (enum_alarm_number_t)communication_request_payload_retrieve_uint8_t();
+    uint16_t req_timeout = (uint16_t)communication_request_payload_retrieve_uint16_t();
+    // checking range for enum field req_alarm_number
+    if((uint8_t)req_alarm_number < (uint8_t)enum_alarm_number_t_min) return ERR_RANGE;
+    if((uint8_t)req_alarm_number > (uint8_t)enum_alarm_number_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ALARM_TIMEOUT_SET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_BOARDTIME.tpl.c b/host/python/codegen/output/templates/commands/command_BOARDTIME.tpl.c
new file mode 100644
index 0000000..eaab7e8
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_BOARDTIME.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_BOARDTIME.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_BOARDTIME(void) {
+    // Command: BOARDTIME
+    // Description: Time since last reset
+    // 
+    // Request code: CMDCODE_BOARDTIME_REQ
+    // Response code: CMDCODE_BOARDTIME_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 4):
+    //     field #0   (4 bytes) [type: uint32_t  ] : SECONDS    (Seconds since reset)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_BOARDTIME
+
+    // TODO: assign response field SECONDS in command BOARDTIME callback
+    uint32_t resp_seconds = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint32_t((uint32_t)resp_seconds);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ECHO1.tpl.c b/host/python/codegen/output/templates/commands/command_ECHO1.tpl.c
new file mode 100644
index 0000000..49dbdd6
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ECHO1.tpl.c
@@ -0,0 +1,35 @@
+// Auto-generated template file: command_ECHO1.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ECHO1(void) {
+    // Command: ECHO1
+    // Description: Echo (1 byte)
+    // 
+    // Request code: CMDCODE_ECHO1_REQ
+    // Response code: CMDCODE_ECHO1_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: uint8_t   ] : VALUE      (Echoed byte)
+    // Response payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: uint8_t   ] : VALUE      (Echoed byte)
+
+    // Auto-generated section: request payload fields reading
+    uint8_t req_value = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ECHO1
+
+    // TODO: assign response field VALUE in command ECHO1 callback
+    uint8_t resp_value = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_value);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ECHO32.tpl.c b/host/python/codegen/output/templates/commands/command_ECHO32.tpl.c
new file mode 100644
index 0000000..dae3401
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ECHO32.tpl.c
@@ -0,0 +1,252 @@
+// Auto-generated template file: command_ECHO32.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ECHO32(void) {
+    // Command: ECHO32
+    // Description: Echo (32 bytes)
+    // 
+    // Request code: CMDCODE_ECHO32_REQ
+    // Response code: CMDCODE_ECHO32_REQ
+    // Request payload (length in bytes is 32):
+    //     field #0   (1 byte) [type: uint8_t   ] : VALUE_0    (Echoed byte)
+    //     field #1   (1 byte) [type: uint8_t   ] : VALUE_1    (Echoed byte)
+    //     field #2   (1 byte) [type: uint8_t   ] : VALUE_2    (Echoed byte)
+    //     field #3   (1 byte) [type: uint8_t   ] : VALUE_3    (Echoed byte)
+    //     field #4   (1 byte) [type: uint8_t   ] : VALUE_4    (Echoed byte)
+    //     field #5   (1 byte) [type: uint8_t   ] : VALUE_5    (Echoed byte)
+    //     field #6   (1 byte) [type: uint8_t   ] : VALUE_6    (Echoed byte)
+    //     field #7   (1 byte) [type: uint8_t   ] : VALUE_7    (Echoed byte)
+    //     field #8   (1 byte) [type: uint8_t   ] : VALUE_8    (Echoed byte)
+    //     field #9   (1 byte) [type: uint8_t   ] : VALUE_9    (Echoed byte)
+    //     field #10  (1 byte) [type: uint8_t   ] : VALUE_10   (Echoed byte)
+    //     field #11  (1 byte) [type: uint8_t   ] : VALUE_11   (Echoed byte)
+    //     field #12  (1 byte) [type: uint8_t   ] : VALUE_12   (Echoed byte)
+    //     field #13  (1 byte) [type: uint8_t   ] : VALUE_13   (Echoed byte)
+    //     field #14  (1 byte) [type: uint8_t   ] : VALUE_14   (Echoed byte)
+    //     field #15  (1 byte) [type: uint8_t   ] : VALUE_15   (Echoed byte)
+    //     field #16  (1 byte) [type: uint8_t   ] : VALUE_16   (Echoed byte)
+    //     field #17  (1 byte) [type: uint8_t   ] : VALUE_17   (Echoed byte)
+    //     field #18  (1 byte) [type: uint8_t   ] : VALUE_18   (Echoed byte)
+    //     field #19  (1 byte) [type: uint8_t   ] : VALUE_19   (Echoed byte)
+    //     field #20  (1 byte) [type: uint8_t   ] : VALUE_20   (Echoed byte)
+    //     field #21  (1 byte) [type: uint8_t   ] : VALUE_21   (Echoed byte)
+    //     field #22  (1 byte) [type: uint8_t   ] : VALUE_22   (Echoed byte)
+    //     field #23  (1 byte) [type: uint8_t   ] : VALUE_23   (Echoed byte)
+    //     field #24  (1 byte) [type: uint8_t   ] : VALUE_24   (Echoed byte)
+    //     field #25  (1 byte) [type: uint8_t   ] : VALUE_25   (Echoed byte)
+    //     field #26  (1 byte) [type: uint8_t   ] : VALUE_26   (Echoed byte)
+    //     field #27  (1 byte) [type: uint8_t   ] : VALUE_27   (Echoed byte)
+    //     field #28  (1 byte) [type: uint8_t   ] : VALUE_28   (Echoed byte)
+    //     field #29  (1 byte) [type: uint8_t   ] : VALUE_29   (Echoed byte)
+    //     field #30  (1 byte) [type: uint8_t   ] : VALUE_30   (Echoed byte)
+    //     field #31  (1 byte) [type: uint8_t   ] : VALUE_31   (Echoed byte)
+    // Response payload (length in bytes is 32):
+    //     field #0   (1 byte) [type: uint8_t   ] : VALUE_0    (Echoed byte)
+    //     field #1   (1 byte) [type: uint8_t   ] : VALUE_1    (Echoed byte)
+    //     field #2   (1 byte) [type: uint8_t   ] : VALUE_2    (Echoed byte)
+    //     field #3   (1 byte) [type: uint8_t   ] : VALUE_3    (Echoed byte)
+    //     field #4   (1 byte) [type: uint8_t   ] : VALUE_4    (Echoed byte)
+    //     field #5   (1 byte) [type: uint8_t   ] : VALUE_5    (Echoed byte)
+    //     field #6   (1 byte) [type: uint8_t   ] : VALUE_6    (Echoed byte)
+    //     field #7   (1 byte) [type: uint8_t   ] : VALUE_7    (Echoed byte)
+    //     field #8   (1 byte) [type: uint8_t   ] : VALUE_8    (Echoed byte)
+    //     field #9   (1 byte) [type: uint8_t   ] : VALUE_9    (Echoed byte)
+    //     field #10  (1 byte) [type: uint8_t   ] : VALUE_10   (Echoed byte)
+    //     field #11  (1 byte) [type: uint8_t   ] : VALUE_11   (Echoed byte)
+    //     field #12  (1 byte) [type: uint8_t   ] : VALUE_12   (Echoed byte)
+    //     field #13  (1 byte) [type: uint8_t   ] : VALUE_13   (Echoed byte)
+    //     field #14  (1 byte) [type: uint8_t   ] : VALUE_14   (Echoed byte)
+    //     field #15  (1 byte) [type: uint8_t   ] : VALUE_15   (Echoed byte)
+    //     field #16  (1 byte) [type: uint8_t   ] : VALUE_16   (Echoed byte)
+    //     field #17  (1 byte) [type: uint8_t   ] : VALUE_17   (Echoed byte)
+    //     field #18  (1 byte) [type: uint8_t   ] : VALUE_18   (Echoed byte)
+    //     field #19  (1 byte) [type: uint8_t   ] : VALUE_19   (Echoed byte)
+    //     field #20  (1 byte) [type: uint8_t   ] : VALUE_20   (Echoed byte)
+    //     field #21  (1 byte) [type: uint8_t   ] : VALUE_21   (Echoed byte)
+    //     field #22  (1 byte) [type: uint8_t   ] : VALUE_22   (Echoed byte)
+    //     field #23  (1 byte) [type: uint8_t   ] : VALUE_23   (Echoed byte)
+    //     field #24  (1 byte) [type: uint8_t   ] : VALUE_24   (Echoed byte)
+    //     field #25  (1 byte) [type: uint8_t   ] : VALUE_25   (Echoed byte)
+    //     field #26  (1 byte) [type: uint8_t   ] : VALUE_26   (Echoed byte)
+    //     field #27  (1 byte) [type: uint8_t   ] : VALUE_27   (Echoed byte)
+    //     field #28  (1 byte) [type: uint8_t   ] : VALUE_28   (Echoed byte)
+    //     field #29  (1 byte) [type: uint8_t   ] : VALUE_29   (Echoed byte)
+    //     field #30  (1 byte) [type: uint8_t   ] : VALUE_30   (Echoed byte)
+    //     field #31  (1 byte) [type: uint8_t   ] : VALUE_31   (Echoed byte)
+
+    // Auto-generated section: request payload fields reading
+    uint8_t req_value_0 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_1 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_2 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_3 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_4 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_5 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_6 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_7 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_8 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_9 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_10 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_11 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_12 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_13 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_14 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_15 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_16 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_17 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_18 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_19 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_20 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_21 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_22 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_23 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_24 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_25 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_26 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_27 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_28 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_29 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_30 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_31 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ECHO32
+
+    // TODO: assign response field VALUE_0 in command ECHO32 callback
+    uint8_t resp_value_0 = -1;
+
+    // TODO: assign response field VALUE_1 in command ECHO32 callback
+    uint8_t resp_value_1 = -1;
+
+    // TODO: assign response field VALUE_2 in command ECHO32 callback
+    uint8_t resp_value_2 = -1;
+
+    // TODO: assign response field VALUE_3 in command ECHO32 callback
+    uint8_t resp_value_3 = -1;
+
+    // TODO: assign response field VALUE_4 in command ECHO32 callback
+    uint8_t resp_value_4 = -1;
+
+    // TODO: assign response field VALUE_5 in command ECHO32 callback
+    uint8_t resp_value_5 = -1;
+
+    // TODO: assign response field VALUE_6 in command ECHO32 callback
+    uint8_t resp_value_6 = -1;
+
+    // TODO: assign response field VALUE_7 in command ECHO32 callback
+    uint8_t resp_value_7 = -1;
+
+    // TODO: assign response field VALUE_8 in command ECHO32 callback
+    uint8_t resp_value_8 = -1;
+
+    // TODO: assign response field VALUE_9 in command ECHO32 callback
+    uint8_t resp_value_9 = -1;
+
+    // TODO: assign response field VALUE_10 in command ECHO32 callback
+    uint8_t resp_value_10 = -1;
+
+    // TODO: assign response field VALUE_11 in command ECHO32 callback
+    uint8_t resp_value_11 = -1;
+
+    // TODO: assign response field VALUE_12 in command ECHO32 callback
+    uint8_t resp_value_12 = -1;
+
+    // TODO: assign response field VALUE_13 in command ECHO32 callback
+    uint8_t resp_value_13 = -1;
+
+    // TODO: assign response field VALUE_14 in command ECHO32 callback
+    uint8_t resp_value_14 = -1;
+
+    // TODO: assign response field VALUE_15 in command ECHO32 callback
+    uint8_t resp_value_15 = -1;
+
+    // TODO: assign response field VALUE_16 in command ECHO32 callback
+    uint8_t resp_value_16 = -1;
+
+    // TODO: assign response field VALUE_17 in command ECHO32 callback
+    uint8_t resp_value_17 = -1;
+
+    // TODO: assign response field VALUE_18 in command ECHO32 callback
+    uint8_t resp_value_18 = -1;
+
+    // TODO: assign response field VALUE_19 in command ECHO32 callback
+    uint8_t resp_value_19 = -1;
+
+    // TODO: assign response field VALUE_20 in command ECHO32 callback
+    uint8_t resp_value_20 = -1;
+
+    // TODO: assign response field VALUE_21 in command ECHO32 callback
+    uint8_t resp_value_21 = -1;
+
+    // TODO: assign response field VALUE_22 in command ECHO32 callback
+    uint8_t resp_value_22 = -1;
+
+    // TODO: assign response field VALUE_23 in command ECHO32 callback
+    uint8_t resp_value_23 = -1;
+
+    // TODO: assign response field VALUE_24 in command ECHO32 callback
+    uint8_t resp_value_24 = -1;
+
+    // TODO: assign response field VALUE_25 in command ECHO32 callback
+    uint8_t resp_value_25 = -1;
+
+    // TODO: assign response field VALUE_26 in command ECHO32 callback
+    uint8_t resp_value_26 = -1;
+
+    // TODO: assign response field VALUE_27 in command ECHO32 callback
+    uint8_t resp_value_27 = -1;
+
+    // TODO: assign response field VALUE_28 in command ECHO32 callback
+    uint8_t resp_value_28 = -1;
+
+    // TODO: assign response field VALUE_29 in command ECHO32 callback
+    uint8_t resp_value_29 = -1;
+
+    // TODO: assign response field VALUE_30 in command ECHO32 callback
+    uint8_t resp_value_30 = -1;
+
+    // TODO: assign response field VALUE_31 in command ECHO32 callback
+    uint8_t resp_value_31 = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_0);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_1);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_2);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_3);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_4);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_5);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_6);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_7);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_8);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_9);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_10);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_11);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_12);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_13);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_14);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_15);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_16);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_17);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_18);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_19);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_20);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_21);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_22);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_23);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_24);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_25);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_26);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_27);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_28);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_29);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_30);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_31);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_ECHO4.tpl.c b/host/python/codegen/output/templates/commands/command_ECHO4.tpl.c
new file mode 100644
index 0000000..66bbea5
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_ECHO4.tpl.c
@@ -0,0 +1,56 @@
+// Auto-generated template file: command_ECHO4.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_ECHO4(void) {
+    // Command: ECHO4
+    // Description: Echo (4 bytes)
+    // 
+    // Request code: CMDCODE_ECHO4_REQ
+    // Response code: CMDCODE_ECHO4_REQ
+    // Request payload (length in bytes is 4):
+    //     field #0   (1 byte) [type: uint8_t   ] : VALUE_0    (Echoed byte)
+    //     field #1   (1 byte) [type: uint8_t   ] : VALUE_1    (Echoed byte)
+    //     field #2   (1 byte) [type: uint8_t   ] : VALUE_2    (Echoed byte)
+    //     field #3   (1 byte) [type: uint8_t   ] : VALUE_3    (Echoed byte)
+    // Response payload (length in bytes is 4):
+    //     field #0   (1 byte) [type: uint8_t   ] : VALUE_0    (Echoed byte)
+    //     field #1   (1 byte) [type: uint8_t   ] : VALUE_1    (Echoed byte)
+    //     field #2   (1 byte) [type: uint8_t   ] : VALUE_2    (Echoed byte)
+    //     field #3   (1 byte) [type: uint8_t   ] : VALUE_3    (Echoed byte)
+
+    // Auto-generated section: request payload fields reading
+    uint8_t req_value_0 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_1 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_2 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    uint8_t req_value_3 = (uint8_t)communication_request_payload_retrieve_uint8_t();
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_ECHO4
+
+    // TODO: assign response field VALUE_0 in command ECHO4 callback
+    uint8_t resp_value_0 = -1;
+
+    // TODO: assign response field VALUE_1 in command ECHO4 callback
+    uint8_t resp_value_1 = -1;
+
+    // TODO: assign response field VALUE_2 in command ECHO4 callback
+    uint8_t resp_value_2 = -1;
+
+    // TODO: assign response field VALUE_3 in command ECHO4 callback
+    uint8_t resp_value_3 = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_0);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_1);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_2);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_3);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_LASTCOMMANDTIME.tpl.c b/host/python/codegen/output/templates/commands/command_LASTCOMMANDTIME.tpl.c
new file mode 100644
index 0000000..66e0251
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_LASTCOMMANDTIME.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_LASTCOMMANDTIME.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_LASTCOMMANDTIME(void) {
+    // Command: LASTCOMMANDTIME
+    // Description: Time since last command
+    // 
+    // Request code: CMDCODE_LASTCOMMANDTIME_REQ
+    // Response code: CMDCODE_LASTCOMMANDTIME_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 4):
+    //     field #0   (4 bytes) [type: uint32_t  ] : SECONDS    (Seconds since last command)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_LASTCOMMANDTIME
+
+    // TODO: assign response field SECONDS in command LASTCOMMANDTIME callback
+    uint32_t resp_seconds = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint32_t((uint32_t)resp_seconds);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_LASTERROR.tpl.c b/host/python/codegen/output/templates/commands/command_LASTERROR.tpl.c
new file mode 100644
index 0000000..40b55ad
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_LASTERROR.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_LASTERROR.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_LASTERROR(void) {
+    // Command: LASTERROR
+    // Description: Return the last occurred error, and reset it to NOERR value
+    // 
+    // Request code: CMDCODE_LASTERROR_REQ
+    // Response code: CMDCODE_LASTERROR_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: uint8_t   ] : ERRCODE    (Error code)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_LASTERROR
+
+    // TODO: assign response field ERRCODE in command LASTERROR callback
+    uint8_t resp_errcode = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_errcode);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_RESCUE_ENABLE.tpl.c b/host/python/codegen/output/templates/commands/command_RESCUE_ENABLE.tpl.c
new file mode 100644
index 0000000..67a185e
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_RESCUE_ENABLE.tpl.c
@@ -0,0 +1,38 @@
+// Auto-generated template file: command_RESCUE_ENABLE.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_RESCUE_ENABLE(void) {
+    // Command: RESCUE_ENABLE
+    // Description: Enable or disable auto-rescue (or read enable status)
+    // 
+    // Request code: CMDCODE_RESCUE_ENABLE_REQ
+    // Response code: CMDCODE_RESCUE_ENABLE_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_enablestate_nc_t] : ENABLESTATE_NC (Enable state)
+    // Response payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_enablestate_t] : ENABLESTATE (Enable state)
+
+    // Auto-generated section: request payload fields reading
+    enum_enablestate_nc_t req_enablestate_nc = (enum_enablestate_nc_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_enablestate_nc
+    if((uint8_t)req_enablestate_nc < (uint8_t)enum_enablestate_nc_t_min) return ERR_RANGE;
+    if((uint8_t)req_enablestate_nc > (uint8_t)enum_enablestate_nc_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_RESCUE_ENABLE
+
+    // TODO: assign response field ENABLESTATE in command RESCUE_ENABLE callback
+    enum_enablestate_t resp_enablestate = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_enablestate);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_RESCUE_STATUS_GET.tpl.c b/host/python/codegen/output/templates/commands/command_RESCUE_STATUS_GET.tpl.c
new file mode 100644
index 0000000..750c364
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_RESCUE_STATUS_GET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_RESCUE_STATUS_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_RESCUE_STATUS_GET(void) {
+    // Command: RESCUE_STATUS_GET
+    // Description: Get the auto-rescue current status (fired or not)
+    // 
+    // Request code: CMDCODE_RESCUE_STATUS_GET_REQ
+    // Response code: CMDCODE_RESCUE_STATUS_GET_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_firedstate_t] : FIREDSTATE (Fired state)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_RESCUE_STATUS_GET
+
+    // TODO: assign response field FIREDSTATE in command RESCUE_STATUS_GET callback
+    enum_firedstate_t resp_firedstate = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_firedstate);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_RESCUE_STATUS_RESET.tpl.c b/host/python/codegen/output/templates/commands/command_RESCUE_STATUS_RESET.tpl.c
new file mode 100644
index 0000000..d27fc2e
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_RESCUE_STATUS_RESET.tpl.c
@@ -0,0 +1,28 @@
+// Auto-generated template file: command_RESCUE_STATUS_RESET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_RESCUE_STATUS_RESET(void) {
+    // Command: RESCUE_STATUS_RESET
+    // Description: Reset the auto-rescue current status
+    // 
+    // Request code: CMDCODE_RESCUE_STATUS_RESET_REQ
+    // Response code: CMDCODE_RESCUE_STATUS_RESET_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_RESCUE_STATUS_RESET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_GET.tpl.c b/host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_GET.tpl.c
new file mode 100644
index 0000000..fcec35c
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_GET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_RESCUE_TIMEOUT_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_RESCUE_TIMEOUT_GET(void) {
+    // Command: RESCUE_TIMEOUT_GET
+    // Description: Get the auto-rescue timeout value
+    // 
+    // Request code: CMDCODE_RESCUE_TIMEOUT_GET_REQ
+    // Response code: CMDCODE_RESCUE_TIMEOUT_GET_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 2):
+    //     field #0   (2 bytes) [type: uint16_t  ] : RESCUE_TIMEOUT (Timeout value)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_RESCUE_TIMEOUT_GET
+
+    // TODO: assign response field RESCUE_TIMEOUT in command RESCUE_TIMEOUT_GET callback
+    uint16_t resp_rescue_timeout = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint16_t((uint16_t)resp_rescue_timeout);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_SET.tpl.c b/host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_SET.tpl.c
new file mode 100644
index 0000000..f64cd34
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_RESCUE_TIMEOUT_SET.tpl.c
@@ -0,0 +1,30 @@
+// Auto-generated template file: command_RESCUE_TIMEOUT_SET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_RESCUE_TIMEOUT_SET(void) {
+    // Command: RESCUE_TIMEOUT_SET
+    // Description: Set the auto-rescue timeout value
+    // 
+    // Request code: CMDCODE_RESCUE_TIMEOUT_SET_REQ
+    // Response code: CMDCODE_RESCUE_TIMEOUT_SET_REQ
+    // Request payload (length in bytes is 2):
+    //     field #0   (2 bytes) [type: uint16_t  ] : RESCUE_TIMEOUT (Timeout value)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    uint16_t req_rescue_timeout = (uint16_t)communication_request_payload_retrieve_uint16_t();
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_RESCUE_TIMEOUT_SET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGE_GETALL.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGE_GETALL.tpl.c
new file mode 100644
index 0000000..44169c1
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGE_GETALL.tpl.c
@@ -0,0 +1,83 @@
+// Auto-generated template file: command_SENSOR_AVERAGE_GETALL.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_AVERAGE_GETALL(void) {
+    // Command: SENSOR_AVERAGE_GETALL
+    // Description: Get all sensors' mean values
+    // 
+    // Request code: CMDCODE_SENSOR_AVERAGE_GETALL_REQ
+    // Response code: CMDCODE_SENSOR_AVERAGE_GETALL_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 22):
+    //     field #0   (2 bytes) [type: uint16_t  ] : MON_DUL_BOARDTEMP_MEAN (Variable MON_DUL_BOARDTEMP mean)
+    //     field #1   (2 bytes) [type: uint16_t  ] : MON_TEMP2_MEAN (Variable MON_TEMP2 mean)
+    //     field #2   (2 bytes) [type: uint16_t  ] : MON_TEMP1_MEAN (Variable MON_TEMP1 mean)
+    //     field #3   (2 bytes) [type: uint16_t  ] : MON_VEOC_RTN_I_MEAN (Variable MON_VEOC_RTN_I mean)
+    //     field #4   (2 bytes) [type: uint16_t  ] : MON_VEOC_FWR_I_MEAN (Variable MON_VEOC_FWR_I mean)
+    //     field #5   (2 bytes) [type: uint16_t  ] : MON_HYDRO_I_MEAN (Variable MON_HYDRO_I mean)
+    //     field #6   (2 bytes) [type: uint16_t  ] : MON_INPUT_V_MEAN (Variable MON_INPUT_V mean)
+    //     field #7   (2 bytes) [type: uint16_t  ] : MON_LBL_I_MEAN (Variable MON_LBL_I mean)
+    //     field #8   (2 bytes) [type: uint16_t  ] : MON_GLRA_I_MEAN (Variable MON_GLRA_I mean)
+    //     field #9   (2 bytes) [type: uint16_t  ] : MON_GLRB_I_MEAN (Variable MON_GLRB_I mean)
+    //     field #10  (2 bytes) [type: uint16_t  ] : MON_PWB_I_MEAN (Variable MON_PWB_I mean)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_AVERAGE_GETALL
+
+    // TODO: assign response field MON_DUL_BOARDTEMP_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_dul_boardtemp_mean = -1;
+
+    // TODO: assign response field MON_TEMP2_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_temp2_mean = -1;
+
+    // TODO: assign response field MON_TEMP1_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_temp1_mean = -1;
+
+    // TODO: assign response field MON_VEOC_RTN_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_veoc_rtn_i_mean = -1;
+
+    // TODO: assign response field MON_VEOC_FWR_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_veoc_fwr_i_mean = -1;
+
+    // TODO: assign response field MON_HYDRO_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_hydro_i_mean = -1;
+
+    // TODO: assign response field MON_INPUT_V_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_input_v_mean = -1;
+
+    // TODO: assign response field MON_LBL_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_lbl_i_mean = -1;
+
+    // TODO: assign response field MON_GLRA_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_glra_i_mean = -1;
+
+    // TODO: assign response field MON_GLRB_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_glrb_i_mean = -1;
+
+    // TODO: assign response field MON_PWB_I_MEAN in command SENSOR_AVERAGE_GETALL callback
+    uint16_t resp_mon_pwb_i_mean = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_dul_boardtemp_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp2_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp1_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_rtn_i_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_fwr_i_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_hydro_i_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_input_v_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_lbl_i_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glra_i_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glrb_i_mean);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_pwb_i_mean);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_GET.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_GET.tpl.c
new file mode 100644
index 0000000..89f955b
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_GET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_SENSOR_AVERAGING_PRESCALER_GET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_AVERAGING_PRESCALER_GET(void) {
+    // Command: SENSOR_AVERAGING_PRESCALER_GET
+    // Description: Get the value of the prescaler used to compute sensors' averages
+    // 
+    // Request code: CMDCODE_SENSOR_AVERAGING_PRESCALER_GET_REQ
+    // Response code: CMDCODE_SENSOR_AVERAGING_PRESCALER_GET_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_averagingprescaler_t] : AVERAGINGPRESCALER (Variable averaging prescaler)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_AVERAGING_PRESCALER_GET
+
+    // TODO: assign response field AVERAGINGPRESCALER in command SENSOR_AVERAGING_PRESCALER_GET callback
+    enum_averagingprescaler_t resp_averagingprescaler = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_averagingprescaler);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_SET.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_SET.tpl.c
new file mode 100644
index 0000000..b757f6b
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_AVERAGING_PRESCALER_SET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_SENSOR_AVERAGING_PRESCALER_SET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_AVERAGING_PRESCALER_SET(void) {
+    // Command: SENSOR_AVERAGING_PRESCALER_SET
+    // Description: Set the value of the prescaler used to compute sensors' averages
+    // 
+    // Request code: CMDCODE_SENSOR_AVERAGING_PRESCALER_SET_REQ
+    // Response code: CMDCODE_SENSOR_AVERAGING_PRESCALER_SET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_averagingprescaler_t] : AVERAGINGPRESCALER (Variable averaging prescaler)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_averagingprescaler_t req_averagingprescaler = (enum_averagingprescaler_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_averagingprescaler
+    if((uint8_t)req_averagingprescaler < (uint8_t)enum_averagingprescaler_t_min) return ERR_RANGE;
+    if((uint8_t)req_averagingprescaler > (uint8_t)enum_averagingprescaler_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_AVERAGING_PRESCALER_SET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_GET_SINGLE.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_GET_SINGLE.tpl.c
new file mode 100644
index 0000000..a69f20b
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_GET_SINGLE.tpl.c
@@ -0,0 +1,58 @@
+// Auto-generated template file: command_SENSOR_GET_SINGLE.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_GET_SINGLE(void) {
+    // Command: SENSOR_GET_SINGLE
+    // Description: Get one sensor's current value, offset value, max value, and mean value
+    // 
+    // Request code: CMDCODE_SENSOR_GET_SINGLE_REQ
+    // Response code: CMDCODE_SENSOR_GET_SINGLE_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_variable_number_t] : VARIABLE_NUMBER (Variable number)
+    // Response payload (length in bytes is 9):
+    //     field #0   (1 byte) [type: enum_variable_number_t] : VARIABLE_NUMBER (Variable number)
+    //     field #1   (2 bytes) [type: uint16_t  ] : VALUE      (Last acquired sensor value (0/1 for digital sensors))
+    //     field #2   (2 bytes) [type: uint16_t  ] : OFFSET     (Sensor offset value (acquired at start-up, reports zero for digital sensors))
+    //     field #3   (2 bytes) [type: uint16_t  ] : MAXVALUE   (Sensor maximum value since last reset (0/1 for digital sensors))
+    //     field #4   (2 bytes) [type: uint16_t  ] : MEANVALUE  (Sensor mean value (0 for digital sensors))
+
+    // Auto-generated section: request payload fields reading
+    enum_variable_number_t req_variable_number = (enum_variable_number_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_variable_number
+    if((uint8_t)req_variable_number < (uint8_t)enum_variable_number_t_min) return ERR_RANGE;
+    if((uint8_t)req_variable_number > (uint8_t)enum_variable_number_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_GET_SINGLE
+
+    // TODO: assign response field VARIABLE_NUMBER in command SENSOR_GET_SINGLE callback
+    enum_variable_number_t resp_variable_number = -1;
+
+    // TODO: assign response field VALUE in command SENSOR_GET_SINGLE callback
+    uint16_t resp_value = -1;
+
+    // TODO: assign response field OFFSET in command SENSOR_GET_SINGLE callback
+    uint16_t resp_offset = -1;
+
+    // TODO: assign response field MAXVALUE in command SENSOR_GET_SINGLE callback
+    uint16_t resp_maxvalue = -1;
+
+    // TODO: assign response field MEANVALUE in command SENSOR_GET_SINGLE callback
+    uint16_t resp_meanvalue = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_variable_number);
+    communication_response_payload_append_uint16_t((uint16_t)resp_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_meanvalue);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUES_GETALL.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUES_GETALL.tpl.c
new file mode 100644
index 0000000..01394da
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUES_GETALL.tpl.c
@@ -0,0 +1,143 @@
+// Auto-generated template file: command_SENSOR_MAXVALUES_GETALL.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_MAXVALUES_GETALL(void) {
+    // Command: SENSOR_MAXVALUES_GETALL
+    // Description: Get all sensors' max values
+    // 
+    // Request code: CMDCODE_SENSOR_MAXVALUES_GETALL_REQ
+    // Response code: CMDCODE_SENSOR_MAXVALUES_GETALL_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 34):
+    //     field #0   (2 bytes) [type: uint16_t  ] : MON_DUL_BOARDTEMP_MAXVALUE (Variable MON_DUL_BOARDTEMP max value)
+    //     field #1   (2 bytes) [type: uint16_t  ] : MON_TEMP2_MAXVALUE (Variable MON_TEMP2 max value)
+    //     field #2   (2 bytes) [type: uint16_t  ] : MON_TEMP1_MAXVALUE (Variable MON_TEMP1 max value)
+    //     field #3   (2 bytes) [type: uint16_t  ] : MON_VEOC_RTN_I_MAXVALUE (Variable MON_VEOC_RTN_I max value)
+    //     field #4   (2 bytes) [type: uint16_t  ] : MON_VEOC_FWR_I_MAXVALUE (Variable MON_VEOC_FWR_I max value)
+    //     field #5   (2 bytes) [type: uint16_t  ] : MON_HYDRO_I_MAXVALUE (Variable MON_HYDRO_I max value)
+    //     field #6   (2 bytes) [type: uint16_t  ] : MON_INPUT_V_MAXVALUE (Variable MON_INPUT_V max value)
+    //     field #7   (2 bytes) [type: uint16_t  ] : MON_LBL_I_MAXVALUE (Variable MON_LBL_I max value)
+    //     field #8   (2 bytes) [type: uint16_t  ] : MON_GLRA_I_MAXVALUE (Variable MON_GLRA_I max value)
+    //     field #9   (2 bytes) [type: uint16_t  ] : MON_GLRB_I_MAXVALUE (Variable MON_GLRB_I max value)
+    //     field #10  (2 bytes) [type: uint16_t  ] : MON_PWB_I_MAXVALUE (Variable MON_PWB_I max value)
+    //     field #11  (1 byte) [type: enum_flag_dul_alarmpos1_state_t] : FLAG_DUL_ALARMPOS1_STATE (FLAG_DUL_ALARMPOS1 status)
+    //     field #12  (1 byte) [type: enum_flag_dul_alarmpos2_state_t] : FLAG_DUL_ALARMPOS2_STATE (FLAG_DUL_ALARMPOS2 status)
+    //     field #13  (1 byte) [type: enum_flag_dul_alarmneg1_state_t] : FLAG_DUL_ALARMNEG1_STATE (FLAG_DUL_ALARMNEG1 status)
+    //     field #14  (1 byte) [type: enum_flag_dul_alarmneg2_state_t] : FLAG_DUL_ALARMNEG2_STATE (FLAG_DUL_ALARMNEG2 status)
+    //     field #15  (1 byte) [type: enum_flag_hydro_pwr_fault_state_t] : FLAG_HYDRO_PWR_FAULT_STATE (FLAG_HYDRO_PWR_FAULT status)
+    //     field #16  (1 byte) [type: enum_flag_lbl_pwr_fault_state_t] : FLAG_LBL_PWR_FAULT_STATE (FLAG_LBL_PWR_FAULT status)
+    //     field #17  (1 byte) [type: enum_flag_glra_fault_state_t] : FLAG_GLRA_FAULT_STATE (FLAG_GLRA_FAULT status)
+    //     field #18  (1 byte) [type: enum_flag_glrb_fault_state_t] : FLAG_GLRB_FAULT_STATE (FLAG_GLRB_FAULT status)
+    //     field #19  (1 byte) [type: enum_flag_powerboard_fault_state_t] : FLAG_POWERBOARD_FAULT_STATE (FLAG_POWERBOARD_FAULT status)
+    //     field #20  (1 byte) [type: enum_flag_glra_good_state_t] : FLAG_GLRA_GOOD_STATE (FLAG_GLRA_GOOD status)
+    //     field #21  (1 byte) [type: enum_flag_glrb_good_state_t] : FLAG_GLRB_GOOD_STATE (FLAG_GLRB_GOOD status)
+    //     field #22  (1 byte) [type: enum_flag_powerboard_good_state_t] : FLAG_POWERBOARD_GOOD_STATE (FLAG_POWERBOARD_GOOD status)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_MAXVALUES_GETALL
+
+    // TODO: assign response field MON_DUL_BOARDTEMP_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_dul_boardtemp_maxvalue = -1;
+
+    // TODO: assign response field MON_TEMP2_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_temp2_maxvalue = -1;
+
+    // TODO: assign response field MON_TEMP1_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_temp1_maxvalue = -1;
+
+    // TODO: assign response field MON_VEOC_RTN_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_veoc_rtn_i_maxvalue = -1;
+
+    // TODO: assign response field MON_VEOC_FWR_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_veoc_fwr_i_maxvalue = -1;
+
+    // TODO: assign response field MON_HYDRO_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_hydro_i_maxvalue = -1;
+
+    // TODO: assign response field MON_INPUT_V_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_input_v_maxvalue = -1;
+
+    // TODO: assign response field MON_LBL_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_lbl_i_maxvalue = -1;
+
+    // TODO: assign response field MON_GLRA_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_glra_i_maxvalue = -1;
+
+    // TODO: assign response field MON_GLRB_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_glrb_i_maxvalue = -1;
+
+    // TODO: assign response field MON_PWB_I_MAXVALUE in command SENSOR_MAXVALUES_GETALL callback
+    uint16_t resp_mon_pwb_i_maxvalue = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMPOS1_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_dul_alarmpos1_state_t resp_flag_dul_alarmpos1_state = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMPOS2_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_dul_alarmpos2_state_t resp_flag_dul_alarmpos2_state = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMNEG1_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_dul_alarmneg1_state_t resp_flag_dul_alarmneg1_state = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMNEG2_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_dul_alarmneg2_state_t resp_flag_dul_alarmneg2_state = -1;
+
+    // TODO: assign response field FLAG_HYDRO_PWR_FAULT_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_hydro_pwr_fault_state_t resp_flag_hydro_pwr_fault_state = -1;
+
+    // TODO: assign response field FLAG_LBL_PWR_FAULT_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_lbl_pwr_fault_state_t resp_flag_lbl_pwr_fault_state = -1;
+
+    // TODO: assign response field FLAG_GLRA_FAULT_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_glra_fault_state_t resp_flag_glra_fault_state = -1;
+
+    // TODO: assign response field FLAG_GLRB_FAULT_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_glrb_fault_state_t resp_flag_glrb_fault_state = -1;
+
+    // TODO: assign response field FLAG_POWERBOARD_FAULT_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_powerboard_fault_state_t resp_flag_powerboard_fault_state = -1;
+
+    // TODO: assign response field FLAG_GLRA_GOOD_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_glra_good_state_t resp_flag_glra_good_state = -1;
+
+    // TODO: assign response field FLAG_GLRB_GOOD_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_glrb_good_state_t resp_flag_glrb_good_state = -1;
+
+    // TODO: assign response field FLAG_POWERBOARD_GOOD_STATE in command SENSOR_MAXVALUES_GETALL callback
+    enum_flag_powerboard_good_state_t resp_flag_powerboard_good_state = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_dul_boardtemp_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp2_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp1_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_rtn_i_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_fwr_i_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_hydro_i_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_input_v_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_lbl_i_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glra_i_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glrb_i_maxvalue);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_pwb_i_maxvalue);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmpos1_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmpos2_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmneg1_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmneg2_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_hydro_pwr_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_lbl_pwr_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glra_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glrb_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_powerboard_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glra_good_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glrb_good_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_powerboard_good_state);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUE_RESET.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUE_RESET.tpl.c
new file mode 100644
index 0000000..029ea3b
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_MAXVALUE_RESET.tpl.c
@@ -0,0 +1,33 @@
+// Auto-generated template file: command_SENSOR_MAXVALUE_RESET.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_MAXVALUE_RESET(void) {
+    // Command: SENSOR_MAXVALUE_RESET
+    // Description: Reset the max value of one sensor (or all sensors)
+    // 
+    // Request code: CMDCODE_SENSOR_MAXVALUE_RESET_REQ
+    // Response code: CMDCODE_SENSOR_MAXVALUE_RESET_REQ
+    // Request payload (length in bytes is 1):
+    //     field #0   (1 byte) [type: enum_variable_number_all_t] : VARIABLE_NUMBER_ALL (Variable number)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_variable_number_all_t req_variable_number_all = (enum_variable_number_all_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_variable_number_all
+    if((uint8_t)req_variable_number_all < (uint8_t)enum_variable_number_all_t_min) return ERR_RANGE;
+    if((uint8_t)req_variable_number_all > (uint8_t)enum_variable_number_all_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_MAXVALUE_RESET
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_OFFSETS_GETALL.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_OFFSETS_GETALL.tpl.c
new file mode 100644
index 0000000..afcc1f0
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_OFFSETS_GETALL.tpl.c
@@ -0,0 +1,83 @@
+// Auto-generated template file: command_SENSOR_OFFSETS_GETALL.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_OFFSETS_GETALL(void) {
+    // Command: SENSOR_OFFSETS_GETALL
+    // Description: Get all sensors' offsets
+    // 
+    // Request code: CMDCODE_SENSOR_OFFSETS_GETALL_REQ
+    // Response code: CMDCODE_SENSOR_OFFSETS_GETALL_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 22):
+    //     field #0   (2 bytes) [type: uint16_t  ] : MON_DUL_BOARDTEMP_OFFSET (Variable MON_DUL_BOARDTEMP offset)
+    //     field #1   (2 bytes) [type: uint16_t  ] : MON_TEMP2_OFFSET (Variable MON_TEMP2 offset)
+    //     field #2   (2 bytes) [type: uint16_t  ] : MON_TEMP1_OFFSET (Variable MON_TEMP1 offset)
+    //     field #3   (2 bytes) [type: uint16_t  ] : MON_VEOC_RTN_I_OFFSET (Variable MON_VEOC_RTN_I offset)
+    //     field #4   (2 bytes) [type: uint16_t  ] : MON_VEOC_FWR_I_OFFSET (Variable MON_VEOC_FWR_I offset)
+    //     field #5   (2 bytes) [type: uint16_t  ] : MON_HYDRO_I_OFFSET (Variable MON_HYDRO_I offset)
+    //     field #6   (2 bytes) [type: uint16_t  ] : MON_INPUT_V_OFFSET (Variable MON_INPUT_V offset)
+    //     field #7   (2 bytes) [type: uint16_t  ] : MON_LBL_I_OFFSET (Variable MON_LBL_I offset)
+    //     field #8   (2 bytes) [type: uint16_t  ] : MON_GLRA_I_OFFSET (Variable MON_GLRA_I offset)
+    //     field #9   (2 bytes) [type: uint16_t  ] : MON_GLRB_I_OFFSET (Variable MON_GLRB_I offset)
+    //     field #10  (2 bytes) [type: uint16_t  ] : MON_PWB_I_OFFSET (Variable MON_PWB_I offset)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_OFFSETS_GETALL
+
+    // TODO: assign response field MON_DUL_BOARDTEMP_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_dul_boardtemp_offset = -1;
+
+    // TODO: assign response field MON_TEMP2_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_temp2_offset = -1;
+
+    // TODO: assign response field MON_TEMP1_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_temp1_offset = -1;
+
+    // TODO: assign response field MON_VEOC_RTN_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_veoc_rtn_i_offset = -1;
+
+    // TODO: assign response field MON_VEOC_FWR_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_veoc_fwr_i_offset = -1;
+
+    // TODO: assign response field MON_HYDRO_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_hydro_i_offset = -1;
+
+    // TODO: assign response field MON_INPUT_V_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_input_v_offset = -1;
+
+    // TODO: assign response field MON_LBL_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_lbl_i_offset = -1;
+
+    // TODO: assign response field MON_GLRA_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_glra_i_offset = -1;
+
+    // TODO: assign response field MON_GLRB_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_glrb_i_offset = -1;
+
+    // TODO: assign response field MON_PWB_I_OFFSET in command SENSOR_OFFSETS_GETALL callback
+    uint16_t resp_mon_pwb_i_offset = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_dul_boardtemp_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp2_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp1_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_rtn_i_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_fwr_i_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_hydro_i_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_input_v_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_lbl_i_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glra_i_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glrb_i_offset);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_pwb_i_offset);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SENSOR_VALUES_GETALL.tpl.c b/host/python/codegen/output/templates/commands/command_SENSOR_VALUES_GETALL.tpl.c
new file mode 100644
index 0000000..a8c23fa
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SENSOR_VALUES_GETALL.tpl.c
@@ -0,0 +1,143 @@
+// Auto-generated template file: command_SENSOR_VALUES_GETALL.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SENSOR_VALUES_GETALL(void) {
+    // Command: SENSOR_VALUES_GETALL
+    // Description: Get all sensors' values
+    // 
+    // Request code: CMDCODE_SENSOR_VALUES_GETALL_REQ
+    // Response code: CMDCODE_SENSOR_VALUES_GETALL_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 34):
+    //     field #0   (2 bytes) [type: uint16_t  ] : MON_DUL_BOARDTEMP_VALUE (Variable MON_DUL_BOARDTEMP last acquired value)
+    //     field #1   (2 bytes) [type: uint16_t  ] : MON_TEMP2_VALUE (Variable MON_TEMP2 last acquired value)
+    //     field #2   (2 bytes) [type: uint16_t  ] : MON_TEMP1_VALUE (Variable MON_TEMP1 last acquired value)
+    //     field #3   (2 bytes) [type: uint16_t  ] : MON_VEOC_RTN_I_VALUE (Variable MON_VEOC_RTN_I last acquired value)
+    //     field #4   (2 bytes) [type: uint16_t  ] : MON_VEOC_FWR_I_VALUE (Variable MON_VEOC_FWR_I last acquired value)
+    //     field #5   (2 bytes) [type: uint16_t  ] : MON_HYDRO_I_VALUE (Variable MON_HYDRO_I last acquired value)
+    //     field #6   (2 bytes) [type: uint16_t  ] : MON_INPUT_V_VALUE (Variable MON_INPUT_V last acquired value)
+    //     field #7   (2 bytes) [type: uint16_t  ] : MON_LBL_I_VALUE (Variable MON_LBL_I last acquired value)
+    //     field #8   (2 bytes) [type: uint16_t  ] : MON_GLRA_I_VALUE (Variable MON_GLRA_I last acquired value)
+    //     field #9   (2 bytes) [type: uint16_t  ] : MON_GLRB_I_VALUE (Variable MON_GLRB_I last acquired value)
+    //     field #10  (2 bytes) [type: uint16_t  ] : MON_PWB_I_VALUE (Variable MON_PWB_I last acquired value)
+    //     field #11  (1 byte) [type: enum_flag_dul_alarmpos1_state_t] : FLAG_DUL_ALARMPOS1_STATE (FLAG_DUL_ALARMPOS1 status)
+    //     field #12  (1 byte) [type: enum_flag_dul_alarmpos2_state_t] : FLAG_DUL_ALARMPOS2_STATE (FLAG_DUL_ALARMPOS2 status)
+    //     field #13  (1 byte) [type: enum_flag_dul_alarmneg1_state_t] : FLAG_DUL_ALARMNEG1_STATE (FLAG_DUL_ALARMNEG1 status)
+    //     field #14  (1 byte) [type: enum_flag_dul_alarmneg2_state_t] : FLAG_DUL_ALARMNEG2_STATE (FLAG_DUL_ALARMNEG2 status)
+    //     field #15  (1 byte) [type: enum_flag_hydro_pwr_fault_state_t] : FLAG_HYDRO_PWR_FAULT_STATE (FLAG_HYDRO_PWR_FAULT status)
+    //     field #16  (1 byte) [type: enum_flag_lbl_pwr_fault_state_t] : FLAG_LBL_PWR_FAULT_STATE (FLAG_LBL_PWR_FAULT status)
+    //     field #17  (1 byte) [type: enum_flag_glra_fault_state_t] : FLAG_GLRA_FAULT_STATE (FLAG_GLRA_FAULT status)
+    //     field #18  (1 byte) [type: enum_flag_glrb_fault_state_t] : FLAG_GLRB_FAULT_STATE (FLAG_GLRB_FAULT status)
+    //     field #19  (1 byte) [type: enum_flag_powerboard_fault_state_t] : FLAG_POWERBOARD_FAULT_STATE (FLAG_POWERBOARD_FAULT status)
+    //     field #20  (1 byte) [type: enum_flag_glra_good_state_t] : FLAG_GLRA_GOOD_STATE (FLAG_GLRA_GOOD status)
+    //     field #21  (1 byte) [type: enum_flag_glrb_good_state_t] : FLAG_GLRB_GOOD_STATE (FLAG_GLRB_GOOD status)
+    //     field #22  (1 byte) [type: enum_flag_powerboard_good_state_t] : FLAG_POWERBOARD_GOOD_STATE (FLAG_POWERBOARD_GOOD status)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SENSOR_VALUES_GETALL
+
+    // TODO: assign response field MON_DUL_BOARDTEMP_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_dul_boardtemp_value = -1;
+
+    // TODO: assign response field MON_TEMP2_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_temp2_value = -1;
+
+    // TODO: assign response field MON_TEMP1_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_temp1_value = -1;
+
+    // TODO: assign response field MON_VEOC_RTN_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_veoc_rtn_i_value = -1;
+
+    // TODO: assign response field MON_VEOC_FWR_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_veoc_fwr_i_value = -1;
+
+    // TODO: assign response field MON_HYDRO_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_hydro_i_value = -1;
+
+    // TODO: assign response field MON_INPUT_V_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_input_v_value = -1;
+
+    // TODO: assign response field MON_LBL_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_lbl_i_value = -1;
+
+    // TODO: assign response field MON_GLRA_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_glra_i_value = -1;
+
+    // TODO: assign response field MON_GLRB_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_glrb_i_value = -1;
+
+    // TODO: assign response field MON_PWB_I_VALUE in command SENSOR_VALUES_GETALL callback
+    uint16_t resp_mon_pwb_i_value = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMPOS1_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_dul_alarmpos1_state_t resp_flag_dul_alarmpos1_state = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMPOS2_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_dul_alarmpos2_state_t resp_flag_dul_alarmpos2_state = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMNEG1_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_dul_alarmneg1_state_t resp_flag_dul_alarmneg1_state = -1;
+
+    // TODO: assign response field FLAG_DUL_ALARMNEG2_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_dul_alarmneg2_state_t resp_flag_dul_alarmneg2_state = -1;
+
+    // TODO: assign response field FLAG_HYDRO_PWR_FAULT_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_hydro_pwr_fault_state_t resp_flag_hydro_pwr_fault_state = -1;
+
+    // TODO: assign response field FLAG_LBL_PWR_FAULT_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_lbl_pwr_fault_state_t resp_flag_lbl_pwr_fault_state = -1;
+
+    // TODO: assign response field FLAG_GLRA_FAULT_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_glra_fault_state_t resp_flag_glra_fault_state = -1;
+
+    // TODO: assign response field FLAG_GLRB_FAULT_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_glrb_fault_state_t resp_flag_glrb_fault_state = -1;
+
+    // TODO: assign response field FLAG_POWERBOARD_FAULT_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_powerboard_fault_state_t resp_flag_powerboard_fault_state = -1;
+
+    // TODO: assign response field FLAG_GLRA_GOOD_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_glra_good_state_t resp_flag_glra_good_state = -1;
+
+    // TODO: assign response field FLAG_GLRB_GOOD_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_glrb_good_state_t resp_flag_glrb_good_state = -1;
+
+    // TODO: assign response field FLAG_POWERBOARD_GOOD_STATE in command SENSOR_VALUES_GETALL callback
+    enum_flag_powerboard_good_state_t resp_flag_powerboard_good_state = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_dul_boardtemp_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp2_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_temp1_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_rtn_i_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_veoc_fwr_i_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_hydro_i_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_input_v_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_lbl_i_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glra_i_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_glrb_i_value);
+    communication_response_payload_append_uint16_t((uint16_t)resp_mon_pwb_i_value);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmpos1_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmpos2_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmneg1_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_dul_alarmneg2_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_hydro_pwr_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_lbl_pwr_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glra_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glrb_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_powerboard_fault_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glra_good_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_glrb_good_state);
+    communication_response_payload_append_uint8_t((uint8_t)resp_flag_powerboard_good_state);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_SWITCH_CONTROL.tpl.c b/host/python/codegen/output/templates/commands/command_SWITCH_CONTROL.tpl.c
new file mode 100644
index 0000000..0829097
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_SWITCH_CONTROL.tpl.c
@@ -0,0 +1,48 @@
+// Auto-generated template file: command_SWITCH_CONTROL.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_SWITCH_CONTROL(void) {
+    // Command: SWITCH_CONTROL
+    // Description: Control one of the switches or enable lines of the board. Can be used to get the current switch status without changing it (see request payload field status)
+    // 
+    // Request code: CMDCODE_SWITCH_CONTROL_REQ
+    // Response code: CMDCODE_SWITCH_CONTROL_REQ
+    // Request payload (length in bytes is 2):
+    //     field #0   (1 byte) [type: enum_switchnum_t] : SWITCHNUM  (Switch number)
+    //     field #1   (1 byte) [type: enum_switchstate_nc_t] : SWITCHSTATE_NC (Switch state)
+    // Response payload (length in bytes is 2):
+    //     field #0   (1 byte) [type: enum_switchnum_t] : SWITCHNUM  (Switch number)
+    //     field #1   (1 byte) [type: enum_switchstate_t] : SWITCHSTATE (Switch state)
+
+    // Auto-generated section: request payload fields reading
+    enum_switchnum_t req_switchnum = (enum_switchnum_t)communication_request_payload_retrieve_uint8_t();
+    enum_switchstate_nc_t req_switchstate_nc = (enum_switchstate_nc_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_switchnum
+    if((uint8_t)req_switchnum < (uint8_t)enum_switchnum_t_min) return ERR_RANGE;
+    if((uint8_t)req_switchnum > (uint8_t)enum_switchnum_t_max) return ERR_RANGE;
+    // checking range for enum field req_switchstate_nc
+    if((uint8_t)req_switchstate_nc < (uint8_t)enum_switchstate_nc_t_min) return ERR_RANGE;
+    if((uint8_t)req_switchstate_nc > (uint8_t)enum_switchstate_nc_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_SWITCH_CONTROL
+
+    // TODO: assign response field SWITCHNUM in command SWITCH_CONTROL callback
+    enum_switchnum_t resp_switchnum = -1;
+
+    // TODO: assign response field SWITCHSTATE in command SWITCH_CONTROL callback
+    enum_switchstate_t resp_switchstate = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint8_t((uint8_t)resp_switchnum);
+    communication_response_payload_append_uint8_t((uint8_t)resp_switchstate);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_USER_PIN_CONTROL.tpl.c b/host/python/codegen/output/templates/commands/command_USER_PIN_CONTROL.tpl.c
new file mode 100644
index 0000000..1f56e45
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_USER_PIN_CONTROL.tpl.c
@@ -0,0 +1,38 @@
+// Auto-generated template file: command_USER_PIN_CONTROL.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_USER_PIN_CONTROL(void) {
+    // Command: USER_PIN_CONTROL
+    // Description: Control one user pin
+    // 
+    // Request code: CMDCODE_USER_PIN_CONTROL_REQ
+    // Response code: CMDCODE_USER_PIN_CONTROL_REQ
+    // Request payload (length in bytes is 2):
+    //     field #0   (1 byte) [type: enum_pinnum_t] : PINNUM     (User pin number)
+    //     field #1   (1 byte) [type: enum_pinstate_t] : PINSTATE   (Status)
+    // Response payload (length in bytes is 0):
+
+    // Auto-generated section: request payload fields reading
+    enum_pinnum_t req_pinnum = (enum_pinnum_t)communication_request_payload_retrieve_uint8_t();
+    enum_pinstate_t req_pinstate = (enum_pinstate_t)communication_request_payload_retrieve_uint8_t();
+    // checking range for enum field req_pinnum
+    if((uint8_t)req_pinnum < (uint8_t)enum_pinnum_t_min) return ERR_RANGE;
+    if((uint8_t)req_pinnum > (uint8_t)enum_pinnum_t_max) return ERR_RANGE;
+    // checking range for enum field req_pinstate
+    if((uint8_t)req_pinstate < (uint8_t)enum_pinstate_t_min) return ERR_RANGE;
+    if((uint8_t)req_pinstate > (uint8_t)enum_pinstate_t_max) return ERR_RANGE;
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_USER_PIN_CONTROL
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_VALCHECK.tpl.c b/host/python/codegen/output/templates/commands/command_VALCHECK.tpl.c
new file mode 100644
index 0000000..774fb50
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_VALCHECK.tpl.c
@@ -0,0 +1,58 @@
+// Auto-generated template file: command_VALCHECK.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_VALCHECK(void) {
+    // Command: VALCHECK
+    // Description: Return a some data to check endianness
+    // 
+    // Request code: CMDCODE_VALCHECK_REQ
+    // Response code: CMDCODE_VALCHECK_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 14):
+    //     field #0   (4 bytes) [type: uint32_t  ] : VALUE_0    (Read as 128)
+    //     field #1   (4 bytes) [type: uint32_t  ] : VALUE_1    (Read as 2**31 = 2147483648)
+    //     field #2   (2 bytes) [type: uint16_t  ] : VALUE_2    (Read as 128)
+    //     field #3   (2 bytes) [type: uint16_t  ] : VALUE_3    (Read as 2**15 = 32768)
+    //     field #4   (1 byte) [type: uint8_t   ] : VALUE_4    (Read as 4)
+    //     field #5   (1 byte) [type: uint8_t   ] : VALUE_5    (Read as 64)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_VALCHECK
+
+    // TODO: assign response field VALUE_0 in command VALCHECK callback
+    uint32_t resp_value_0 = -1;
+
+    // TODO: assign response field VALUE_1 in command VALCHECK callback
+    uint32_t resp_value_1 = -1;
+
+    // TODO: assign response field VALUE_2 in command VALCHECK callback
+    uint16_t resp_value_2 = -1;
+
+    // TODO: assign response field VALUE_3 in command VALCHECK callback
+    uint16_t resp_value_3 = -1;
+
+    // TODO: assign response field VALUE_4 in command VALCHECK callback
+    uint8_t resp_value_4 = -1;
+
+    // TODO: assign response field VALUE_5 in command VALCHECK callback
+    uint8_t resp_value_5 = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint32_t((uint32_t)resp_value_0);
+    communication_response_payload_append_uint32_t((uint32_t)resp_value_1);
+    communication_response_payload_append_uint16_t((uint16_t)resp_value_2);
+    communication_response_payload_append_uint16_t((uint16_t)resp_value_3);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_4);
+    communication_response_payload_append_uint8_t((uint8_t)resp_value_5);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/output/templates/commands/command_VERSION.tpl.c b/host/python/codegen/output/templates/commands/command_VERSION.tpl.c
new file mode 100644
index 0000000..d480555
--- /dev/null
+++ b/host/python/codegen/output/templates/commands/command_VERSION.tpl.c
@@ -0,0 +1,68 @@
+// Auto-generated template file: command_VERSION.tpl.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+
+#include "../typedefs.h"  
+#include "../communication.h"  
+#include "../hardware.h"
+
+err_t command_VERSION(void) {
+    // Command: VERSION
+    // Description: Report embedded code versioning information
+    // 
+    // Request code: CMDCODE_VERSION_REQ
+    // Response code: CMDCODE_VERSION_REQ
+    // Request payload (length in bytes is 0):
+    // Response payload (length in bytes is 13):
+    //     field #0   (4 bytes) [type: uint32_t  ] : FIRMWARE_TARGET (Target of the firmware)
+    //     field #1   (2 bytes) [type: uint16_t  ] : COMMAND_TABLE_VERSION (Version of the current command table)
+    //     field #2   (2 bytes) [type: uint16_t  ] : TEMPLATE_GENERATION_YEAR (Template generation year)
+    //     field #3   (1 byte) [type: uint8_t   ] : TEMPLATE_GENERATION_MONTH (Template generation month)
+    //     field #4   (1 byte) [type: uint8_t   ] : TEMPLATE_GENERATION_DAY (Template generation day)
+    //     field #5   (1 byte) [type: uint8_t   ] : TEMPLATE_GENERATION_HOUR (Template generation hour)
+    //     field #6   (1 byte) [type: uint8_t   ] : TEMPLATE_GENERATION_MINUTE (Template generation minute)
+    //     field #7   (1 byte) [type: uint8_t   ] : TEMPLATE_GENERATION_SECOND (Template generation second)
+
+    // Auto-generated section: request payload fields reading
+    // End of auto-generated section
+
+    // USER CODE HERE
+    // TODO implement command callback function command_VERSION
+
+    // TODO: assign response field FIRMWARE_TARGET in command VERSION callback
+    uint32_t resp_firmware_target = -1;
+
+    // TODO: assign response field COMMAND_TABLE_VERSION in command VERSION callback
+    uint16_t resp_command_table_version = -1;
+
+    // TODO: assign response field TEMPLATE_GENERATION_YEAR in command VERSION callback
+    uint16_t resp_template_generation_year = -1;
+
+    // TODO: assign response field TEMPLATE_GENERATION_MONTH in command VERSION callback
+    uint8_t resp_template_generation_month = -1;
+
+    // TODO: assign response field TEMPLATE_GENERATION_DAY in command VERSION callback
+    uint8_t resp_template_generation_day = -1;
+
+    // TODO: assign response field TEMPLATE_GENERATION_HOUR in command VERSION callback
+    uint8_t resp_template_generation_hour = -1;
+
+    // TODO: assign response field TEMPLATE_GENERATION_MINUTE in command VERSION callback
+    uint8_t resp_template_generation_minute = -1;
+
+    // TODO: assign response field TEMPLATE_GENERATION_SECOND in command VERSION callback
+    uint8_t resp_template_generation_second = -1;
+
+    // Auto-generated section: response payload fields writing
+    communication_response_payload_appender_reset();
+    communication_response_payload_append_uint32_t((uint32_t)resp_firmware_target);
+    communication_response_payload_append_uint16_t((uint16_t)resp_command_table_version);
+    communication_response_payload_append_uint16_t((uint16_t)resp_template_generation_year);
+    communication_response_payload_append_uint8_t((uint8_t)resp_template_generation_month);
+    communication_response_payload_append_uint8_t((uint8_t)resp_template_generation_day);
+    communication_response_payload_append_uint8_t((uint8_t)resp_template_generation_hour);
+    communication_response_payload_append_uint8_t((uint8_t)resp_template_generation_minute);
+    communication_response_payload_append_uint8_t((uint8_t)resp_template_generation_second);
+    return NOERR;
+    // End of auto-generated section
+}
diff --git a/host/python/codegen/versioning.pkl b/host/python/codegen/versioning.pkl
new file mode 100644
index 0000000..1cc9408
--- /dev/null
+++ b/host/python/codegen/versioning.pkl
@@ -0,0 +1,2 @@
+I2
+.
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/BPD_MCC_config.mc3 b/micro/BPD-V01-FIRMWARE.X/BPD_MCC_config.mc3
new file mode 100644
index 0000000..167ef70
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/BPD_MCC_config.mc3
@@ -0,0 +1,5148 @@
+<config configVersion="1.1" device="PIC18F46K22" coreVersion="5.0.2">
+   <usedClasses class="java.util.HashMap">
+      <entry>
+         <string>TMR0</string>
+         <string>class com.microchip.mcc.mcu8.modules.tmr0_v1.TMR0</string>
+      </entry>
+      <entry>
+         <string>System Module</string>
+         <string>class com.microchip.mcc.mcu8.systemManager.SystemManager</string>
+      </entry>
+      <entry>
+         <string>ADC</string>
+         <string>class com.microchip.mcc.mcu8.modules.adc.ADC</string>
+      </entry>
+      <entry>
+         <string>FVR</string>
+         <string>class com.microchip.mcc.mcu8.modules.fvr.FVR</string>
+      </entry>
+      <entry>
+         <string>INTERNAL OSCILLATOR</string>
+         <string>class com.microchip.mcc.mcu8.systemManager.osc.Osc</string>
+      </entry>
+      <entry>
+         <string>WDT</string>
+         <string>class com.microchip.mcc.mcu8.systemManager.wdt.WDT</string>
+      </entry>
+      <entry>
+         <string>Pin Module</string>
+         <string>class com.microchip.mcc.mcu8.pinManager.PinManager</string>
+      </entry>
+      <entry>
+         <string>CCP5</string>
+         <string>class com.microchip.mcc.mcu8.modules.ccp_v3.CCP</string>
+      </entry>
+      <entry>
+         <string>EUSART1</string>
+         <string>class com.microchip.mcc.mcu8.modules.eusart.EUSART</string>
+      </entry>
+      <entry>
+         <string>RESET</string>
+         <string>class com.microchip.mcc.mcu8.systemManager.reset.RESET</string>
+      </entry>
+      <entry>
+         <string>Interrupt Module</string>
+         <string>class com.microchip.mcc.mcu8.interruptManager.InterruptManager</string>
+      </entry>
+      <entry>
+         <string>TMR2</string>
+         <string>class com.microchip.mcc.mcu8.modules.tmr2_v3.TMR2</string>
+      </entry>
+   </usedClasses>
+   <usedLibraries class="java.util.ArrayList">
+      <ILibraryFile class="com.microchip.mcc.core.library.BaseLibraryFile" libraryClass="com.microchip.mcc.mcu8.Mcu8PeripheralLibrary" version="1.81.7"/>
+   </usedLibraries>
+   <tokenMap class="java.util.HashMap">
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="SWTXBufferSize"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB5"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRCS"/>
+         <value>FOSC/4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="ADC" registerAlias="ADCON2"/>
+         <value>61</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BORV" alias="220"/>
+         <value>16</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC7" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="TRISC"/>
+         <value>191</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG7H"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB7" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="CSRC"/>
+         <value>slave_mode</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB5"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC3" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC7" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="OSTS" alias="clock"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PRISD" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="prescaleDivisor"/>
+         <value>32</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="HFOFST"/>
+         <value>ON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="ADC" registerAlias="ADRESH"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC4"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="pinHiderKey"/>
+         <value>internal</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="soscPinHiderKey"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="TRISB"/>
+         <value>255</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB7" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADPREF"/>
+         <value>FVRbuf2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD3"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB4"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS"/>
+         <value>FOSC/16</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB4" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD6" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE0" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RE0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD7" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="off/reset"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="BAUDCON"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RE3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RE1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RE2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRCS" alias="T0CKI"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="compareAssignedTimerDisplay"/>
+         <value>Timer 1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PSA" alias="not_assigned"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="SCS"/>
+         <value>FOSC</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB4"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="ADC" registerAlias="ADCON0"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE1" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TMRON" alias="off"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD4"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD5" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IDLEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="MFIntOsc31.25KHzClockInHz"/>
+         <value>31250</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD6" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB5" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="IESO" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RD1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT3" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="validateSignal"/>
+         <value/>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="SREN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC3"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD6" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="ADC" registerAlias="ADCON1"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="pwmFrequencyDisplay"/>
+         <value>25000.000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="TRISD"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="TRISE"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD2" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="PD" alias="POR or CLRWDT"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Setoutput"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RC0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXI" settingAlias="order"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB6" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD7" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TX9D"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="tickerFactor"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="UseHighLowPriority"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD3" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD7" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="CDAFVR" alias="2x"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TRMT" alias="TSR_empty"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB7"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RE2"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RE3"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="inputMode"/>
+         <value>periodMode</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD1"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP3" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB2"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="250KHz_MFINTOSC/2"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON"/>
+         <value>112</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN8"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN7"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB3"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC4" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN9"/>
+         <value>9</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN4"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="CDAFVR" alias="1x"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN3"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN6"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN5"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC6"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN0"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="512"/>
+         <value>36</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN2"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS"/>
+         <value>32768</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN1"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TMRON" alias="on"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="TRISA"/>
+         <value>127</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PRISD" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR3" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="IESO" alias="ON"/>
+         <value>128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="SBOREN"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTEN" alias="NOSLP"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="CDAFVR" alias="4x"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="PBADEN" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="PBADEN"/>
+         <value>ON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC5" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="IPEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD2"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BORV" alias="250"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="preemptiveHigh"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PLLRDY" alias="NOPLL"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="RCIDL" alias="idle"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="SREN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="BOR"/>
+         <value>occurred</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB3"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="T08BIT" alias="16-bit"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE2" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PRISD"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="CallbackFuncRate"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB2"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="preemptiveLow"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTEN"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC5"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TXEN"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA1" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA7" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD3" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="systemClockValue"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="prMatchValue"/>
+         <value>159</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA3" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB5"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD3" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA7" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="HFOFST" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA6"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA7"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA4"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA5"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA2"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA3"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA0"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RA1"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CustomSoftwarePll"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="FERR" alias="error"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="actualPeriod"/>
+         <value>0.0003</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE2" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="ADON" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB0" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC4" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD2"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="SPEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="TO" alias="sleep"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB7"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB6" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB5"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="WPUB"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB1"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="RCIO6"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="CCP5" registerAlias="CCPRH"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB6"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB3"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB4"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB1"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA6"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB2"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="BRG16" alias="8bit_generator"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RB0"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD0"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="PRICLKEN" alias="ON"/>
+         <value>32</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE1" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="PBADEN" alias="ON"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BORV" alias="285"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC5" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CurrentPllString"/>
+         <value> (4x PLL)</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB6"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD4"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="T0CON"/>
+         <value>212</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB5" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC6"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC7"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC4"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC5"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC2"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC3"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC0"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RC1"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RE0"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="IPEN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RE1"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA5"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB0"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC"/>
+         <value>INTIO67</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG2L"/>
+         <value>31</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB6" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC4" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="CallbackFuncRate"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="IPEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD3"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB2" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="Frc"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="1MHz_HFINTOSC/16"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE2" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD7"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="DCB"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD5"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRSE"/>
+         <value>Increment_hi_lo</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD6"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD0"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD3"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="RX9"/>
+         <value>8-bit</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD4"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD1"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="ioc RD2"/>
+         <value>none</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB1" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="prescaledFreq"/>
+         <value>500000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB7" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="captureAssignedTimerDisplay"/>
+         <value>Timer 1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC1"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="CCP3MX"/>
+         <value>PORTB5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB3" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="FERR" alias="no_error"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB7" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="PLLCFG" alias="ON"/>
+         <value>16</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="HFOFST" alias="ON"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="HSMP"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA0" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="CDAFVR" alias="off"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD4" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC2"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB3"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="timerstart"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC6" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD0" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="SREN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD0"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR2" registerAlias="TMR"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD5" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="FERR"/>
+         <value>no_error</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD1" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC0"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC5" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA5" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD1"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB0" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCI" settingAlias="enable"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="FOSC/4"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="FOSC/2"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC6" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD4" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="8192"/>
+         <value>52</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="FOSC/8"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB4"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC2" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="RBI" settingAlias="enable"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="tickerFactor"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR2" registerAlias="TCON"/>
+         <value>13</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA7"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="baudRateErrorLabel"/>
+         <value>Error: 0.040 %</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG2H"/>
+         <value>60</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="TMR0H" settingAlias="TMR0H"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SYNC" alias="synchronous"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="SPEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:5"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:4"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:3"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="32"/>
+         <value>20</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:2"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:9"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="System Module" name="generateMain"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:8"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:7"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="DT1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:6"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="INTCON2" settingAlias="nWPUEN" alias="enabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="INTSRC"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="clockFreq"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="PWM"/>
+         <value>12</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="LFIOFS"/>
+         <value>not stable</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="LVP" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="BASE_ADDRESS"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="SPBRGL"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="RI" alias="did not occur"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:1"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD7" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TX9" alias="9-bit"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXI" settingAlias="enable"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="4096"/>
+         <value>48</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA4"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="PRICLKEN" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="TMRI" settingAlias="order"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="pwmCCPRDisplayValue"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="minPeriod"/>
+         <value>0.000002</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7H" settingAlias="EBTRB" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TMRI" settingAlias="order"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="EUSART1_TXIISRFunction"/>
+         <value>TxDefaultInterruptHandler</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="maxPeriod"/>
+         <value>0.000512</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="16MHz_HFINTOSC"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="RESET" registerAlias="RCON"/>
+         <value>80</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="16"/>
+         <value>16</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="IESO"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDOVF" alias="overflow"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="GO_nDONE"/>
+         <value>stop</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTEN" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA5"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="128"/>
+         <value>28</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="INTCON2" settingAlias="nWPUEN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="externalFrequency"/>
+         <value>100000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTB" alias="OFF"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPRH" settingAlias="CCPRH"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="SPBRGH"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="BOR" alias="did not occur"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="HFIOFS" alias="not stable"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="SelectedInterruptIndexHigh"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADNREF" alias="VSS"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADNREF" alias="external"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="MULTI_VECTOR_ENABLE"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG3H"/>
+         <value>191</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="RI"/>
+         <value>did not occur</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="CTMU"/>
+         <value>channel_CTMU</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="conversionTime"/>
+         <value>2.875 us</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TCKPS"/>
+         <value>1:4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPB" alias="OFF"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="requestedPeriod"/>
+         <value>0.0003</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="CCP2MX" alias="PORTC1"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="HFIntOscClockInHz"/>
+         <value>16000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="ADON"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CustomIRFC"/>
+         <value>16MHz_HFINTOSC</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="P2BMX"/>
+         <value>PORTD2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:2"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:4"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:8"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="pwmResolution"/>
+         <value>9 bits</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB0"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="LVP" alias="ON"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="CCP2MX" alias="PORTB3"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FCMEN" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE1"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA2"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Falling edge"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7H" settingAlias="EBTRB" alias="OFF"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="LATA"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="FVRBuf2"/>
+         <value>31</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="OERR" alias="error"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="RBI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTC" alias="OFF"/>
+         <value>32</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="dt_pin_direction"/>
+         <value>out</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="T3CMX"/>
+         <value>PORTC0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IDLEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADPREF" alias="external"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="POR" alias="occurred"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS"/>
+         <value>1:2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS"/>
+         <value>AN0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="BRG16"/>
+         <value>16bit_generator</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMR0ON" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA3"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="XINST"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="64"/>
+         <value>24</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTEN" alias="ON"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="pwmAssignedTimerDisplay"/>
+         <value>Timer 2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE2"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="PD"/>
+         <value>POR or CLRWDT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTB" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AquisitionTime"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="CDAFVR"/>
+         <value>4x</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG5L"/>
+         <value>15</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="16384"/>
+         <value>56</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BOREN" alias="SBORDIS"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA0"/>
+         <value>AIN_DUL_BRD_TEMP</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="LATD"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD7"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="SBOREN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD6" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IDLEN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="STVREN" alias="ON"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="FVR" registerAlias="FVRCON"/>
+         <value>176</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="t0ckiPin"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="STVREN"/>
+         <value>ON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="8MHz_HFINTOSC/2"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPRL" settingAlias="CCPRL"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="actpinEnable"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:128"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADPREF" alias="FVRbuf2"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:64"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Rising edge"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="ADC_ADIISRFunction"/>
+         <value>ISR</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="LATE"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="DEBUG"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTD" alias="OFF"/>
+         <value>128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB0"/>
+         <value>DIN_GLR_B_PG</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="GO_nDONE" alias="start"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB1"/>
+         <value>AIN_PWB_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TMRI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="TMRI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE2"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC7" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG7H" settingAlias="EBTRB"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="16th rising edge"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="TMR0L"/>
+         <value>106</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FCMEN" alias="ON"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA0"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="pllMultiplier"/>
+         <value>ON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD4" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPD" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="12"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="BRGH" alias="lo_speed"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA5"/>
+         <value>AIN_DU_FWR_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SYNC"/>
+         <value>asynchronous</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA6"/>
+         <value>DOUT_JP2_LED_D10</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB0"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="tmr2freq"/>
+         <value>12500.000000000002</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA7"/>
+         <value>DOUT_JP1_LED_D9</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Pin Module_RBIISRFunction"/>
+         <value>ISR_Pin Module_RBI</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA1"/>
+         <value>AIN_VICOR2_TEMP</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="500KHz_MFINTOSC"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA2"/>
+         <value>AIN_VICOR1_TEMP</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="ECLPIO6"/>
+         <value>13</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA3"/>
+         <value>AIN_DU_RTN_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA4"/>
+         <value>DIN_HYDRO_PWR_FLT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPD"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="500KHz_HFINTOSC/32"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL"/>
+         <value>PWM5timer2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="ADDEN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="LATB"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="baudprocessmode"/>
+         <value>easysetup</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="MFIOSEL" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="16"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Toggle"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE0"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTC" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="20"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="TMR0H"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="TO" alias="POR or CLRWDT"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD5" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BOREN" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TRMT"/>
+         <value>TSR_empty</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="RCIDL"/>
+         <value>idle</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="EUSART1_RCIISRFunction"/>
+         <value>RxDefaultInterruptHandler</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="WDT" name="wdtPeriod"/>
+         <value>131.07200</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Softinterrupt"/>
+         <value>10</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE1"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="SCS" alias="SOSC"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="LATC"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SENDB"/>
+         <value>sync_break_complete</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="CCPPinName"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG5H"/>
+         <value>192</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="TXSTA"/>
+         <value>36</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC7"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA1"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="CCP5_CCPIISRFunction"/>
+         <value>ISR</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB1"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="INTCON2" settingAlias="nWPUEN" alias="disabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC6" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="2048"/>
+         <value>44</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="SCKP"/>
+         <value>async_noninverted_sync_fallingedge</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="4MHz_HFINTOSC/4"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRSE" alias="Increment_hi_lo"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PSA" alias="assigned"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="LVP"/>
+         <value>ON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD5"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="validateTMR2"/>
+         <value>12500.000000000002</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="validateTMR1"/>
+         <value/>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="ADC" registerAlias="ADRESL"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="timerPeriodActual"/>
+         <value>0.00008</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="STVREN" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="FVRBuf2"/>
+         <value>channel_FVRBuf2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB7"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC7" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="Compare Display"/>
+         <value>Toggle</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD7" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="SCS" alias="FOSC"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="MCLRE"/>
+         <value>EXTMCLR</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="TXREG"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTD" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="PrechargeTime"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR2" registerAlias="PR"/>
+         <value>159</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:32"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="2MHz_HFINTOSC/8"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="FVR" name="cdafvrVoltage"/>
+         <value>4.096 V</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB6"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPD" alias="OFF"/>
+         <value>128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="ECMPIO6"/>
+         <value>11</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="PRICLKEN"/>
+         <value>ON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="SOSCRUN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="TO"/>
+         <value>POR or CLRWDT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPB"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD6"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Interrupt Module" name="IVT_NAME"/>
+         <value>IVT1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="dependentModuleKey"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="31KHz_LFINTOSC"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BOREN" alias="ON"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="DTRXP"/>
+         <value>not_inverted</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="OERR" alias="no_error"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPB" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="TMRI" settingAlias="enable"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PLLRDY" alias="PLL"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TMRI" settingAlias="enable"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG7L"/>
+         <value>15</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD6" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD5" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE2" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="CCP2MX"/>
+         <value>PORTC1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="RX9" alias="9-bit"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB6" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="CCP5" registerAlias="CCPTMRS"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRSE" alias="Increment_lo_hi"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="31KHz_MFINTOSC/16"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TCKPS" alias="1:1"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD0"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TCKPS" alias="1:4"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="TUN"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMR0ON"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC6"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADFM"/>
+         <value>left</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="ccpMode"/>
+         <value>off/reset</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD3" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA7" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD1"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="PWRTEN" alias="OFF"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="POR" alias="did not occur"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB7"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE0"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="MFIOSEL" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="INTIO7"/>
+         <value>9</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB7" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="SOSC_USED"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="XINST" alias="ON"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CustomFOSC"/>
+         <value>Internal oscillator block</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="CREN"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPI" settingAlias="order"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD4" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="1"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="HFIOFS"/>
+         <value>not stable</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="4"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="2"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC7"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="8"/>
+         <value>12</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="nonpps"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB7" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA0" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE1"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC6" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTEN" alias="SWON"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC2"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:16"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC5" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRCS" alias="FOSC/4"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="WUE" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Clearoutput"/>
+         <value>9</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="HFIOFS" alias="stable"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="baudRateComboBox"/>
+         <value>19200</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB6"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="FVREN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RE1"/>
+         <value>AIN_INPUT_V_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RE2"/>
+         <value>AIN_LBL_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RE3"/>
+         <value/>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC5" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RE0"/>
+         <value>AIN_HYDRO_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDOVF" alias="no_overflow"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="FVREN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC6" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="SOSCGO"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT0"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="PLLEN"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD4"/>
+         <value>DOUT_HYDRO_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD5"/>
+         <value>DOUT_GLR_A_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD6"/>
+         <value>DOUT_GLR_B_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD7"/>
+         <value>DOUT_PWB_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="PWRTEN"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD3"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD4" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA2" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="timerPeriod"/>
+         <value>0.00008</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC4"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="pllr"/>
+         <value>PRESENT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TMR" settingAlias="TMR"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB7" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="SWRXBufferSize"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA0" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA7" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="SOSCI"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDOVF"/>
+         <value>no_overflow</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC0"/>
+         <value>DIN_PWB_PG</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC1"/>
+         <value>DIN_LBL_PWR_FLT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC2"/>
+         <value>DIN_GLR_A_FLT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD3" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:10"/>
+         <value>9</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA1" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADNREF"/>
+         <value>VSS</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT1"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="ADPREF" alias="VDD"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="PrechargeCount"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="SOSCO"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="ADDEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC5"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="PLLEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA1" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB6"/>
+         <value>DIN_ALRMNEG1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:12"/>
+         <value>11</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB7"/>
+         <value>DIN_ALRMNEG2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:11"/>
+         <value>10</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="1024"/>
+         <value>40</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:14"/>
+         <value>13</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:13"/>
+         <value>12</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB2"/>
+         <value>AIN_GLR_A_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="DTRXP" alias="inverted"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:16"/>
+         <value>15</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB3"/>
+         <value>AIN_GLR_B_I_MON</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TOUTPS" alias="1:15"/>
+         <value>14</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB4"/>
+         <value>DIN_ALRMPOS1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB5"/>
+         <value>DIN_ALRMPOS2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD0"/>
+         <value>DOUT_375V_RTN_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB0" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD1"/>
+         <value>DOUT_375V_FWR_SWTCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD2"/>
+         <value>DOUT_ISO_12V_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="CTSEL"/>
+         <value>Timer 1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD3"/>
+         <value>DOUT_LBL_SWITCH_ON_OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB6" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE2" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="packageId"/>
+         <value>TQFP44</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="scsTimer1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="System Module" name="CLOCK_FREQ"/>
+         <value>31.0 KHz</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD2"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CLKOUT_ENABLE"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD5" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA0" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="DTRXP" alias="not_inverted"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="SBOREN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC7"/>
+         <value/>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="BRGH"/>
+         <value>hi_speed</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC3"/>
+         <value>DIN_GLR_B_FLT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC4"/>
+         <value>DIN_PWB_FLT</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC5"/>
+         <value>DIN_GLR_A_PG</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC6"/>
+         <value/>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA3" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="TRIGSEL" alias="CCP5"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP2"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC2" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="PrescalerValue"/>
+         <value>1:4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="PR" settingAlias="PR"/>
+         <value>159</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM"/>
+         <value>off/reset</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT2"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRA3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC6"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRA1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRA2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="MCLRE" alias="EXTMCLR"/>
+         <value>128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRA0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="ADDEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC2"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADFM" alias="left"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRA5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB2" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB3" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="OSTS" alias="intosc"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="captureMode"/>
+         <value>Falling edge</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="CCP3MX" alias="PORTE0"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB3"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADRESL" settingAlias="ADRESL"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SYNC" alias="asynchronous"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="FVREN"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BORV" alias="190"/>
+         <value>24</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRB4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRB5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRB2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRB3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="clockFreq"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRB0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRB1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="PLLEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD7" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="4"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="2"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP1"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="0"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE0" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB1" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="DEBUG" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB4" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="MFIntOscClockInHz"/>
+         <value>500000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="tadValue"/>
+         <value>250.0 ns</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT3"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="compareMode"/>
+         <value>Toggle</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB1"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRC5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRC6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRC3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRC4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="ccpr"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC7"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="250KHz_HFINTOSC/64"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="FVRRDY" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="8"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRC2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT" alias="6"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE0"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PSA"/>
+         <value>assigned</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB0" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BORV"/>
+         <value>190</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRC7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD1" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="CTMU"/>
+         <value>29</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA5" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR0"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC3"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FCMEN"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="SPEN"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB2"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="RBI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TX9" alias="8-bit"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TXEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="clockFreqKey"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS"/>
+         <value>1:32</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG1H"/>
+         <value>40</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD2" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB3" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA6" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRE0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="MFIOFS" alias="not stable"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA6"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC4"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE"/>
+         <value>64</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="defaultTadValue"/>
+         <value>11.5 * TAD   = </value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP0"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF"/>
+         <value>16MHz_HFINTOSC</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADRESH" settingAlias="ADRESH"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="INTCON2"/>
+         <value>128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRE1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="SCKP" alias="async_inverted_sync_risingedge"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRE2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN0"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMR0ON" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR1"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN5"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN4"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC2" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC3" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN3"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN2"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC3"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN9"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN8"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN7"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN6"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BOREN" alias="NOSLP"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="timerselpresence"/>
+         <value>timerselpresent</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CurrentSystemClockInHz"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="CustomHardwarePll"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC0"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB5"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC7" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC4" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB1" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="SCKP" alias="async_noninverted_sync_fallingedge"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="XINST" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="T08BIT" alias="8-bit"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="RCIDL" alias="bit_received"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC5"/>
+         <value>digital</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="LFIOFS" alias="stable"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="WUE" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA7"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR2"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SENDB" alias="sync_break_complete"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD0" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TCKPS" alias="1:16"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD6" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB4"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC1"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE1" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB5" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="FVRRDY" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="DEBUG" alias="OFF"/>
+         <value>128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL" alias="PWM5timer2"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="RX9" alias="8-bit"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="enableInterrupt"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="ECHPIO6"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="CSRC" alias="slave_mode"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL" alias="PWM5timer4"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL" alias="PWM5timer6"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD7"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="MFIOFS"/>
+         <value>not stable</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC3" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC1" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA2" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN26"/>
+         <value>26</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB3" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN25"/>
+         <value>25</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN24"/>
+         <value>24</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN23"/>
+         <value>23</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD0"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB5"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD2"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN27"/>
+         <value>27</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC2"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC3"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC4"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="ECLP"/>
+         <value>12</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC5"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN22"/>
+         <value>22</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA1"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB3" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN21"/>
+         <value>21</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN20"/>
+         <value>20</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="INTSRC" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR3"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB2" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA4" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD2" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN15"/>
+         <value>15</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD0" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="timerstart"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN14"/>
+         <value>14</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA4" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB2" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC2" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN13"/>
+         <value>13</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="TMR0L" settingAlias="TMR0L"/>
+         <value>106</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN12"/>
+         <value>12</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN19"/>
+         <value>19</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="PLLCFG" alias="OFF"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN18"/>
+         <value>18</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC0"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN17"/>
+         <value>17</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RC1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN16"/>
+         <value>16</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB2"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB3"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB4"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB5"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN11"/>
+         <value>11</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB6"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="AN10"/>
+         <value>10</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB7"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD0" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA0" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB1"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR1" alias="OFF"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="CREN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTB"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="TMR0_TMRIISRFunction"/>
+         <value>ISR</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA3" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="ADON" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC0" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="SOSCRUN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="timerPeriodMin"/>
+         <value>0.0000005</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD1" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB4"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA5" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC1" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="PD" alias="sleep"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA1" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP0" alias="OFF"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD1" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA0"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="CCPTMRS"/>
+         <value>CCPTMRS1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE0" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG4L"/>
+         <value>133</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="SOSCGO" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB4" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB1" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB2"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB4" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB2" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA4" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RE0"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD0" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RE1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RE2"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RE3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD3"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD4"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD5"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD6"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RD7"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC2" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="ECMP"/>
+         <value>10</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="256"/>
+         <value>32</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA0"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA5" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SENDB" alias="send_sync_break_next"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADI" settingAlias="enable"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="CCP3MX" alias="PORTB5"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD3" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB1" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB2" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="SOSCGO" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="ccpInputPin"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB3" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC3" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="T3CMX" alias="PORTC0"/>
+         <value>16</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="XT"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="RCSTA"/>
+         <value>144</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTC"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TXEN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT0" alias="OFF"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD5"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TCON" settingAlias="TMRON"/>
+         <value>on</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC3" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB7"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="T1oscen"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDEN"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="FVR" registerAlias="FVRCON" settingAlias="FVRRDY"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR0" alias="OFF"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="4th rising edge"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="T3CMX" alias="PORTB5"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA4"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE2" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA3" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPI" settingAlias="priority"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC0" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB4" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD2" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TRMT" alias="TSR_full"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="CCP5" registerAlias="CCPRL"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="ExternalClock"/>
+         <value>1000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="MFIOSEL"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="31KHz_HFINTOSC/512"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="Capture Display"/>
+         <value>Falling edge</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA6" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE0" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB0" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="T08BIT"/>
+         <value>8-bit</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB3" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="HSHP"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB6"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD0" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE1" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA4" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP3"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB5" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD1" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA2"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB1" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="ccpOutputPin"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE1" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA5" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTD"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="sysClock"/>
+         <value>8000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="BOREN"/>
+         <value>SBORDIS</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD6"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE0" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC4" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC1" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="CSRC" alias="master_mode"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="WUE"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPCON" settingAlias="CCPM" alias="Autoconversion"/>
+         <value>11</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA2" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA6" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB4" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB4" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA3"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="CK1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT1" alias="OFF"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA2" alias="analog"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD2" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="BOR" alias="occurred"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="CHS" alias="DAC"/>
+         <value>30</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="TimerPeriodkey"/>
+         <value>12500.000000000002</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELB" settingAlias="ANSB5" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADFM" alias="right"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB0"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB0"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB7" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB5" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="IOCB"/>
+         <value>240</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP2" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDEN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="BRGH" alias="hi_speed"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE1" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="FOSC/16"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN21"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN20"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB5"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN23"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB4"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="templateNameValue"/>
+         <value>eusart_interrupt</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN22"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB7"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN25"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRB0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RB6"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN24"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN27"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN26"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="LP"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="OSTS"/>
+         <value>intosc</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB5" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC2"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT0" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:256"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC1"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC4"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC3"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA3"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC4" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC0"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR2" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA2" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN10"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN12"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC5"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN11"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN14"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRC1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RC7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN13"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADI" settingAlias="order"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN16"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN15"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN18"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN17"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="BRG16" alias="16bit_generator"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="TMR2_TMRIISRFunction"/>
+         <value>ISR</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AN19"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB0" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP3" alias="OFF"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD5"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="FOSC/32"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC3" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA0" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA1" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRD2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB5" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="INTSRC" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA5"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="ANSELD"/>
+         <value>255</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB1" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON1" settingAlias="TRIGSEL"/>
+         <value>CCP5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="pwmPeriod"/>
+         <value>4.0E-5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD4"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA6" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD4" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP1" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="clockFreq"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB5" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL" alias="CCP5timer5"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD2" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRE0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRE1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA7"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="TMRI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="CREN" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ACQT"/>
+         <value>20</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="ANSELE"/>
+         <value>7</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR2" registerAlias="TMRI" settingAlias="flag"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA4"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB0" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRE2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA6"/>
+         <value>input</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RA5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT2" alias="OFF"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="USB_LOADED"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA2" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="32768"/>
+         <value>60</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON0" settingAlias="GO_nDONE" alias="stop"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL" alias="CCP5timer1"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC5" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG6L"/>
+         <value>15</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR3" alias="OFF"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR2" name="timerPeriodMax"/>
+         <value>0.000128</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="CCP5" registerAlias="CCPTMRS" settingAlias="CTSEL" alias="CCP5timer3"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="FOSCClockValue"/>
+         <value>64000000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB4" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT1" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA5" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATD" settingAlias="LATD1" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="P2BMX" alias="PORTD2"/>
+         <value>32</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR1" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA3" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="MFIOFS" alias="stable"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="SCS" alias="INTOSC"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="System Module" registerAlias="CONFIG6H"/>
+         <value>224</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="ANSELB"/>
+         <value>14</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP2" alias="OFF"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA3" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="RX9D"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="PR2value"/>
+         <value>159</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RB1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="ECHP"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="ADC" registerAlias="ADCON2" settingAlias="ADCS" alias="FOSC/64"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB6" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB4" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="MCLRE" alias="INTMCLR"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="eusartInterrupts"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="P2BMX" alias="PORTC0"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE0" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB2" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="RESET" registerAlias="RCON" settingAlias="POR"/>
+         <value>occurred</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB6" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="LATE" settingAlias="LATE2"/>
+         <value>clear</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="ANSELC"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD7"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC0" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC7" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="iocUserSet RA0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="WPUB" settingAlias="WPUB6" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA1"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="RBI" settingAlias="order"/>
+         <value>5</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD3"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="INTIO67"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD2"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD5"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD4"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP0" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB3" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="RESET" registerAlias="RCON" settingAlias="RI" alias="occurred"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB0" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD1"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="FOSC" alias="RC"/>
+         <value>6</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="CCP5" registerAlias="CCPCON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD0"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB5" alias="disabled"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISB" settingAlias="TRISB1" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD7"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RD6"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT3" alias="OFF"/>
+         <value>8</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCI" settingAlias="order"/>
+         <value>3</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB0"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA0"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA1"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA2"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA3"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA4"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA5"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA6"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="System Module" registerAlias="CONFIG1H" settingAlias="PLLCFG"/>
+         <value>OFF</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA7"/>
+         <value>enabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC1" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR2" alias="OFF"/>
+         <value>4</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB4" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC6" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG2L" settingAlias="PWRTEN" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="LFIOFS" alias="not stable"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA4"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="INTERNAL OSCILLATOR" name="LFIntOscClockInHz"/>
+         <value>31000</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA5"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RE3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="ANSELA" settingAlias="ANSA2"/>
+         <value>analog</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA3"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="AquisitionCount"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RE0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISA" settingAlias="TRISA1" alias="input"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RE2"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA6"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="DAC"/>
+         <value>channel_DAC</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="RE1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA7"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATC" settingAlias="LATC2" alias="clear"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="CCP5" registerAlias="CCPI" settingAlias="enable"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="SOSCRUN" alias="enabled"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA0"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC0" alias="output"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="trisUserSetRA1"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR0" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="ADC" name="samplingFrequency"/>
+         <value>119.403 kHz</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="OERR"/>
+         <value>no_error</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB2" alias="set"/>
+         <value>1</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TX9"/>
+         <value>8-bit</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP1" alias="OFF"/>
+         <value>2</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PLLRDY"/>
+         <value>NOPLL</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="Pin Module" registerAlias="TRISD" settingAlias="TRISD6"/>
+         <value>output</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD5" alias="digital"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="CCP5" name="pwmDuCyDisplayValue"/>
+         <value>0.0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT2" alias="ON"/>
+         <value>0</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="EUSART1" name="useStdio"/>
+         <value>disabled</value>
+      </entry>
+      <entry>
+         <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="ANSELA"/>
+         <value>47</value>
+      </entry>
+   </tokenMap>
+   <generatedFileHashHistoryMap class="java.util.HashMap">
+      <entry>
+         <file>mcc_generated_files/ccp5.c</file>
+         <hash>d3d1a0e29ab0d237e700f7bd5c0a067fbc73c0568c92f9195fdfddb804325641</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/interrupt_manager.h</file>
+         <hash>62222cff931c6f10ed6eaeb317caf0f701892a3b53aa4af02f4bbc9920755709</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/fvr.c</file>
+         <hash>24982a75b542982c020400313ec6e311aa40dbf519f028eccdff1e1b7d489568</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/tmr0.c</file>
+         <hash>77631caa3c2b5a163e6a041e9cf6a60dace26d2aa2b81f2bc7277b8d20826612</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/pin_manager.h</file>
+         <hash>63afe0661072367ed7f02048395b49f9b0d2f760e2f246b878b15047d394ba59</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/eusart1.h</file>
+         <hash>adaab835ea05ef3b79b26fd176fb2a8e6d4fbba509dd821f8e01b946f3839d4d</hash>
+      </entry>
+      <entry>
+         <file>main.c</file>
+         <hash>87bbe9578cf7703cdbfd9af1caeeb4c11efd4c03fde69c03bbc26710a79b1ca5</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/tmr2.h</file>
+         <hash>e450ed94162721f5ac2c245378419f8c38f0b9dcc95a4642bb4879b6d61b3312</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/tmr2.c</file>
+         <hash>ebb169b21ab8afecb20150f9c5cbc326d57004f1fe35f2b1dae82e59c660d136</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/ccp5.h</file>
+         <hash>4c837e89a497c0da762baf82095622c60cce353373ad6643b9d7a0a2fc66d513</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/adc.h</file>
+         <hash>97929390d649ab8a3dbad74decc8913595b5af6738f4b7582f54a6cffea4a9f4</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/tmr0.h</file>
+         <hash>01eb8c30d23fe9dfde3304de2e53f03d8881a6b61213adeeb85fb02cd6161c2e</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/device_config.h</file>
+         <hash>455315f4857de718383343a0bc9f905e09ceac38bd97f903d8521ad636b9f4b2</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/adc.c</file>
+         <hash>198e19c5c6435d1bed824bbdc3f045d3d1a7c313d869a9c8828aaf19e0d08344</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/eusart1.c</file>
+         <hash>e4692685821b770cc006efc6342fbb4e0534cec644499a4035f691ecd451d2aa</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/mcc.h</file>
+         <hash>eeff4ab321ba83391bc922417fe80acf75f67d6c4e49c2740deba77fc3fc5efb</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/device_config.c</file>
+         <hash>1a03314d224a4ddfcbee78607808e14e673be22bdfa19b5cdc5906eae36baa31</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/interrupt_manager.c</file>
+         <hash>e8b9dffb0d70449ea54caa68ec15f385c88175e6485055d92eac8801a039c407</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/fvr.h</file>
+         <hash>9370db448e1f6eadbd24bcd74ccdc505f1bd34051ea9f1be49baf6fdb0669b45</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/mcc.c</file>
+         <hash>9c706baea7f5d3f9f01a5516a88090d0159153c0aac4c5026a3d3bed0ae9cefa</hash>
+      </entry>
+      <entry>
+         <file>mcc_generated_files/pin_manager.c</file>
+         <hash>a5fa123b216f8086f9664a48b9db4d6db74b710f4ccc2b7ab5e99c329a2d0038</hash>
+      </entry>
+   </generatedFileHashHistoryMap>
+   <mc3libFileHashHistoryMap class="java.util.HashMap"/>
+</config>
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.c b/micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.c
new file mode 100644
index 0000000..0956ba2
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.c
@@ -0,0 +1,41 @@
+// Auto-generated file: commandstable.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+#include "commandstable.h"
+
+// commans info table
+command_info_t commands_info_table[COMMANDS_COUNT] = {
+   { .request_code = CMDCODE_SWITCH_CONTROL_REQ                 , .response_code = CMDCODE_SWITCH_CONTROL_RESP                 , .request_payload_len = 2  , .callback_ptr = command_SWITCH_CONTROL                 },
+   { .request_code = CMDCODE_ALARM_ENABLE_REQ                   , .response_code = CMDCODE_ALARM_ENABLE_RESP                   , .request_payload_len = 2  , .callback_ptr = command_ALARM_ENABLE                   },
+   { .request_code = CMDCODE_ALARM_TIMEOUT_SET_REQ              , .response_code = CMDCODE_ALARM_TIMEOUT_SET_RESP              , .request_payload_len = 3  , .callback_ptr = command_ALARM_TIMEOUT_SET              },
+   { .request_code = CMDCODE_ALARM_TIMEOUT_GET_REQ              , .response_code = CMDCODE_ALARM_TIMEOUT_GET_RESP              , .request_payload_len = 1  , .callback_ptr = command_ALARM_TIMEOUT_GET              },
+   { .request_code = CMDCODE_ALARM_MAXCOUNT_GET_REQ             , .response_code = CMDCODE_ALARM_MAXCOUNT_GET_RESP             , .request_payload_len = 1  , .callback_ptr = command_ALARM_MAXCOUNT_GET             },
+   { .request_code = CMDCODE_ALARM_MAXCOUNT_RESET_REQ           , .response_code = CMDCODE_ALARM_MAXCOUNT_RESET_RESP           , .request_payload_len = 1  , .callback_ptr = command_ALARM_MAXCOUNT_RESET           },
+   { .request_code = CMDCODE_ALARM_THRESHOLD_SET_REQ            , .response_code = CMDCODE_ALARM_THRESHOLD_SET_RESP            , .request_payload_len = 3  , .callback_ptr = command_ALARM_THRESHOLD_SET            },
+   { .request_code = CMDCODE_ALARM_THRESHOLD_GET_REQ            , .response_code = CMDCODE_ALARM_THRESHOLD_GET_RESP            , .request_payload_len = 1  , .callback_ptr = command_ALARM_THRESHOLD_GET            },
+   { .request_code = CMDCODE_ALARM_FIRED_GET_REQ                , .response_code = CMDCODE_ALARM_FIRED_GET_RESP                , .request_payload_len = 1  , .callback_ptr = command_ALARM_FIRED_GET                },
+   { .request_code = CMDCODE_ALARM_FIRED_RESET_REQ              , .response_code = CMDCODE_ALARM_FIRED_RESET_RESP              , .request_payload_len = 1  , .callback_ptr = command_ALARM_FIRED_RESET              },
+   { .request_code = CMDCODE_ALARM_FIRECOUNT_GET_REQ            , .response_code = CMDCODE_ALARM_FIRECOUNT_GET_RESP            , .request_payload_len = 1  , .callback_ptr = command_ALARM_FIRECOUNT_GET            },
+   { .request_code = CMDCODE_SENSOR_GET_SINGLE_REQ              , .response_code = CMDCODE_SENSOR_GET_SINGLE_RESP              , .request_payload_len = 1  , .callback_ptr = command_SENSOR_GET_SINGLE              },
+   { .request_code = CMDCODE_SENSOR_MAXVALUE_RESET_REQ          , .response_code = CMDCODE_SENSOR_MAXVALUE_RESET_RESP          , .request_payload_len = 1  , .callback_ptr = command_SENSOR_MAXVALUE_RESET          },
+   { .request_code = CMDCODE_SENSOR_VALUES_GETALL_REQ           , .response_code = CMDCODE_SENSOR_VALUES_GETALL_RESP           , .request_payload_len = 0  , .callback_ptr = command_SENSOR_VALUES_GETALL           },
+   { .request_code = CMDCODE_SENSOR_AVERAGE_GETALL_REQ          , .response_code = CMDCODE_SENSOR_AVERAGE_GETALL_RESP          , .request_payload_len = 0  , .callback_ptr = command_SENSOR_AVERAGE_GETALL          },
+   { .request_code = CMDCODE_SENSOR_OFFSETS_GETALL_REQ          , .response_code = CMDCODE_SENSOR_OFFSETS_GETALL_RESP          , .request_payload_len = 0  , .callback_ptr = command_SENSOR_OFFSETS_GETALL          },
+   { .request_code = CMDCODE_SENSOR_MAXVALUES_GETALL_REQ        , .response_code = CMDCODE_SENSOR_MAXVALUES_GETALL_RESP        , .request_payload_len = 0  , .callback_ptr = command_SENSOR_MAXVALUES_GETALL        },
+   { .request_code = CMDCODE_SENSOR_AVERAGING_PRESCALER_SET_REQ , .response_code = CMDCODE_SENSOR_AVERAGING_PRESCALER_SET_RESP , .request_payload_len = 1  , .callback_ptr = command_SENSOR_AVERAGING_PRESCALER_SET },
+   { .request_code = CMDCODE_SENSOR_AVERAGING_PRESCALER_GET_REQ , .response_code = CMDCODE_SENSOR_AVERAGING_PRESCALER_GET_RESP , .request_payload_len = 0  , .callback_ptr = command_SENSOR_AVERAGING_PRESCALER_GET },
+   { .request_code = CMDCODE_BOARDTIME_REQ                      , .response_code = CMDCODE_BOARDTIME_RESP                      , .request_payload_len = 0  , .callback_ptr = command_BOARDTIME                      },
+   { .request_code = CMDCODE_LASTCOMMANDTIME_REQ                , .response_code = CMDCODE_LASTCOMMANDTIME_RESP                , .request_payload_len = 0  , .callback_ptr = command_LASTCOMMANDTIME                },
+   { .request_code = CMDCODE_VERSION_REQ                        , .response_code = CMDCODE_VERSION_RESP                        , .request_payload_len = 0  , .callback_ptr = command_VERSION                        },
+   { .request_code = CMDCODE_LASTERROR_REQ                      , .response_code = CMDCODE_LASTERROR_RESP                      , .request_payload_len = 0  , .callback_ptr = command_LASTERROR                      },
+   { .request_code = CMDCODE_RESCUE_ENABLE_REQ                  , .response_code = CMDCODE_RESCUE_ENABLE_RESP                  , .request_payload_len = 1  , .callback_ptr = command_RESCUE_ENABLE                  },
+   { .request_code = CMDCODE_RESCUE_STATUS_GET_REQ              , .response_code = CMDCODE_RESCUE_STATUS_GET_RESP              , .request_payload_len = 0  , .callback_ptr = command_RESCUE_STATUS_GET              },
+   { .request_code = CMDCODE_RESCUE_STATUS_RESET_REQ            , .response_code = CMDCODE_RESCUE_STATUS_RESET_RESP            , .request_payload_len = 0  , .callback_ptr = command_RESCUE_STATUS_RESET            },
+   { .request_code = CMDCODE_RESCUE_TIMEOUT_SET_REQ             , .response_code = CMDCODE_RESCUE_TIMEOUT_SET_RESP             , .request_payload_len = 2  , .callback_ptr = command_RESCUE_TIMEOUT_SET             },
+   { .request_code = CMDCODE_RESCUE_TIMEOUT_GET_REQ             , .response_code = CMDCODE_RESCUE_TIMEOUT_GET_RESP             , .request_payload_len = 0  , .callback_ptr = command_RESCUE_TIMEOUT_GET             },
+   { .request_code = CMDCODE_USER_PIN_CONTROL_REQ               , .response_code = CMDCODE_USER_PIN_CONTROL_RESP               , .request_payload_len = 2  , .callback_ptr = command_USER_PIN_CONTROL               },
+   { .request_code = CMDCODE_ECHO1_REQ                          , .response_code = CMDCODE_ECHO1_RESP                          , .request_payload_len = 1  , .callback_ptr = command_ECHO1                          },
+   { .request_code = CMDCODE_ECHO4_REQ                          , .response_code = CMDCODE_ECHO4_RESP                          , .request_payload_len = 4  , .callback_ptr = command_ECHO4                          },
+   { .request_code = CMDCODE_ECHO32_REQ                         , .response_code = CMDCODE_ECHO32_RESP                         , .request_payload_len = 32 , .callback_ptr = command_ECHO32                         },
+   { .request_code = CMDCODE_VALCHECK_REQ                       , .response_code = CMDCODE_VALCHECK_RESP                       , .request_payload_len = 0  , .callback_ptr = command_VALCHECK                       }
+};
diff --git a/micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.h b/micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.h
new file mode 100644
index 0000000..2d2b9d9
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/generated/sources/commandstable.h
@@ -0,0 +1,199 @@
+// Auto-generated file: commandstable.h
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+#ifndef _AUTOGENERATED_COMMANDSTABLE_H
+#define _AUTOGENERATED_COMMANDSTABLE_H
+
+# include "../../typedefs.h"
+
+// number of defined commands
+#define COMMANDS_COUNT 34
+
+// make command table available to anyone including this file
+extern command_info_t commands_info_table[COMMANDS_COUNT];
+
+// Command codes
+#define CMDCODE_SWITCH_CONTROL_REQ 64
+#define CMDCODE_SWITCH_CONTROL_RESP 65
+#define CMDCODE_ALARM_ENABLE_REQ 66
+#define CMDCODE_ALARM_ENABLE_RESP 67
+#define CMDCODE_ALARM_TIMEOUT_SET_REQ 68
+#define CMDCODE_ALARM_TIMEOUT_SET_RESP 69
+#define CMDCODE_ALARM_TIMEOUT_GET_REQ 70
+#define CMDCODE_ALARM_TIMEOUT_GET_RESP 71
+#define CMDCODE_ALARM_MAXCOUNT_GET_REQ 72
+#define CMDCODE_ALARM_MAXCOUNT_GET_RESP 73
+#define CMDCODE_ALARM_MAXCOUNT_RESET_REQ 74
+#define CMDCODE_ALARM_MAXCOUNT_RESET_RESP 75
+#define CMDCODE_ALARM_THRESHOLD_SET_REQ 76
+#define CMDCODE_ALARM_THRESHOLD_SET_RESP 77
+#define CMDCODE_ALARM_THRESHOLD_GET_REQ 78
+#define CMDCODE_ALARM_THRESHOLD_GET_RESP 79
+#define CMDCODE_ALARM_FIRED_GET_REQ 80
+#define CMDCODE_ALARM_FIRED_GET_RESP 81
+#define CMDCODE_ALARM_FIRED_RESET_REQ 82
+#define CMDCODE_ALARM_FIRED_RESET_RESP 83
+#define CMDCODE_ALARM_FIRECOUNT_GET_REQ 84
+#define CMDCODE_ALARM_FIRECOUNT_GET_RESP 85
+#define CMDCODE_SENSOR_GET_SINGLE_REQ 86
+#define CMDCODE_SENSOR_GET_SINGLE_RESP 87
+#define CMDCODE_SENSOR_MAXVALUE_RESET_REQ 88
+#define CMDCODE_SENSOR_MAXVALUE_RESET_RESP 89
+#define CMDCODE_SENSOR_VALUES_GETALL_REQ 90
+#define CMDCODE_SENSOR_VALUES_GETALL_RESP 91
+#define CMDCODE_SENSOR_AVERAGE_GETALL_REQ 92
+#define CMDCODE_SENSOR_AVERAGE_GETALL_RESP 93
+#define CMDCODE_SENSOR_OFFSETS_GETALL_REQ 94
+#define CMDCODE_SENSOR_OFFSETS_GETALL_RESP 95
+#define CMDCODE_SENSOR_MAXVALUES_GETALL_REQ 96
+#define CMDCODE_SENSOR_MAXVALUES_GETALL_RESP 97
+#define CMDCODE_SENSOR_AVERAGING_PRESCALER_SET_REQ 98
+#define CMDCODE_SENSOR_AVERAGING_PRESCALER_SET_RESP 99
+#define CMDCODE_SENSOR_AVERAGING_PRESCALER_GET_REQ 100
+#define CMDCODE_SENSOR_AVERAGING_PRESCALER_GET_RESP 101
+#define CMDCODE_BOARDTIME_REQ 102
+#define CMDCODE_BOARDTIME_RESP 103
+#define CMDCODE_LASTCOMMANDTIME_REQ 104
+#define CMDCODE_LASTCOMMANDTIME_RESP 105
+#define CMDCODE_VERSION_REQ 106
+#define CMDCODE_VERSION_RESP 107
+#define CMDCODE_LASTERROR_REQ 108
+#define CMDCODE_LASTERROR_RESP 109
+#define CMDCODE_RESCUE_ENABLE_REQ 110
+#define CMDCODE_RESCUE_ENABLE_RESP 111
+#define CMDCODE_RESCUE_STATUS_GET_REQ 112
+#define CMDCODE_RESCUE_STATUS_GET_RESP 113
+#define CMDCODE_RESCUE_STATUS_RESET_REQ 114
+#define CMDCODE_RESCUE_STATUS_RESET_RESP 115
+#define CMDCODE_RESCUE_TIMEOUT_SET_REQ 116
+#define CMDCODE_RESCUE_TIMEOUT_SET_RESP 117
+#define CMDCODE_RESCUE_TIMEOUT_GET_REQ 118
+#define CMDCODE_RESCUE_TIMEOUT_GET_RESP 119
+#define CMDCODE_USER_PIN_CONTROL_REQ 120
+#define CMDCODE_USER_PIN_CONTROL_RESP 121
+#define CMDCODE_ECHO1_REQ 122
+#define CMDCODE_ECHO1_RESP 123
+#define CMDCODE_ECHO4_REQ 124
+#define CMDCODE_ECHO4_RESP 125
+#define CMDCODE_ECHO32_REQ 126
+#define CMDCODE_ECHO32_RESP 127
+#define CMDCODE_VALCHECK_REQ 128
+#define CMDCODE_VALCHECK_RESP 129
+#define CMDCODE_INVALID_REQ 254
+#define CMDCODE_INVALID_RESP 255
+
+// Callback functions
+
+// Callback for command SWITCH_CONTROL (request code: 64), Control one of the switches or enable lines of the board. Can be used to get the current switch status without changing it (see request payload field status)
+err_t command_SWITCH_CONTROL(void);
+
+// Callback for command ALARM_ENABLE (request code: 66), Enable or disable one of the alarms. Can be used to get the current enable status without changing it (see request payload field)
+err_t command_ALARM_ENABLE(void);
+
+// Callback for command ALARM_TIMEOUT_SET (request code: 68), Set the timeout of one alarm
+err_t command_ALARM_TIMEOUT_SET(void);
+
+// Callback for command ALARM_TIMEOUT_GET (request code: 70), Get the timeout value of one alarm
+err_t command_ALARM_TIMEOUT_GET(void);
+
+// Callback for command ALARM_MAXCOUNT_GET (request code: 72), Get the maximum counter value reached by one of the alarms (use command ALARM_MAXCOUNT_RESET to reset it to zero)
+err_t command_ALARM_MAXCOUNT_GET(void);
+
+// Callback for command ALARM_MAXCOUNT_RESET (request code: 74), Reset the maximum counter value of one alarm (or all alarms)
+err_t command_ALARM_MAXCOUNT_RESET(void);
+
+// Callback for command ALARM_THRESHOLD_SET (request code: 76), Set the threshold value of one analog alarm
+err_t command_ALARM_THRESHOLD_SET(void);
+
+// Callback for command ALARM_THRESHOLD_GET (request code: 78), Get the threshold value of one analog alarm
+err_t command_ALARM_THRESHOLD_GET(void);
+
+// Callback for command ALARM_FIRED_GET (request code: 80), Get the has-fired flag of one alarm (or all alarms OR-ed)
+err_t command_ALARM_FIRED_GET(void);
+
+// Callback for command ALARM_FIRED_RESET (request code: 82), Reset the has-fired flag of one alarm (or all alarms)
+err_t command_ALARM_FIRED_RESET(void);
+
+// Callback for command ALARM_FIRECOUNT_GET (request code: 84), Get the current fire counter of one alarm
+err_t command_ALARM_FIRECOUNT_GET(void);
+
+// Callback for command SENSOR_GET_SINGLE (request code: 86), Get one sensor's current value, offset value, max value, and mean value
+err_t command_SENSOR_GET_SINGLE(void);
+
+// Callback for command SENSOR_MAXVALUE_RESET (request code: 88), Reset the max value of one sensor (or all sensors)
+err_t command_SENSOR_MAXVALUE_RESET(void);
+
+// Callback for command SENSOR_VALUES_GETALL (request code: 90), Get all sensors' values
+err_t command_SENSOR_VALUES_GETALL(void);
+
+// Callback for command SENSOR_AVERAGE_GETALL (request code: 92), Get all sensors' mean values
+err_t command_SENSOR_AVERAGE_GETALL(void);
+
+// Callback for command SENSOR_OFFSETS_GETALL (request code: 94), Get all sensors' offsets
+err_t command_SENSOR_OFFSETS_GETALL(void);
+
+// Callback for command SENSOR_MAXVALUES_GETALL (request code: 96), Get all sensors' max values
+err_t command_SENSOR_MAXVALUES_GETALL(void);
+
+// Callback for command SENSOR_AVERAGING_PRESCALER_SET (request code: 98), Set the value of the prescaler used to compute sensors' averages
+err_t command_SENSOR_AVERAGING_PRESCALER_SET(void);
+
+// Callback for command SENSOR_AVERAGING_PRESCALER_GET (request code: 100), Get the value of the prescaler used to compute sensors' averages
+err_t command_SENSOR_AVERAGING_PRESCALER_GET(void);
+
+// Callback for command BOARDTIME (request code: 102), Time since last reset
+err_t command_BOARDTIME(void);
+
+// Callback for command LASTCOMMANDTIME (request code: 104), Time since last command
+err_t command_LASTCOMMANDTIME(void);
+
+// Callback for command VERSION (request code: 106), Report embedded code versioning information
+err_t command_VERSION(void);
+
+// Callback for command LASTERROR (request code: 108), Return the last occurred error, and reset it to NOERR value
+err_t command_LASTERROR(void);
+
+// Callback for command RESCUE_ENABLE (request code: 110), Enable or disable auto-rescue (or read enable status)
+err_t command_RESCUE_ENABLE(void);
+
+// Callback for command RESCUE_STATUS_GET (request code: 112), Get the auto-rescue current status (fired or not)
+err_t command_RESCUE_STATUS_GET(void);
+
+// Callback for command RESCUE_STATUS_RESET (request code: 114), Reset the auto-rescue current status
+err_t command_RESCUE_STATUS_RESET(void);
+
+// Callback for command RESCUE_TIMEOUT_SET (request code: 116), Set the auto-rescue timeout value
+err_t command_RESCUE_TIMEOUT_SET(void);
+
+// Callback for command RESCUE_TIMEOUT_GET (request code: 118), Get the auto-rescue timeout value
+err_t command_RESCUE_TIMEOUT_GET(void);
+
+// Callback for command USER_PIN_CONTROL (request code: 120), Control one user pin
+err_t command_USER_PIN_CONTROL(void);
+
+// Callback for command ECHO1 (request code: 122), Echo (1 byte)
+err_t command_ECHO1(void);
+
+// Callback for command ECHO4 (request code: 124), Echo (4 bytes)
+err_t command_ECHO4(void);
+
+// Callback for command ECHO32 (request code: 126), Echo (32 bytes)
+err_t command_ECHO32(void);
+
+// Callback for command VALCHECK (request code: 128), Return a some data to check endianness
+err_t command_VALCHECK(void);
+
+// Callback for command INVALID (request code: 254), Invalid command (used in firmware, not implemented)
+err_t command_INVALID(void);
+
+// Versioning data
+#define COMMAND_TABLE_VERSION_NUM 2
+#define TEMPLATE_GENERATION_YEAR 2021
+#define TEMPLATE_GENERATION_MONTH 5
+#define TEMPLATE_GENERATION_DAY 28
+#define TEMPLATE_GENERATION_HOUR 16
+#define TEMPLATE_GENERATION_MINUTE 22
+#define TEMPLATE_GENERATION_SECOND 48
+
+
+#endif // _AUTOGENERATED_COMMANDSTABLE_H
diff --git a/micro/BPD-V01-FIRMWARE.X/generated/sources/datatypes.h b/micro/BPD-V01-FIRMWARE.X/generated/sources/datatypes.h
new file mode 100644
index 0000000..16bab18
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/generated/sources/datatypes.h
@@ -0,0 +1,433 @@
+// Auto-generated file: datatypes.h
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+#ifndef _AUTOGENERATED_DATATYPES_H
+#define _AUTOGENERATED_DATATYPES_H
+
+
+// FLAG_LBL_PWR_FAULT status
+typedef enum {
+    FLAG_LBL_PWR_FAULT_STATE_LOW = 0,
+    FLAG_LBL_PWR_FAULT_STATE_HIGH = 1
+} enum_flag_lbl_pwr_fault_state_t;
+
+#define enum_flag_lbl_pwr_fault_state_t_min FLAG_LBL_PWR_FAULT_STATE_LOW
+#define enum_flag_lbl_pwr_fault_state_t_max FLAG_LBL_PWR_FAULT_STATE_HIGH   
+
+// FLAG_DUL_ALARMPOS1 status
+typedef enum {
+    FLAG_DUL_ALARMPOS1_STATE_LOW = 0,
+    FLAG_DUL_ALARMPOS1_STATE_HIGH = 1
+} enum_flag_dul_alarmpos1_state_t;
+
+#define enum_flag_dul_alarmpos1_state_t_min FLAG_DUL_ALARMPOS1_STATE_LOW
+#define enum_flag_dul_alarmpos1_state_t_max FLAG_DUL_ALARMPOS1_STATE_HIGH   
+
+// Enable state
+typedef enum {
+    ENABLESTATE_DISABLED = 0,
+    ENABLESTATE_ENABLED = 1
+} enum_enablestate_t;
+
+#define enum_enablestate_t_min ENABLESTATE_DISABLED
+#define enum_enablestate_t_max ENABLESTATE_ENABLED   
+
+// Variable number
+typedef enum {
+    VARIABLE_NUMBER_ALL_MON_DUL_BOARDTEMP = 1,
+    VARIABLE_NUMBER_ALL_MON_TEMP2 = 2,
+    VARIABLE_NUMBER_ALL_MON_TEMP1 = 3,
+    VARIABLE_NUMBER_ALL_MON_VEOC_RTN_I = 4,
+    VARIABLE_NUMBER_ALL_MON_VEOC_FWR_I = 5,
+    VARIABLE_NUMBER_ALL_MON_HYDRO_I = 6,
+    VARIABLE_NUMBER_ALL_MON_INPUT_V = 7,
+    VARIABLE_NUMBER_ALL_MON_LBL_I = 8,
+    VARIABLE_NUMBER_ALL_MON_GLRA_I = 9,
+    VARIABLE_NUMBER_ALL_MON_GLRB_I = 10,
+    VARIABLE_NUMBER_ALL_MON_PWB_I = 11,
+    VARIABLE_NUMBER_ALL_FLAG_DUL_ALARMPOS1 = 12,
+    VARIABLE_NUMBER_ALL_FLAG_DUL_ALARMPOS2 = 13,
+    VARIABLE_NUMBER_ALL_FLAG_DUL_ALARMNEG1 = 14,
+    VARIABLE_NUMBER_ALL_FLAG_DUL_ALARMNEG2 = 15,
+    VARIABLE_NUMBER_ALL_FLAG_HYDRO_PWR_FAULT = 16,
+    VARIABLE_NUMBER_ALL_FLAG_LBL_PWR_FAULT = 17,
+    VARIABLE_NUMBER_ALL_FLAG_GLRA_FAULT = 18,
+    VARIABLE_NUMBER_ALL_FLAG_GLRB_FAULT = 19,
+    VARIABLE_NUMBER_ALL_FLAG_POWERBOARD_FAULT = 20,
+    VARIABLE_NUMBER_ALL_FLAG_GLRA_GOOD = 21,
+    VARIABLE_NUMBER_ALL_FLAG_GLRB_GOOD = 22,
+    VARIABLE_NUMBER_ALL_FLAG_POWERBOARD_GOOD = 23,
+    VARIABLE_NUMBER_ALL_ALL_VARIABLES = 24
+} enum_variable_number_all_t;
+
+#define enum_variable_number_all_t_min VARIABLE_NUMBER_ALL_MON_DUL_BOARDTEMP
+#define enum_variable_number_all_t_max VARIABLE_NUMBER_ALL_ALL_VARIABLES   
+
+// FLAG_DUL_ALARMPOS2 status
+typedef enum {
+    FLAG_DUL_ALARMPOS2_STATE_LOW = 0,
+    FLAG_DUL_ALARMPOS2_STATE_HIGH = 1
+} enum_flag_dul_alarmpos2_state_t;
+
+#define enum_flag_dul_alarmpos2_state_t_min FLAG_DUL_ALARMPOS2_STATE_LOW
+#define enum_flag_dul_alarmpos2_state_t_max FLAG_DUL_ALARMPOS2_STATE_HIGH   
+
+// FLAG_HYDRO_PWR_FAULT status
+typedef enum {
+    FLAG_HYDRO_PWR_FAULT_STATE_LOW = 0,
+    FLAG_HYDRO_PWR_FAULT_STATE_HIGH = 1
+} enum_flag_hydro_pwr_fault_state_t;
+
+#define enum_flag_hydro_pwr_fault_state_t_min FLAG_HYDRO_PWR_FAULT_STATE_LOW
+#define enum_flag_hydro_pwr_fault_state_t_max FLAG_HYDRO_PWR_FAULT_STATE_HIGH   
+
+// Variable number
+typedef enum {
+    VARIABLE_NUMBER_MON_DUL_BOARDTEMP = 1,
+    VARIABLE_NUMBER_MON_TEMP2 = 2,
+    VARIABLE_NUMBER_MON_TEMP1 = 3,
+    VARIABLE_NUMBER_MON_VEOC_RTN_I = 4,
+    VARIABLE_NUMBER_MON_VEOC_FWR_I = 5,
+    VARIABLE_NUMBER_MON_HYDRO_I = 6,
+    VARIABLE_NUMBER_MON_INPUT_V = 7,
+    VARIABLE_NUMBER_MON_LBL_I = 8,
+    VARIABLE_NUMBER_MON_GLRA_I = 9,
+    VARIABLE_NUMBER_MON_GLRB_I = 10,
+    VARIABLE_NUMBER_MON_PWB_I = 11,
+    VARIABLE_NUMBER_FLAG_DUL_ALARMPOS1 = 12,
+    VARIABLE_NUMBER_FLAG_DUL_ALARMPOS2 = 13,
+    VARIABLE_NUMBER_FLAG_DUL_ALARMNEG1 = 14,
+    VARIABLE_NUMBER_FLAG_DUL_ALARMNEG2 = 15,
+    VARIABLE_NUMBER_FLAG_HYDRO_PWR_FAULT = 16,
+    VARIABLE_NUMBER_FLAG_LBL_PWR_FAULT = 17,
+    VARIABLE_NUMBER_FLAG_GLRA_FAULT = 18,
+    VARIABLE_NUMBER_FLAG_GLRB_FAULT = 19,
+    VARIABLE_NUMBER_FLAG_POWERBOARD_FAULT = 20,
+    VARIABLE_NUMBER_FLAG_GLRA_GOOD = 21,
+    VARIABLE_NUMBER_FLAG_GLRB_GOOD = 22,
+    VARIABLE_NUMBER_FLAG_POWERBOARD_GOOD = 23
+} enum_variable_number_t;
+
+#define enum_variable_number_t_min VARIABLE_NUMBER_MON_DUL_BOARDTEMP
+#define enum_variable_number_t_max VARIABLE_NUMBER_FLAG_POWERBOARD_GOOD   
+
+// Enable state
+typedef enum {
+    ENABLESTATE_NC_DISABLED = 0,
+    ENABLESTATE_NC_ENABLED = 1,
+    ENABLESTATE_NC_NO_CHANGE = 2
+} enum_enablestate_nc_t;
+
+#define enum_enablestate_nc_t_min ENABLESTATE_NC_DISABLED
+#define enum_enablestate_nc_t_max ENABLESTATE_NC_NO_CHANGE   
+
+// Alarm number
+typedef enum {
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_DUL_BOARDTEMP = 1,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_DUL_BOARDTEMP = 2,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_TEMP2 = 3,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_TEMP2 = 4,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_TEMP1 = 5,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_TEMP1 = 6,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_VEOC_RTN_I = 7,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_VEOC_RTN_I = 8,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_VEOC_FWR_I = 9,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_VEOC_FWR_I = 10,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_HYDRO_I = 11,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_HYDRO_I = 12,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_INPUT_V = 13,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_INPUT_V = 14,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_LBL_I = 15,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_LBL_I = 16,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_GLRA_I = 17,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_GLRA_I = 18,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_GLRB_I = 19,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_GLRB_I = 20,
+    ALARM_NUMBER_EXT_ALARM_SLOW_MON_PWB_I = 21,
+    ALARM_NUMBER_EXT_ALARM_FAST_MON_PWB_I = 22,
+    ALARM_NUMBER_EXT_ALARM_FLAG_DUL_ALARMPOS1 = 23,
+    ALARM_NUMBER_EXT_ALARM_FLAG_DUL_ALARMPOS2 = 24,
+    ALARM_NUMBER_EXT_ALARM_FLAG_DUL_ALARMNEG1 = 25,
+    ALARM_NUMBER_EXT_ALARM_FLAG_DUL_ALARMNEG2 = 26,
+    ALARM_NUMBER_EXT_ALARM_FLAG_HYDRO_PWR_FAULT = 27,
+    ALARM_NUMBER_EXT_ALARM_FLAG_LBL_PWR_FAULT = 28,
+    ALARM_NUMBER_EXT_ALARM_FLAG_GLRA_FAULT = 29,
+    ALARM_NUMBER_EXT_ALARM_FLAG_GLRB_FAULT = 30,
+    ALARM_NUMBER_EXT_ALARM_FLAG_POWERBOARD_FAULT = 31,
+    ALARM_NUMBER_EXT_ALARM_FLAG_GLRA_GOOD = 32,
+    ALARM_NUMBER_EXT_ALARM_FLAG_GLRB_GOOD = 33,
+    ALARM_NUMBER_EXT_ALARM_FLAG_POWERBOARD_GOOD = 34,
+    ALARM_NUMBER_EXT_ALARMS_ALL_ORED = 35
+} enum_alarm_number_ext_t;
+
+#define enum_alarm_number_ext_t_min ALARM_NUMBER_EXT_ALARM_SLOW_MON_DUL_BOARDTEMP
+#define enum_alarm_number_ext_t_max ALARM_NUMBER_EXT_ALARMS_ALL_ORED   
+
+// Alarm number
+typedef enum {
+    ALARM_NUMBER_ALARM_SLOW_MON_DUL_BOARDTEMP = 1,
+    ALARM_NUMBER_ALARM_FAST_MON_DUL_BOARDTEMP = 2,
+    ALARM_NUMBER_ALARM_SLOW_MON_TEMP2 = 3,
+    ALARM_NUMBER_ALARM_FAST_MON_TEMP2 = 4,
+    ALARM_NUMBER_ALARM_SLOW_MON_TEMP1 = 5,
+    ALARM_NUMBER_ALARM_FAST_MON_TEMP1 = 6,
+    ALARM_NUMBER_ALARM_SLOW_MON_VEOC_RTN_I = 7,
+    ALARM_NUMBER_ALARM_FAST_MON_VEOC_RTN_I = 8,
+    ALARM_NUMBER_ALARM_SLOW_MON_VEOC_FWR_I = 9,
+    ALARM_NUMBER_ALARM_FAST_MON_VEOC_FWR_I = 10,
+    ALARM_NUMBER_ALARM_SLOW_MON_HYDRO_I = 11,
+    ALARM_NUMBER_ALARM_FAST_MON_HYDRO_I = 12,
+    ALARM_NUMBER_ALARM_SLOW_MON_INPUT_V = 13,
+    ALARM_NUMBER_ALARM_FAST_MON_INPUT_V = 14,
+    ALARM_NUMBER_ALARM_SLOW_MON_LBL_I = 15,
+    ALARM_NUMBER_ALARM_FAST_MON_LBL_I = 16,
+    ALARM_NUMBER_ALARM_SLOW_MON_GLRA_I = 17,
+    ALARM_NUMBER_ALARM_FAST_MON_GLRA_I = 18,
+    ALARM_NUMBER_ALARM_SLOW_MON_GLRB_I = 19,
+    ALARM_NUMBER_ALARM_FAST_MON_GLRB_I = 20,
+    ALARM_NUMBER_ALARM_SLOW_MON_PWB_I = 21,
+    ALARM_NUMBER_ALARM_FAST_MON_PWB_I = 22,
+    ALARM_NUMBER_ALARM_FLAG_DUL_ALARMPOS1 = 23,
+    ALARM_NUMBER_ALARM_FLAG_DUL_ALARMPOS2 = 24,
+    ALARM_NUMBER_ALARM_FLAG_DUL_ALARMNEG1 = 25,
+    ALARM_NUMBER_ALARM_FLAG_DUL_ALARMNEG2 = 26,
+    ALARM_NUMBER_ALARM_FLAG_HYDRO_PWR_FAULT = 27,
+    ALARM_NUMBER_ALARM_FLAG_LBL_PWR_FAULT = 28,
+    ALARM_NUMBER_ALARM_FLAG_GLRA_FAULT = 29,
+    ALARM_NUMBER_ALARM_FLAG_GLRB_FAULT = 30,
+    ALARM_NUMBER_ALARM_FLAG_POWERBOARD_FAULT = 31,
+    ALARM_NUMBER_ALARM_FLAG_GLRA_GOOD = 32,
+    ALARM_NUMBER_ALARM_FLAG_GLRB_GOOD = 33,
+    ALARM_NUMBER_ALARM_FLAG_POWERBOARD_GOOD = 34
+} enum_alarm_number_t;
+
+#define enum_alarm_number_t_min ALARM_NUMBER_ALARM_SLOW_MON_DUL_BOARDTEMP
+#define enum_alarm_number_t_max ALARM_NUMBER_ALARM_FLAG_POWERBOARD_GOOD   
+
+// Switch state
+typedef enum {
+    SWITCHSTATE_NC_OPEN = 0,
+    SWITCHSTATE_NC_CLOSED = 1,
+    SWITCHSTATE_NC_NO_CHANGE = 2
+} enum_switchstate_nc_t;
+
+#define enum_switchstate_nc_t_min SWITCHSTATE_NC_OPEN
+#define enum_switchstate_nc_t_max SWITCHSTATE_NC_NO_CHANGE   
+
+// Alarm number
+typedef enum {
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_DUL_BOARDTEMP = 1,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_DUL_BOARDTEMP = 2,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_TEMP2 = 3,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_TEMP2 = 4,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_TEMP1 = 5,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_TEMP1 = 6,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_VEOC_RTN_I = 7,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_VEOC_RTN_I = 8,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_VEOC_FWR_I = 9,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_VEOC_FWR_I = 10,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_HYDRO_I = 11,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_HYDRO_I = 12,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_INPUT_V = 13,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_INPUT_V = 14,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_LBL_I = 15,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_LBL_I = 16,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_GLRA_I = 17,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_GLRA_I = 18,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_GLRB_I = 19,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_GLRB_I = 20,
+    ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_PWB_I = 21,
+    ALARM_NUMBER_ANALOG_ALARM_FAST_MON_PWB_I = 22
+} enum_alarm_number_analog_t;
+
+#define enum_alarm_number_analog_t_min ALARM_NUMBER_ANALOG_ALARM_SLOW_MON_DUL_BOARDTEMP
+#define enum_alarm_number_analog_t_max ALARM_NUMBER_ANALOG_ALARM_FAST_MON_PWB_I   
+
+// FLAG_GLRA_FAULT status
+typedef enum {
+    FLAG_GLRA_FAULT_STATE_LOW = 0,
+    FLAG_GLRA_FAULT_STATE_HIGH = 1
+} enum_flag_glra_fault_state_t;
+
+#define enum_flag_glra_fault_state_t_min FLAG_GLRA_FAULT_STATE_LOW
+#define enum_flag_glra_fault_state_t_max FLAG_GLRA_FAULT_STATE_HIGH   
+
+// FLAG_GLRB_FAULT status
+typedef enum {
+    FLAG_GLRB_FAULT_STATE_LOW = 0,
+    FLAG_GLRB_FAULT_STATE_HIGH = 1
+} enum_flag_glrb_fault_state_t;
+
+#define enum_flag_glrb_fault_state_t_min FLAG_GLRB_FAULT_STATE_LOW
+#define enum_flag_glrb_fault_state_t_max FLAG_GLRB_FAULT_STATE_HIGH   
+
+// Fired state
+typedef enum {
+    FIREDSTATE_NO = 0,
+    FIREDSTATE_YES = 1
+} enum_firedstate_t;
+
+#define enum_firedstate_t_min FIREDSTATE_NO
+#define enum_firedstate_t_max FIREDSTATE_YES   
+
+// FLAG_POWERBOARD_GOOD status
+typedef enum {
+    FLAG_POWERBOARD_GOOD_STATE_LOW = 0,
+    FLAG_POWERBOARD_GOOD_STATE_HIGH = 1
+} enum_flag_powerboard_good_state_t;
+
+#define enum_flag_powerboard_good_state_t_min FLAG_POWERBOARD_GOOD_STATE_LOW
+#define enum_flag_powerboard_good_state_t_max FLAG_POWERBOARD_GOOD_STATE_HIGH   
+
+// FLAG_GLRA_GOOD status
+typedef enum {
+    FLAG_GLRA_GOOD_STATE_LOW = 0,
+    FLAG_GLRA_GOOD_STATE_HIGH = 1
+} enum_flag_glra_good_state_t;
+
+#define enum_flag_glra_good_state_t_min FLAG_GLRA_GOOD_STATE_LOW
+#define enum_flag_glra_good_state_t_max FLAG_GLRA_GOOD_STATE_HIGH   
+
+// FLAG_DUL_ALARMNEG1 status
+typedef enum {
+    FLAG_DUL_ALARMNEG1_STATE_LOW = 0,
+    FLAG_DUL_ALARMNEG1_STATE_HIGH = 1
+} enum_flag_dul_alarmneg1_state_t;
+
+#define enum_flag_dul_alarmneg1_state_t_min FLAG_DUL_ALARMNEG1_STATE_LOW
+#define enum_flag_dul_alarmneg1_state_t_max FLAG_DUL_ALARMNEG1_STATE_HIGH   
+
+// FLAG_DUL_ALARMNEG2 status
+typedef enum {
+    FLAG_DUL_ALARMNEG2_STATE_LOW = 0,
+    FLAG_DUL_ALARMNEG2_STATE_HIGH = 1
+} enum_flag_dul_alarmneg2_state_t;
+
+#define enum_flag_dul_alarmneg2_state_t_min FLAG_DUL_ALARMNEG2_STATE_LOW
+#define enum_flag_dul_alarmneg2_state_t_max FLAG_DUL_ALARMNEG2_STATE_HIGH   
+
+// Status
+typedef enum {
+    PINSTATE_LOW = 0,
+    PINSTATE_HIGH = 1
+} enum_pinstate_t;
+
+#define enum_pinstate_t_min PINSTATE_LOW
+#define enum_pinstate_t_max PINSTATE_HIGH   
+
+// User pin number
+typedef enum {
+    PINNUM_SWITCH_LED_D9 = 1,
+    PINNUM_SWITCH_LED_D10 = 2
+} enum_pinnum_t;
+
+#define enum_pinnum_t_min PINNUM_SWITCH_LED_D9
+#define enum_pinnum_t_max PINNUM_SWITCH_LED_D10   
+
+// Switch number
+typedef enum {
+    SWITCHNUM_SWITCH_VEOC_RETURN = 1,
+    SWITCHNUM_SWITCH_VEOC_DIRECT = 2,
+    SWITCHNUM_SWITCH_12V = 3,
+    SWITCHNUM_SWITCH_LBL = 4,
+    SWITCHNUM_SWITCH_HYDRO = 5,
+    SWITCHNUM_SWITCH_GLRA = 6,
+    SWITCHNUM_SWITCH_GLRB = 7,
+    SWITCHNUM_SWITCH_PWB = 8
+} enum_switchnum_t;
+
+#define enum_switchnum_t_min SWITCHNUM_SWITCH_VEOC_RETURN
+#define enum_switchnum_t_max SWITCHNUM_SWITCH_PWB   
+
+// FLAG_GLRB_GOOD status
+typedef enum {
+    FLAG_GLRB_GOOD_STATE_LOW = 0,
+    FLAG_GLRB_GOOD_STATE_HIGH = 1
+} enum_flag_glrb_good_state_t;
+
+#define enum_flag_glrb_good_state_t_min FLAG_GLRB_GOOD_STATE_LOW
+#define enum_flag_glrb_good_state_t_max FLAG_GLRB_GOOD_STATE_HIGH   
+
+// Variable averaging prescaler
+typedef enum {
+    AVERAGINGPRESCALER_1 = 1,
+    AVERAGINGPRESCALER_2 = 2,
+    AVERAGINGPRESCALER_3 = 3,
+    AVERAGINGPRESCALER_4 = 4,
+    AVERAGINGPRESCALER_5 = 5,
+    AVERAGINGPRESCALER_6 = 6,
+    AVERAGINGPRESCALER_7 = 7,
+    AVERAGINGPRESCALER_8 = 8,
+    AVERAGINGPRESCALER_9 = 9,
+    AVERAGINGPRESCALER_10 = 10,
+    AVERAGINGPRESCALER_11 = 11,
+    AVERAGINGPRESCALER_12 = 12,
+    AVERAGINGPRESCALER_13 = 13,
+    AVERAGINGPRESCALER_14 = 14
+} enum_averagingprescaler_t;
+
+#define enum_averagingprescaler_t_min AVERAGINGPRESCALER_1
+#define enum_averagingprescaler_t_max AVERAGINGPRESCALER_14   
+
+// Switch state
+typedef enum {
+    SWITCHSTATE_OPEN = 0,
+    SWITCHSTATE_CLOSED = 1
+} enum_switchstate_t;
+
+#define enum_switchstate_t_min SWITCHSTATE_OPEN
+#define enum_switchstate_t_max SWITCHSTATE_CLOSED   
+
+// Alarm number
+typedef enum {
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_DUL_BOARDTEMP = 1,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_DUL_BOARDTEMP = 2,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_TEMP2 = 3,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_TEMP2 = 4,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_TEMP1 = 5,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_TEMP1 = 6,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_VEOC_RTN_I = 7,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_VEOC_RTN_I = 8,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_VEOC_FWR_I = 9,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_VEOC_FWR_I = 10,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_HYDRO_I = 11,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_HYDRO_I = 12,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_INPUT_V = 13,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_INPUT_V = 14,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_LBL_I = 15,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_LBL_I = 16,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_GLRA_I = 17,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_GLRA_I = 18,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_GLRB_I = 19,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_GLRB_I = 20,
+    ALARM_NUMBER_ALL_ALARM_SLOW_MON_PWB_I = 21,
+    ALARM_NUMBER_ALL_ALARM_FAST_MON_PWB_I = 22,
+    ALARM_NUMBER_ALL_ALARM_FLAG_DUL_ALARMPOS1 = 23,
+    ALARM_NUMBER_ALL_ALARM_FLAG_DUL_ALARMPOS2 = 24,
+    ALARM_NUMBER_ALL_ALARM_FLAG_DUL_ALARMNEG1 = 25,
+    ALARM_NUMBER_ALL_ALARM_FLAG_DUL_ALARMNEG2 = 26,
+    ALARM_NUMBER_ALL_ALARM_FLAG_HYDRO_PWR_FAULT = 27,
+    ALARM_NUMBER_ALL_ALARM_FLAG_LBL_PWR_FAULT = 28,
+    ALARM_NUMBER_ALL_ALARM_FLAG_GLRA_FAULT = 29,
+    ALARM_NUMBER_ALL_ALARM_FLAG_GLRB_FAULT = 30,
+    ALARM_NUMBER_ALL_ALARM_FLAG_POWERBOARD_FAULT = 31,
+    ALARM_NUMBER_ALL_ALARM_FLAG_GLRA_GOOD = 32,
+    ALARM_NUMBER_ALL_ALARM_FLAG_GLRB_GOOD = 33,
+    ALARM_NUMBER_ALL_ALARM_FLAG_POWERBOARD_GOOD = 34,
+    ALARM_NUMBER_ALL_ALARMS_ALL = 35
+} enum_alarm_number_all_t;
+
+#define enum_alarm_number_all_t_min ALARM_NUMBER_ALL_ALARM_SLOW_MON_DUL_BOARDTEMP
+#define enum_alarm_number_all_t_max ALARM_NUMBER_ALL_ALARMS_ALL   
+
+// FLAG_POWERBOARD_FAULT status
+typedef enum {
+    FLAG_POWERBOARD_FAULT_STATE_LOW = 0,
+    FLAG_POWERBOARD_FAULT_STATE_HIGH = 1
+} enum_flag_powerboard_fault_state_t;
+
+#define enum_flag_powerboard_fault_state_t_min FLAG_POWERBOARD_FAULT_STATE_LOW
+#define enum_flag_powerboard_fault_state_t_max FLAG_POWERBOARD_FAULT_STATE_HIGH   
+
+
+#endif // _AUTOGENERATED_DATATYPES_H
diff --git a/micro/BPD-V01-FIRMWARE.X/generated/sources/variables.c b/micro/BPD-V01-FIRMWARE.X/generated/sources/variables.c
new file mode 100644
index 0000000..0f15ea9
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/generated/sources/variables.c
@@ -0,0 +1,899 @@
+// Auto-generated file: variables.c
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+#include "variables.h"
+# include "../../configuration.h"
+
+analog_variable_t analog_variables[ANALOG_VARIABLES_COUNT] = {
+// Variable: MON_DUL_BOARDTEMP (DUL board temperature sensor)
+{
+    .channel = 0,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 35200, // 60.0 C
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 35200, // 60.0 C
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_DUL_BOARDTEMP
+    }
+},// Variable: MON_TEMP2 (VICOR2 Heatsink (connector J12) temperature sensor signal acquisition)
+{
+    .channel = 1,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 28343, // 60.0 C
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 28343, // 60.0 C
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_TEMP2
+    }
+},// Variable: MON_TEMP1 (VICOR1 Heatsink (connector J1) temperature sensor signal acquisition )
+{
+    .channel = 2,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 28343, // 60.0 C
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 28343, // 60.0 C
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_TEMP1
+    }
+},// Variable: MON_VEOC_RTN_I (DU backbone return current sensor signal acquisition )
+{
+    .channel = 3,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = true,
+            .threshold = 63760, // 2.5 A
+            .timeout = 1, // 5.0 ms (6.6 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = true,
+            .threshold = 46960, // 1.5 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_VEOC_RTN_I
+    }
+},// Variable: MON_VEOC_FWR_I (DU backbone forward current sensor signal acquisition )
+{
+    .channel = 4,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = true,
+            .threshold = 62080, // 2.4 A
+            .timeout = 1, // 5.0 ms (6.6 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = true,
+            .threshold = 45280, // 1.4 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_VEOC_FWR_I
+    }
+},// Variable: MON_HYDRO_I (HYDRO current sensor signal acquisition )
+{
+    .channel = 5,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 63000, // 0.35 A
+            .timeout = 8, // 50.0 ms (52.8 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 27000, // 0.15 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_HYDRO_I
+    }
+},// Variable: MON_INPUT_V (Main Input Line voltage sensor signal acquisition )
+{
+    .channel = 6,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 32400, // 405.0 V
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 32400, // 405.0 V
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_INPUT_V
+    }
+},// Variable: MON_LBL_I (LBL current sensor signal acquisition )
+{
+    .channel = 7,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 61714, // 0.6 A
+            .timeout = 8, // 50.0 ms (52.8 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 51429, // 0.5 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_LBL_I
+    }
+},// Variable: MON_GLRA_I (GLENAIR-A current sensor signal acquisition)
+{
+    .channel = 8,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 65208, // 6.0 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 65208, // 6.0 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_GLRA_I
+    }
+},// Variable: MON_GLRB_I (GLENAIR-B current sensor signal acquisition)
+{
+    .channel = 9,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 65208, // 6.0 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 65208, // 6.0 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_GLRB_I
+    }
+},// Variable: MON_PWB_I (POWER BOARD current sensor signal acquisition)
+{
+    .channel = 10,
+    .value = 0,
+    .sum_curr = 0,
+    .sum_last = 0,
+    .sum_counter = 0,
+    .offset = 0,
+    .value_max = 0,
+    .alarms = {
+        .fast = {
+            .enabled = false,
+            .threshold = 39877, // 1.8 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .slow = {
+            .enabled = false,
+            .threshold = 39877, // 1.8 A
+            .timeout = 15, // 100.0 ms (99.0 ms real)
+            .timeout_counter = 0,
+            .timeout_counter_max = 0,
+            .firecount = 0
+        },
+        .callback = alarm_MON_PWB_I
+    }
+}};
+
+#include "../../mcc_generated_files/mcc.h"
+
+digital_variable_t digital_variables[DIGITAL_VARIABLES_COUNT] = {
+// Variable: FLAG_DUL_ALARMPOS1 (DUL current limiting on VEOC direct alarm 1)
+{
+    .readfunc = ioread_DIN_ALRMPOS1,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_DUL_ALARMPOS1_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_DUL_ALARMPOS1
+    }
+},// Variable: FLAG_DUL_ALARMPOS2 (DUL current limiting on VEOC direct alarm 2)
+{
+    .readfunc = ioread_DIN_ALRMPOS2,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_DUL_ALARMPOS2_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_DUL_ALARMPOS2
+    }
+},// Variable: FLAG_DUL_ALARMNEG1 (DUL current limiting on VEOC return alarm 1)
+{
+    .readfunc = ioread_DIN_ALRMNEG1,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_DUL_ALARMNEG1_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_DUL_ALARMNEG1
+    }
+},// Variable: FLAG_DUL_ALARMNEG2 (DUL current limiting on VEOC return alarm 2)
+{
+    .readfunc = ioread_DIN_ALRMNEG2,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_DUL_ALARMNEG2_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_DUL_ALARMNEG2
+    }
+},// Variable: FLAG_HYDRO_PWR_FAULT (Fault status acquisition of 12V ISO HYDRO power line)
+{
+    .readfunc = ioread_DIN_HYDRO_PWR_FLT,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_HYDRO_PWR_FAULT_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_HYDRO_PWR_FAULT
+    }
+},// Variable: FLAG_LBL_PWR_FAULT (Fault status acquisition of 12V ISO LBL power line)
+{
+    .readfunc = ioread_DIN_LBL_PWR_FLT,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_LBL_PWR_FAULT_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_LBL_PWR_FAULT
+    }
+},// Variable: FLAG_GLRA_FAULT (Fault status acquisition of 12V GLENAIR-A power line)
+{
+    .readfunc = ioread_DIN_GLR_A_FLT,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_GLRA_FAULT_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_GLRA_FAULT
+    }
+},// Variable: FLAG_GLRB_FAULT (Fault status acquisition of 12V GLENAIR-B power line)
+{
+    .readfunc = ioread_DIN_GLR_B_FLT,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_GLRB_FAULT_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_GLRB_FAULT
+    }
+},// Variable: FLAG_POWERBOARD_FAULT (Fault status acquisition of 12V POWER BOARD power line)
+{
+    .readfunc = ioread_DIN_PWB_FLT,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_POWERBOARD_FAULT_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_POWERBOARD_FAULT
+    }
+},// Variable: FLAG_GLRA_GOOD (Power good status acquisition of 12V GLENAIR-A power line)
+{
+    .readfunc = ioread_DIN_GLR_A_PG,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_GLRA_GOOD_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_GLRA_GOOD
+    }
+},// Variable: FLAG_GLRB_GOOD (Power good status acquisition of 12V GLENAIR-B power line)
+{
+    .readfunc = ioread_DIN_GLR_B_PG,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_GLRB_GOOD_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_GLRB_GOOD
+    }
+},// Variable: FLAG_POWERBOARD_GOOD (Power good status acquisition of 12V POWER BOARD power line)
+{
+    .readfunc = ioread_DIN_PWB_PG,
+    .value = 0,
+    .value_max = 0,
+    .alarm = {
+        .enabled = DEFAULT_FLAG_POWERBOARD_GOOD_ENABLED,
+        .timeout = 19, // 1.5 ms (1.52 ms real)
+        .timeout_counter = 0,
+        .timeout_counter_max = 0,
+        .firecount = 0,        
+        .callback = alarm_FLAG_POWERBOARD_GOOD
+    }
+}};
+
+// IO read function for variable FLAG_DUL_ALARMPOS1
+digital_value_t ioread_DIN_ALRMPOS1(void) {
+    return (digital_value_t)(0 != DIN_ALRMPOS1_GetValue());
+}
+
+
+// IO read function for variable FLAG_DUL_ALARMPOS2
+digital_value_t ioread_DIN_ALRMPOS2(void) {
+    return (digital_value_t)(0 != DIN_ALRMPOS2_GetValue());
+}
+
+
+// IO read function for variable FLAG_DUL_ALARMNEG1
+digital_value_t ioread_DIN_ALRMNEG1(void) {
+    return (digital_value_t)(0 != DIN_ALRMNEG1_GetValue());
+}
+
+
+// IO read function for variable FLAG_DUL_ALARMNEG2
+digital_value_t ioread_DIN_ALRMNEG2(void) {
+    return (digital_value_t)(0 != DIN_ALRMNEG2_GetValue());
+}
+
+
+// IO read function for variable FLAG_HYDRO_PWR_FAULT
+digital_value_t ioread_DIN_HYDRO_PWR_FLT(void) {
+    return (digital_value_t)(0 != DIN_HYDRO_PWR_FLT_GetValue());
+}
+
+
+// IO read function for variable FLAG_LBL_PWR_FAULT
+digital_value_t ioread_DIN_LBL_PWR_FLT(void) {
+    return (digital_value_t)(0 != DIN_LBL_PWR_FLT_GetValue());
+}
+
+
+// IO read function for variable FLAG_GLRA_FAULT
+digital_value_t ioread_DIN_GLR_A_FLT(void) {
+    return (digital_value_t)(0 != DIN_GLR_A_FLT_GetValue());
+}
+
+
+// IO read function for variable FLAG_GLRB_FAULT
+digital_value_t ioread_DIN_GLR_B_FLT(void) {
+    return (digital_value_t)(0 != DIN_GLR_B_FLT_GetValue());
+}
+
+
+// IO read function for variable FLAG_POWERBOARD_FAULT
+digital_value_t ioread_DIN_PWB_FLT(void) {
+    return (digital_value_t)(0 != DIN_PWB_FLT_GetValue());
+}
+
+
+// IO read function for variable FLAG_GLRA_GOOD
+digital_value_t ioread_DIN_GLR_A_PG(void) {
+    return (digital_value_t)(0 != DIN_GLR_A_PG_GetValue());
+}
+
+
+// IO read function for variable FLAG_GLRB_GOOD
+digital_value_t ioread_DIN_GLR_B_PG(void) {
+    return (digital_value_t)(0 != DIN_GLR_B_PG_GetValue());
+}
+
+
+// IO read function for variable FLAG_POWERBOARD_GOOD
+digital_value_t ioread_DIN_PWB_PG(void) {
+    return (digital_value_t)(0 != DIN_PWB_PG_GetValue());
+}
+
+
+switches_t switches = {
+    .state_SWITCH_VEOC_RETURN = SWITCHSTATE_OPEN,
+    .state_SWITCH_VEOC_DIRECT = SWITCHSTATE_OPEN,
+    .state_SWITCH_12V = SWITCHSTATE_OPEN,
+    .state_SWITCH_LBL = SWITCHSTATE_OPEN,
+    .state_SWITCH_HYDRO = SWITCHSTATE_OPEN,
+    .state_SWITCH_GLRA = SWITCHSTATE_OPEN,
+    .state_SWITCH_GLRB = SWITCHSTATE_OPEN,
+    .state_SWITCH_PWB = SWITCHSTATE_OPEN
+};
+
+
+// close switch SWITCH_VEOC_RETURN and update switch structure
+void switch_SWITCH_VEOC_RETURN_set_closed(void) {
+    DOUT_375V_RTN_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_VEOC_RETURN = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_VEOC_RETURN and update switch structure
+void switch_SWITCH_VEOC_RETURN_set_open(void) {
+    DOUT_375V_RTN_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_VEOC_RETURN = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_VEOC_RETURN and update switch structure
+void switch_SWITCH_VEOC_RETURN_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_VEOC_RETURN_set_closed();
+    }else{
+        switch_SWITCH_VEOC_RETURN_set_open();
+    }
+}
+
+// get switch SWITCH_VEOC_RETURN current status
+enum_switchstate_t switch_SWITCH_VEOC_RETURN_get(void) {
+    return switches.state_SWITCH_VEOC_RETURN;
+} 
+
+
+// close switch SWITCH_VEOC_DIRECT and update switch structure
+void switch_SWITCH_VEOC_DIRECT_set_closed(void) {
+    DOUT_375V_FWR_SWTCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_VEOC_DIRECT = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_VEOC_DIRECT and update switch structure
+void switch_SWITCH_VEOC_DIRECT_set_open(void) {
+    DOUT_375V_FWR_SWTCH_ON_OFF_SetLow();
+    switches.state_SWITCH_VEOC_DIRECT = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_VEOC_DIRECT and update switch structure
+void switch_SWITCH_VEOC_DIRECT_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_VEOC_DIRECT_set_closed();
+    }else{
+        switch_SWITCH_VEOC_DIRECT_set_open();
+    }
+}
+
+// get switch SWITCH_VEOC_DIRECT current status
+enum_switchstate_t switch_SWITCH_VEOC_DIRECT_get(void) {
+    return switches.state_SWITCH_VEOC_DIRECT;
+} 
+
+
+// close switch SWITCH_12V and update switch structure
+void switch_SWITCH_12V_set_closed(void) {
+    DOUT_ISO_12V_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_12V = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_12V and update switch structure
+void switch_SWITCH_12V_set_open(void) {
+    DOUT_ISO_12V_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_12V = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_12V and update switch structure
+void switch_SWITCH_12V_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_12V_set_closed();
+    }else{
+        switch_SWITCH_12V_set_open();
+    }
+}
+
+// get switch SWITCH_12V current status
+enum_switchstate_t switch_SWITCH_12V_get(void) {
+    return switches.state_SWITCH_12V;
+} 
+
+
+// close switch SWITCH_LBL and update switch structure
+void switch_SWITCH_LBL_set_closed(void) {
+    DOUT_LBL_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_LBL = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_LBL and update switch structure
+void switch_SWITCH_LBL_set_open(void) {
+    DOUT_LBL_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_LBL = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_LBL and update switch structure
+void switch_SWITCH_LBL_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_LBL_set_closed();
+    }else{
+        switch_SWITCH_LBL_set_open();
+    }
+}
+
+// get switch SWITCH_LBL current status
+enum_switchstate_t switch_SWITCH_LBL_get(void) {
+    return switches.state_SWITCH_LBL;
+} 
+
+
+// close switch SWITCH_HYDRO and update switch structure
+void switch_SWITCH_HYDRO_set_closed(void) {
+    DOUT_HYDRO_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_HYDRO = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_HYDRO and update switch structure
+void switch_SWITCH_HYDRO_set_open(void) {
+    DOUT_HYDRO_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_HYDRO = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_HYDRO and update switch structure
+void switch_SWITCH_HYDRO_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_HYDRO_set_closed();
+    }else{
+        switch_SWITCH_HYDRO_set_open();
+    }
+}
+
+// get switch SWITCH_HYDRO current status
+enum_switchstate_t switch_SWITCH_HYDRO_get(void) {
+    return switches.state_SWITCH_HYDRO;
+} 
+
+
+// close switch SWITCH_GLRA and update switch structure
+void switch_SWITCH_GLRA_set_closed(void) {
+    DOUT_GLR_A_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_GLRA = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_GLRA and update switch structure
+void switch_SWITCH_GLRA_set_open(void) {
+    DOUT_GLR_A_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_GLRA = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_GLRA and update switch structure
+void switch_SWITCH_GLRA_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_GLRA_set_closed();
+    }else{
+        switch_SWITCH_GLRA_set_open();
+    }
+}
+
+// get switch SWITCH_GLRA current status
+enum_switchstate_t switch_SWITCH_GLRA_get(void) {
+    return switches.state_SWITCH_GLRA;
+} 
+
+
+// close switch SWITCH_GLRB and update switch structure
+void switch_SWITCH_GLRB_set_closed(void) {
+    DOUT_GLR_B_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_GLRB = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_GLRB and update switch structure
+void switch_SWITCH_GLRB_set_open(void) {
+    DOUT_GLR_B_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_GLRB = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_GLRB and update switch structure
+void switch_SWITCH_GLRB_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_GLRB_set_closed();
+    }else{
+        switch_SWITCH_GLRB_set_open();
+    }
+}
+
+// get switch SWITCH_GLRB current status
+enum_switchstate_t switch_SWITCH_GLRB_get(void) {
+    return switches.state_SWITCH_GLRB;
+} 
+
+
+// close switch SWITCH_PWB and update switch structure
+void switch_SWITCH_PWB_set_closed(void) {
+    DOUT_PWB_SWITCH_ON_OFF_SetHigh();
+    switches.state_SWITCH_PWB = SWITCHSTATE_CLOSED;
+}
+
+// open switch SWITCH_PWB and update switch structure
+void switch_SWITCH_PWB_set_open(void) {
+    DOUT_PWB_SWITCH_ON_OFF_SetLow();
+    switches.state_SWITCH_PWB = SWITCHSTATE_OPEN;
+}
+
+// set state of switch SWITCH_PWB and update switch structure
+void switch_SWITCH_PWB_set(enum_switchstate_t _state) {
+    if(_state == SWITCHSTATE_CLOSED) {
+        switch_SWITCH_PWB_set_closed();
+    }else{
+        switch_SWITCH_PWB_set_open();
+    }
+}
+
+// get switch SWITCH_PWB current status
+enum_switchstate_t switch_SWITCH_PWB_get(void) {
+    return switches.state_SWITCH_PWB;
+} 
+
+
+// return the switch state set function by switch enum
+switch_state_set_func_t switch_get_function_set_by_enum(enum_switchnum_t _switch_index) {
+    switch(_switch_index) {
+        case SWITCHNUM_SWITCH_VEOC_RETURN: return switch_SWITCH_VEOC_RETURN_set;
+        case SWITCHNUM_SWITCH_VEOC_DIRECT: return switch_SWITCH_VEOC_DIRECT_set;
+        case SWITCHNUM_SWITCH_12V: return switch_SWITCH_12V_set;
+        case SWITCHNUM_SWITCH_LBL: return switch_SWITCH_LBL_set;
+        case SWITCHNUM_SWITCH_HYDRO: return switch_SWITCH_HYDRO_set;
+        case SWITCHNUM_SWITCH_GLRA: return switch_SWITCH_GLRA_set;
+        case SWITCHNUM_SWITCH_GLRB: return switch_SWITCH_GLRB_set;
+        case SWITCHNUM_SWITCH_PWB: return switch_SWITCH_PWB_set;
+    }
+    // this should never be reached
+    error_die_forever();
+    // but, just in case (if we neutralize the error function):
+    return switch_SWITCH_PWB_set;
+}
+
+// return the switch state get function by switch enum
+switch_state_get_func_t switch_get_function_get_by_enum(enum_switchnum_t _switch_index) {
+    switch(_switch_index) {
+        case SWITCHNUM_SWITCH_VEOC_RETURN: return switch_SWITCH_VEOC_RETURN_get;
+        case SWITCHNUM_SWITCH_VEOC_DIRECT: return switch_SWITCH_VEOC_DIRECT_get;
+        case SWITCHNUM_SWITCH_12V: return switch_SWITCH_12V_get;
+        case SWITCHNUM_SWITCH_LBL: return switch_SWITCH_LBL_get;
+        case SWITCHNUM_SWITCH_HYDRO: return switch_SWITCH_HYDRO_get;
+        case SWITCHNUM_SWITCH_GLRA: return switch_SWITCH_GLRA_get;
+        case SWITCHNUM_SWITCH_GLRB: return switch_SWITCH_GLRB_get;
+        case SWITCHNUM_SWITCH_PWB: return switch_SWITCH_PWB_get;
+    }
+    // this should never be reached
+    error_die_forever();
+    // but, just in case (if we neutralize the error function):
+    return switch_SWITCH_PWB_get;
+}
+
+
+userpins_t userpins = {
+    .state_SWITCH_LED_D9 = PINSTATE_LOW,
+    .state_SWITCH_LED_D10 = PINSTATE_LOW
+};
+
+
+// set pin SWITCH_LED_D9 high and update userpins structure
+void userpin_SWITCH_LED_D9_set_high(void) {
+    DOUT_JP1_LED_D9_SetHigh();
+    userpins.state_SWITCH_LED_D9 = PINSTATE_HIGH;
+}
+
+// set pin SWITCH_LED_D9 low and update userpins structure
+void userpin_SWITCH_LED_D9_set_low(void) {
+    DOUT_JP1_LED_D9_SetLow();
+    userpins.state_SWITCH_LED_D9 = PINSTATE_LOW;
+}
+
+// set state of userpin SWITCH_LED_D9 and update userpins structure
+void userpin_SWITCH_LED_D9_set(enum_pinstate_t _state) {
+    if(_state == PINSTATE_HIGH) {
+        userpin_SWITCH_LED_D9_set_high();
+    }else{
+        userpin_SWITCH_LED_D9_set_low();
+    }
+}
+
+// get user pin SWITCH_LED_D9 current status
+enum_pinstate_t userpin_SWITCH_LED_D9_get(void) {
+    return userpins.state_SWITCH_LED_D9;
+} 
+
+
+// set pin SWITCH_LED_D10 high and update userpins structure
+void userpin_SWITCH_LED_D10_set_high(void) {
+    DOUT_JP2_LED_D10_SetHigh();
+    userpins.state_SWITCH_LED_D10 = PINSTATE_HIGH;
+}
+
+// set pin SWITCH_LED_D10 low and update userpins structure
+void userpin_SWITCH_LED_D10_set_low(void) {
+    DOUT_JP2_LED_D10_SetLow();
+    userpins.state_SWITCH_LED_D10 = PINSTATE_LOW;
+}
+
+// set state of userpin SWITCH_LED_D10 and update userpins structure
+void userpin_SWITCH_LED_D10_set(enum_pinstate_t _state) {
+    if(_state == PINSTATE_HIGH) {
+        userpin_SWITCH_LED_D10_set_high();
+    }else{
+        userpin_SWITCH_LED_D10_set_low();
+    }
+}
+
+// get user pin SWITCH_LED_D10 current status
+enum_pinstate_t userpin_SWITCH_LED_D10_get(void) {
+    return userpins.state_SWITCH_LED_D10;
+} 
+
+
+// return the user pin state set function by user pin enum
+userpin_state_set_func_t userpin_get_function_set_by_enum(enum_pinnum_t _userpin_index) {
+    switch(_userpin_index) {
+        case PINNUM_SWITCH_LED_D9: return userpin_SWITCH_LED_D9_set;
+        case PINNUM_SWITCH_LED_D10: return userpin_SWITCH_LED_D10_set;
+    }
+    // this should never be reached
+    error_die_forever();
+    // but, just in case (if we neutralize the error function):
+    return userpin_SWITCH_LED_D10_set;
+}
+
+// return the user pin state get function by user pin enum
+userpin_state_get_func_t userpin_get_function_get_by_enum(enum_pinnum_t _userpin_index) {
+    switch(_userpin_index) {
+        case PINNUM_SWITCH_LED_D9: return userpin_SWITCH_LED_D9_get;
+        case PINNUM_SWITCH_LED_D10: return userpin_SWITCH_LED_D10_get;
+    }
+    // this should never be reached
+    error_die_forever();
+    // but, just in case (if we neutralize the error function):
+    return userpin_SWITCH_LED_D10_get;
+}
+
diff --git a/micro/BPD-V01-FIRMWARE.X/generated/sources/variables.h b/micro/BPD-V01-FIRMWARE.X/generated/sources/variables.h
new file mode 100644
index 0000000..2086823
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/generated/sources/variables.h
@@ -0,0 +1,283 @@
+// Auto-generated file: variables.h
+// Generation timestamp: 2021-05-28 16:22:48.444169
+
+#ifndef _AUTOGENERATED_VARIABLES_H
+#define _AUTOGENERATED_VARIABLES_H
+
+
+#include "../../typedefs.h"
+
+// analog reading info structure
+typedef struct {
+    analog_channel_t channel;                   // ADC channel from which the variable can be read
+    analog_value_t value;                       // last acquired value
+    analog_variable_sum_t sum_curr;             // current sum (to compute average)
+    analog_variable_sum_t sum_last;             // last computed sum
+    analog_variable_sum_counter_t sum_counter;  // current count for sum computation
+    analog_value_t offset;                      // offset value
+    analog_value_t value_max;                   // max value acquired
+    analogalarm_dual_info_t alarms;             // structure maintaining all the info related to the slow and fast alarms    
+} analog_variable_t;
+    
+// number of defined analog variables
+#define ANALOG_VARIABLES_COUNT 11
+    
+#define ANALOG_VARIABLE_INDEX_MON_DUL_BOARDTEMP  0    // index of the analog variable MON_DUL_BOARDTEMP inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_TEMP2  1    // index of the analog variable MON_TEMP2 inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_TEMP1  2    // index of the analog variable MON_TEMP1 inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_VEOC_RTN_I  3    // index of the analog variable MON_VEOC_RTN_I inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_VEOC_FWR_I  4    // index of the analog variable MON_VEOC_FWR_I inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_HYDRO_I  5    // index of the analog variable MON_HYDRO_I inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_INPUT_V  6    // index of the analog variable MON_INPUT_V inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_LBL_I  7    // index of the analog variable MON_LBL_I inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_GLRA_I  8    // index of the analog variable MON_GLRA_I inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_GLRB_I  9    // index of the analog variable MON_GLRB_I inside analog_variables array
+#define ANALOG_VARIABLE_INDEX_MON_PWB_I  10    // index of the analog variable MON_PWB_I inside analog_variables array
+    
+// make analog variable list available to anyone including this file
+extern analog_variable_t analog_variables[ANALOG_VARIABLES_COUNT];
+    
+// Callback function for alarm on analog variable MON_DUL_BOARDTEMP (DUL board temperature sensor)
+void alarm_MON_DUL_BOARDTEMP();
+
+// Callback function for alarm on analog variable MON_TEMP2 (VICOR2 Heatsink (connector J12) temperature sensor signal acquisition)
+void alarm_MON_TEMP2();
+
+// Callback function for alarm on analog variable MON_TEMP1 (VICOR1 Heatsink (connector J1) temperature sensor signal acquisition )
+void alarm_MON_TEMP1();
+
+// Callback function for alarm on analog variable MON_VEOC_RTN_I (DU backbone return current sensor signal acquisition )
+void alarm_MON_VEOC_RTN_I();
+
+// Callback function for alarm on analog variable MON_VEOC_FWR_I (DU backbone forward current sensor signal acquisition )
+void alarm_MON_VEOC_FWR_I();
+
+// Callback function for alarm on analog variable MON_HYDRO_I (HYDRO current sensor signal acquisition )
+void alarm_MON_HYDRO_I();
+
+// Callback function for alarm on analog variable MON_INPUT_V (Main Input Line voltage sensor signal acquisition )
+void alarm_MON_INPUT_V();
+
+// Callback function for alarm on analog variable MON_LBL_I (LBL current sensor signal acquisition )
+void alarm_MON_LBL_I();
+
+// Callback function for alarm on analog variable MON_GLRA_I (GLENAIR-A current sensor signal acquisition)
+void alarm_MON_GLRA_I();
+
+// Callback function for alarm on analog variable MON_GLRB_I (GLENAIR-B current sensor signal acquisition)
+void alarm_MON_GLRB_I();
+
+// Callback function for alarm on analog variable MON_PWB_I (POWER BOARD current sensor signal acquisition)
+void alarm_MON_PWB_I();
+
+// digital reading info structure
+typedef struct {
+    digital_value_readfunc_t readfunc;    // function to read the value (must be defined by user)
+    digital_value_t value;                // last acquired value
+    digital_value_t value_max;            // max value acquired (...)
+    digitalalarm_info_t alarm;            // structure maintaining all the info related to the alarm    
+} digital_variable_t;
+    
+// number of defined analog variables
+#define DIGITAL_VARIABLES_COUNT 12
+    
+#define DIGITAL_VARIABLE_INDEX_FLAG_DUL_ALARMPOS1  0    // index of the analog variable FLAG_DUL_ALARMPOS1 inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_DUL_ALARMPOS2  1    // index of the analog variable FLAG_DUL_ALARMPOS2 inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_DUL_ALARMNEG1  2    // index of the analog variable FLAG_DUL_ALARMNEG1 inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_DUL_ALARMNEG2  3    // index of the analog variable FLAG_DUL_ALARMNEG2 inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_HYDRO_PWR_FAULT  4    // index of the analog variable FLAG_HYDRO_PWR_FAULT inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_LBL_PWR_FAULT  5    // index of the analog variable FLAG_LBL_PWR_FAULT inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_GLRA_FAULT  6    // index of the analog variable FLAG_GLRA_FAULT inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_GLRB_FAULT  7    // index of the analog variable FLAG_GLRB_FAULT inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_POWERBOARD_FAULT  8    // index of the analog variable FLAG_POWERBOARD_FAULT inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_GLRA_GOOD  9    // index of the analog variable FLAG_GLRA_GOOD inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_GLRB_GOOD  10    // index of the analog variable FLAG_GLRB_GOOD inside analog_variables array
+#define DIGITAL_VARIABLE_INDEX_FLAG_POWERBOARD_GOOD  11    // index of the analog variable FLAG_POWERBOARD_GOOD inside analog_variables array
+    
+// make digital variable list available to anyone including this file
+extern digital_variable_t digital_variables[DIGITAL_VARIABLES_COUNT];
+
+// IO read function for variable FLAG_DUL_ALARMPOS1
+digital_value_t ioread_DIN_ALRMPOS1(void);
+
+// IO read function for variable FLAG_DUL_ALARMPOS2
+digital_value_t ioread_DIN_ALRMPOS2(void);
+
+// IO read function for variable FLAG_DUL_ALARMNEG1
+digital_value_t ioread_DIN_ALRMNEG1(void);
+
+// IO read function for variable FLAG_DUL_ALARMNEG2
+digital_value_t ioread_DIN_ALRMNEG2(void);
+
+// IO read function for variable FLAG_HYDRO_PWR_FAULT
+digital_value_t ioread_DIN_HYDRO_PWR_FLT(void);
+
+// IO read function for variable FLAG_LBL_PWR_FAULT
+digital_value_t ioread_DIN_LBL_PWR_FLT(void);
+
+// IO read function for variable FLAG_GLRA_FAULT
+digital_value_t ioread_DIN_GLR_A_FLT(void);
+
+// IO read function for variable FLAG_GLRB_FAULT
+digital_value_t ioread_DIN_GLR_B_FLT(void);
+
+// IO read function for variable FLAG_POWERBOARD_FAULT
+digital_value_t ioread_DIN_PWB_FLT(void);
+
+// IO read function for variable FLAG_GLRA_GOOD
+digital_value_t ioread_DIN_GLR_A_PG(void);
+
+// IO read function for variable FLAG_GLRB_GOOD
+digital_value_t ioread_DIN_GLR_B_PG(void);
+
+// IO read function for variable FLAG_POWERBOARD_GOOD
+digital_value_t ioread_DIN_PWB_PG(void);
+
+// Callback function for alarm on digital variable FLAG_DUL_ALARMPOS1 (DUL current limiting on VEOC direct alarm 1)
+void alarm_FLAG_DUL_ALARMPOS1();
+
+// Callback function for alarm on digital variable FLAG_DUL_ALARMPOS2 (DUL current limiting on VEOC direct alarm 2)
+void alarm_FLAG_DUL_ALARMPOS2();
+
+// Callback function for alarm on digital variable FLAG_DUL_ALARMNEG1 (DUL current limiting on VEOC return alarm 1)
+void alarm_FLAG_DUL_ALARMNEG1();
+
+// Callback function for alarm on digital variable FLAG_DUL_ALARMNEG2 (DUL current limiting on VEOC return alarm 2)
+void alarm_FLAG_DUL_ALARMNEG2();
+
+// Callback function for alarm on digital variable FLAG_HYDRO_PWR_FAULT (Fault status acquisition of 12V ISO HYDRO power line)
+void alarm_FLAG_HYDRO_PWR_FAULT();
+
+// Callback function for alarm on digital variable FLAG_LBL_PWR_FAULT (Fault status acquisition of 12V ISO LBL power line)
+void alarm_FLAG_LBL_PWR_FAULT();
+
+// Callback function for alarm on digital variable FLAG_GLRA_FAULT (Fault status acquisition of 12V GLENAIR-A power line)
+void alarm_FLAG_GLRA_FAULT();
+
+// Callback function for alarm on digital variable FLAG_GLRB_FAULT (Fault status acquisition of 12V GLENAIR-B power line)
+void alarm_FLAG_GLRB_FAULT();
+
+// Callback function for alarm on digital variable FLAG_POWERBOARD_FAULT (Fault status acquisition of 12V POWER BOARD power line)
+void alarm_FLAG_POWERBOARD_FAULT();
+
+// Callback function for alarm on digital variable FLAG_GLRA_GOOD (Power good status acquisition of 12V GLENAIR-A power line)
+void alarm_FLAG_GLRA_GOOD();
+
+// Callback function for alarm on digital variable FLAG_GLRB_GOOD (Power good status acquisition of 12V GLENAIR-B power line)
+void alarm_FLAG_GLRB_GOOD();
+
+// Callback function for alarm on digital variable FLAG_POWERBOARD_GOOD (Power good status acquisition of 12V POWER BOARD power line)
+void alarm_FLAG_POWERBOARD_GOOD();
+
+#include "../../errors.h"
+
+
+typedef struct {
+    enum_switchstate_t state_SWITCH_VEOC_RETURN; // status of switch SWITCH_VEOC_RETURN, DU backbone ON/OFF return line control (high=ON)
+    enum_switchstate_t state_SWITCH_VEOC_DIRECT; // status of switch SWITCH_VEOC_DIRECT, DU backbone ON/OFF forward line control (high=ON)
+    enum_switchstate_t state_SWITCH_12V; // status of switch SWITCH_12V, DC-DC TDK 5/12V ISO ON/OFF control (high=ON)
+    enum_switchstate_t state_SWITCH_LBL; // status of switch SWITCH_LBL, 12V ISO LBL power ON/OFF control (high=ON)
+    enum_switchstate_t state_SWITCH_HYDRO; // status of switch SWITCH_HYDRO, 12V ISO HYDRO power ON/OFF control (high=ON)
+    enum_switchstate_t state_SWITCH_GLRA; // status of switch SWITCH_GLRA, 12V GLENAIR-A power ON/OFF control (high=ON)
+    enum_switchstate_t state_SWITCH_GLRB; // status of switch SWITCH_GLRB, 12V GLENAIR-B power ON/OFF control (high=ON)
+    enum_switchstate_t state_SWITCH_PWB; // status of switch SWITCH_PWB, 12V  POWER BOARD power ON/OFF control (high=ON)
+} switches_t;
+
+extern switches_t switches;
+
+// control functions for switch SWITCH_VEOC_RETURN, DU backbone ON/OFF return line control (high=ON)
+void switch_SWITCH_VEOC_RETURN_set_closed(void);
+void switch_SWITCH_VEOC_RETURN_set_open(void);
+void switch_SWITCH_VEOC_RETURN_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_VEOC_RETURN_get(void); 
+
+
+// control functions for switch SWITCH_VEOC_DIRECT, DU backbone ON/OFF forward line control (high=ON)
+void switch_SWITCH_VEOC_DIRECT_set_closed(void);
+void switch_SWITCH_VEOC_DIRECT_set_open(void);
+void switch_SWITCH_VEOC_DIRECT_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_VEOC_DIRECT_get(void); 
+
+
+// control functions for switch SWITCH_12V, DC-DC TDK 5/12V ISO ON/OFF control (high=ON)
+void switch_SWITCH_12V_set_closed(void);
+void switch_SWITCH_12V_set_open(void);
+void switch_SWITCH_12V_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_12V_get(void); 
+
+
+// control functions for switch SWITCH_LBL, 12V ISO LBL power ON/OFF control (high=ON)
+void switch_SWITCH_LBL_set_closed(void);
+void switch_SWITCH_LBL_set_open(void);
+void switch_SWITCH_LBL_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_LBL_get(void); 
+
+
+// control functions for switch SWITCH_HYDRO, 12V ISO HYDRO power ON/OFF control (high=ON)
+void switch_SWITCH_HYDRO_set_closed(void);
+void switch_SWITCH_HYDRO_set_open(void);
+void switch_SWITCH_HYDRO_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_HYDRO_get(void); 
+
+
+// control functions for switch SWITCH_GLRA, 12V GLENAIR-A power ON/OFF control (high=ON)
+void switch_SWITCH_GLRA_set_closed(void);
+void switch_SWITCH_GLRA_set_open(void);
+void switch_SWITCH_GLRA_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_GLRA_get(void); 
+
+
+// control functions for switch SWITCH_GLRB, 12V GLENAIR-B power ON/OFF control (high=ON)
+void switch_SWITCH_GLRB_set_closed(void);
+void switch_SWITCH_GLRB_set_open(void);
+void switch_SWITCH_GLRB_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_GLRB_get(void); 
+
+
+// control functions for switch SWITCH_PWB, 12V  POWER BOARD power ON/OFF control (high=ON)
+void switch_SWITCH_PWB_set_closed(void);
+void switch_SWITCH_PWB_set_open(void);
+void switch_SWITCH_PWB_set(enum_switchstate_t _state);
+enum_switchstate_t switch_SWITCH_PWB_get(void); 
+
+
+// return the switch state set function by switch enum
+typedef void (*switch_state_set_func_t)(enum_switchstate_t _state);
+switch_state_set_func_t switch_get_function_set_by_enum(enum_switchnum_t _switch_index);
+
+// return the switch state get function by switch enum
+typedef enum_switchstate_t (*switch_state_get_func_t)(void);
+switch_state_get_func_t switch_get_function_get_by_enum(enum_switchnum_t _switch_index);
+
+
+typedef struct {
+    enum_pinstate_t state_SWITCH_LED_D9; // status of usr pin SWITCH_LED_D9, Line IN/OUT not assigned. Free line available on JP1 jumper. Usable in output to turn on the LED
+    enum_pinstate_t state_SWITCH_LED_D10; // status of usr pin SWITCH_LED_D10, Line IN/OUT not assigned. Free line available on JP2 jumper. Usable in output to turn on the LED
+} userpins_t;
+
+extern userpins_t userpins;
+
+// control functions for user pin SWITCH_LED_D9, Line IN/OUT not assigned. Free line available on JP1 jumper. Usable in output to turn on the LED
+void userpin_SWITCH_LED_D9_set_high(void);
+void userpin_SWITCH_LED_D9_set_low(void);
+void userpin_SWITCH_LED_D9_set(enum_pinstate_t _state); 
+enum_pinstate_t userpin_SWITCH_LED_D9_get(void); 
+
+
+// control functions for user pin SWITCH_LED_D10, Line IN/OUT not assigned. Free line available on JP2 jumper. Usable in output to turn on the LED
+void userpin_SWITCH_LED_D10_set_high(void);
+void userpin_SWITCH_LED_D10_set_low(void);
+void userpin_SWITCH_LED_D10_set(enum_pinstate_t _state); 
+enum_pinstate_t userpin_SWITCH_LED_D10_get(void); 
+
+
+// return the user pin state set function by user pin enum
+typedef void (*userpin_state_set_func_t)(enum_pinstate_t _state);
+userpin_state_set_func_t userpin_get_function_set_by_enum(enum_pinnum_t _userpin_index);
+
+// return the user pin state get function by user pin enum
+typedef enum_pinstate_t (*userpin_state_get_func_t)(void);
+userpin_state_get_func_t userpin_get_function_get_by_enum(enum_pinnum_t _userpin_index);
+
+
+#endif // _AUTOGENERATED_VARIABLES_H
diff --git a/micro/BPD-V01-FIRMWARE.X/irqs.c b/micro/BPD-V01-FIRMWARE.X/irqs.c
new file mode 100644
index 0000000..d3cfeaa
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/irqs.c
@@ -0,0 +1,83 @@
+/*
+ * File:   irqs.c
+ * Author: Carlo Alessandro Nicolau @ INFN
+ * 
+ * Firmware for BPD board.
+ * Interrupt service routines.
+ * 
+ */
+
+STO RIVEDENDO QUESTO QUI...
+
+#include "irqs.h"
+#include "adcreader.h"
+#include "generated/sources/variables.h"
+#include "timing.h"
+
+// local functions
+void _manage_digital_variables(void);
+void _manage_digital_variable(digital_variable_t* _p_variable);
+
+// "slow" timer interrupt service routine
+void irq_timer_slow(void) {     
+    // update the adcreader state machine
+    adcreader_tick_irq(); 
+    
+    // update timing register
+    timing_tick_irq();
+}
+
+// "fast" timer interrupt service routine
+void irq_timer_fast(void) {        
+    // manage digital alarms
+    _manage_digital_variables();
+}
+
+void _manage_digital_variables(void) {    
+    for(uint8_t idx = 0; idx < DIGITAL_VARIABLES_COUNT; idx++) {
+        _manage_digital_variable(&(digital_variables[idx]));
+    }    
+}
+
+void _manage_digital_variable(digital_variable_t* _p_variable) {
+    // read digital variables
+    _p_variable->value = _p_variable->readfunc();
+
+    // and update value_max
+    if(_p_variable->value > _p_variable->value_max) {
+        _p_variable->value_max = _p_variable->value;
+    }
+    // check if timout counter has to be incremented
+    if(_p_variable->value > 0) {           
+        // increment counter
+        _p_variable->alarm.timeout_counter += 1;
+        // avoid wrapping on increment (not very elegant...)
+        if(_p_variable->alarm.timeout_counter == 0) {
+            _p_variable->alarm.timeout_counter -= 1;
+        }
+        // update alarm counter stats
+        if(_p_variable->alarm.timeout_counter_max < _p_variable->alarm.timeout_counter) {
+            _p_variable->alarm.timeout_counter_max = _p_variable->alarm.timeout_counter;
+        }
+    }else{
+        // or reset the counter
+        _p_variable->alarm.timeout_counter = 0;
+    }
+    // check if alarm has fired
+    if(_p_variable->alarm.enabled) {
+        // check if timeout was reached
+        if(_p_variable->alarm.timeout_counter > _p_variable->alarm.timeout) {
+            // perform the alarm action
+            _p_variable->alarm.callback();
+            // increment the fire counter
+            _p_variable->alarm.firecount += 1;
+            // avoid wrapping on increment (not very elegant...)
+            if(_p_variable->alarm.firecount == 0) {
+                _p_variable->alarm.firecount -= 1;
+            }
+            // reset alarm timeout counter
+            _p_variable->alarm.timeout_counter = 0;
+        }
+    }
+    
+}
diff --git a/micro/BPD-V01-FIRMWARE.X/irqs.h b/micro/BPD-V01-FIRMWARE.X/irqs.h
new file mode 100644
index 0000000..646ca7a
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/irqs.h
@@ -0,0 +1,19 @@
+/*
+ * File:   irqs.c
+ * Author: Carlo Alessandro Nicolau @ INFN
+ * 
+ * Firmware for BPD board.
+ * Interrupt service routines.
+ * 
+ */
+
+#ifndef __IRQS_H
+#define __IRQS_H
+
+// "slow" timer interrupt service routine
+void irq_timer_slow(void);
+
+// "fast" timer interrupt service routine
+void irq_timer_fast(void);
+
+#endif // __IRQS_H
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/main.c b/micro/BPD-V01-FIRMWARE.X/main.c
new file mode 100644
index 0000000..697ae84
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/main.c
@@ -0,0 +1,130 @@
+/*
+ * File:   main.c
+ * Author: Carlo Alessandro Nicolau @ INFN
+ *
+ * Created on May 28, 2021, 4:29 PM
+ * 
+ * Firmware for BPD-V01 board.
+ * Main.
+ * 
+ */
+
+
+#include <pic18.h>
+
+#include "irqs.h"
+#include "communication.h"
+#include "errorcodes.h"
+#include "errors.h"
+#include "hardware.h"
+#include "adcreader.h"
+#include "timing.h"
+#include "rescue.h"
+
+void init_mcu(void);
+void init_comm(void);
+void init_adcreader(void);
+void start_irqs(void);    
+void sensors_acquire_offsets(void);
+void alarms_enable(void);
+void manage_incoming_data(void);
+void _delay_seconds(uint8_t _seconds);
+
+void main(void) {
+    return;
+}
+
+void init_mcu(void) {
+    // initializations (generated by MCC): IRQ Manager, PINs, Oscillator, Peripherals
+    SYSTEM_Initialize();    
+    // set the timer 0 and 2 interrupt service routine
+    // assuming interrupts are not currently enabled
+    TMR0_SetInterruptHandler(irq_timer_slow);  // "slow" timer (208us period)
+    TMR2_SetInterruptHandler(irq_timer_fast);  // "fast" timer (20us period)
+    // safety measure: 10ms delay
+    __delay_ms(10);
+}
+
+void init_comm(void) {
+    // initialize the communication parser
+    communication_parser_reset();
+}
+
+void init_adcreader(void) {
+    adcreader_reset();
+    adcreader_start();    
+}
+
+void start_irqs(void){
+    // activate interrupts
+    INTERRUPT_GlobalInterruptEnable();
+    INTERRUPT_PeripheralInterruptEnable();    
+    // clean the serial port input buffer
+    while(serialport_dataready) serialport_read;    
+    // start timer0
+    TMR0_StartTimer();    
+    // start timer2
+    TMR2_StartTimer();    
+    // at this point:
+    // - The TMR0 interrupt is constantly firing
+    // - The serial port receive buffer is clean
+}
+
+void sensors_acquire_offsets(void) {
+    // ADC reader must have already started.
+    // We only need to read acquired values and wait properly.
+    // Note that the ADC is 10 bit, but data are left aligned to 16 bit, we thus
+    // have an headroom of 6 bits = 32 counts.
+    // Note also that stored offset values are initialized to zero.
+    userpin_SWITCH_LED_D10_set_high();
+    userpin_SWITCH_LED_D9_set_high();
+    _delay_seconds(5); // wait 5 seconds to make signals steady
+    userpin_SWITCH_LED_D9_set_low();
+    for(uint8_t k = 0; k < 32; k++) {
+        __delay_ms(30); // 2.2 * 30 millis are (much) more than sufficient for ADC reader to acquire from all ADC channels
+        for(uint8_t varidx = 0; varidx < ANALOG_VARIABLES_COUNT; varidx++) {
+            analog_variables[varidx].offset += analog_variables[varidx].value/32;
+        }
+    }
+    userpin_SWITCH_LED_D10_set_low();
+}
+
+void alarms_enable(void) {
+    // not necessary since the alarms are already enabled by
+    // initializing the variables analog_variables and digital_variables
+    // (see variables.h in generated/sources)
+}
+
+void manage_incoming_data(void) {
+    // check if a new byte is present in serial port receive buffer
+    if(serialport_dataready) {
+        // a byte is present, read it and parse it        
+        communication_parser_appendbyte(serialport_read());
+    }
+    // check if a complete command was received
+    if(communication_parser_commandready()) {
+        // a new complete command was received
+        // execute the received command and verify result
+        err_t retval = communication_parser_executecommand();
+        if(NOERR == retval){
+            // command correctly executed            
+            // reset second counter since last received command
+            // (this function is called after the command was executed to be able to read its value)
+            timing_reset_seconds_since_last_command();
+            // send the response to the host 
+            // (it was created by the [...]_executecommand function)
+            communication_transmitter_sendresponse();
+        }else{
+            // do nothing
+            error_notify(retval);
+        }
+        // reset the parser
+        communication_parser_reset();
+    }
+}
+
+void _delay_seconds(uint8_t _seconds) {
+    while(_seconds--) {        
+        __delay_ms(447); // value trimmed, takes into account the time used under irq
+    }
+}
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.c
new file mode 100644
index 0000000..81eaf5e
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.c
@@ -0,0 +1,136 @@
+/**
+  ADC Generated Driver File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    adc.c
+
+  @Summary
+    This is the generated driver implementation file for the ADC driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This source file provides implementations for driver APIs for ADC.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.02
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+#include "adc.h"
+#include "device_config.h"
+
+
+/**
+  Section: ADC Module APIs
+*/
+
+void (*ADC_InterruptHandler)(void);
+
+void ADC_Initialize(void)
+{
+    // set the ADC to the options selected in the User Interface
+    
+    // TRIGSEL CCP5; NVCFG VSS; PVCFG FVRbuf2; 
+    ADCON1 = 0x08;
+    
+    // ADFM left; ACQT 20; ADCS FOSC/16; 
+    ADCON2 = 0x3D;
+    
+    // ADRESL 0; 
+    ADRESL = 0x00;
+    
+    // ADRESH 0; 
+    ADRESH = 0x00;
+    
+    // GO_nDONE stop; ADON enabled; CHS AN0; 
+    ADCON0 = 0x01;
+    
+}
+
+void ADC_SelectChannel(adc_channel_t channel)
+{
+    // select the A/D channel
+    ADCON0bits.CHS = channel;    
+    // Turn on the ADC module
+    ADCON0bits.ADON = 1;  
+}
+
+void ADC_StartConversion(void)
+{
+    // Start the conversion
+    ADCON0bits.GO_nDONE = 1;
+}
+
+
+bool ADC_IsConversionDone(void)
+{
+    // Start the conversion
+    return ((bool)(!ADCON0bits.GO_nDONE));
+}
+
+adc_result_t ADC_GetConversionResult(void)
+{
+    // Conversion finished, return the result
+     return ((adc_result_t)((ADRESH << 8) + ADRESL));
+}
+
+adc_result_t ADC_GetConversion(adc_channel_t channel)
+{
+    // select the A/D channel
+    ADCON0bits.CHS = channel;    
+
+    // Turn on the ADC module
+    ADCON0bits.ADON = 1;
+
+    // Start the conversion
+    ADCON0bits.GO_nDONE = 1;
+
+    // Wait for the conversion to finish
+    while (ADCON0bits.GO_nDONE)
+    {
+    }
+
+    // Conversion finished, return the result
+    return ((adc_result_t)((ADRESH << 8) + ADRESL));
+}
+
+void ADC_TemperatureAcquisitionDelay(void)
+{
+    __delay_us(200);
+}
+/**
+ End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.h
new file mode 100644
index 0000000..af57ca5
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/adc.h
@@ -0,0 +1,338 @@
+/**
+  ADC Generated Driver API Header File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    adc.h
+
+  @Summary
+    This is the generated header file for the ADC driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for driver for ADC.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.02
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef ADC_H
+#define ADC_H
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    extern "C" {
+
+#endif
+
+/**
+  Section: Data Types Definitions
+*/
+
+/**
+ *  result size of an A/D conversion
+ */
+
+typedef uint16_t adc_result_t;
+
+/**
+ *  result type of a Double ADC conversion
+ */
+typedef struct
+{
+    adc_result_t adcResult1;
+    adc_result_t adcResult2;
+} adc_sync_double_result_t;
+
+/** ADC Channel Definition
+
+ @Summary
+   Defines the channels available for conversion.
+
+ @Description
+   This routine defines the channels that are available for the module to use.
+
+ Remarks:
+   None
+ */
+
+typedef enum
+{
+    AIN_DUL_BRD_TEMP =  0x0,
+    AIN_VICOR2_TEMP =  0x1,
+    AIN_VICOR1_TEMP =  0x2,
+    AIN_DU_RTN_I_MON =  0x3,
+    AIN_DU_FWR_I_MON =  0x4,
+    AIN_HYDRO_I_MON =  0x5,
+    AIN_INPUT_V_MON =  0x6,
+    AIN_LBL_I_MON =  0x7,
+    AIN_GLR_A_I_MON =  0x8,
+    AIN_GLR_B_I_MON =  0x9,
+    AIN_PWB_I_MON =  0xA,
+    channel_CTMU =  0x1D,
+    channel_DAC =  0x1E,
+    channel_FVRBuf2 =  0x1F
+} adc_channel_t;
+
+/**
+  Section: ADC Module APIs
+*/
+
+/**
+  @Summary
+    Initializes the ADC
+
+  @Description
+    This routine initializes the Initializes the ADC.
+    This routine must be called before any other ADC routine is called.
+    This routine should only be called once during system initialization.
+
+  @Preconditions
+    None
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Comment
+    
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();
+    convertedValue = ADC_GetConversionResult();
+    </code>
+*/
+void ADC_Initialize(void);
+
+/**
+  @Summary
+    Allows selection of a channel for conversion
+
+  @Description
+    This routine is used to select desired channel for conversion.
+    available
+
+  @Preconditions
+    ADC_Initialize() function should have been called before calling this function.
+
+  @Returns
+    None
+
+  @Param
+    Pass in required channel number
+    "For available channel refer to enum under adc.h file"
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();
+    ADC_SelectChannel(AN1_Channel);
+    ADC_StartConversion();
+    convertedValue = ADC_GetConversionResult();
+    </code>
+*/
+void ADC_SelectChannel(adc_channel_t channel);
+
+/**
+  @Summary
+    Starts conversion
+
+  @Description
+    This routine is used to start conversion of desired channel.
+    
+  @Preconditions
+    ADC_Initialize() function should have been called before calling this function.
+
+  @Returns
+    None
+
+  @Param
+    None
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();    
+    ADC_StartConversion();
+    convertedValue = ADC_GetConversionResult();
+    </code>
+*/
+void ADC_StartConversion(void);
+
+/**
+  @Summary
+    Returns true when the conversion is completed otherwise false.
+
+  @Description
+    This routine is used to determine if conversion is completed.
+    When conversion is complete routine returns true. It returns false otherwise.
+
+  @Preconditions
+    ADC_Initialize() and ADC_StartConversion(void)
+    function should have been called before calling this function.
+
+  @Returns
+    true  - If conversion is complete
+    false - If conversion is not completed
+
+  @Param
+    None
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();
+    ADC_StartConversion();
+
+    while(!ADC_IsConversionDone());
+    convertedValue = ADC_GetConversionResult();
+    </code>
+ */
+bool ADC_IsConversionDone(void);
+
+/**
+  @Summary
+    Returns the ADC conversion value.
+
+  @Description
+    This routine is used to get the analog to digital converted value. This
+    routine gets converted values from the channel specified.
+
+  @Preconditions
+    This routine returns the conversion value only after the conversion is complete.
+    Completion status can be checked using
+    ADC_IsConversionDone() routine.
+
+  @Returns
+    Returns the converted value.
+
+  @Param
+    None
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();
+    ADC_StartConversion();
+
+    while(ADC_IsConversionDone());
+
+    convertedValue = ADC_GetConversionResult();
+    </code>
+ */
+adc_result_t ADC_GetConversionResult(void);
+
+/**
+  @Summary
+    Returns the ADC conversion value
+    also allows selection of a channel for conversion.
+
+  @Description
+    This routine is used to select desired channel for conversion
+    and to get the analog to digital converted value.
+
+  @Preconditions
+    ADC_Initialize() function should have been called before calling this function.
+
+  @Returns
+    Returns the converted value.
+
+  @Param
+    Pass in required channel number.
+    "For available channel refer to enum under adc.h file"
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();
+
+    conversion = ADC_GetConversion(AN1_Channel);
+    </code>
+*/
+adc_result_t ADC_GetConversion(adc_channel_t channel);
+
+/**
+  @Summary
+    Acquisition Delay for temperature sensor
+
+  @Description
+    This routine should be called when temperature sensor is used.
+    
+  @Preconditions
+    ADC_Initialize() function should have been called before calling this function.
+
+  @Returns
+    None
+
+  @Param
+    None
+
+  @Example
+    <code>
+    uint16_t convertedValue;
+
+    ADC_Initialize();    
+    ADC_StartConversion();
+    ADC_temperatureAcquisitionDelay();
+    convertedValue = ADC_GetConversionResult();
+    </code>
+*/
+void ADC_TemperatureAcquisitionDelay(void);
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    }
+
+#endif
+
+#endif	//ADC_H
+/**
+ End of File
+*/
+
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.c
new file mode 100644
index 0000000..ef69038
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.c
@@ -0,0 +1,60 @@
+/**
+  CCP5 Generated Driver File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    ccp5.c
+
+  @Summary
+    This is the generated driver implementation file for the CCP5 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This source file provides implementations for driver APIs for CCP5.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+         MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#include <xc.h>
+#include "ccp5.h"
+void CCP5_Initialize(void)
+{
+	
+	// CCP5M off/reset; DC5B 0; 
+	CCP5CON = 0x00;    
+	
+	// CCPR5L 0; 
+	CCPR5L = 0x00;    
+	
+	// CCPR5H 0; 
+	CCPR5H = 0x00;    
+}
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.h
new file mode 100644
index 0000000..715b8e3
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/ccp5.h
@@ -0,0 +1,61 @@
+/**
+  CCP5 Generated Driver API Header File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    ccp5.h
+
+  @Summary
+    This is the generated header file for the CCP5 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for driver for CCP5.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef CCP5_H
+#define CCP5_H
+
+#include <xc.h>
+/**
+ * Initialization routine that takes inputs from the GUI.
+ * @prototype        void CCP5_Initialize(void)
+ * @param           none
+ * @return           none
+ * @comment          
+ * @usage            CCP5_Initialize();
+ */
+void CCP5_Initialize(void);
+
+#endif  // CCP5.h
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.c
new file mode 100644
index 0000000..b5d4491
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.c
@@ -0,0 +1,108 @@
+/**
+  @Generated PIC10 / PIC12 / PIC16 / PIC18 MCUs Source File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    mcc.c
+
+  @Summary:
+    This is the device_config.c file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description:
+    This header file provides implementations for driver APIs for all modules selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.00
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above or later
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+// Configuration bits: selected in the GUI
+
+// CONFIG1H
+#pragma config FOSC = INTIO67    // Oscillator Selection bits->Internal oscillator block
+#pragma config PLLCFG = OFF    // 4X PLL Enable->Oscillator used directly
+#pragma config PRICLKEN = ON    // Primary clock enable bit->Primary clock is always enabled
+#pragma config FCMEN = OFF    // Fail-Safe Clock Monitor Enable bit->Fail-Safe Clock Monitor disabled
+#pragma config IESO = OFF    // Internal/External Oscillator Switchover bit->Oscillator Switchover mode disabled
+
+// CONFIG2L
+#pragma config PWRTEN = OFF    // Power-up Timer Enable bit->Power up timer disabled
+#pragma config BOREN = SBORDIS    // Brown-out Reset Enable bits->Brown-out Reset enabled in hardware only (SBOREN is disabled)
+#pragma config BORV = 190    // Brown Out Reset Voltage bits->VBOR set to 1.90 V nominal
+
+// CONFIG2H
+#pragma config WDTEN = OFF    // Watchdog Timer Enable bits->Watch dog timer is always disabled. SWDTEN has no effect.
+#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits->1:32768
+
+// CONFIG3H
+#pragma config CCP2MX = PORTC1    // CCP2 MUX bit->CCP2 input/output is multiplexed with RC1
+#pragma config PBADEN = ON    // PORTB A/D Enable bit->PORTB<5:0> pins are configured as analog input channels on Reset
+#pragma config CCP3MX = PORTB5    // P3A/CCP3 Mux bit->P3A/CCP3 input/output is multiplexed with RB5
+#pragma config HFOFST = ON    // HFINTOSC Fast Start-up->HFINTOSC output and ready status are not delayed by the oscillator stable status
+#pragma config T3CMX = PORTC0    // Timer3 Clock input mux bit->T3CKI is on RC0
+#pragma config P2BMX = PORTD2    // ECCP2 B output mux bit->P2B is on RD2
+#pragma config MCLRE = EXTMCLR    // MCLR Pin Enable bit->MCLR pin enabled, RE3 input pin disabled
+
+// CONFIG4L
+#pragma config STVREN = ON    // Stack Full/Underflow Reset Enable bit->Stack full/underflow will cause Reset
+#pragma config LVP = ON    // Single-Supply ICSP Enable bit->Single-Supply ICSP enabled if MCLRE is also 1
+#pragma config XINST = OFF    // Extended Instruction Set Enable bit->Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
+#pragma config DEBUG = OFF    // Background Debug->Disabled
+
+// CONFIG5L
+#pragma config CP0 = OFF    // Code Protection Block 0->Block 0 (000800-003FFFh) not code-protected
+#pragma config CP1 = OFF    // Code Protection Block 1->Block 1 (004000-007FFFh) not code-protected
+#pragma config CP2 = OFF    // Code Protection Block 2->Block 2 (008000-00BFFFh) not code-protected
+#pragma config CP3 = OFF    // Code Protection Block 3->Block 3 (00C000-00FFFFh) not code-protected
+
+// CONFIG5H
+#pragma config CPB = OFF    // Boot Block Code Protection bit->Boot block (000000-0007FFh) not code-protected
+#pragma config CPD = OFF    // Data EEPROM Code Protection bit->Data EEPROM not code-protected
+
+// CONFIG6L
+#pragma config WRT0 = OFF    // Write Protection Block 0->Block 0 (000800-003FFFh) not write-protected
+#pragma config WRT1 = OFF    // Write Protection Block 1->Block 1 (004000-007FFFh) not write-protected
+#pragma config WRT2 = OFF    // Write Protection Block 2->Block 2 (008000-00BFFFh) not write-protected
+#pragma config WRT3 = OFF    // Write Protection Block 3->Block 3 (00C000-00FFFFh) not write-protected
+
+// CONFIG6H
+#pragma config WRTC = OFF    // Configuration Register Write Protection bit->Configuration registers (300000-3000FFh) not write-protected
+#pragma config WRTB = OFF    // Boot Block Write Protection bit->Boot Block (000000-0007FFh) not write-protected
+#pragma config WRTD = OFF    // Data EEPROM Write Protection bit->Data EEPROM not write-protected
+
+// CONFIG7L
+#pragma config EBTR0 = OFF    // Table Read Protection Block 0->Block 0 (000800-003FFFh) not protected from table reads executed in other blocks
+#pragma config EBTR1 = OFF    // Table Read Protection Block 1->Block 1 (004000-007FFFh) not protected from table reads executed in other blocks
+#pragma config EBTR2 = OFF    // Table Read Protection Block 2->Block 2 (008000-00BFFFh) not protected from table reads executed in other blocks
+#pragma config EBTR3 = OFF    // Table Read Protection Block 3->Block 3 (00C000-00FFFFh) not protected from table reads executed in other blocks
+
+// CONFIG7H
+#pragma config EBTRB = OFF    // Boot Block Table Read Protection bit->Boot Block (000000-0007FFh) not protected from table reads executed in other blocks
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.h
new file mode 100644
index 0000000..4c9a422
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/device_config.h
@@ -0,0 +1,55 @@
+/**
+  @Generated PIC10 / PIC12 / PIC16 / PIC18 MCUs Header File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    mcc.c
+
+  @Summary:
+    This is the device_config.h file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description:
+    This header file provides implementations for driver APIs for all modules selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.00
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above or later
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef DEVICE_CONFIG_H
+#define	DEVICE_CONFIG_H
+
+#define _XTAL_FREQ 64000000
+
+#endif	/* DEVICE_CONFIG_H */
+/**
+ End of File
+*/
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.c
new file mode 100644
index 0000000..c04e828
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.c
@@ -0,0 +1,285 @@
+/**
+  EUSART1 Generated Driver File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    eusart1.c
+
+  @Summary
+    This is the generated driver implementation file for the EUSART1 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This source file provides APIs for EUSART1.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.1.1
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+/**
+  Section: Included Files
+*/
+#include "eusart1.h"
+
+/**
+  Section: Macro Declarations
+*/
+
+#define EUSART1_TX_BUFFER_SIZE 8
+#define EUSART1_RX_BUFFER_SIZE 8
+
+/**
+  Section: Global Variables
+*/
+volatile uint8_t eusart1TxHead = 0;
+volatile uint8_t eusart1TxTail = 0;
+volatile uint8_t eusart1TxBuffer[EUSART1_TX_BUFFER_SIZE];
+volatile uint8_t eusart1TxBufferRemaining;
+
+volatile uint8_t eusart1RxHead = 0;
+volatile uint8_t eusart1RxTail = 0;
+volatile uint8_t eusart1RxBuffer[EUSART1_RX_BUFFER_SIZE];
+volatile eusart1_status_t eusart1RxStatusBuffer[EUSART1_RX_BUFFER_SIZE];
+volatile uint8_t eusart1RxCount;
+volatile eusart1_status_t eusart1RxLastError;
+
+/**
+  Section: EUSART1 APIs
+*/
+void (*EUSART1_TxDefaultInterruptHandler)(void);
+void (*EUSART1_RxDefaultInterruptHandler)(void);
+
+void (*EUSART1_FramingErrorHandler)(void);
+void (*EUSART1_OverrunErrorHandler)(void);
+void (*EUSART1_ErrorHandler)(void);
+
+void EUSART1_DefaultFramingErrorHandler(void);
+void EUSART1_DefaultOverrunErrorHandler(void);
+void EUSART1_DefaultErrorHandler(void);
+
+void EUSART1_Initialize(void)
+{
+    // disable interrupts before changing states
+    PIE1bits.RC1IE = 0;
+    EUSART1_SetRxInterruptHandler(EUSART1_Receive_ISR);
+    PIE1bits.TX1IE = 0;
+    EUSART1_SetTxInterruptHandler(EUSART1_Transmit_ISR);
+    // Set the EUSART1 module to the options selected in the user interface.
+
+    // ABDOVF no_overflow; CKTXP async_noninverted_sync_fallingedge; BRG16 16bit_generator; WUE disabled; ABDEN disabled; DTRXP not_inverted; 
+    BAUDCON1 = 0x08;
+
+    // SPEN enabled; RX9 8-bit; CREN enabled; ADDEN disabled; SREN disabled; 
+    RCSTA1 = 0x90;
+
+    // TX9 8-bit; TX9D 0; SENDB sync_break_complete; TXEN enabled; SYNC asynchronous; BRGH hi_speed; CSRC slave_mode; 
+    TXSTA1 = 0x24;
+
+    // 
+    SPBRG1 = 0x40;
+
+    // 
+    SPBRGH1 = 0x03;
+
+
+    EUSART1_SetFramingErrorHandler(EUSART1_DefaultFramingErrorHandler);
+    EUSART1_SetOverrunErrorHandler(EUSART1_DefaultOverrunErrorHandler);
+    EUSART1_SetErrorHandler(EUSART1_DefaultErrorHandler);
+
+    eusart1RxLastError.status = 0;
+
+    // initializing the driver state
+    eusart1TxHead = 0;
+    eusart1TxTail = 0;
+    eusart1TxBufferRemaining = sizeof(eusart1TxBuffer);
+
+    eusart1RxHead = 0;
+    eusart1RxTail = 0;
+    eusart1RxCount = 0;
+
+    // enable receive interrupt
+    PIE1bits.RC1IE = 1;
+}
+
+bool EUSART1_is_tx_ready(void)
+{
+    return (eusart1TxBufferRemaining ? true : false);
+}
+
+bool EUSART1_is_rx_ready(void)
+{
+    return (eusart1RxCount ? true : false);
+}
+
+bool EUSART1_is_tx_done(void)
+{
+    return TXSTA1bits.TRMT;
+}
+
+eusart1_status_t EUSART1_get_last_status(void){
+    return eusart1RxLastError;
+}
+
+uint8_t EUSART1_Read(void)
+{
+    uint8_t readValue  = 0;
+    
+    while(0 == eusart1RxCount)
+    {
+    }
+
+    eusart1RxLastError = eusart1RxStatusBuffer[eusart1RxTail];
+
+    readValue = eusart1RxBuffer[eusart1RxTail++];
+    if(sizeof(eusart1RxBuffer) <= eusart1RxTail)
+    {
+        eusart1RxTail = 0;
+    }
+    PIE1bits.RC1IE = 0;
+    eusart1RxCount--;
+    PIE1bits.RC1IE = 1;
+
+    return readValue;
+}
+
+void EUSART1_Write(uint8_t txData)
+{
+    while(0 == eusart1TxBufferRemaining)
+    {
+    }
+
+    if(0 == PIE1bits.TX1IE)
+    {
+        TXREG1 = txData;
+    }
+    else
+    {
+        PIE1bits.TX1IE = 0;
+        eusart1TxBuffer[eusart1TxHead++] = txData;
+        if(sizeof(eusart1TxBuffer) <= eusart1TxHead)
+        {
+            eusart1TxHead = 0;
+        }
+        eusart1TxBufferRemaining--;
+    }
+    PIE1bits.TX1IE = 1;
+}
+
+
+void EUSART1_Transmit_ISR(void)
+{
+
+    // add your EUSART1 interrupt custom code
+    if(sizeof(eusart1TxBuffer) > eusart1TxBufferRemaining)
+    {
+        TXREG1 = eusart1TxBuffer[eusart1TxTail++];
+        if(sizeof(eusart1TxBuffer) <= eusart1TxTail)
+        {
+            eusart1TxTail = 0;
+        }
+        eusart1TxBufferRemaining++;
+    }
+    else
+    {
+        PIE1bits.TX1IE = 0;
+    }
+}
+
+void EUSART1_Receive_ISR(void)
+{
+    
+    eusart1RxStatusBuffer[eusart1RxHead].status = 0;
+
+    if(RCSTA1bits.FERR){
+        eusart1RxStatusBuffer[eusart1RxHead].ferr = 1;
+        EUSART1_FramingErrorHandler();
+    }
+
+    if(RCSTA1bits.OERR){
+        eusart1RxStatusBuffer[eusart1RxHead].oerr = 1;
+        EUSART1_OverrunErrorHandler();
+    }
+    
+    if(eusart1RxStatusBuffer[eusart1RxHead].status){
+        EUSART1_ErrorHandler();
+    } else {
+        EUSART1_RxDataHandler();
+    }
+    
+    // or set custom function using EUSART1_SetRxInterruptHandler()
+}
+
+void EUSART1_RxDataHandler(void){
+    // use this default receive interrupt handler code
+    eusart1RxBuffer[eusart1RxHead++] = RCREG1;
+    if(sizeof(eusart1RxBuffer) <= eusart1RxHead)
+    {
+        eusart1RxHead = 0;
+    }
+    eusart1RxCount++;
+}
+
+void EUSART1_DefaultFramingErrorHandler(void){}
+
+void EUSART1_DefaultOverrunErrorHandler(void){
+    // EUSART1 error - restart
+
+    RCSTA1bits.CREN = 0;
+    RCSTA1bits.CREN = 1;
+
+}
+
+void EUSART1_DefaultErrorHandler(void){
+    EUSART1_RxDataHandler();
+}
+
+void EUSART1_SetFramingErrorHandler(void (* interruptHandler)(void)){
+    EUSART1_FramingErrorHandler = interruptHandler;
+}
+
+void EUSART1_SetOverrunErrorHandler(void (* interruptHandler)(void)){
+    EUSART1_OverrunErrorHandler = interruptHandler;
+}
+
+void EUSART1_SetErrorHandler(void (* interruptHandler)(void)){
+    EUSART1_ErrorHandler = interruptHandler;
+}
+
+void EUSART1_SetTxInterruptHandler(void (* interruptHandler)(void)){
+    EUSART1_TxDefaultInterruptHandler = interruptHandler;
+}
+
+void EUSART1_SetRxInterruptHandler(void (* interruptHandler)(void)){
+    EUSART1_RxDefaultInterruptHandler = interruptHandler;
+}
+/**
+  End of File
+*/
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.h
new file mode 100644
index 0000000..b81caf7
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/eusart1.h
@@ -0,0 +1,516 @@
+/**
+  EUSART1 Generated Driver API Header File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    eusart1.h
+
+  @Summary
+    This is the generated header file for the EUSART1 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for driver for EUSART1.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.1.1
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef EUSART1_H
+#define EUSART1_H
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    extern "C" {
+
+#endif
+
+
+/**
+  Section: Macro Declarations
+*/
+
+#define EUSART1_DataReady  (EUSART1_is_rx_ready())
+
+/**
+  Section: Data Type Definitions
+*/
+
+typedef union {
+    struct {
+        unsigned perr : 1;
+        unsigned ferr : 1;
+        unsigned oerr : 1;
+        unsigned reserved : 5;
+    };
+    uint8_t status;
+}eusart1_status_t;
+
+/**
+ Section: Global variables
+ */
+extern volatile uint8_t eusart1TxBufferRemaining;
+extern volatile uint8_t eusart1RxCount;
+
+/**
+  Section: EUSART1 APIs
+*/
+extern void (*EUSART1_TxDefaultInterruptHandler)(void);
+extern void (*EUSART1_RxDefaultInterruptHandler)(void);
+
+/**
+  @Summary
+    Initialization routine that takes inputs from the EUSART1 GUI.
+
+  @Description
+    This routine initializes the EUSART1 driver.
+    This routine must be called before any other EUSART1 routine is called.
+
+  @Preconditions
+    None
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Comment
+    
+*/
+void EUSART1_Initialize(void);
+
+/**
+  @Summary
+    Checks if the EUSART1 transmitter is ready to transmit data
+
+  @Description
+    This routine checks if EUSART1 transmitter is ready 
+    to accept and transmit data byte
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    before calling this function.
+    EUSART1 transmitter should be enabled before calling 
+    this function
+
+  @Param
+    None
+
+  @Returns
+    Status of EUSART1 transmitter
+    TRUE: EUSART1 transmitter is ready
+    FALSE: EUSART1 transmitter is not ready
+    
+  @Example
+    <code>
+    void main(void)
+    {
+        volatile uint8_t rxData;
+        
+        // Initialize the device
+        SYSTEM_Initialize();
+        
+        while(1)
+        {
+            // Logic to echo received data
+            if(EUSART1_is_rx_ready())
+            {
+                rxData = UART1_Read();
+                if(EUSART1_is_tx_ready())
+                {
+                    EUSART1Write(rxData);
+                }
+            }
+        }
+    }
+    </code>
+*/
+bool EUSART1_is_tx_ready(void);
+
+/**
+  @Summary
+    Checks if the EUSART1 receiver ready for reading
+
+  @Description
+    This routine checks if EUSART1 receiver has received data 
+    and ready to be read
+
+  @Preconditions
+    EUSART1_Initialize() function should be called
+    before calling this function
+    EUSART1 receiver should be enabled before calling this 
+    function
+
+  @Param
+    None
+
+  @Returns
+    Status of EUSART1 receiver
+    TRUE: EUSART1 receiver is ready for reading
+    FALSE: EUSART1 receiver is not ready for reading
+    
+  @Example
+    <code>
+    void main(void)
+    {
+        volatile uint8_t rxData;
+        
+        // Initialize the device
+        SYSTEM_Initialize();
+        
+        while(1)
+        {
+            // Logic to echo received data
+            if(EUSART1_is_rx_ready())
+            {
+                rxData = UART1_Read();
+                if(EUSART1_is_tx_ready())
+                {
+                    EUSART1_Write(rxData);
+                }
+            }
+        }
+    }
+    </code>
+*/
+bool EUSART1_is_rx_ready(void);
+
+/**
+  @Summary
+    Checks if EUSART1 data is transmitted
+
+  @Description
+    This function return the status of transmit shift register
+
+  @Preconditions
+    EUSART1_Initialize() function should be called
+    before calling this function
+    EUSART1 transmitter should be enabled and EUSART1_Write
+    should be called before calling this function
+
+  @Param
+    None
+
+  @Returns
+    Status of EUSART1 receiver
+    TRUE: Data completely shifted out if the USART shift register
+    FALSE: Data is not completely shifted out of the shift register
+    
+  @Example
+    <code>
+    void main(void)
+    {
+        volatile uint8_t rxData;
+        
+        // Initialize the device
+        SYSTEM_Initialize();
+        
+        while(1)
+        {
+            if(EUSART1_is_tx_ready())
+            {
+				LED_0_SetHigh();
+                EUSART1Write(rxData);
+            }
+			if(EUSART1_is_tx_done()
+            {
+                LED_0_SetLow();
+            }
+        }
+    }
+    </code>
+*/
+bool EUSART1_is_tx_done(void);
+
+/**
+  @Summary
+    Gets the error status of the last read byte.
+
+  @Description
+    This routine gets the error status of the last read byte.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    before calling this function. The returned value is only
+    updated after a read is called.
+
+  @Param
+    None
+
+  @Returns
+    the status of the last read byte
+
+  @Example
+	<code>
+    void main(void)
+    {
+        volatile uint8_t rxData;
+        volatile eusart1_status_t rxStatus;
+        
+        // Initialize the device
+        SYSTEM_Initialize();
+        
+        // Enable the Global Interrupts
+        INTERRUPT_GlobalInterruptEnable();
+        
+        while(1)
+        {
+            // Logic to echo received data
+            if(EUSART1_is_rx_ready())
+            {
+                rxData = EUSART1_Read();
+                rxStatus = EUSART1_get_last_status();
+                if(rxStatus.ferr){
+                    LED_0_SetHigh();
+                }
+            }
+        }
+    }
+    </code>
+ */
+eusart1_status_t EUSART1_get_last_status(void);
+
+/**
+  @Summary
+    Read a byte of data from the EUSART1.
+
+  @Description
+    This routine reads a byte of data from the EUSART1.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    before calling this function. The transfer status should be checked to see
+    if the receiver is not empty before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    A data byte received by the driver.
+*/
+uint8_t EUSART1_Read(void);
+
+ /**
+  @Summary
+    Writes a byte of data to the EUSART1.
+
+  @Description
+    This routine writes a byte of data to the EUSART1.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    before calling this function. The transfer status should be checked to see
+    if transmitter is not busy before calling this function.
+
+  @Param
+    txData  - Data byte to write to the EUSART1
+
+  @Returns
+    None
+*/
+void EUSART1_Write(uint8_t txData);
+
+/**
+  @Summary
+    Maintains the driver's transmitter state machine and implements its ISR.
+
+  @Description
+    This routine is used to maintain the driver's internal transmitter state
+    machine.This interrupt service routine is called when the state of the
+    transmitter needs to be maintained in a non polled manner.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    for the ISR to execute correctly.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+void EUSART1_Transmit_ISR(void);
+
+/**
+  @Summary
+    Maintains the driver's receiver state machine and implements its ISR
+
+  @Description
+    This routine is used to maintain the driver's internal receiver state
+    machine.This interrupt service routine is called when the state of the
+    receiver needs to be maintained in a non polled manner.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    for the ISR to execute correctly.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+void EUSART1_Receive_ISR(void);
+
+/**
+  @Summary
+    Maintains the driver's receiver state machine
+
+  @Description
+    This routine is called by the receive state routine and is used to maintain 
+    the driver's internal receiver state machine. It should be called by a custom
+    ISR to maintain normal behavior
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    for the ISR to execute correctly.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+void EUSART1_RxDataHandler(void);
+
+/**
+  @Summary
+    Set EUSART1 Framing Error Handler
+
+  @Description
+    This API sets the function to be called upon EUSART1 framing error
+
+  @Preconditions
+    Initialize  the EUSART1 before calling this API
+
+  @Param
+    Address of function to be set as framing error handler
+
+  @Returns
+    None
+*/
+void EUSART1_SetFramingErrorHandler(void (* interruptHandler)(void));
+
+/**
+  @Summary
+    Set EUSART1 Overrun Error Handler
+
+  @Description
+    This API sets the function to be called upon EUSART1 overrun error
+
+  @Preconditions
+    Initialize  the EUSART1 module before calling this API
+
+  @Param
+    Address of function to be set as overrun error handler
+
+  @Returns
+    None
+*/
+void EUSART1_SetOverrunErrorHandler(void (* interruptHandler)(void));
+
+/**
+  @Summary
+    Set EUSART1 Error Handler
+
+  @Description
+    This API sets the function to be called upon EUSART1 error
+
+  @Preconditions
+    Initialize  the EUSART1 module before calling this API
+
+  @Param
+    Address of function to be set as error handler
+
+  @Returns
+    None
+*/
+void EUSART1_SetErrorHandler(void (* interruptHandler)(void));
+
+/**
+  @Summary
+    Sets the transmit handler function to be called by the interrupt service
+
+  @Description
+    Calling this function will set a new custom function that will be 
+    called when the transmit interrupt needs servicing.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    for the ISR to execute correctly.
+
+  @Param
+    A pointer to the new function
+
+  @Returns
+    None
+*/
+void EUSART1_SetTxInterruptHandler(void (* interruptHandler)(void));
+
+/**
+  @Summary
+    Sets the receive handler function to be called by the interrupt service
+
+  @Description
+    Calling this function will set a new custom function that will be 
+    called when the receive interrupt needs servicing.
+
+  @Preconditions
+    EUSART1_Initialize() function should have been called
+    for the ISR to execute correctly.
+
+  @Param
+    A pointer to the new function
+
+  @Returns
+    None
+*/
+void EUSART1_SetRxInterruptHandler(void (* interruptHandler)(void));
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    }
+
+#endif
+
+#endif  // EUSART1_H
+/**
+ End of File
+*/
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.c
new file mode 100644
index 0000000..ac78c2a
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.c
@@ -0,0 +1,71 @@
+/**
+  FVR Generated Driver File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    fvr.c
+
+  @Summary
+    This is the generated driver implementation file for the FVR driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This source file provides APIs for FVR.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+#include "fvr.h"
+
+/**
+  Section: FVR APIs
+*/
+
+void FVR_Initialize(void)
+{
+    // FVRS 4x; FVREN enabled; 
+    VREFCON0 = 0xB0;
+}
+
+bool FVR_IsOutputReady(void)
+{
+    return (VREFCON0bits.FVRST);
+}
+/**
+ End of File
+*/
+
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.h
new file mode 100644
index 0000000..2b4c9d8
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/fvr.h
@@ -0,0 +1,139 @@
+/**
+  FVR Generated Driver API Header File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    fvr.h
+
+  @Summary
+    This is the generated header file for the FVR driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for driver for FVR.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef FVR_H
+#define FVR_H
+
+/**
+  Section: Included Files
+*/
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    extern "C" {
+
+#endif
+
+/**
+  Section: FVR APIs
+*/
+
+/**
+  @Summary
+    Initializes the FVR
+
+  @Description
+    This routine initializes the FVR.
+    This routine must be called before any other FVR routine is called.
+    This routine should only be called once during system initialization.
+
+  @Preconditions
+    None
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Comment
+    
+
+  @Example
+    <code>
+    FVR_Initialize();
+    </code>
+*/
+ void FVR_Initialize(void);
+
+/**
+  @Summary
+    Gets the FVR output ready status.
+
+  @Description
+    This routine gets the FVR output ready status.
+
+  @Preconditions
+    The FVR_Initialize() routine should be called
+    prior to use this routine.
+
+  @Param
+    None
+
+  @Returns
+     true  - FVR module is ready for use.
+     false - FVR module is not ready for use.
+
+  @Example
+    <code>
+    FVR_Initialize();
+
+    if(FVR_IsOutputReady())
+    {
+          //user code
+    }
+    else
+    {
+          //user code
+    }
+    </code>
+*/
+bool FVR_IsOutputReady(void);
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    }
+
+#endif
+
+#endif // FVR_H
+/**
+ End of File
+*/
+
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.c
new file mode 100644
index 0000000..19a3468
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.c
@@ -0,0 +1,91 @@
+/**
+  Generated Interrupt Manager Source File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    interrupt_manager.c
+
+  @Summary:
+    This is the Interrupt Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description:
+    This header file provides implementations for global interrupt handling.
+    For individual peripheral handlers please see the peripheral driver for
+    all modules selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.04
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above or later
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#include "interrupt_manager.h"
+#include "mcc.h"
+
+void  INTERRUPT_Initialize (void)
+{
+    // Disable Interrupt Priority Vectors (16CXXX Compatibility Mode)
+    RCONbits.IPEN = 0;
+}
+
+void __interrupt() INTERRUPT_InterruptManager (void)
+{
+    // interrupt handler
+    if(INTCONbits.TMR0IE == 1 && INTCONbits.TMR0IF == 1)
+    {
+        TMR0_ISR();
+    }
+    else if(INTCONbits.PEIE == 1)
+    {
+        if(PIE1bits.TMR2IE == 1 && PIR1bits.TMR2IF == 1)
+        {
+            TMR2_ISR();
+        } 
+        else if(PIE1bits.TX1IE == 1 && PIR1bits.TX1IF == 1)
+        {
+            EUSART1_TxDefaultInterruptHandler();
+        } 
+        else if(PIE1bits.RC1IE == 1 && PIR1bits.RC1IF == 1)
+        {
+            EUSART1_RxDefaultInterruptHandler();
+        } 
+        else
+        {
+            //Unhandled Interrupt
+        }
+    }      
+    else
+    {
+        //Unhandled Interrupt
+    }
+}
+/**
+ End of File
+*/
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.h
new file mode 100644
index 0000000..d3da510
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/interrupt_manager.h
@@ -0,0 +1,115 @@
+/**
+  Generated Interrupt Manager Header File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    interrupt_manager.h
+
+  @Summary:
+    This is the Interrupt Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description:
+    This header file provides implementations for global interrupt handling.
+    For individual peripheral handlers please see the peripheral driver for
+    all modules selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.03
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above or later
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef INTERRUPT_MANAGER_H
+#define INTERRUPT_MANAGER_H
+
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    This macro will enable global interrupts.
+ * @Example
+    INTERRUPT_GlobalInterruptEnable();
+ */
+#define INTERRUPT_GlobalInterruptEnable() (INTCONbits.GIE = 1)
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    This macro will disable global interrupts.
+ * @Example
+    INTERRUPT_GlobalInterruptDisable();
+ */
+#define INTERRUPT_GlobalInterruptDisable() (INTCONbits.GIE = 0)
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    This macro will enable peripheral interrupts.
+ * @Example
+    INTERRUPT_PeripheralInterruptEnable();
+ */
+#define INTERRUPT_PeripheralInterruptEnable() (INTCONbits.PEIE = 1)
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    This macro will disable peripheral interrupts.
+ * @Example
+    INTERRUPT_PeripheralInterruptDisable();
+ */
+#define INTERRUPT_PeripheralInterruptDisable() (INTCONbits.PEIE = 0)
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    Initializes PIC18 peripheral interrupt priorities; enables/disables priority vectors
+ * @Example
+    INTERRUPT_Initialize();
+ */
+void INTERRUPT_Initialize (void);
+
+#endif  // INTERRUPT_MANAGER_H
+/**
+ End of File
+*/
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.c
new file mode 100644
index 0000000..1126d71
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.c
@@ -0,0 +1,81 @@
+/**
+  @Generated PIC10 / PIC12 / PIC16 / PIC18 MCUs Source File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    mcc.c
+
+  @Summary:
+    This is the mcc.c file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description:
+    This header file provides implementations for driver APIs for all modules selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.00
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above or later
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#include "mcc.h"
+
+
+void SYSTEM_Initialize(void)
+{
+
+    INTERRUPT_Initialize();
+    PIN_MANAGER_Initialize();
+    OSCILLATOR_Initialize();
+    FVR_Initialize();
+    CCP5_Initialize();
+    ADC_Initialize();
+    TMR2_Initialize();
+    TMR0_Initialize();
+    EUSART1_Initialize();
+}
+
+void OSCILLATOR_Initialize(void)
+{
+    // SCS FOSC; IRCF 16MHz_HFINTOSC; IDLEN disabled; 
+    OSCCON = 0x70;
+    // PRISD enabled; SOSCGO disabled; MFIOSEL disabled; 
+    OSCCON2 = 0x04;
+    // INTSRC disabled; PLLEN enabled; TUN 0; 
+    OSCTUNE = 0x40;
+    // Wait for PLL to stabilize
+    while(PLLRDY == 0)
+    {
+    }
+}
+
+
+/**
+ End of File
+*/
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.h
new file mode 100644
index 0000000..7fca89b
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/mcc.h
@@ -0,0 +1,94 @@
+/**
+  @Generated PIC10 / PIC12 / PIC16 / PIC18 MCUs Header File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    mcc.h
+
+  @Summary:
+    This is the mcc.h file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description:
+    This header file provides implementations for driver APIs for all modules selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.00
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above or later
+        MPLAB             :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef MCC_H
+#define	MCC_H
+#include <xc.h>
+#include "device_config.h"
+#include "pin_manager.h"
+#include <stdint.h>
+#include <stdbool.h>
+#include <conio.h>
+#include "interrupt_manager.h"
+#include "fvr.h"
+#include "ccp5.h"
+#include "tmr2.h"
+#include "tmr0.h"
+#include "adc.h"
+#include "eusart1.h"
+
+
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    Initializes the device to the default states configured in the
+ *                  MCC GUI
+ * @Example
+    SYSTEM_Initialize(void);
+ */
+void SYSTEM_Initialize(void);
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    Initializes the oscillator to the default states configured in the
+ *                  MCC GUI
+ * @Example
+    OSCILLATOR_Initialize(void);
+ */
+void OSCILLATOR_Initialize(void);
+
+#endif	/* MCC_H */
+/**
+ End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.c
new file mode 100644
index 0000000..9d0b816
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.c
@@ -0,0 +1,107 @@
+/**
+  Generated Pin Manager File
+
+  Company:
+    Microchip Technology Inc.
+
+  File Name:
+    pin_manager.c
+
+  Summary:
+    This is the Pin Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  Description:
+    This header file provides implementations for pin APIs for all pins selected in the GUI.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.11
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB             :  MPLAB X 5.45
+
+    Copyright (c) 2013 - 2015 released Microchip Technology Inc.  All rights reserved.
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#include "pin_manager.h"
+
+
+
+
+
+void PIN_MANAGER_Initialize(void)
+{
+    /**
+    LATx registers
+    */
+    LATE = 0x00;
+    LATD = 0x00;
+    LATA = 0x00;
+    LATB = 0x00;
+    LATC = 0x00;
+
+    /**
+    TRISx registers
+    */
+    TRISE = 0x07;
+    TRISA = 0x7F;
+    TRISB = 0xFF;
+    TRISC = 0xBF;
+    TRISD = 0x00;
+
+    /**
+    ANSELx registers
+    */
+    ANSELD = 0xFF;
+    ANSELC = 0x00;
+    ANSELB = 0x0E;
+    ANSELE = 0x07;
+    ANSELA = 0x2F;
+
+    /**
+    WPUx registers
+    */
+    WPUB = 0x00;
+    INTCON2bits.nRBPU = 1;
+
+
+
+
+
+
+   
+    
+}
+  
+void PIN_MANAGER_IOC(void)
+{   
+	// Clear global Interrupt-On-Change flag
+    INTCONbits.RBIF = 0;
+}
+
+/**
+ End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.h
new file mode 100644
index 0000000..67eb38d
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/pin_manager.h
@@ -0,0 +1,582 @@
+/**
+  @Generated Pin Manager Header File
+
+  @Company:
+    Microchip Technology Inc.
+
+  @File Name:
+    pin_manager.h
+
+  @Summary:
+    This is the Pin Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for driver for .
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.11
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45	
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef PIN_MANAGER_H
+#define PIN_MANAGER_H
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+
+#define INPUT   1
+#define OUTPUT  0
+
+#define HIGH    1
+#define LOW     0
+
+#define ANALOG      1
+#define DIGITAL     0
+
+#define PULL_UP_ENABLED      1
+#define PULL_UP_DISABLED     0
+
+// get/set AIN_DUL_BRD_TEMP aliases
+#define AIN_DUL_BRD_TEMP_TRIS                 TRISAbits.TRISA0
+#define AIN_DUL_BRD_TEMP_LAT                  LATAbits.LATA0
+#define AIN_DUL_BRD_TEMP_PORT                 PORTAbits.RA0
+#define AIN_DUL_BRD_TEMP_ANS                  ANSELAbits.ANSA0
+#define AIN_DUL_BRD_TEMP_SetHigh()            do { LATAbits.LATA0 = 1; } while(0)
+#define AIN_DUL_BRD_TEMP_SetLow()             do { LATAbits.LATA0 = 0; } while(0)
+#define AIN_DUL_BRD_TEMP_Toggle()             do { LATAbits.LATA0 = ~LATAbits.LATA0; } while(0)
+#define AIN_DUL_BRD_TEMP_GetValue()           PORTAbits.RA0
+#define AIN_DUL_BRD_TEMP_SetDigitalInput()    do { TRISAbits.TRISA0 = 1; } while(0)
+#define AIN_DUL_BRD_TEMP_SetDigitalOutput()   do { TRISAbits.TRISA0 = 0; } while(0)
+#define AIN_DUL_BRD_TEMP_SetAnalogMode()      do { ANSELAbits.ANSA0 = 1; } while(0)
+#define AIN_DUL_BRD_TEMP_SetDigitalMode()     do { ANSELAbits.ANSA0 = 0; } while(0)
+
+// get/set AIN_VICOR2_TEMP aliases
+#define AIN_VICOR2_TEMP_TRIS                 TRISAbits.TRISA1
+#define AIN_VICOR2_TEMP_LAT                  LATAbits.LATA1
+#define AIN_VICOR2_TEMP_PORT                 PORTAbits.RA1
+#define AIN_VICOR2_TEMP_ANS                  ANSELAbits.ANSA1
+#define AIN_VICOR2_TEMP_SetHigh()            do { LATAbits.LATA1 = 1; } while(0)
+#define AIN_VICOR2_TEMP_SetLow()             do { LATAbits.LATA1 = 0; } while(0)
+#define AIN_VICOR2_TEMP_Toggle()             do { LATAbits.LATA1 = ~LATAbits.LATA1; } while(0)
+#define AIN_VICOR2_TEMP_GetValue()           PORTAbits.RA1
+#define AIN_VICOR2_TEMP_SetDigitalInput()    do { TRISAbits.TRISA1 = 1; } while(0)
+#define AIN_VICOR2_TEMP_SetDigitalOutput()   do { TRISAbits.TRISA1 = 0; } while(0)
+#define AIN_VICOR2_TEMP_SetAnalogMode()      do { ANSELAbits.ANSA1 = 1; } while(0)
+#define AIN_VICOR2_TEMP_SetDigitalMode()     do { ANSELAbits.ANSA1 = 0; } while(0)
+
+// get/set AIN_VICOR1_TEMP aliases
+#define AIN_VICOR1_TEMP_TRIS                 TRISAbits.TRISA2
+#define AIN_VICOR1_TEMP_LAT                  LATAbits.LATA2
+#define AIN_VICOR1_TEMP_PORT                 PORTAbits.RA2
+#define AIN_VICOR1_TEMP_ANS                  ANSELAbits.ANSA2
+#define AIN_VICOR1_TEMP_SetHigh()            do { LATAbits.LATA2 = 1; } while(0)
+#define AIN_VICOR1_TEMP_SetLow()             do { LATAbits.LATA2 = 0; } while(0)
+#define AIN_VICOR1_TEMP_Toggle()             do { LATAbits.LATA2 = ~LATAbits.LATA2; } while(0)
+#define AIN_VICOR1_TEMP_GetValue()           PORTAbits.RA2
+#define AIN_VICOR1_TEMP_SetDigitalInput()    do { TRISAbits.TRISA2 = 1; } while(0)
+#define AIN_VICOR1_TEMP_SetDigitalOutput()   do { TRISAbits.TRISA2 = 0; } while(0)
+#define AIN_VICOR1_TEMP_SetAnalogMode()      do { ANSELAbits.ANSA2 = 1; } while(0)
+#define AIN_VICOR1_TEMP_SetDigitalMode()     do { ANSELAbits.ANSA2 = 0; } while(0)
+
+// get/set AIN_DU_RTN_I_MON aliases
+#define AIN_DU_RTN_I_MON_TRIS                 TRISAbits.TRISA3
+#define AIN_DU_RTN_I_MON_LAT                  LATAbits.LATA3
+#define AIN_DU_RTN_I_MON_PORT                 PORTAbits.RA3
+#define AIN_DU_RTN_I_MON_ANS                  ANSELAbits.ANSA3
+#define AIN_DU_RTN_I_MON_SetHigh()            do { LATAbits.LATA3 = 1; } while(0)
+#define AIN_DU_RTN_I_MON_SetLow()             do { LATAbits.LATA3 = 0; } while(0)
+#define AIN_DU_RTN_I_MON_Toggle()             do { LATAbits.LATA3 = ~LATAbits.LATA3; } while(0)
+#define AIN_DU_RTN_I_MON_GetValue()           PORTAbits.RA3
+#define AIN_DU_RTN_I_MON_SetDigitalInput()    do { TRISAbits.TRISA3 = 1; } while(0)
+#define AIN_DU_RTN_I_MON_SetDigitalOutput()   do { TRISAbits.TRISA3 = 0; } while(0)
+#define AIN_DU_RTN_I_MON_SetAnalogMode()      do { ANSELAbits.ANSA3 = 1; } while(0)
+#define AIN_DU_RTN_I_MON_SetDigitalMode()     do { ANSELAbits.ANSA3 = 0; } while(0)
+
+// get/set DIN_HYDRO_PWR_FLT aliases
+#define DIN_HYDRO_PWR_FLT_TRIS                 TRISAbits.TRISA4
+#define DIN_HYDRO_PWR_FLT_LAT                  LATAbits.LATA4
+#define DIN_HYDRO_PWR_FLT_PORT                 PORTAbits.RA4
+#define DIN_HYDRO_PWR_FLT_SetHigh()            do { LATAbits.LATA4 = 1; } while(0)
+#define DIN_HYDRO_PWR_FLT_SetLow()             do { LATAbits.LATA4 = 0; } while(0)
+#define DIN_HYDRO_PWR_FLT_Toggle()             do { LATAbits.LATA4 = ~LATAbits.LATA4; } while(0)
+#define DIN_HYDRO_PWR_FLT_GetValue()           PORTAbits.RA4
+#define DIN_HYDRO_PWR_FLT_SetDigitalInput()    do { TRISAbits.TRISA4 = 1; } while(0)
+#define DIN_HYDRO_PWR_FLT_SetDigitalOutput()   do { TRISAbits.TRISA4 = 0; } while(0)
+
+// get/set AIN_DU_FWR_I_MON aliases
+#define AIN_DU_FWR_I_MON_TRIS                 TRISAbits.TRISA5
+#define AIN_DU_FWR_I_MON_LAT                  LATAbits.LATA5
+#define AIN_DU_FWR_I_MON_PORT                 PORTAbits.RA5
+#define AIN_DU_FWR_I_MON_ANS                  ANSELAbits.ANSA5
+#define AIN_DU_FWR_I_MON_SetHigh()            do { LATAbits.LATA5 = 1; } while(0)
+#define AIN_DU_FWR_I_MON_SetLow()             do { LATAbits.LATA5 = 0; } while(0)
+#define AIN_DU_FWR_I_MON_Toggle()             do { LATAbits.LATA5 = ~LATAbits.LATA5; } while(0)
+#define AIN_DU_FWR_I_MON_GetValue()           PORTAbits.RA5
+#define AIN_DU_FWR_I_MON_SetDigitalInput()    do { TRISAbits.TRISA5 = 1; } while(0)
+#define AIN_DU_FWR_I_MON_SetDigitalOutput()   do { TRISAbits.TRISA5 = 0; } while(0)
+#define AIN_DU_FWR_I_MON_SetAnalogMode()      do { ANSELAbits.ANSA5 = 1; } while(0)
+#define AIN_DU_FWR_I_MON_SetDigitalMode()     do { ANSELAbits.ANSA5 = 0; } while(0)
+
+// get/set DOUT_JP2_LED_D10 aliases
+#define DOUT_JP2_LED_D10_TRIS                 TRISAbits.TRISA6
+#define DOUT_JP2_LED_D10_LAT                  LATAbits.LATA6
+#define DOUT_JP2_LED_D10_PORT                 PORTAbits.RA6
+#define DOUT_JP2_LED_D10_SetHigh()            do { LATAbits.LATA6 = 1; } while(0)
+#define DOUT_JP2_LED_D10_SetLow()             do { LATAbits.LATA6 = 0; } while(0)
+#define DOUT_JP2_LED_D10_Toggle()             do { LATAbits.LATA6 = ~LATAbits.LATA6; } while(0)
+#define DOUT_JP2_LED_D10_GetValue()           PORTAbits.RA6
+#define DOUT_JP2_LED_D10_SetDigitalInput()    do { TRISAbits.TRISA6 = 1; } while(0)
+#define DOUT_JP2_LED_D10_SetDigitalOutput()   do { TRISAbits.TRISA6 = 0; } while(0)
+
+// get/set DOUT_JP1_LED_D9 aliases
+#define DOUT_JP1_LED_D9_TRIS                 TRISAbits.TRISA7
+#define DOUT_JP1_LED_D9_LAT                  LATAbits.LATA7
+#define DOUT_JP1_LED_D9_PORT                 PORTAbits.RA7
+#define DOUT_JP1_LED_D9_SetHigh()            do { LATAbits.LATA7 = 1; } while(0)
+#define DOUT_JP1_LED_D9_SetLow()             do { LATAbits.LATA7 = 0; } while(0)
+#define DOUT_JP1_LED_D9_Toggle()             do { LATAbits.LATA7 = ~LATAbits.LATA7; } while(0)
+#define DOUT_JP1_LED_D9_GetValue()           PORTAbits.RA7
+#define DOUT_JP1_LED_D9_SetDigitalInput()    do { TRISAbits.TRISA7 = 1; } while(0)
+#define DOUT_JP1_LED_D9_SetDigitalOutput()   do { TRISAbits.TRISA7 = 0; } while(0)
+
+// get/set DIN_GLR_B_PG aliases
+#define DIN_GLR_B_PG_TRIS                 TRISBbits.TRISB0
+#define DIN_GLR_B_PG_LAT                  LATBbits.LATB0
+#define DIN_GLR_B_PG_PORT                 PORTBbits.RB0
+#define DIN_GLR_B_PG_WPU                  WPUBbits.WPUB0
+#define DIN_GLR_B_PG_ANS                  ANSELBbits.ANSB0
+#define DIN_GLR_B_PG_SetHigh()            do { LATBbits.LATB0 = 1; } while(0)
+#define DIN_GLR_B_PG_SetLow()             do { LATBbits.LATB0 = 0; } while(0)
+#define DIN_GLR_B_PG_Toggle()             do { LATBbits.LATB0 = ~LATBbits.LATB0; } while(0)
+#define DIN_GLR_B_PG_GetValue()           PORTBbits.RB0
+#define DIN_GLR_B_PG_SetDigitalInput()    do { TRISBbits.TRISB0 = 1; } while(0)
+#define DIN_GLR_B_PG_SetDigitalOutput()   do { TRISBbits.TRISB0 = 0; } while(0)
+#define DIN_GLR_B_PG_SetPullup()          do { WPUBbits.WPUB0 = 1; } while(0)
+#define DIN_GLR_B_PG_ResetPullup()        do { WPUBbits.WPUB0 = 0; } while(0)
+#define DIN_GLR_B_PG_SetAnalogMode()      do { ANSELBbits.ANSB0 = 1; } while(0)
+#define DIN_GLR_B_PG_SetDigitalMode()     do { ANSELBbits.ANSB0 = 0; } while(0)
+
+// get/set AIN_PWB_I_MON aliases
+#define AIN_PWB_I_MON_TRIS                 TRISBbits.TRISB1
+#define AIN_PWB_I_MON_LAT                  LATBbits.LATB1
+#define AIN_PWB_I_MON_PORT                 PORTBbits.RB1
+#define AIN_PWB_I_MON_WPU                  WPUBbits.WPUB1
+#define AIN_PWB_I_MON_ANS                  ANSELBbits.ANSB1
+#define AIN_PWB_I_MON_SetHigh()            do { LATBbits.LATB1 = 1; } while(0)
+#define AIN_PWB_I_MON_SetLow()             do { LATBbits.LATB1 = 0; } while(0)
+#define AIN_PWB_I_MON_Toggle()             do { LATBbits.LATB1 = ~LATBbits.LATB1; } while(0)
+#define AIN_PWB_I_MON_GetValue()           PORTBbits.RB1
+#define AIN_PWB_I_MON_SetDigitalInput()    do { TRISBbits.TRISB1 = 1; } while(0)
+#define AIN_PWB_I_MON_SetDigitalOutput()   do { TRISBbits.TRISB1 = 0; } while(0)
+#define AIN_PWB_I_MON_SetPullup()          do { WPUBbits.WPUB1 = 1; } while(0)
+#define AIN_PWB_I_MON_ResetPullup()        do { WPUBbits.WPUB1 = 0; } while(0)
+#define AIN_PWB_I_MON_SetAnalogMode()      do { ANSELBbits.ANSB1 = 1; } while(0)
+#define AIN_PWB_I_MON_SetDigitalMode()     do { ANSELBbits.ANSB1 = 0; } while(0)
+
+// get/set AIN_GLR_A_I_MON aliases
+#define AIN_GLR_A_I_MON_TRIS                 TRISBbits.TRISB2
+#define AIN_GLR_A_I_MON_LAT                  LATBbits.LATB2
+#define AIN_GLR_A_I_MON_PORT                 PORTBbits.RB2
+#define AIN_GLR_A_I_MON_WPU                  WPUBbits.WPUB2
+#define AIN_GLR_A_I_MON_ANS                  ANSELBbits.ANSB2
+#define AIN_GLR_A_I_MON_SetHigh()            do { LATBbits.LATB2 = 1; } while(0)
+#define AIN_GLR_A_I_MON_SetLow()             do { LATBbits.LATB2 = 0; } while(0)
+#define AIN_GLR_A_I_MON_Toggle()             do { LATBbits.LATB2 = ~LATBbits.LATB2; } while(0)
+#define AIN_GLR_A_I_MON_GetValue()           PORTBbits.RB2
+#define AIN_GLR_A_I_MON_SetDigitalInput()    do { TRISBbits.TRISB2 = 1; } while(0)
+#define AIN_GLR_A_I_MON_SetDigitalOutput()   do { TRISBbits.TRISB2 = 0; } while(0)
+#define AIN_GLR_A_I_MON_SetPullup()          do { WPUBbits.WPUB2 = 1; } while(0)
+#define AIN_GLR_A_I_MON_ResetPullup()        do { WPUBbits.WPUB2 = 0; } while(0)
+#define AIN_GLR_A_I_MON_SetAnalogMode()      do { ANSELBbits.ANSB2 = 1; } while(0)
+#define AIN_GLR_A_I_MON_SetDigitalMode()     do { ANSELBbits.ANSB2 = 0; } while(0)
+
+// get/set AIN_GLR_B_I_MON aliases
+#define AIN_GLR_B_I_MON_TRIS                 TRISBbits.TRISB3
+#define AIN_GLR_B_I_MON_LAT                  LATBbits.LATB3
+#define AIN_GLR_B_I_MON_PORT                 PORTBbits.RB3
+#define AIN_GLR_B_I_MON_WPU                  WPUBbits.WPUB3
+#define AIN_GLR_B_I_MON_ANS                  ANSELBbits.ANSB3
+#define AIN_GLR_B_I_MON_SetHigh()            do { LATBbits.LATB3 = 1; } while(0)
+#define AIN_GLR_B_I_MON_SetLow()             do { LATBbits.LATB3 = 0; } while(0)
+#define AIN_GLR_B_I_MON_Toggle()             do { LATBbits.LATB3 = ~LATBbits.LATB3; } while(0)
+#define AIN_GLR_B_I_MON_GetValue()           PORTBbits.RB3
+#define AIN_GLR_B_I_MON_SetDigitalInput()    do { TRISBbits.TRISB3 = 1; } while(0)
+#define AIN_GLR_B_I_MON_SetDigitalOutput()   do { TRISBbits.TRISB3 = 0; } while(0)
+#define AIN_GLR_B_I_MON_SetPullup()          do { WPUBbits.WPUB3 = 1; } while(0)
+#define AIN_GLR_B_I_MON_ResetPullup()        do { WPUBbits.WPUB3 = 0; } while(0)
+#define AIN_GLR_B_I_MON_SetAnalogMode()      do { ANSELBbits.ANSB3 = 1; } while(0)
+#define AIN_GLR_B_I_MON_SetDigitalMode()     do { ANSELBbits.ANSB3 = 0; } while(0)
+
+// get/set DIN_ALRMPOS1 aliases
+#define DIN_ALRMPOS1_TRIS                 TRISBbits.TRISB4
+#define DIN_ALRMPOS1_LAT                  LATBbits.LATB4
+#define DIN_ALRMPOS1_PORT                 PORTBbits.RB4
+#define DIN_ALRMPOS1_WPU                  WPUBbits.WPUB4
+#define DIN_ALRMPOS1_ANS                  ANSELBbits.ANSB4
+#define DIN_ALRMPOS1_SetHigh()            do { LATBbits.LATB4 = 1; } while(0)
+#define DIN_ALRMPOS1_SetLow()             do { LATBbits.LATB4 = 0; } while(0)
+#define DIN_ALRMPOS1_Toggle()             do { LATBbits.LATB4 = ~LATBbits.LATB4; } while(0)
+#define DIN_ALRMPOS1_GetValue()           PORTBbits.RB4
+#define DIN_ALRMPOS1_SetDigitalInput()    do { TRISBbits.TRISB4 = 1; } while(0)
+#define DIN_ALRMPOS1_SetDigitalOutput()   do { TRISBbits.TRISB4 = 0; } while(0)
+#define DIN_ALRMPOS1_SetPullup()          do { WPUBbits.WPUB4 = 1; } while(0)
+#define DIN_ALRMPOS1_ResetPullup()        do { WPUBbits.WPUB4 = 0; } while(0)
+#define DIN_ALRMPOS1_SetAnalogMode()      do { ANSELBbits.ANSB4 = 1; } while(0)
+#define DIN_ALRMPOS1_SetDigitalMode()     do { ANSELBbits.ANSB4 = 0; } while(0)
+
+// get/set DIN_ALRMPOS2 aliases
+#define DIN_ALRMPOS2_TRIS                 TRISBbits.TRISB5
+#define DIN_ALRMPOS2_LAT                  LATBbits.LATB5
+#define DIN_ALRMPOS2_PORT                 PORTBbits.RB5
+#define DIN_ALRMPOS2_WPU                  WPUBbits.WPUB5
+#define DIN_ALRMPOS2_ANS                  ANSELBbits.ANSB5
+#define DIN_ALRMPOS2_SetHigh()            do { LATBbits.LATB5 = 1; } while(0)
+#define DIN_ALRMPOS2_SetLow()             do { LATBbits.LATB5 = 0; } while(0)
+#define DIN_ALRMPOS2_Toggle()             do { LATBbits.LATB5 = ~LATBbits.LATB5; } while(0)
+#define DIN_ALRMPOS2_GetValue()           PORTBbits.RB5
+#define DIN_ALRMPOS2_SetDigitalInput()    do { TRISBbits.TRISB5 = 1; } while(0)
+#define DIN_ALRMPOS2_SetDigitalOutput()   do { TRISBbits.TRISB5 = 0; } while(0)
+#define DIN_ALRMPOS2_SetPullup()          do { WPUBbits.WPUB5 = 1; } while(0)
+#define DIN_ALRMPOS2_ResetPullup()        do { WPUBbits.WPUB5 = 0; } while(0)
+#define DIN_ALRMPOS2_SetAnalogMode()      do { ANSELBbits.ANSB5 = 1; } while(0)
+#define DIN_ALRMPOS2_SetDigitalMode()     do { ANSELBbits.ANSB5 = 0; } while(0)
+
+// get/set DIN_ALRMNEG1 aliases
+#define DIN_ALRMNEG1_TRIS                 TRISBbits.TRISB6
+#define DIN_ALRMNEG1_LAT                  LATBbits.LATB6
+#define DIN_ALRMNEG1_PORT                 PORTBbits.RB6
+#define DIN_ALRMNEG1_WPU                  WPUBbits.WPUB6
+#define DIN_ALRMNEG1_SetHigh()            do { LATBbits.LATB6 = 1; } while(0)
+#define DIN_ALRMNEG1_SetLow()             do { LATBbits.LATB6 = 0; } while(0)
+#define DIN_ALRMNEG1_Toggle()             do { LATBbits.LATB6 = ~LATBbits.LATB6; } while(0)
+#define DIN_ALRMNEG1_GetValue()           PORTBbits.RB6
+#define DIN_ALRMNEG1_SetDigitalInput()    do { TRISBbits.TRISB6 = 1; } while(0)
+#define DIN_ALRMNEG1_SetDigitalOutput()   do { TRISBbits.TRISB6 = 0; } while(0)
+#define DIN_ALRMNEG1_SetPullup()          do { WPUBbits.WPUB6 = 1; } while(0)
+#define DIN_ALRMNEG1_ResetPullup()        do { WPUBbits.WPUB6 = 0; } while(0)
+
+// get/set DIN_ALRMNEG2 aliases
+#define DIN_ALRMNEG2_TRIS                 TRISBbits.TRISB7
+#define DIN_ALRMNEG2_LAT                  LATBbits.LATB7
+#define DIN_ALRMNEG2_PORT                 PORTBbits.RB7
+#define DIN_ALRMNEG2_WPU                  WPUBbits.WPUB7
+#define DIN_ALRMNEG2_SetHigh()            do { LATBbits.LATB7 = 1; } while(0)
+#define DIN_ALRMNEG2_SetLow()             do { LATBbits.LATB7 = 0; } while(0)
+#define DIN_ALRMNEG2_Toggle()             do { LATBbits.LATB7 = ~LATBbits.LATB7; } while(0)
+#define DIN_ALRMNEG2_GetValue()           PORTBbits.RB7
+#define DIN_ALRMNEG2_SetDigitalInput()    do { TRISBbits.TRISB7 = 1; } while(0)
+#define DIN_ALRMNEG2_SetDigitalOutput()   do { TRISBbits.TRISB7 = 0; } while(0)
+#define DIN_ALRMNEG2_SetPullup()          do { WPUBbits.WPUB7 = 1; } while(0)
+#define DIN_ALRMNEG2_ResetPullup()        do { WPUBbits.WPUB7 = 0; } while(0)
+
+// get/set DIN_PWB_PG aliases
+#define DIN_PWB_PG_TRIS                 TRISCbits.TRISC0
+#define DIN_PWB_PG_LAT                  LATCbits.LATC0
+#define DIN_PWB_PG_PORT                 PORTCbits.RC0
+#define DIN_PWB_PG_SetHigh()            do { LATCbits.LATC0 = 1; } while(0)
+#define DIN_PWB_PG_SetLow()             do { LATCbits.LATC0 = 0; } while(0)
+#define DIN_PWB_PG_Toggle()             do { LATCbits.LATC0 = ~LATCbits.LATC0; } while(0)
+#define DIN_PWB_PG_GetValue()           PORTCbits.RC0
+#define DIN_PWB_PG_SetDigitalInput()    do { TRISCbits.TRISC0 = 1; } while(0)
+#define DIN_PWB_PG_SetDigitalOutput()   do { TRISCbits.TRISC0 = 0; } while(0)
+
+// get/set DIN_LBL_PWR_FLT aliases
+#define DIN_LBL_PWR_FLT_TRIS                 TRISCbits.TRISC1
+#define DIN_LBL_PWR_FLT_LAT                  LATCbits.LATC1
+#define DIN_LBL_PWR_FLT_PORT                 PORTCbits.RC1
+#define DIN_LBL_PWR_FLT_SetHigh()            do { LATCbits.LATC1 = 1; } while(0)
+#define DIN_LBL_PWR_FLT_SetLow()             do { LATCbits.LATC1 = 0; } while(0)
+#define DIN_LBL_PWR_FLT_Toggle()             do { LATCbits.LATC1 = ~LATCbits.LATC1; } while(0)
+#define DIN_LBL_PWR_FLT_GetValue()           PORTCbits.RC1
+#define DIN_LBL_PWR_FLT_SetDigitalInput()    do { TRISCbits.TRISC1 = 1; } while(0)
+#define DIN_LBL_PWR_FLT_SetDigitalOutput()   do { TRISCbits.TRISC1 = 0; } while(0)
+
+// get/set DIN_GLR_A_FLT aliases
+#define DIN_GLR_A_FLT_TRIS                 TRISCbits.TRISC2
+#define DIN_GLR_A_FLT_LAT                  LATCbits.LATC2
+#define DIN_GLR_A_FLT_PORT                 PORTCbits.RC2
+#define DIN_GLR_A_FLT_ANS                  ANSELCbits.ANSC2
+#define DIN_GLR_A_FLT_SetHigh()            do { LATCbits.LATC2 = 1; } while(0)
+#define DIN_GLR_A_FLT_SetLow()             do { LATCbits.LATC2 = 0; } while(0)
+#define DIN_GLR_A_FLT_Toggle()             do { LATCbits.LATC2 = ~LATCbits.LATC2; } while(0)
+#define DIN_GLR_A_FLT_GetValue()           PORTCbits.RC2
+#define DIN_GLR_A_FLT_SetDigitalInput()    do { TRISCbits.TRISC2 = 1; } while(0)
+#define DIN_GLR_A_FLT_SetDigitalOutput()   do { TRISCbits.TRISC2 = 0; } while(0)
+#define DIN_GLR_A_FLT_SetAnalogMode()      do { ANSELCbits.ANSC2 = 1; } while(0)
+#define DIN_GLR_A_FLT_SetDigitalMode()     do { ANSELCbits.ANSC2 = 0; } while(0)
+
+// get/set DIN_GLR_B_FLT aliases
+#define DIN_GLR_B_FLT_TRIS                 TRISCbits.TRISC3
+#define DIN_GLR_B_FLT_LAT                  LATCbits.LATC3
+#define DIN_GLR_B_FLT_PORT                 PORTCbits.RC3
+#define DIN_GLR_B_FLT_ANS                  ANSELCbits.ANSC3
+#define DIN_GLR_B_FLT_SetHigh()            do { LATCbits.LATC3 = 1; } while(0)
+#define DIN_GLR_B_FLT_SetLow()             do { LATCbits.LATC3 = 0; } while(0)
+#define DIN_GLR_B_FLT_Toggle()             do { LATCbits.LATC3 = ~LATCbits.LATC3; } while(0)
+#define DIN_GLR_B_FLT_GetValue()           PORTCbits.RC3
+#define DIN_GLR_B_FLT_SetDigitalInput()    do { TRISCbits.TRISC3 = 1; } while(0)
+#define DIN_GLR_B_FLT_SetDigitalOutput()   do { TRISCbits.TRISC3 = 0; } while(0)
+#define DIN_GLR_B_FLT_SetAnalogMode()      do { ANSELCbits.ANSC3 = 1; } while(0)
+#define DIN_GLR_B_FLT_SetDigitalMode()     do { ANSELCbits.ANSC3 = 0; } while(0)
+
+// get/set DIN_PWB_FLT aliases
+#define DIN_PWB_FLT_TRIS                 TRISCbits.TRISC4
+#define DIN_PWB_FLT_LAT                  LATCbits.LATC4
+#define DIN_PWB_FLT_PORT                 PORTCbits.RC4
+#define DIN_PWB_FLT_ANS                  ANSELCbits.ANSC4
+#define DIN_PWB_FLT_SetHigh()            do { LATCbits.LATC4 = 1; } while(0)
+#define DIN_PWB_FLT_SetLow()             do { LATCbits.LATC4 = 0; } while(0)
+#define DIN_PWB_FLT_Toggle()             do { LATCbits.LATC4 = ~LATCbits.LATC4; } while(0)
+#define DIN_PWB_FLT_GetValue()           PORTCbits.RC4
+#define DIN_PWB_FLT_SetDigitalInput()    do { TRISCbits.TRISC4 = 1; } while(0)
+#define DIN_PWB_FLT_SetDigitalOutput()   do { TRISCbits.TRISC4 = 0; } while(0)
+#define DIN_PWB_FLT_SetAnalogMode()      do { ANSELCbits.ANSC4 = 1; } while(0)
+#define DIN_PWB_FLT_SetDigitalMode()     do { ANSELCbits.ANSC4 = 0; } while(0)
+
+// get/set DIN_GLR_A_PG aliases
+#define DIN_GLR_A_PG_TRIS                 TRISCbits.TRISC5
+#define DIN_GLR_A_PG_LAT                  LATCbits.LATC5
+#define DIN_GLR_A_PG_PORT                 PORTCbits.RC5
+#define DIN_GLR_A_PG_ANS                  ANSELCbits.ANSC5
+#define DIN_GLR_A_PG_SetHigh()            do { LATCbits.LATC5 = 1; } while(0)
+#define DIN_GLR_A_PG_SetLow()             do { LATCbits.LATC5 = 0; } while(0)
+#define DIN_GLR_A_PG_Toggle()             do { LATCbits.LATC5 = ~LATCbits.LATC5; } while(0)
+#define DIN_GLR_A_PG_GetValue()           PORTCbits.RC5
+#define DIN_GLR_A_PG_SetDigitalInput()    do { TRISCbits.TRISC5 = 1; } while(0)
+#define DIN_GLR_A_PG_SetDigitalOutput()   do { TRISCbits.TRISC5 = 0; } while(0)
+#define DIN_GLR_A_PG_SetAnalogMode()      do { ANSELCbits.ANSC5 = 1; } while(0)
+#define DIN_GLR_A_PG_SetDigitalMode()     do { ANSELCbits.ANSC5 = 0; } while(0)
+
+// get/set RC6 procedures
+#define RC6_SetHigh()            do { LATCbits.LATC6 = 1; } while(0)
+#define RC6_SetLow()             do { LATCbits.LATC6 = 0; } while(0)
+#define RC6_Toggle()             do { LATCbits.LATC6 = ~LATCbits.LATC6; } while(0)
+#define RC6_GetValue()              PORTCbits.RC6
+#define RC6_SetDigitalInput()    do { TRISCbits.TRISC6 = 1; } while(0)
+#define RC6_SetDigitalOutput()   do { TRISCbits.TRISC6 = 0; } while(0)
+#define RC6_SetAnalogMode()         do { ANSELCbits.ANSC6 = 1; } while(0)
+#define RC6_SetDigitalMode()        do { ANSELCbits.ANSC6 = 0; } while(0)
+
+// get/set RC7 procedures
+#define RC7_SetHigh()            do { LATCbits.LATC7 = 1; } while(0)
+#define RC7_SetLow()             do { LATCbits.LATC7 = 0; } while(0)
+#define RC7_Toggle()             do { LATCbits.LATC7 = ~LATCbits.LATC7; } while(0)
+#define RC7_GetValue()              PORTCbits.RC7
+#define RC7_SetDigitalInput()    do { TRISCbits.TRISC7 = 1; } while(0)
+#define RC7_SetDigitalOutput()   do { TRISCbits.TRISC7 = 0; } while(0)
+#define RC7_SetAnalogMode()         do { ANSELCbits.ANSC7 = 1; } while(0)
+#define RC7_SetDigitalMode()        do { ANSELCbits.ANSC7 = 0; } while(0)
+
+// get/set DOUT_375V_RTN_SWITCH_ON_OFF aliases
+#define DOUT_375V_RTN_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD0
+#define DOUT_375V_RTN_SWITCH_ON_OFF_LAT                  LATDbits.LATD0
+#define DOUT_375V_RTN_SWITCH_ON_OFF_PORT                 PORTDbits.RD0
+#define DOUT_375V_RTN_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD0
+#define DOUT_375V_RTN_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD0 = 1; } while(0)
+#define DOUT_375V_RTN_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD0 = 0; } while(0)
+#define DOUT_375V_RTN_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD0 = ~LATDbits.LATD0; } while(0)
+#define DOUT_375V_RTN_SWITCH_ON_OFF_GetValue()           PORTDbits.RD0
+#define DOUT_375V_RTN_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD0 = 1; } while(0)
+#define DOUT_375V_RTN_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD0 = 0; } while(0)
+#define DOUT_375V_RTN_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD0 = 1; } while(0)
+#define DOUT_375V_RTN_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD0 = 0; } while(0)
+
+// get/set DOUT_375V_FWR_SWTCH_ON_OFF aliases
+#define DOUT_375V_FWR_SWTCH_ON_OFF_TRIS                 TRISDbits.TRISD1
+#define DOUT_375V_FWR_SWTCH_ON_OFF_LAT                  LATDbits.LATD1
+#define DOUT_375V_FWR_SWTCH_ON_OFF_PORT                 PORTDbits.RD1
+#define DOUT_375V_FWR_SWTCH_ON_OFF_ANS                  ANSELDbits.ANSD1
+#define DOUT_375V_FWR_SWTCH_ON_OFF_SetHigh()            do { LATDbits.LATD1 = 1; } while(0)
+#define DOUT_375V_FWR_SWTCH_ON_OFF_SetLow()             do { LATDbits.LATD1 = 0; } while(0)
+#define DOUT_375V_FWR_SWTCH_ON_OFF_Toggle()             do { LATDbits.LATD1 = ~LATDbits.LATD1; } while(0)
+#define DOUT_375V_FWR_SWTCH_ON_OFF_GetValue()           PORTDbits.RD1
+#define DOUT_375V_FWR_SWTCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD1 = 1; } while(0)
+#define DOUT_375V_FWR_SWTCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD1 = 0; } while(0)
+#define DOUT_375V_FWR_SWTCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD1 = 1; } while(0)
+#define DOUT_375V_FWR_SWTCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD1 = 0; } while(0)
+
+// get/set DOUT_ISO_12V_SWITCH_ON_OFF aliases
+#define DOUT_ISO_12V_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD2
+#define DOUT_ISO_12V_SWITCH_ON_OFF_LAT                  LATDbits.LATD2
+#define DOUT_ISO_12V_SWITCH_ON_OFF_PORT                 PORTDbits.RD2
+#define DOUT_ISO_12V_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD2
+#define DOUT_ISO_12V_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD2 = 1; } while(0)
+#define DOUT_ISO_12V_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD2 = 0; } while(0)
+#define DOUT_ISO_12V_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD2 = ~LATDbits.LATD2; } while(0)
+#define DOUT_ISO_12V_SWITCH_ON_OFF_GetValue()           PORTDbits.RD2
+#define DOUT_ISO_12V_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD2 = 1; } while(0)
+#define DOUT_ISO_12V_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD2 = 0; } while(0)
+#define DOUT_ISO_12V_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD2 = 1; } while(0)
+#define DOUT_ISO_12V_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD2 = 0; } while(0)
+
+// get/set DOUT_LBL_SWITCH_ON_OFF aliases
+#define DOUT_LBL_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD3
+#define DOUT_LBL_SWITCH_ON_OFF_LAT                  LATDbits.LATD3
+#define DOUT_LBL_SWITCH_ON_OFF_PORT                 PORTDbits.RD3
+#define DOUT_LBL_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD3
+#define DOUT_LBL_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD3 = 1; } while(0)
+#define DOUT_LBL_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD3 = 0; } while(0)
+#define DOUT_LBL_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD3 = ~LATDbits.LATD3; } while(0)
+#define DOUT_LBL_SWITCH_ON_OFF_GetValue()           PORTDbits.RD3
+#define DOUT_LBL_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD3 = 1; } while(0)
+#define DOUT_LBL_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD3 = 0; } while(0)
+#define DOUT_LBL_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD3 = 1; } while(0)
+#define DOUT_LBL_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD3 = 0; } while(0)
+
+// get/set DOUT_HYDRO_SWITCH_ON_OFF aliases
+#define DOUT_HYDRO_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD4
+#define DOUT_HYDRO_SWITCH_ON_OFF_LAT                  LATDbits.LATD4
+#define DOUT_HYDRO_SWITCH_ON_OFF_PORT                 PORTDbits.RD4
+#define DOUT_HYDRO_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD4
+#define DOUT_HYDRO_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD4 = 1; } while(0)
+#define DOUT_HYDRO_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD4 = 0; } while(0)
+#define DOUT_HYDRO_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD4 = ~LATDbits.LATD4; } while(0)
+#define DOUT_HYDRO_SWITCH_ON_OFF_GetValue()           PORTDbits.RD4
+#define DOUT_HYDRO_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD4 = 1; } while(0)
+#define DOUT_HYDRO_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD4 = 0; } while(0)
+#define DOUT_HYDRO_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD4 = 1; } while(0)
+#define DOUT_HYDRO_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD4 = 0; } while(0)
+
+// get/set DOUT_GLR_A_SWITCH_ON_OFF aliases
+#define DOUT_GLR_A_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD5
+#define DOUT_GLR_A_SWITCH_ON_OFF_LAT                  LATDbits.LATD5
+#define DOUT_GLR_A_SWITCH_ON_OFF_PORT                 PORTDbits.RD5
+#define DOUT_GLR_A_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD5
+#define DOUT_GLR_A_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD5 = 1; } while(0)
+#define DOUT_GLR_A_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD5 = 0; } while(0)
+#define DOUT_GLR_A_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD5 = ~LATDbits.LATD5; } while(0)
+#define DOUT_GLR_A_SWITCH_ON_OFF_GetValue()           PORTDbits.RD5
+#define DOUT_GLR_A_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD5 = 1; } while(0)
+#define DOUT_GLR_A_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD5 = 0; } while(0)
+#define DOUT_GLR_A_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD5 = 1; } while(0)
+#define DOUT_GLR_A_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD5 = 0; } while(0)
+
+// get/set DOUT_GLR_B_SWITCH_ON_OFF aliases
+#define DOUT_GLR_B_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD6
+#define DOUT_GLR_B_SWITCH_ON_OFF_LAT                  LATDbits.LATD6
+#define DOUT_GLR_B_SWITCH_ON_OFF_PORT                 PORTDbits.RD6
+#define DOUT_GLR_B_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD6
+#define DOUT_GLR_B_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD6 = 1; } while(0)
+#define DOUT_GLR_B_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD6 = 0; } while(0)
+#define DOUT_GLR_B_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD6 = ~LATDbits.LATD6; } while(0)
+#define DOUT_GLR_B_SWITCH_ON_OFF_GetValue()           PORTDbits.RD6
+#define DOUT_GLR_B_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD6 = 1; } while(0)
+#define DOUT_GLR_B_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD6 = 0; } while(0)
+#define DOUT_GLR_B_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD6 = 1; } while(0)
+#define DOUT_GLR_B_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD6 = 0; } while(0)
+
+// get/set DOUT_PWB_SWITCH_ON_OFF aliases
+#define DOUT_PWB_SWITCH_ON_OFF_TRIS                 TRISDbits.TRISD7
+#define DOUT_PWB_SWITCH_ON_OFF_LAT                  LATDbits.LATD7
+#define DOUT_PWB_SWITCH_ON_OFF_PORT                 PORTDbits.RD7
+#define DOUT_PWB_SWITCH_ON_OFF_ANS                  ANSELDbits.ANSD7
+#define DOUT_PWB_SWITCH_ON_OFF_SetHigh()            do { LATDbits.LATD7 = 1; } while(0)
+#define DOUT_PWB_SWITCH_ON_OFF_SetLow()             do { LATDbits.LATD7 = 0; } while(0)
+#define DOUT_PWB_SWITCH_ON_OFF_Toggle()             do { LATDbits.LATD7 = ~LATDbits.LATD7; } while(0)
+#define DOUT_PWB_SWITCH_ON_OFF_GetValue()           PORTDbits.RD7
+#define DOUT_PWB_SWITCH_ON_OFF_SetDigitalInput()    do { TRISDbits.TRISD7 = 1; } while(0)
+#define DOUT_PWB_SWITCH_ON_OFF_SetDigitalOutput()   do { TRISDbits.TRISD7 = 0; } while(0)
+#define DOUT_PWB_SWITCH_ON_OFF_SetAnalogMode()      do { ANSELDbits.ANSD7 = 1; } while(0)
+#define DOUT_PWB_SWITCH_ON_OFF_SetDigitalMode()     do { ANSELDbits.ANSD7 = 0; } while(0)
+
+// get/set AIN_HYDRO_I_MON aliases
+#define AIN_HYDRO_I_MON_TRIS                 TRISEbits.TRISE0
+#define AIN_HYDRO_I_MON_LAT                  LATEbits.LATE0
+#define AIN_HYDRO_I_MON_PORT                 PORTEbits.RE0
+#define AIN_HYDRO_I_MON_ANS                  ANSELEbits.ANSE0
+#define AIN_HYDRO_I_MON_SetHigh()            do { LATEbits.LATE0 = 1; } while(0)
+#define AIN_HYDRO_I_MON_SetLow()             do { LATEbits.LATE0 = 0; } while(0)
+#define AIN_HYDRO_I_MON_Toggle()             do { LATEbits.LATE0 = ~LATEbits.LATE0; } while(0)
+#define AIN_HYDRO_I_MON_GetValue()           PORTEbits.RE0
+#define AIN_HYDRO_I_MON_SetDigitalInput()    do { TRISEbits.TRISE0 = 1; } while(0)
+#define AIN_HYDRO_I_MON_SetDigitalOutput()   do { TRISEbits.TRISE0 = 0; } while(0)
+#define AIN_HYDRO_I_MON_SetAnalogMode()      do { ANSELEbits.ANSE0 = 1; } while(0)
+#define AIN_HYDRO_I_MON_SetDigitalMode()     do { ANSELEbits.ANSE0 = 0; } while(0)
+
+// get/set AIN_INPUT_V_MON aliases
+#define AIN_INPUT_V_MON_TRIS                 TRISEbits.TRISE1
+#define AIN_INPUT_V_MON_LAT                  LATEbits.LATE1
+#define AIN_INPUT_V_MON_PORT                 PORTEbits.RE1
+#define AIN_INPUT_V_MON_ANS                  ANSELEbits.ANSE1
+#define AIN_INPUT_V_MON_SetHigh()            do { LATEbits.LATE1 = 1; } while(0)
+#define AIN_INPUT_V_MON_SetLow()             do { LATEbits.LATE1 = 0; } while(0)
+#define AIN_INPUT_V_MON_Toggle()             do { LATEbits.LATE1 = ~LATEbits.LATE1; } while(0)
+#define AIN_INPUT_V_MON_GetValue()           PORTEbits.RE1
+#define AIN_INPUT_V_MON_SetDigitalInput()    do { TRISEbits.TRISE1 = 1; } while(0)
+#define AIN_INPUT_V_MON_SetDigitalOutput()   do { TRISEbits.TRISE1 = 0; } while(0)
+#define AIN_INPUT_V_MON_SetAnalogMode()      do { ANSELEbits.ANSE1 = 1; } while(0)
+#define AIN_INPUT_V_MON_SetDigitalMode()     do { ANSELEbits.ANSE1 = 0; } while(0)
+
+// get/set AIN_LBL_I_MON aliases
+#define AIN_LBL_I_MON_TRIS                 TRISEbits.TRISE2
+#define AIN_LBL_I_MON_LAT                  LATEbits.LATE2
+#define AIN_LBL_I_MON_PORT                 PORTEbits.RE2
+#define AIN_LBL_I_MON_ANS                  ANSELEbits.ANSE2
+#define AIN_LBL_I_MON_SetHigh()            do { LATEbits.LATE2 = 1; } while(0)
+#define AIN_LBL_I_MON_SetLow()             do { LATEbits.LATE2 = 0; } while(0)
+#define AIN_LBL_I_MON_Toggle()             do { LATEbits.LATE2 = ~LATEbits.LATE2; } while(0)
+#define AIN_LBL_I_MON_GetValue()           PORTEbits.RE2
+#define AIN_LBL_I_MON_SetDigitalInput()    do { TRISEbits.TRISE2 = 1; } while(0)
+#define AIN_LBL_I_MON_SetDigitalOutput()   do { TRISEbits.TRISE2 = 0; } while(0)
+#define AIN_LBL_I_MON_SetAnalogMode()      do { ANSELEbits.ANSE2 = 1; } while(0)
+#define AIN_LBL_I_MON_SetDigitalMode()     do { ANSELEbits.ANSE2 = 0; } while(0)
+
+/**
+   @Param
+    none
+   @Returns
+    none
+   @Description
+    GPIO and peripheral I/O initialization
+   @Example
+    PIN_MANAGER_Initialize();
+ */
+void PIN_MANAGER_Initialize (void);
+
+/**
+ * @Param
+    none
+ * @Returns
+    none
+ * @Description
+    Interrupt on Change Handling routine
+ * @Example
+    PIN_MANAGER_IOC();
+ */
+void PIN_MANAGER_IOC(void);
+
+
+
+#endif // PIN_MANAGER_H
+/**
+ End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.c
new file mode 100644
index 0000000..7b0e922
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.c
@@ -0,0 +1,158 @@
+/**
+  TMR0 Generated Driver File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    tmr0.c
+
+  @Summary
+    This is the generated driver implementation file for the TMR0 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This source file provides APIs for TMR0.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+#include "tmr0.h"
+
+/**
+  Section: Global Variables Definitions
+*/
+
+void (*TMR0_InterruptHandler)(void);
+
+volatile uint8_t timer0ReloadVal;
+
+/**
+  Section: TMR0 APIs
+*/
+
+
+void TMR0_Initialize(void)
+{
+    // Set TMR0 to the options selected in the User Interface
+
+    // TMR0H 0; 
+    TMR0H = 0x00;
+
+    // TMR0L 106; 
+    TMR0L = 0x6A;
+
+	
+    // Load TMR0 value to the 8-bit reload variable
+    timer0ReloadVal = 106;
+
+    // Clear Interrupt flag before enabling the interrupt
+    INTCONbits.TMR0IF = 0;
+
+    // Enabling TMR0 interrupt.
+    INTCONbits.TMR0IE = 1;
+
+    // Set Default Interrupt Handler
+    TMR0_SetInterruptHandler(TMR0_DefaultInterruptHandler);
+
+    // T0PS 1:32; T08BIT 8-bit; T0SE Increment_hi_lo; T0CS FOSC/4; TMR0ON enabled; PSA assigned; 
+    T0CON = 0xD4;
+}
+
+void TMR0_StartTimer(void)
+{
+    // Start the Timer by writing to TMR0ON bit
+    T0CONbits.TMR0ON = 1;
+}
+
+void TMR0_StopTimer(void)
+{
+    // Stop the Timer by writing to TMR0ON bit
+    T0CONbits.TMR0ON = 0;
+}
+
+uint8_t TMR0_ReadTimer(void)
+{
+    uint8_t readVal;
+
+    // read Timer0, low register only
+    readVal = TMR0L;
+
+    return readVal;
+}
+
+void TMR0_WriteTimer(uint8_t timerVal)
+{
+    // Write to the Timer0 registers, low register only
+    TMR0L = timerVal;
+ }
+
+void TMR0_Reload(void)
+{
+    //Write to the Timer0 register
+    TMR0L = timer0ReloadVal;
+}
+
+
+void TMR0_ISR(void)
+{
+
+    // clear the TMR0 interrupt flag
+    INTCONbits.TMR0IF = 0;
+
+    // reload TMR0
+    TMR0L = timer0ReloadVal;
+
+    if(TMR0_InterruptHandler)
+    {
+        TMR0_InterruptHandler();
+    }
+
+    // add your TMR0 interrupt custom code
+}
+
+
+void TMR0_SetInterruptHandler(void (* InterruptHandler)(void)){
+    TMR0_InterruptHandler = InterruptHandler;
+}
+
+void TMR0_DefaultInterruptHandler(void){
+    // add your TMR0 interrupt custom code
+    // or set custom function using TMR0_SetInterruptHandler()
+}
+
+/**
+  End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.h
new file mode 100644
index 0000000..2a00808
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr0.h
@@ -0,0 +1,356 @@
+/**
+  TMR0 Generated Driver API Header File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    tmr0.h
+
+  @Summary
+    This is the generated header file for the TMR0 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for TMR0.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef TMR0_H
+#define TMR0_H
+
+/**
+  Section: Included Files
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    extern "C" {
+
+#endif
+
+
+
+/**
+  Section: TMR0 APIs
+*/
+
+/**
+  @Summary
+    Initializes the TMR0.
+
+  @Description
+    This function initializes the TMR0 Registers.
+    This function must be called before any other TMR0 function is called.
+
+  @Preconditions
+    None
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Comment
+    
+	
+  @Example
+    <code>
+    main()
+    {
+        // Initialize TMR0 module
+        TMR0_Initialize();
+
+        // Do something else...
+    }
+    </code>
+*/
+void TMR0_Initialize(void);
+
+/**
+  @Summary
+    This function starts the TMR0.
+
+  @Description
+    This function starts the TMR0 operation.
+    This function must be called after the initialization of TMR0.
+
+  @Preconditions
+    Initialize  the TMR0 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    // Initialize TMR0 module
+
+    // Start TMR0
+    TMR0_StartTimer();
+
+    // Do something else...
+    </code>
+*/
+void TMR0_StartTimer(void);
+
+/**
+  @Summary
+    This function stops the TMR0.
+
+  @Description
+    This function stops the TMR0 operation.
+    This function must be called after the start of TMR0.
+
+  @Preconditions
+    Initialize  the TMR0 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    // Initialize TMR0 module
+
+    // Start TMR0
+    TMR0_StartTimer();
+
+    // Do something else...
+
+    // Stop TMR0;
+    TMR0_StopTimer();
+    </code>
+*/
+void TMR0_StopTimer(void);
+
+/**
+  @Summary
+    Reads the 8 bits TMR0 register value.
+
+  @Description
+    This function reads the 8 bits TMR0 register value and return it.
+
+  @Preconditions
+    Initialize  the TMR0 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    This function returns the 8 bits value of TMR0 register.
+
+  @Example
+    <code>
+    // Initialize TMR0 module
+
+    // Start TMR0
+    TMR0_StartTimer();
+
+    // Read the current value of TMR0
+    if(0 == TMR0_ReadTimer())
+    {
+        // Do something else...
+
+        // Reload the TMR value
+        TMR0_Reload();
+    }
+    </code>
+*/
+uint8_t TMR0_ReadTimer(void);
+
+/**
+  @Summary
+    Writes the 8 bits value to TMR0 register.
+
+  @Description
+    This function writes the 8 bits value to TMR0 register.
+    This function must be called after the initialization of TMR0.
+
+  @Preconditions
+    Initialize  the TMR0 before calling this function.
+
+  @Param
+    timerVal - Value to write into TMR0 register.
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    #define PERIOD 0x80
+    #define ZERO   0x00
+
+    while(1)
+    {
+        // Read the TMR0 register
+        if(ZERO == TMR0_ReadTimer())
+        {
+            // Do something else...
+
+            // Write the TMR0 register
+            TMR0_WriteTimer(PERIOD);
+        }
+
+        // Do something else...
+    }
+    </code>
+*/
+void TMR0_WriteTimer(uint8_t timerVal);
+
+/**
+  @Summary
+    Reload the 8 bits value to TMR0 register.
+
+  @Description
+    This function reloads the 8 bit value to TMR0 register.
+    This function must be called to write initial value into TMR0 register.
+
+  @Preconditions
+    Initialize  the TMR0 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    while(1)
+    {
+        if(TMR0IF)
+        {
+            // Do something else...
+
+            // clear the TMR0 interrupt flag
+            TMR0IF = 0;
+
+            // Reload the initial value of TMR0
+            TMR0_Reload();
+        }
+    }
+    </code>
+*/
+void TMR0_Reload(void);
+
+
+/**
+  @Summary
+    Timer Interrupt Service Routine
+
+  @Description
+    Timer Interrupt Service Routine is called by the Interrupt Manager.
+
+  @Preconditions
+    Initialize  the TMR0 module with interrupt before calling this isr.
+
+  @Param
+    None
+
+  @Returns
+    None
+ */
+void TMR0_ISR(void);
+
+
+/**
+  @Summary
+    Set Timer Interrupt Handler
+
+  @Description
+    This sets the function to be called during the ISR
+
+  @Preconditions
+    Initialize  the TMR0 module with interrupt before calling this.
+
+  @Param
+    Address of function to be set
+
+  @Returns
+    None
+*/
+ void TMR0_SetInterruptHandler(void (* InterruptHandler)(void));
+
+/**
+  @Summary
+    Timer Interrupt Handler
+
+  @Description
+    This is a function pointer to the function that will be called during the ISR
+
+  @Preconditions
+    Initialize  the TMR0 module with interrupt before calling this isr.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+extern void (*TMR0_InterruptHandler)(void);
+
+/**
+  @Summary
+    Default Timer Interrupt Handler
+
+  @Description
+    This is the default Interrupt Handler function
+
+  @Preconditions
+    Initialize  the TMR0 module with interrupt before calling this isr.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+void TMR0_DefaultInterruptHandler(void);
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    }
+
+#endif
+
+#endif // TMR0_H
+/**
+ End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.c b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.c
new file mode 100644
index 0000000..d32b0b6
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.c
@@ -0,0 +1,143 @@
+/**
+  TMR2 Generated Driver File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    tmr2.c
+
+  @Summary
+    This is the generated driver implementation file for the TMR2 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This source file provides APIs for TMR2.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+/**
+  Section: Included Files
+*/
+
+#include <xc.h>
+#include "tmr2.h"
+
+/**
+  Section: Global Variables Definitions
+*/
+
+void (*TMR2_InterruptHandler)(void);
+
+/**
+  Section: TMR2 APIs
+*/
+
+void TMR2_Initialize(void)
+{
+    // Set TMR2 to the options selected in the User Interface
+
+    // PR2 159; 
+    PR2 = 0x9F;
+
+    // TMR2 0; 
+    TMR2 = 0x00;
+
+    // Clearing IF flag before enabling the interrupt.
+    PIR1bits.TMR2IF = 0;
+
+    // Enabling TMR2 interrupt.
+    PIE1bits.TMR2IE = 1;
+
+    // Set Default Interrupt Handler
+    TMR2_SetInterruptHandler(TMR2_DefaultInterruptHandler);
+
+    // T2CKPS 1:4; T2OUTPS 1:2; TMR2ON on; 
+    T2CON = 0x0D;
+}
+
+void TMR2_StartTimer(void)
+{
+    // Start the Timer by writing to TMRxON bit
+    T2CONbits.TMR2ON = 1;
+}
+
+void TMR2_StopTimer(void)
+{
+    // Stop the Timer by writing to TMRxON bit
+    T2CONbits.TMR2ON = 0;
+}
+
+uint8_t TMR2_ReadTimer(void)
+{
+    uint8_t readVal;
+
+    readVal = TMR2;
+
+    return readVal;
+}
+
+void TMR2_WriteTimer(uint8_t timerVal)
+{
+    // Write to the Timer2 register
+    TMR2 = timerVal;
+}
+
+void TMR2_LoadPeriodRegister(uint8_t periodVal)
+{
+   PR2 = periodVal;
+}
+
+void TMR2_ISR(void)
+{
+
+    // clear the TMR2 interrupt flag
+    PIR1bits.TMR2IF = 0;
+
+    if(TMR2_InterruptHandler)
+    {
+        TMR2_InterruptHandler();
+    }
+}
+
+
+void TMR2_SetInterruptHandler(void (* InterruptHandler)(void)){
+    TMR2_InterruptHandler = InterruptHandler;
+}
+
+void TMR2_DefaultInterruptHandler(void){
+    // add your TMR2 interrupt custom code
+    // or set custom function using TMR2_SetInterruptHandler()
+}
+
+/**
+  End of File
+*/
\ No newline at end of file
diff --git a/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.h b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.h
new file mode 100644
index 0000000..e4fa63e
--- /dev/null
+++ b/micro/BPD-V01-FIRMWARE.X/mcc_generated_files/tmr2.h
@@ -0,0 +1,375 @@
+/**
+  TMR2 Generated Driver API Header File
+
+  @Company
+    Microchip Technology Inc.
+
+  @File Name
+    tmr2.h
+
+  @Summary
+    This is the generated header file for the TMR2 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
+
+  @Description
+    This header file provides APIs for TMR2.
+    Generation Information :
+        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7
+        Device            :  PIC18F46K22
+        Driver Version    :  2.01
+    The generated drivers are tested against the following:
+        Compiler          :  XC8 2.31 and above
+        MPLAB 	          :  MPLAB X 5.45
+*/
+
+/*
+    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
+    
+    Subject to your compliance with these terms, you may use Microchip software and any 
+    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
+    license terms applicable to your use of third party software (including open source software) that 
+    may accompany Microchip software.
+    
+    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
+    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
+    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
+    FOR A PARTICULAR PURPOSE.
+    
+    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
+    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
+    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
+    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
+    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
+    SOFTWARE.
+*/
+
+#ifndef TMR2_H
+#define TMR2_H
+
+/**
+  Section: Included Files
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus  // Provide C++ Compatibility
+
+    extern "C" {
+
+#endif
+
+
+/**
+  Section: Macro Declarations
+*/
+
+/**
+  Section: TMR2 APIs
+*/
+
+/**
+  @Summary
+    Initializes the TMR2 module.
+
+  @Description
+    This function initializes the TMR2 Registers.
+    This function must be called before any other TMR2 function is called.
+
+  @Preconditions
+    None
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Comment
+    
+
+  @Example
+    <code>
+    main()
+    {
+        // Initialize TMR2 module
+        TMR2_Initialize();
+
+        // Do something else...
+    }
+    </code>
+*/
+void TMR2_Initialize(void);
+
+/**
+  @Summary
+    This function starts the TMR2.
+
+  @Description
+    This function starts the TMR2 operation.
+    This function must be called after the initialization of TMR2.
+
+  @Preconditions
+    Initialize  the TMR2 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    // Initialize TMR2 module
+
+    // Start TMR2
+    TMR2_StartTimer();
+
+    // Do something else...
+    </code>
+*/
+void TMR2_StartTimer(void);
+
+/**
+  @Summary
+    This function stops the TMR2.
+
+  @Description
+    This function stops the TMR2 operation.
+    This function must be called after the start of TMR2.
+
+  @Preconditions
+    Initialize  the TMR2 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    // Initialize TMR2 module
+
+    // Start TMR2
+    TMR2_StartTimer();
+
+    // Do something else...
+
+    // Stop TMR2;
+    TMR2_StopTimer();
+    </code>
+*/
+void TMR2_StopTimer(void);
+
+/**
+  @Summary
+    Reads the TMR2 register.
+
+  @Description
+    This function reads the TMR2 register value and return it.
+
+  @Preconditions
+    Initialize  the TMR2 before calling this function.
+
+  @Param
+    None
+
+  @Returns
+    This function returns the current value of TMR2 register.
+
+  @Example
+    <code>
+    // Initialize TMR2 module
+
+    // Start TMR2
+    TMR2_StartTimer();
+
+    // Read the current value of TMR2
+    if(0 == TMR2_ReadTimer())
+    {
+        // Do something else...
+
+        // Reload the TMR value
+        TMR2_Reload();
+    }
+    </code>
+*/
+uint8_t TMR2_ReadTimer(void);
+
+/**
+  @Summary
+    Writes the TMR2 register.
+
+  @Description
+    This function writes the TMR2 register.
+    This function must be called after the initialization of TMR2.
+
+  @Preconditions
+    Initialize  the TMR2 before calling this function.
+
+  @Param
+    timerVal - Value to write into TMR2 register.
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    #define PERIOD 0x80
+    #define ZERO   0x00
+
+    while(1)
+    {
+        // Read the TMR2 register
+        if(ZERO == TMR2_ReadTimer())
+        {
+            // Do something else...
+
+            // Write the TMR2 register
+            TMR2_WriteTimer(PERIOD);
+        }
+
+        // Do something else...
+    }
+    </code>
+*/
+void TMR2_WriteTimer(uint8_t timerVal);
+
+/**
+  @Summary
+    Load value to Period Register.
+
+  @Description
+    This function writes the value to PR2 register.
+    This function must be called after the initialization of TMR2.
+
+  @Preconditions
+    Initialize  the TMR2 before calling this function.
+
+  @Param
+    periodVal - Value to load into TMR2 register.
+
+  @Returns
+    None
+
+  @Example
+    <code>
+    #define PERIOD1 0x80
+    #define PERIOD2 0x40
+    #define ZERO    0x00
+
+    while(1)
+    {
+        // Read the TMR2 register
+        if(ZERO == TMR2_ReadTimer())
+        {
+            // Do something else...
+
+            if(flag)
+            {
+                flag = 0;
+
+                // Load Period 1 value
+                TMR2_LoadPeriodRegister(PERIOD1);
+            }
+            else
+            {
+                 flag = 1;
+
+                // Load Period 2 value
+                TMR2_LoadPeriodRegister(PERIOD2);
+            }
+        }
+
+        // Do something else...
+    }
+    </code>
+*/
+void TMR2_LoadPeriodRegister(uint8_t periodVal);
+
+/**
+  @Summary
+    Timer Interrupt Service Routine
+
+  @Description
+    Timer Interrupt Service Routine is called by the Interrupt Manager.
+
+  @Preconditions
+    Initialize  the TMR2 module with interrupt before calling this isr.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+void TMR2_ISR(void);
+
+/**
+  @Summary
+    Set Timer Interrupt Handler
+
+  @Description
+    This sets the function to be called during the ISR
+
+  @Preconditions
+    Initialize  the TMR2 module with interrupt before calling this.
+
+  @Param
+    Address of function to be set
+
+  @Returns
+    None
+*/
+ void TMR2_SetInterruptHandler(void (* InterruptHandler)(void));
+
+/**
+  @Summary
+    Timer Interrupt Handler
+
+  @Description
+    This is a function pointer to the function that will be called during the ISR
+
+  @Preconditions
+    Initialize  the TMR2 module with interrupt before calling this isr.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+extern void (*TMR2_InterruptHandler)(void);
+
+/**
+  @Summary
+    Default Timer Interrupt Handler
+
+  @Description
+    This is the default Interrupt Handler function
+
+  @Preconditions
+    Initialize  the TMR2 module with interrupt before calling this isr.
+
+  @Param
+    None
+
+  @Returns
+    None
+*/
+void TMR2_DefaultInterruptHandler(void);
+
+
+ #ifdef __cplusplus  // Provide C++ Compatibility
+
+    }
+
+#endif
+
+#endif // TMR2_H
+/**
+ End of File
+*/
+
-- 
GitLab