diff --git a/host/python/codegen/analogvariables.py b/host/python/codegen/analogvariables.py new file mode 100644 index 0000000000000000000000000000000000000000..ae602088d24da9aa99e2516ed66375ab187919b1 --- /dev/null +++ b/host/python/codegen/analogvariables.py @@ -0,0 +1,547 @@ +from entities.descriptors import AnalogVariableDescriptor, AnalogAlarmDescriptor +from firmwareconfig import FirmwareConfig as fwcfg + + +def linear_regression(x0, y0, x1, y1, x): + m = float((y1-y0) / (x1-x0)) + return m * (x-x0) + y0 + + +def channel2voltage_ADC(_channel): + """Convert from the ADC channel to the ADC voltage""" + num_channels = fwcfg.ADC_NUM_CHANNELS + voltage_reference = 4.096 + assert _channel <= (num_channels - 1), "channel2voltage_ADC _channel = {} (maximum allowed is {})".format(_channel, num_channels-1) + assert _channel > 0, "channel2voltage_ADC _channel = {} (minimum allowed is {})".format(_channel, 0) + return float(_channel) * voltage_reference / num_channels + + +def voltage2channel_ADC(_voltage): + """Convert from the ADC voltage to ADC channel""" + num_channels = fwcfg.ADC_NUM_CHANNELS + voltage_reference = 4.096 + assert _voltage <= voltage_reference, "voltage2channel_ADC _voltage = {} (maximum allowed is {})".format(_voltage, voltage_reference) + adc_channel = round(num_channels * float(_voltage) / voltage_reference) + 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) + + +class AnalogVariableList: + """A class to define the list of analog variables of the BPS""" + + # this class can be actually created only once + _ready = False + + def __init__(self): + assert self._ready is False, "Class {} should be created only once!".format(self.__class__.__name__) + self._create() + self._ready = True + + def count(self): + return len(self.vars) + + def entries(self): + return self.vars + + def _create(self): + self.vars = list() + + alarm_enum_index = 1 + var_enum_index = 1 + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_DUL_BOARDTEMP', + analog_channel=0, + channel2measure_converter=convert_chn2meas_DUL_BOARDTEMP, + measure2channel_converter=convert_meas2chn_DUL_BOARDTEMP, + description='DUL board temperature sensor', + units='C', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=60., # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=60., # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_TEMP2', + analog_channel=1, + channel2measure_converter=convert_chn2meas_TEMP2, + measure2channel_converter=convert_meas2chn_TEMP2, + description='VICOR2 Heatsink (connector J12) temperature sensor signal acquisition', + units='C', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=60., # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=60., # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_TEMP1', + analog_channel=2, + channel2measure_converter=convert_chn2meas_TEMP1, + measure2channel_converter=convert_meas2chn_TEMP1, + description='VICOR1 Heatsink (connector J1) temperature sensor signal acquisition ', + units='C', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=60., # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=60., # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_VEOC_RTN_I', + analog_channel=3, + channel2measure_converter=convert_chn2meas_VEOC_RTN_I, + measure2channel_converter=convert_meas2chn_VEOC_RTN_I, + description='DU backbone return current sensor signal acquisition ', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=True, + threshold_default=1.5, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=True, + threshold_default=2.5, # TODO + timeout_default_ms=5. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_VEOC_FWR_I', + analog_channel=4, + channel2measure_converter=convert_chn2meas_VEOC_FWR_I, + measure2channel_converter=convert_meas2chn_VEOC_FWR_I, + description='DU backbone forward current sensor signal acquisition ', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=True, + threshold_default=1.4, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=True, + threshold_default=2.4, # TODO + timeout_default_ms=5. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_HYDRO_I', + analog_channel=5, + channel2measure_converter=convert_chn2meas_HYDRO_I, + measure2channel_converter=convert_meas2chn_HYDRO_I, + description='HYDRO current sensor signal acquisition ', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=0.15, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=0.80, # TODO + timeout_default_ms=50. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_INPUT_V', + analog_channel=6, + channel2measure_converter=convert_chn2meas_INPUT_V, + measure2channel_converter=convert_meas2chn_INPUT_V, + description='Main Input Line voltage sensor signal acquisition ', + units='V', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=405., # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=405., # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_LBL_I', + analog_channel=7, + channel2measure_converter=convert_chn2meas_LBL_I, + measure2channel_converter=convert_meas2chn_LBL_I, + description='LBL current sensor signal acquisition ', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=0.60, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=0.90, # TODO + timeout_default_ms=50. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_GLRA_I', + analog_channel=8, + channel2measure_converter=convert_chn2meas_GLRA_I, + measure2channel_converter=convert_meas2chn_GLRA_I, + description='GLENAIR-A current sensor signal acquisition', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=12.0, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=12.0, # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_GLRB_I', + analog_channel=9, + channel2measure_converter=convert_chn2meas_GLRB_I, + measure2channel_converter=convert_meas2chn_GLRB_I, + description='GLENAIR-B current sensor signal acquisition', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=12.0, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=12.0, # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + alarm_enum_index += 2 + var_enum_index += 1 + + self.vars.append( + AnalogVariableDescriptor( + firmware_config=fwcfg, + name='MON_PWB_I', + analog_channel=10, + channel2measure_converter=convert_chn2meas_PWB_I, + measure2channel_converter=convert_meas2chn_PWB_I, + description='POWER BOARD current sensor signal acquisition', + units='A', + enum_index=var_enum_index, + alarm_slow=AnalogAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=False, + threshold_default=1.8, # TODO + timeout_default_ms=100. # TODO + ), + alarm_fast=AnalogAlarmDescriptor( + enum_index=alarm_enum_index+1, + enable_default=False, + threshold_default=1.8, # TODO + timeout_default_ms=100. # TODO + ) + ) + ) + + print "Analog Variables, latest alarm index defined: ", alarm_enum_index+1 + + +if __name__ == '__main__': + analog_variables = AnalogVariableList() + print analog_variables.vars[0].name + + diff --git a/host/python/codegen/commands.py b/host/python/codegen/commands.py new file mode 100644 index 0000000000000000000000000000000000000000..be644838f40b190689726137cd2b6ee2ec423d73 --- /dev/null +++ b/host/python/codegen/commands.py @@ -0,0 +1,880 @@ +from entities.descriptors import CommandDescriptor, PayloadFieldEnum +from entities.descriptors import PayloadFieldU8, PayloadFieldU16, PayloadFieldU32 +from switches import SwitchList +from analogvariables import AnalogVariableList +from digitalvariables import DigitalVariableList +from userpins import UserPinList +from firmwareconfig import FirmwareConfig as fwcfg + + +class SwitchEnumField(PayloadFieldEnum): + """A class to create enum relative to the switches""" + + def __init__(self, switch_list): + assert isinstance(switch_list, SwitchList) + PayloadFieldEnum.__init__( + self, + name='SWITCHNUM', + description='Switch number', + index_list=[itm.enum_index for itm in switch_list.entries()], + value_list=[itm.name for itm in switch_list.entries()]) + + +class UserPinEnumField(PayloadFieldEnum): + """A class to create enum relative to the board user pins""" + + def __init__(self, user_pin_list): + assert isinstance(user_pin_list, UserPinList) + PayloadFieldEnum.__init__( + self, + name='PINNUM', + description='User pin number', + index_list=[itm.enum_index for itm in user_pin_list.entries()], + value_list=[itm.name for itm in user_pin_list.entries()]) + + +class AlarmEnumField(PayloadFieldEnum): + + def __init__(self, analog_variable_list, digital_variable_list, analog_only=False, append_all_selector=False, append_ored_selector=False): + assert isinstance(analog_variable_list, AnalogVariableList) + assert isinstance(digital_variable_list, DigitalVariableList) + index_list = list() + value_list = list() + enum_name = 'ALARM_NUMBER' + for variable in analog_variable_list.entries(): + index_list.append(variable.alarm_slow.enum_index) + value_list.append('ALARM_SLOW_' + variable.name) + index_list.append(variable.alarm_fast.enum_index) + value_list.append('ALARM_FAST_' + variable.name) + if not analog_only: + for variable in digital_variable_list.entries(): + index_list.append(variable.alarm.enum_index) + value_list.append('ALARM_' + variable.name) + else: + enum_name += '_ANALOG' + if append_all_selector: + enum_name += '_ALL' + index_list.append(max(index_list)+1) + value_list.append('ALARMS_ALL') + if append_ored_selector: + enum_name += '_EXT' + index_list.append(max(index_list)+1) + value_list.append('ALARMS_ALL_ORED') + + PayloadFieldEnum.__init__( + self, + name=enum_name, + description='Alarm number', + index_list=index_list, + value_list=value_list + ) + + +class VariableEnumField(PayloadFieldEnum): + + def __init__(self, analog_variable_list, digital_variable_list, analog_only=False, append_all_selector=False): + assert isinstance(analog_variable_list, AnalogVariableList) + assert isinstance(digital_variable_list, DigitalVariableList) + index_list = list() + value_list = list() + enum_name = 'VARIABLE_NUMBER' + for variable in analog_variable_list.entries(): + index_list.append(variable.enum_index) + value_list.append(variable.name) + if not analog_only: + for variable in digital_variable_list.entries(): + index_list.append(variable.enum_index) + value_list.append(variable.name) + else: + enum_name += '_ANALOG' + if append_all_selector: + enum_name += '_ALL' + index_list.append(max(index_list)+1) + value_list.append('ALL_VARIABLES') + + PayloadFieldEnum.__init__( + self, + name=enum_name, + description='Variable number', + index_list=index_list, + value_list=value_list + ) + + +class VariableAveragingPrescalerEnumField(PayloadFieldEnum): + """A class to create enum relative to the averaging functionality""" + + def __init__(self): + idxs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] + PayloadFieldEnum.__init__( + self, + name='AVERAGINGPRESCALER', + description='Variable averaging prescaler', + index_list=idxs, + value_list=[str(idx) for idx in idxs]) + + +class SwitchStateField(PayloadFieldEnum): + """A class to create enum relative to board switch state""" + + def __init__(self, for_request=False): + if for_request: + PayloadFieldEnum.__init__( + self, + name='SWITCHSTATE_NC', + description='Switch state', + index_list=[0, 1, 2], + value_list=['OPEN', 'CLOSED', 'NO_CHANGE']) + else: + PayloadFieldEnum.__init__( + self, + name='SWITCHSTATE', + description='Switch state', + index_list=[0, 1], + value_list=['OPEN', 'CLOSED']) + + +class EnableStateField(PayloadFieldEnum): + + def __init__(self, for_request=False): + if for_request: + PayloadFieldEnum.__init__( + self, + name='ENABLESTATE_NC', + description='Enable state', + index_list=[0, 1, 2], + value_list=['DISABLED', 'ENABLED', 'NO_CHANGE']) + else: + PayloadFieldEnum.__init__( + self, + name='ENABLESTATE', + description='Enable state', + index_list=[0, 1], + value_list=['DISABLED', 'ENABLED']) + + +class FiredStateField(PayloadFieldEnum): + + def __init__(self): + PayloadFieldEnum.__init__( + self, + name='FIREDSTATE', + description='Fired state', + index_list=[0, 1], + value_list=['NO', 'YES']) + + +class FlagStateField(PayloadFieldEnum): + + def __init__(self, name=None, description=None): + if name is None: + name = 'FLAGSTATE' + if description is None: + description = 'Status' + PayloadFieldEnum.__init__( + self, + name=name, + description=description, + index_list=[0, 1], + value_list=['LOW', 'HIGH']) + + +class UserPinStateField(PayloadFieldEnum): + + def __init__(self, name=None, description=None): + if name is None: + name = 'PINSTATE' + if description is None: + description = 'Status' + PayloadFieldEnum.__init__( + self, + name=name, + description=description, + index_list=[0, 1], + value_list=['LOW', 'HIGH']) + + +class CommandList: + """A class to define the list of board commands""" + + # this class can be actually created only once + _ready = False + + def __init__(self, switch_list, analog_variable_list, digital_variable_list, user_pin_list): + assert self._ready is False, "Class {} should be created only once!".format(self.__class__.__name__) + assert isinstance(switch_list, SwitchList) + assert isinstance(analog_variable_list, AnalogVariableList) + assert isinstance(digital_variable_list, DigitalVariableList) + assert isinstance(user_pin_list, UserPinList) + self.switch_list = switch_list + self.analog_variable_list = analog_variable_list + self.digital_variable_list = digital_variable_list + self.user_pin_list = user_pin_list + self._create() + self._ready = True + + def count(self): + return len(self.vars) + + def entries(self): + return self.vars + + def _create(self): + self.vars = list() + self._create_field_types() + self._create_switch_commands() + self._create_alarm_commands() + self._create_variable_commands() + self._create_utility_commands() + self._create_rescue_control_commands() + self._create_debug_commands() + self._consolidate_list() + + def _consolidate_list(self): + command_code_start = 0x40 # to avoid clashing with previus version commands + command_code_current = command_code_start + command_code_usedlist = [] + for cmd in self.vars: + if cmd.request_code is None: + assert cmd.response_code is None + assert command_code_current not in command_code_usedlist + assert (command_code_current+1) not in command_code_usedlist + cmd.request_code = command_code_current + cmd.response_code = command_code_current+1 + command_code_current += 2 + else: + if cmd.response_code is None: + assert (cmd.request_code + 1) not in command_code_usedlist + cmd.response_code = cmd.requset_code + 1 + assert cmd.request_code not in command_code_usedlist, "Command {}".format(cmd.name) + command_code_usedlist.append(cmd.request_code) + assert cmd.response_code not in command_code_usedlist or cmd.implement is False, "Command {}".format(cmd.name) + command_code_usedlist.append(cmd.response_code) + + def _create_field_types(self): + # switch enumeration + self.switch_enum_field = SwitchEnumField(self.switch_list) + + # variables enum fields + self.variable_enum_field = VariableEnumField(self.analog_variable_list, self.digital_variable_list) + self.variable_enum_field_all = VariableEnumField(self.analog_variable_list, self.digital_variable_list, append_all_selector=True) + + # variables value fields + self.variable_value_field = PayloadFieldU16(name='VALUE', description='Last acquired sensor value (0/1 for digital sensors)') + self.variable_meanvalue_field = PayloadFieldU16(name='MEANVALUE', description='Sensor mean value (0 for digital sensors)') + self.variable_offset_field = PayloadFieldU16(name='OFFSET', description='Sensor offset value (acquired at start-up, reports zero for digital sensors)') + self.variable_maxvalue_field = PayloadFieldU16(name='MAXVALUE', description='Sensor maximum value since last reset (0/1 for digital sensors)') + + # some variables command fields generated collections + self.variable_getall_values_respfields = self.__util_gen_variable_getall_response_payload('values') + self.variable_getall_meanvalues_respfields = self.__util_gen_variable_getall_response_payload('means') + self.variable_getall_offsets_respfields = self.__util_gen_variable_getall_response_payload('offsets') + self.variable_getall_maxvalues_respfields = self.__util_gen_variable_getall_response_payload('maxvalues') + self.variable_meanvalue_prescaler_field = VariableAveragingPrescalerEnumField() + + # alarms enum fields + self.alarm_enum_field = AlarmEnumField(self.analog_variable_list, self.digital_variable_list) + self.alarm_enum_field_all = AlarmEnumField(self.analog_variable_list, self.digital_variable_list, append_all_selector=True) + self.alarm_enum_field_analog = AlarmEnumField(self.analog_variable_list, self.digital_variable_list, analog_only=True) + self.alarm_enum_field_ored = AlarmEnumField(self.analog_variable_list, self.digital_variable_list, append_ored_selector=True) + + # alarms value fields + self.alarm_timeout_value_field = PayloadFieldU16(name='TIMEOUT', description='Timeout value') + self.alarm_maxcount_value_field = PayloadFieldU16(name='MAXCOUNT', description='Max count value') + self.alarm_firecount_value_field = PayloadFieldU16(name='FIRECOUNT', description='Fire count value') + self.alarm_threshold_value_field = PayloadFieldU16(name='THRESHOLD', description='Threshold value') + + # rescue procedure fields + self.rescue_timeout_value_field = PayloadFieldU16(name='RESCUE_TIMEOUT', description='Timeout value') + + # user pin related enumeration + self.user_pin_enum_field = UserPinEnumField(self.user_pin_list) + + def _create_switch_commands(self): + + 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)' + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SWITCH_CONTROL', + request_code=None, + response_code=None, + description=description, + request_payload=[self.switch_enum_field, SwitchStateField(for_request=True)], + response_payload=[self.switch_enum_field, SwitchStateField()] + ) + ) + + def _create_alarm_commands(self): + + ################################################################################################################ + # Alarm enable/disable command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_ENABLE', + request_code=None, + response_code=None, + 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_payload=[self.alarm_enum_field, EnableStateField(for_request=True)], + response_payload=[self.alarm_enum_field, EnableStateField()] + ) + ) + + ################################################################################################################ + # Append command: Set timeout command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_TIMEOUT_SET', + request_code=None, + response_code=None, + description='Set the timeout of one alarm', + request_payload=[self.alarm_enum_field, self.alarm_timeout_value_field], + response_payload=[] + ) + ) + + ################################################################################################################ + # Append command: Get timeout command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_TIMEOUT_GET', + request_code=None, + response_code=None, + description='Get the timeout value of one alarm', + request_payload=[self.alarm_enum_field], + response_payload=[self.alarm_enum_field, self.alarm_timeout_value_field] + ) + ) + + ################################################################################################################ + # Append command: Get the max timeout counter command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_MAXCOUNT_GET', + request_code=None, + response_code=None, + description='Get the maximum counter value reached by one of the alarms (use command ALARM_MAXCOUNT_RESET to reset it to zero)', + request_payload=[self.alarm_enum_field], + response_payload=[self.alarm_enum_field, self.alarm_maxcount_value_field] + ) + ) + + ################################################################################################################ + # Append command: Max timeout counter reset command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_MAXCOUNT_RESET', + request_code=None, + response_code=None, + description='Reset the maximum counter value of one alarm (or all alarms)', + request_payload=[self.alarm_enum_field_all], + response_payload=[] + ) + ) + + ################################################################################################################ + # Append command: Set alarm threshold command (for analog sensor alarms only) + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_THRESHOLD_SET', + request_code=None, + response_code=None, + description='Set the threshold value of one analog alarm', + request_payload=[self.alarm_enum_field_analog, self.alarm_threshold_value_field], + response_payload=[] + ) + ) + + ################################################################################################################ + # Append command: Get alarm threshold command (for analog sensor alarms only) + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_THRESHOLD_GET', + request_code=None, + response_code=None, + description='Get the threshold value of one analog alarm', + request_payload=[self.alarm_enum_field_analog], + response_payload=[self.alarm_enum_field_analog, self.alarm_threshold_value_field] + ) + ) + + ################################################################################################################ + # Append command: Get alarm fired command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_FIRED_GET', + request_code=None, + response_code=None, + description='Get the has-fired flag of one alarm (or all alarms OR-ed)', + request_payload=[self.alarm_enum_field_ored], + response_payload=[self.alarm_enum_field_ored, FiredStateField()] + ) + ) + + ################################################################################################################ + # Append command: Alarm fired reset command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_FIRED_RESET', + request_code=None, + response_code=None, + description='Reset the has-fired flag of one alarm (or all alarms)', + request_payload=[self.alarm_enum_field_all], + response_payload=[] + ) + ) + + ################################################################################################################ + # Append command: Get alarm firecount command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ALARM_FIRECOUNT_GET', + request_code=None, + response_code=None, + description='Get the current fire counter of one alarm', + request_payload=[self.alarm_enum_field], + response_payload=[self.alarm_enum_field, self.alarm_firecount_value_field] + ) + ) + + def __util_gen_variable_getall_response_payload(self, selection): + """Utility function""" + fields = list() + for variable in self.analog_variable_list.entries(): + if selection == 'values': + name = variable.name + '_VALUE' + description = 'Variable ' + variable.name + ' last acquired value' + elif selection == 'means': + name = variable.name + '_MEAN' + description = 'Variable ' + variable.name + ' mean' + elif selection == 'offsets': + name = variable.name + '_OFFSET' + description = 'Variable ' + variable.name + ' offset' + elif selection == 'maxvalues': + name = variable.name + '_MAXVALUE' + description = 'Variable ' + variable.name + ' max value' + else: + assert False + fields.append( + PayloadFieldU16( + name=name, + description=description + ) + ) + # if requested fields are not offsets, then append the fields for the digital sensors + if not selection == 'offsets': + for variable in self.digital_variable_list.entries(): + if selection != 'means': + fields.append( + FlagStateField( + name=variable.name + '_STATE', + description=variable.name + ' status' + ) + ) + return fields + + def _create_variable_commands(self): + + ################################################################################################################ + # Append command: Get one sensor current value, offset value, and max value + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_GET_SINGLE', + request_code=None, + response_code=None, + description='Get one sensor\'s current value, offset value, max value, and mean value', + request_payload=[self.variable_enum_field], + response_payload=[self.variable_enum_field, self.variable_value_field, self.variable_offset_field, self.variable_maxvalue_field, self.variable_meanvalue_field] + ) + ) + + ################################################################################################################ + # Append command: Reset one sensor max value + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_MAXVALUE_RESET', + request_code=None, + response_code=None, + description='Reset the max value of one sensor (or all sensors)', + request_payload=[self.variable_enum_field_all], + response_payload=[] + ) + ) + + ################################################################################################################ + # Append command: Get all sensors current values + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_VALUES_GETALL', + request_code=None, + response_code=None, + description='Get all sensors\' values', + request_payload=[], + response_payload=self.variable_getall_values_respfields + ) + ) + + ################################################################################################################ + # Append command: Get all sensors mean values + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_AVERAGE_GETALL', + request_code=None, + response_code=None, + description='Get all sensors\' mean values', + request_payload=[], + response_payload=self.variable_getall_meanvalues_respfields + ) + ) + + ################################################################################################################ + # Append command: Get all sensors offset values + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_OFFSETS_GETALL', + request_code=None, + response_code=None, + description='Get all sensors\' offsets', + request_payload=[], + response_payload=self.variable_getall_offsets_respfields + ) + ) + + ################################################################################################################ + # Append command: Get all sensors max values + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_MAXVALUES_GETALL', + request_code=None, + response_code=None, + description='Get all sensors\' max values', + request_payload=[], + response_payload=self.variable_getall_maxvalues_respfields + ) + ) + + ################################################################################################################ + # Append command: Set mean calculator prescale value + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_AVERAGING_PRESCALER_SET', + request_code=None, + response_code=None, + description='Set the value of the prescaler used to compute sensors\' averages', + request_payload=[self.variable_meanvalue_prescaler_field], + response_payload=[] + ) + ) + + ################################################################################################################ + # Append command: Get mean calculator prescale value + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='SENSOR_AVERAGING_PRESCALER_GET', + request_code=None, + response_code=None, + description='Get the value of the prescaler used to compute sensors\' averages', + request_payload=[], + response_payload=[self.variable_meanvalue_prescaler_field] + ) + ) + + def _create_utility_commands(self): + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Time Since reset + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='BOARDTIME', + request_code=None, + response_code=None, + description='Time since last reset', + request_payload=[], + response_payload=[ + PayloadFieldU32( + name='SECONDS', + description='Seconds since reset' + )] + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Time Since last command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='LASTCOMMANDTIME', + request_code=None, + response_code=None, + description='Time since last command', + request_payload=[], + response_payload=[ + PayloadFieldU32( + name='SECONDS', + description='Seconds since last command' + )] + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Versioning info + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='VERSION', + request_code=None, + response_code=None, + description='Report embedded code versioning information', + request_payload=[], + response_payload=[ + PayloadFieldU32( + name='FIRMWARE_TARGET', + description='Target of the firmware' + ), + PayloadFieldU16( + name='COMMAND_TABLE_VERSION', + description='Version of the current command table' + ), + PayloadFieldU16( + name='TEMPLATE_GENERATION_YEAR', + description='Template generation year' + ), + PayloadFieldU8( + name='TEMPLATE_GENERATION_MONTH', + description='Template generation month' + ), + PayloadFieldU8( + name='TEMPLATE_GENERATION_DAY', + description='Template generation day' + ), + PayloadFieldU8( + name='TEMPLATE_GENERATION_HOUR', + description='Template generation hour' + ), + PayloadFieldU8( + name='TEMPLATE_GENERATION_MINUTE', + description='Template generation minute' + ), + PayloadFieldU8( + name='TEMPLATE_GENERATION_SECOND', + description='Template generation second' + )] + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Get last error recorded + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='LASTERROR', + request_code=None, + response_code=None, + description='Return the last occurred error, and reset it to NOERR value', + request_payload=[], + response_payload=[ + PayloadFieldU8( + name='ERRCODE', + description='Error code' + )] + ) + ) + + def _create_rescue_control_commands(self): + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: commands related to rescuing procedure + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='RESCUE_ENABLE', + request_code=None, + response_code=None, + description='Enable or disable auto-rescue (or read enable status)', + request_payload=[EnableStateField(for_request=True)], + response_payload=[EnableStateField()] + ) + ) + + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='RESCUE_STATUS_GET', + request_code=None, + response_code=None, + description='Get the auto-rescue current status (fired or not)', + request_payload=[], + response_payload=[FiredStateField()] + ) + ) + + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='RESCUE_STATUS_RESET', + request_code=None, + response_code=None, + description='Reset the auto-rescue current status', + request_payload=[], + response_payload=[] + ) + ) + + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='RESCUE_TIMEOUT_SET', + request_code=None, + response_code=None, + description='Set the auto-rescue timeout value', + request_payload=[self.rescue_timeout_value_field], + response_payload=[] + ) + ) + + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='RESCUE_TIMEOUT_GET', + request_code=None, + response_code=None, + description='Get the auto-rescue timeout value', + request_payload=[], + response_payload=[self.rescue_timeout_value_field] + ) + ) + + def _create_debug_commands(self): + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: User pins commands + + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='USER_PIN_CONTROL', + request_code=None, + response_code=None, + description='Control one user pin', + request_payload=[self.user_pin_enum_field, UserPinStateField()], + response_payload=[] + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Echo command (1 byte payload versions) + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ECHO1', + request_code=None, + response_code=None, + description='Echo (1 byte)', + request_payload=[PayloadFieldU8(name='VALUE', description='Echoed byte')], + response_payload=[PayloadFieldU8(name='VALUE', description='Echoed byte')] + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Echo command (4 bytes) + _echo4_payload = list() + for k in range(4): + _echo4_payload.append(PayloadFieldU8(name='VALUE_' + str(k), description='Echoed byte')) + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ECHO4', + request_code=None, + response_code=None, + description='Echo (4 bytes)', + request_payload=_echo4_payload, + response_payload=_echo4_payload + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Echo command (32 bytes payload versions) + _echo32_payload = list() + for k in range(32): + _echo32_payload.append(PayloadFieldU8(name='VALUE_' + str(k), description='Echoed byte')) + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='ECHO32', + request_code=None, + response_code=None, + description='Echo (32 bytes)', + request_payload=_echo32_payload, + response_payload=_echo32_payload + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: Utility command to check alignment + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='VALCHECK', + request_code=None, + response_code=None, + description='Return a some data to check endianness', + request_payload=[], + response_payload=[ + PayloadFieldU32(name='VALUE_0', description='Read as 128'), + PayloadFieldU32(name='VALUE_1', description='Read as 2**31 = 2147483648'), + PayloadFieldU16(name='VALUE_2', description='Read as 128'), + PayloadFieldU16(name='VALUE_3', description='Read as 2**15 = 32768'), + PayloadFieldU8(name='VALUE_4', description='Read as 4'), + PayloadFieldU8(name='VALUE_5', description='Read as 64'), + ], + implement=True + ) + ) + + # ------------------------------------------------------------------------------------------------------------------ + # Append command: invalid command + self.vars.append( + CommandDescriptor( + firmware_config=fwcfg, + name='INVALID', + request_code=254, + response_code=255, + description='Invalid command (used in firmware, not implemented)', + request_payload=[], + response_payload=[], + implement=False + ) + ) + + +if __name__ == '__main__': + switch_list = SwitchList() + analog_variable_list = AnalogVariableList() + digital_variable_list = DigitalVariableList() + user_pin_list = UserPinList() + + commands = CommandList(switch_list, analog_variable_list, digital_variable_list, user_pin_list) + for command in commands.entries(): + print command.name + + print [itm.generate_enum_typename() for itm in PayloadFieldEnum.get_persistent_list().values()] + diff --git a/host/python/codegen/digitalvariables.py b/host/python/codegen/digitalvariables.py new file mode 100644 index 0000000000000000000000000000000000000000..b2b02e27c571f1e10650d253675fe4f98a90e5be --- /dev/null +++ b/host/python/codegen/digitalvariables.py @@ -0,0 +1,237 @@ +from entities.descriptors import DigitalVariableDescriptor, DigitalAlarmDescriptor +from firmwareconfig import FirmwareConfig as fwcfg + + +class DigitalVariableList: + """A class to define the list of digital variables of the board""" + + # this class can be actually created only once + _ready = False + + def __init__(self): + assert self._ready is False, "Class {} should be created only once!".format(self.__class__.__name__) + self._create() + self._ready = True + + def count(self): + return len(self.vars) + + def entries(self): + return self.vars + + def _create(self): + self.vars = list() + + alarm_enum_index = 23 # 22 alarms related to analog variables + var_enum_index = 12 # 11 variables are analog ones + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_DUL_ALARMPOS1', + ioname='DIN_ALRMPOS1', + description='DUL current limiting on VEOC direct alarm 1', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_DUL_ALARMPOS2', + ioname='DIN_ALRMPOS2', + description='DUL current limiting on VEOC direct alarm 2', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_DUL_ALARMNEG1', + ioname='DIN_ALRMNEG1', + description='DUL current limiting on VEOC return alarm 1', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_DUL_ALARMNEG2', + ioname='DIN_ALRMNEG2', + description='DUL current limiting on VEOC return alarm 2', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_HYDRO_PWR_FAULT', + ioname='DIN_HYDRO_PWR_FLT', + description='Fault status acquisition of 12V ISO HYDRO power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_LBL_PWR_FAULT', + ioname='DIN_LBL_PWR_FLT', + description='Fault status acquisition of 12V ISO LBL power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_GLRA_FAULT', + ioname='DIN_GLR_A_FLT', + description='Fault status acquisition of 12V GLENAIR-A power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_GLRB_FAULT', + ioname='DIN_GLR_B_FLT', + description='Fault status acquisition of 12V GLENAIR-B power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_POWERBOARD_FAULT', + ioname='DIN_PWB_FLT', + description='Fault status acquisition of 12V POWER BOARD power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_GLRA_GOOD', + ioname='DIN_GLR_A_PG', + description='Power good status acquisition of 12V GLENAIR-A power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_GLRB_GOOD', + ioname='DIN_GLR_B_PG', + description='Power good status acquisition of 12V GLENAIR-B power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + alarm_enum_index += 1 + var_enum_index += 1 + self.vars.append( + DigitalVariableDescriptor( + firmware_config=fwcfg, + name='FLAG_POWERBOARD_GOOD', + ioname='DIN_PWB_PG', + description='Power good status acquisition of 12V POWER BOARD power line', + enum_index=var_enum_index, + alarm=DigitalAlarmDescriptor( + enum_index=alarm_enum_index, + enable_default=None, # requires a specific #define + timeout_default_ms=1.5 + ) + ) + ) + + + +if __name__ == '__main__': + digital_variables = DigitalVariableList() + print digital_variables.vars[0].name + + + + diff --git a/host/python/codegen/entities/__init__.py b/host/python/codegen/entities/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/host/python/codegen/entities/base.py b/host/python/codegen/entities/base.py new file mode 100644 index 0000000000000000000000000000000000000000..ad70c79995ed674e1b2acfe52716768b74f80320 --- /dev/null +++ b/host/python/codegen/entities/base.py @@ -0,0 +1,23 @@ +class UniqueName: + """Base class for unique name checking""" + + _names = list() + + def __init__(self, name): + assert name not in self._names, 'Name "{}" already used'.format(name) + self.name = name + self._names.append(self.name) + + +class EntityDescriptor(UniqueName): + """Base class for all entities""" + + def __init__(self, firmware_config, name): + UniqueName.__init__(self, name) + self.firmware_config = firmware_config + + + + + + diff --git a/host/python/codegen/entities/descriptors.py b/host/python/codegen/entities/descriptors.py new file mode 100644 index 0000000000000000000000000000000000000000..6a070d83c498e500512932dd81ebe0769f41bd8c --- /dev/null +++ b/host/python/codegen/entities/descriptors.py @@ -0,0 +1,338 @@ +from base import EntityDescriptor, UniqueName + + +class AnalogAlarmDescriptor: + """Board Descriptor of analog alarms""" + + _enum_indexes = list() + + def __init__(self, enum_index, enable_default, threshold_default, timeout_default_ms): + """ + Constructor + :param enum_index: index used if used if enumerating + :param enable_default: boolean for default alarm enable + :param threshold_default: threshold value expressed as a float value (physical value) + :param timeout_default_ms: default timeout value in milliseconds + """ + self.enum_index = enum_index + self.enable_default = enable_default + self.threshold_default = threshold_default + self.timeout_default_ms = timeout_default_ms + # check enum uniqueness + if self.enum_index is not None: + assert self.enum_index not in self._enum_indexes, 'Enum index {} already used for class "{}"'.format(self.enum_index, self.__class__.__name__) + self._enum_indexes.append(self.enum_index) + + +class AnalogVariableDescriptor(EntityDescriptor): + """Board Analog variable descriptor""" + + _enum_indexes = list() + + def __init__(self, firmware_config, name, analog_channel, channel2measure_converter, measure2channel_converter, units, description, enum_index=None, alarm_slow=None, alarm_fast=None): + """ + Constructor + :param firmware_config: the class FirmwareConfig + :param name: name of the analog variable (used for code generation) + :param analog_channel: ADC channel number + :param channel2measure_converter: function to convert from the ADC number (unsigned) to float value (physical value) + :param measure2channel_converter: function to convert from float value (physical value) to the ADC number (unsigned) + :param description: human readeable description (used for comments) + :param enum_index: index used if used if enumerating + :param alarm_slow: default values for the slow alarm + :param alarm_fast: default values for the slow alarm + """ + EntityDescriptor.__init__(self, firmware_config, name) + self.analog_channel = analog_channel + self.channel2measure_converter = channel2measure_converter + self.measure2channel_converter = measure2channel_converter + self.units = units + self.description = description + self.enum_index = enum_index + self.alarm_slow = alarm_slow + self.alarm_fast = alarm_fast + # check enum uniqueness + if self.enum_index is not None: + assert self.enum_index not in self._enum_indexes, 'Enum index {} already used for class "{}"'.format(self.enum_index, self.__class__.__name__) + self._enum_indexes.append(self.enum_index) + + + def get_alarm_callback_name(self): + return 'alarm_' + self.name + + def get_alarm_fast_timeout_ticks(self, num_analogvariables): + # calculate the number of ticks of the timeout + timeout_ticks = round((self.alarm_fast.timeout_default_ms / self.firmware_config.SLOW_TIMER_PERIOD_MS) / (self.firmware_config.ADCREADER_CALLS_PER_MEASURE * num_analogvariables)) + assert timeout_ticks < self.firmware_config.TIMEOUT_COUNTER_MAX, 'get_alarm_fast_timeout_ticks: {}'.format(timeout_ticks) + return timeout_ticks + + def get_alarm_slow_timeout_ticks(self, num_analogvariables): + # calculate the number of ticks of the timeout + timeout_ticks = round((self.alarm_slow.timeout_default_ms / self.firmware_config.SLOW_TIMER_PERIOD_MS) / (self.firmware_config.ADCREADER_CALLS_PER_MEASURE * num_analogvariables)) + assert timeout_ticks < self.firmware_config.TIMEOUT_COUNTER_MAX, 'get_alarm_slow_timeout_ticks: {}'.format(timeout_ticks) + return timeout_ticks + + def get_alarm_fast_timeout_actual_ms(self, num_analogvariables): + # calculate the actual number of milliseconds of the timeout + return self.get_alarm_fast_timeout_ticks(num_analogvariables) * self.firmware_config.SLOW_TIMER_PERIOD_MS * (self.firmware_config.ADCREADER_CALLS_PER_MEASURE * num_analogvariables) + + def get_alarm_slow_timeout_actual_ms(self, num_analogvariables): + # calculate the actual number of milliseconds of the timeout + return self.get_alarm_slow_timeout_ticks(num_analogvariables) * self.firmware_config.SLOW_TIMER_PERIOD_MS * (self.firmware_config.ADCREADER_CALLS_PER_MEASURE * num_analogvariables) + + def get_alarm_fast_threshold_channels(self): + threshold_channels = round(self.measure2channel_converter(self.alarm_fast.threshold_default)) + assert threshold_channels < self.firmware_config.ADC_NUM_CHANNELS, 'get_alarm_fast_threshold_channels too high {} on {}'.format(threshold_channels, self.name) + return threshold_channels + + def get_alarm_slow_threshold_channels(self): + threshold_channels = round(self.measure2channel_converter(self.alarm_slow.threshold_default)) + assert threshold_channels < self.firmware_config.ADC_NUM_CHANNELS, 'get_alarm_slow_threshold_channels too high {} on {}'.format(threshold_channels, self.name) + return threshold_channels + + +class DigitalAlarmDescriptor: + """Board Descriptor of digital alarms""" + + def __init__(self, enum_index, enable_default, timeout_default_ms): + """ + Constructor + :param enum_index: index used if used if enumerating + :param enable_default: boolean for default alarm enable + :param timeout_default_ms: default timeout value in milliseconds + """ + self.enum_index = enum_index + self.enable_default = enable_default + self.timeout_default_ms = timeout_default_ms + + +class DigitalVariableDescriptor(EntityDescriptor): + """Board Digital variable descriptor""" + + _enum_indexes = list() + + def __init__(self, firmware_config, name, ioname, description, enum_index=None, alarm=None): + """ + Coonbstructor + :param firmware_config: the class FirmwareConfig + :param name: name of the digital variable (used for code generation) + :param ioname: name of the pin control macro (i.e. _SetHigh and _SetLow will be appended) + :param description: human readeable description (used for comments) + :param enum_index: index used if used if enumerating + :param alarm: default values for the alarm + """ + EntityDescriptor.__init__(self, firmware_config, name) + self.ioname = ioname + self.description = description + self.enum_index = enum_index + self.alarm = alarm + # check enum uniqueness + if self.enum_index is not None: + assert self.enum_index not in self._enum_indexes, 'Enum index {} already used for class "{}"'.format(self.enum_index, self.__class__.__name__) + self._enum_indexes.append(self.enum_index) + + def get_alarm_callback_name(self): + return 'alarm_' + self.name + + def get_read_function_name(self): + return 'ioread_' + self.ioname + + def get_alarm_timeout_ticks(self): + # calculate the number of ticks of the timeout + timeout_ticks = round(self.alarm.timeout_default_ms / self.firmware_config.FAST_TIMER_PERIOD_MS) + assert timeout_ticks < self.firmware_config.TIMEOUT_COUNTER_MAX, 'get_alarm_timeout_ticks: {}'.format(timeout_ticks) + return timeout_ticks + + def get_alarm_timeout_actual_ms(self): + # calculate the actual number of milliseconds of the timeout + return self.get_alarm_timeout_ticks() * self.firmware_config.FAST_TIMER_PERIOD_MS + + +class SwitchDescriptor(EntityDescriptor): + """Board Switch descriptor""" + + _enum_indexes = list() + + def __init__(self, firmware_config, name, ioname, description, enum_index=None): + """ + Constructor + :param firmware_config: the class FirmwareConfig + :param name: name of the switch (used for code generation) + :param ioname: name of the pin control macro (i.e. _SetHigh and _SetLow will be appended) + :param description: human readeable description (used for comments) + :param enum_index: index used if used if enumerating + """ + EntityDescriptor.__init__(self, firmware_config, name) + self.ioname = ioname + self.description = description + self.enum_index = enum_index + # check enum uniqueness + if self.enum_index is not None: + assert self.enum_index not in self._enum_indexes, 'Enum index {} already used for class "{}"'.format(self.enum_index, self.__class__.__name__) + self._enum_indexes.append(self.enum_index) + + +class UserPinDescriptor(EntityDescriptor): + """Board user pin descriptor""" + + _enum_indexes = list() + + def __init__(self, firmware_config, name, ioname, description, enum_index=None): + """ + Constructor + :param firmware_config: the class FirmwareConfig + :param name: name of the pin (used for code generation) + :param ioname: name of the pin control macro (i.e. _SetHigh and _SetLow will be appended) + :param description: human readeable description (used for comments) + :param enum_index: index used if used if enumerating + """ + EntityDescriptor.__init__(self, firmware_config, name) + self.ioname = ioname + self.description = description + self.enum_index = enum_index + # check enum uniqueness + if self.enum_index is not None: + assert self.enum_index not in self._enum_indexes, 'Enum index {} already used for class "{}"'.format(self.enum_index, self.__class__.__name__) + self._enum_indexes.append(self.enum_index) + + +class PayloadFieldDescriptor: + """A single payload (request or response) field in a command""" + + def __init__(self, name, ctype, description, length): + """ + Constructor + :param name: + :param ctype: + :param description: + """ + self.name = name + self.ctype = ctype + self.description = description + self.length = length + + +class PayloadFieldU8(PayloadFieldDescriptor): + """A single payload field containing an uint8""" + + def __init__(self, name, description): + # super's constructor + PayloadFieldDescriptor.__init__(self, name, 'uint8_t', description, length=1) + + +class PayloadFieldU16(PayloadFieldDescriptor): + """A single payload field containing an uint16""" + + def __init__(self, name, description): + # super's constructor + PayloadFieldDescriptor.__init__(self, name, 'uint16_t', description, length=2) + + +class PayloadFieldU32(PayloadFieldDescriptor): + """A single payload field containing an uint32""" + + def __init__(self, name, description): + # super's constructor + PayloadFieldDescriptor.__init__(self, name, 'uint32_t', description, length=4) + + +class PayloadFieldEnum(PayloadFieldDescriptor): + """A single payload field containing an enum value (mapped to an u8)""" + + _persistent_list = {} + _identifiers = [] + + def __init__(self, name, description, index_list, value_list): + """ + :param name: string used in C code to identify the payload field + :param description: description of the payload field + :param index_list: ordered list of indexes of the enum field + :param value_list: ordered list of values associated to the given enums (usually strings) + """ + + PayloadFieldDescriptor.__init__(self, name, 'uint8_t', description, length=1) + assert len(index_list) == len(value_list) + assert max(index_list) < 255 # because we map to uint8_t + self.index_list = index_list + self.value_list = value_list + # self.reference_table_num = len(PayloadFieldEnum.persistent_list) + # compute long description field + indexing_desc = '\n'.join([(str(index_list[k]) + ' -> ' + value_list[k]) for k in range(len(index_list))]) + self.detailed_description = 'Enum values:' + '\n{}'.format(indexing_desc) + # verify the name is not already used (warn user) + if self.name in PayloadFieldEnum._identifiers: + print "WARNING: Identifier {} already used (now in class {})".format(self.name, self.__class__.__name__) + else: + PayloadFieldEnum._identifiers.append(self.name) + PayloadFieldEnum._persistent_list[self.name] = self + # assert self.name not in PayloadFieldEnum._identifiers, "Identifier {} already used.".format(self.name) + + def generate_enum_typename(self): + return 'enum_' + self.name.lower() + '_t' + + def get_index_min(self): + return min(self.index_list) + + def get_index_max(self): + return max(self.index_list) + + def get_value_by_index(self, index): + for idx in range(len(self.index_list)): + if self.index_list[idx] == index: + return self.value_list[idx] + return None + + + @staticmethod + def get_persistent_list(): + return PayloadFieldEnum._persistent_list + + +class CommandDescriptor(UniqueName): + """Board Command descriptor""" + + _command_codes = list() + + def __init__(self, firmware_config, name, request_code, response_code, description, request_payload, response_payload, implement=True): + """ + Constructor + :param firmware_config: the class FirmwareConfig + :param name: command name (used for code generation) + :param request_code: request code number (set to None for auto-numbering) + :param response_code: response code number (set to None for auto-numbering) + :param description: command description (for comments) + :param request_payload: the request payload (an ordered list of PayloadField) + :param response_payload: the response payload (an ordered list of PayloadField) + :param implement: if False the command must be considered invalid (will not be callable by host) + """ + # check request and response payload are correct type + assert all(isinstance(x, PayloadFieldDescriptor) for x in request_payload), "All request payload fields must be of type PayloadField" + assert all(isinstance(x, PayloadFieldDescriptor) for x in response_payload), "All response payload fields must be of type PayloadField" + UniqueName.__init__(self, name) + self.firmware_config = firmware_config + self.request_code = request_code + self.response_code = response_code + self.description = description + self.request_payload = request_payload + self.response_payload = response_payload + self.implement = implement + # check command codes not already used + if self.request_code is not None: + assert self.request_code not in self._command_codes, 'Request command code {} already used for class "{}"'.format(self.request_code, self.__class__.__name__) + self._command_codes.append(self.request_code) + if self.response_code is not None: + assert self.response_code not in self._command_codes, 'Response command code {} already used for class "{}"'.format(self.response_code, self.__class__.__name__) + self._command_codes.append(self.response_code) + + def generate_callback_name(self): + return 'command_' + self.name + + def get_request_payload_len(self): + return sum([itm.length for itm in self.request_payload]) + + def get_response_payload_len(self): + return sum([itm.length for itm in self.response_payload]) + + + + diff --git a/host/python/codegen/firmwareconfig.py b/host/python/codegen/firmwareconfig.py new file mode 100644 index 0000000000000000000000000000000000000000..8e8219c0a309a93bb810f8b4207a036e060ade92 --- /dev/null +++ b/host/python/codegen/firmwareconfig.py @@ -0,0 +1,41 @@ +""" +Some data reflecting current firmware configuration. +""" + + +class FirmwareConfig: + + # board clock frequency in MHz + MAIN_CLOCK = 64. + + # fast timer period in milliseconds + FAST_TIMER_PERIOD_MS = 0.08 + + # slow timer period in milliseconds + SLOW_TIMER_PERIOD_MS = 0.3 + + # ADC data alignment + ADC_ALIGNMENT = 'left' + + # maximum allowed value for a timeout counter (depends on the type used) + TIMEOUT_COUNTER_MAX = 65535 + + # number of adcreader ticks calls per measure + ADCREADER_CALLS_PER_MEASURE = 2 + + if ADC_ALIGNMENT == 'left': + ADC_NUM_CHANNELS = 65536. + elif ADC_ALIGNMENT == 'right': + ADC_NUM_CHANNELS = 1024. + else: + assert False + + # this is a static class + def __init__(self): + assert False, "Class {} should not be instantiated".format(self.__class__.__name__) + + + + + + diff --git a/host/python/codegen/generate_analogvariables.py b/host/python/codegen/generate_analogvariables.py new file mode 100644 index 0000000000000000000000000000000000000000..82edb4048704a15860bab3f74fc9dda986bc8ed9 --- /dev/null +++ b/host/python/codegen/generate_analogvariables.py @@ -0,0 +1,171 @@ +from analogvariables import AnalogVariableList +from entities.descriptors import PayloadFieldEnum + + +def generate_analogvariables_header(_analogvariables): + + includes = """ +#include "../../typedefs.h" +""" + + typedef = """ +// 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; + """ + + countdef = """ +// number of defined analog variables +#define ANALOG_VARIABLES_COUNT {} + """.format(_analogvariables.count()) + + extern = """ + +// make analog variable list available to anyone including this file +extern analog_variable_t analog_variables[ANALOG_VARIABLES_COUNT]; + """ + + varindex_tpl = """ +#define ANALOG_VARIABLE_INDEX_[varname] [index] // index of the analog variable [varname] inside analog_variables array""" + + varindex_contents = '' + index = 0 + for variable in _analogvariables.entries(): + varindex_define = varindex_tpl + varindex_define = varindex_define.replace('[varname]', variable.name) + varindex_define = varindex_define.replace('[index]', str(index)) + index += 1 + varindex_contents += varindex_define + + header_contents = includes + typedef + countdef + varindex_contents + extern + + return header_contents + + +def generate_analogvariables_source(_analogvariables): + + entry_tpl = """// Variable: [name] ([description]) +{ + .channel = [channel], + .value = 0, + .sum_curr = 0, + .sum_last = 0, + .sum_counter = 0, + .offset = 0, + .value_max = 0, + .alarms = { + .fast = { + .enabled = [fast_alarm_enabled], + .threshold = [fast_alarm_threshold], // [fast_alarm_threshold_comment] + .timeout = [fast_alarm_timeout], // [fast_alarm_timeout_comment] + .timeout_counter = 0, + .timeout_counter_max = 0, + .firecount = 0 + }, + .slow = { + .enabled = [slow_alarm_enabled], + .threshold = [slow_alarm_threshold], // [slow_alarm_threshold_comment] + .timeout = [slow_alarm_timeout], // [slow_alarm_timeout_comment] + .timeout_counter = 0, + .timeout_counter_max = 0, + .firecount = 0 + }, + .callback = [callback] + } +}""" + + source_list = list() + for analogvariable in _analogvariables.entries(): + + fast_alarm_timeout = analogvariable.get_alarm_fast_timeout_ticks(_analogvariables.count()) + slow_alarm_timeout = analogvariable.get_alarm_slow_timeout_ticks(_analogvariables.count()) + fast_alarm_timeout_ms = analogvariable.get_alarm_fast_timeout_actual_ms(_analogvariables.count()) + slow_alarm_timeout_ms = analogvariable.get_alarm_slow_timeout_actual_ms(_analogvariables.count()) + + fast_alarm_threshold = analogvariable.get_alarm_fast_threshold_channels() + slow_alarm_threshold = analogvariable.get_alarm_slow_threshold_channels() + + callback = analogvariable.get_alarm_callback_name() + + entry_source = entry_tpl + entry_source = entry_source.replace('[name]', analogvariable.name) + entry_source = entry_source.replace('[description]', analogvariable.description) + entry_source = entry_source.replace('[channel]', str(analogvariable.analog_channel)) + entry_source = entry_source.replace('[fast_alarm_enabled]', 'true' if analogvariable.alarm_slow.enable_default else 'false') + entry_source = entry_source.replace('[fast_alarm_threshold]', str(int(fast_alarm_threshold))) + entry_source = entry_source.replace('[fast_alarm_threshold_comment]', str(analogvariable.alarm_fast.threshold_default) + ' ' + analogvariable.units) + entry_source = entry_source.replace('[fast_alarm_timeout]', str(int(fast_alarm_timeout))) + entry_source = entry_source.replace('[fast_alarm_timeout_comment]', '{} ms ({} ms real)'.format(analogvariable.alarm_fast.timeout_default_ms, fast_alarm_timeout_ms)) + entry_source = entry_source.replace('[slow_alarm_enabled]', 'true' if analogvariable.alarm_slow.enable_default else 'false') + entry_source = entry_source.replace('[slow_alarm_threshold]', str(int(slow_alarm_threshold))) + entry_source = entry_source.replace('[slow_alarm_threshold_comment]', str(analogvariable.alarm_slow.threshold_default) + ' ' + analogvariable.units) + entry_source = entry_source.replace('[slow_alarm_timeout]', str(int(slow_alarm_timeout))) + entry_source = entry_source.replace('[slow_alarm_timeout_comment]', '{} ms ({} ms real)'.format(analogvariable.alarm_slow.timeout_default_ms, slow_alarm_timeout_ms)) + entry_source = entry_source.replace('[callback]', callback) + + source_list.append(entry_source) + + source_contents = '' + source_contents += '#include "variables.h"\n' + source_contents += '# include "../../configuration.h"\n\n' + + source_contents += 'analog_variable_t analog_variables[ANALOG_VARIABLES_COUNT] = {\n' + source_contents += ','.join(source_list) + source_contents += '};\n' + + return source_contents + + +def generate_analogalarm_callbacks_header(_analogvariables): + alarm_callback_header_tpl = """ +// Callback function for alarm on analog variable [name] ([description]) +void [callback](); +""" + source_list = list() + for analogvariable in _analogvariables.entries(): + source_list.append( + alarm_callback_header_tpl + .replace('[name]', analogvariable.name) + .replace('[description]', analogvariable.description) + .replace('[callback]', analogvariable.get_alarm_callback_name()) + ) + return ''.join(source_list) + + +def generate_analogalarm_callbacks_source_template(_analogvariables): + alarm_callback_source_tpl = """ +// Callback function for alarm on analog variable [name] ([description]) +void [callback]() { + // TODO implement auto-generated callback function [callback] +} +""" + source_list = list() + for analogvariable in _analogvariables.entries(): + source_list.append( + alarm_callback_source_tpl + .replace('[name]', analogvariable.name) + .replace('[description]', analogvariable.description) + .replace('[callback]', analogvariable.get_alarm_callback_name()) + ) + + contents = '#include "generated/sources/variables.h"\n' + contents += ''.join(source_list) + return contents + + +if __name__ == '__main__': + analogvariables = AnalogVariableList() + print generate_analogvariables_header(analogvariables) + print generate_analogvariables_source(analogvariables) + print generate_analogalarm_callbacks_header(analogvariables) + print generate_analogalarm_callbacks_source_template(analogvariables) + + diff --git a/host/python/codegen/generate_commands.py b/host/python/codegen/generate_commands.py new file mode 100644 index 0000000000000000000000000000000000000000..bac6cd5c8b87dc81708bd541b9b13808d393cb9d --- /dev/null +++ b/host/python/codegen/generate_commands.py @@ -0,0 +1,254 @@ +from commands import CommandList +from entities.descriptors import CommandDescriptor, PayloadFieldEnum +from switches import SwitchList +from analogvariables import AnalogVariableList +from digitalvariables import DigitalVariableList +from userpins import UserPinList +from utils import mls +import pickle +import datetime + + +def generate_commandtable_header(_commands): + assert isinstance(_commands, CommandList) # just to help pycharm + + # read last command table version from file and update it + command_table_version = 10 + now = datetime.datetime.now() + generation_year = now.year + generation_month = now.month + generation_day = now.day + generation_hour = now.hour + generation_minute = now.minute + generation_second = now.second + # comment reading first time you execute this script... + with open('versioning.pkl', 'r') as f: + command_table_version = pickle.load(f) + command_table_version += 1 + with open('versioning.pkl', 'w') as f: + pickle.dump(command_table_version, f) + + + callback_declaration_tpl = """ +// [comment] +err_t [callback](void);""" + + countdef = """ +// number of defined commands +#define COMMANDS_COUNT {} +""".format(_commands.count()) + + extern = """ +// make command table available to anyone including this file +extern command_info_t commands_info_table[COMMANDS_COUNT]; +""" + + cmdcodes_req_tpl = """#define CMDCODE_[command]_REQ [reqcode]""" + cmdcodes_resp_tpl = """#define CMDCODE_[command]_RESP [respcode]""" + + callback_declaration_list = list() + cmdcodes_declaration_list = list() + for command in _commands.entries(): + assert isinstance(command, CommandDescriptor) # just to help pycharm + callback_declaration = callback_declaration_tpl + callback_declaration = callback_declaration.replace('[comment]', 'Callback for command {} (request code: {}), {}'.format(command.name, command.request_code, command.description)) + callback_declaration = callback_declaration.replace('[callback]', command.generate_callback_name()) + callback_declaration_list.append(callback_declaration) + + cmdcode_req_definition = cmdcodes_req_tpl + cmdcode_req_definition = cmdcode_req_definition.replace('[command]', command.name) + cmdcode_req_definition = cmdcode_req_definition.replace('[reqcode]', str(command.request_code)) + cmdcode_resp_definition = cmdcodes_resp_tpl + cmdcode_resp_definition = cmdcode_resp_definition.replace('[command]', command.name) + cmdcode_resp_definition = cmdcode_resp_definition.replace('[respcode]', str(command.response_code)) + cmdcodes_declaration_list.append(cmdcode_req_definition) + cmdcodes_declaration_list.append(cmdcode_resp_definition) + + header_contents = '' + header_contents += '# include "../../typedefs.h"\n' + header_contents += countdef + header_contents += extern + header_contents += '\n// Command codes\n' + header_contents += '\n'.join(cmdcodes_declaration_list) + header_contents += '\n' + header_contents += '\n// Callback functions\n' + header_contents += '\n'.join(callback_declaration_list) + + # versioning information + header_contents += '\n\n// Versioning data\n' + header_contents += '#define COMMAND_TABLE_VERSION_NUM {}\n'.format(command_table_version) + header_contents += '#define TEMPLATE_GENERATION_YEAR {}\n'.format(generation_year) + header_contents += '#define TEMPLATE_GENERATION_MONTH {}\n'.format(generation_month) + header_contents += '#define TEMPLATE_GENERATION_DAY {}\n'.format(generation_day) + header_contents += '#define TEMPLATE_GENERATION_HOUR {}\n'.format(generation_hour) + header_contents += '#define TEMPLATE_GENERATION_MINUTE {}\n'.format(generation_minute) + header_contents += '#define TEMPLATE_GENERATION_SECOND {}\n'.format(generation_second) + + return header_contents + + +def generate_commandtable_sources(_commands): + assert isinstance(_commands, CommandList) # just to help pycharm + + cmdtable_tpl = """// commans info table +command_info_t commands_info_table[COMMANDS_COUNT] = { +[body] +};""" + + cmdcodes_req_tpl = """CMDCODE_[command]_REQ""" + cmdcodes_resp_tpl = """CMDCODE_[command]_RESP""" + + cmdtable_entry_tpl = ' { .request_code = [reqcode], .response_code = [respcode], .request_payload_len = [reqlen], .callback_ptr = [callback]}' + + cmdtable_body_list = list() + for command in _commands.entries(): + assert isinstance(command, CommandDescriptor) # just to help pycharm + if command.implement: + entry_src = cmdtable_entry_tpl + entry_src = entry_src.replace('[reqcode]', mls(cmdcodes_req_tpl.replace('[command]', command.name), 43)) + entry_src = entry_src.replace('[respcode]', mls(cmdcodes_resp_tpl.replace('[command]', command.name), 44)) + entry_src = entry_src.replace('[reqlen]', mls(str(command.get_request_payload_len()), 3)) + entry_src = entry_src.replace('[callback]', mls(command.generate_callback_name(), 39)) + cmdtable_body_list.append(entry_src) + + cmdtable_src = cmdtable_tpl.replace('[body]', ',\n'.join(cmdtable_body_list)) + + source_contents = '' + source_contents += '#include "commandstable.h"\n\n' + source_contents += cmdtable_src + + return source_contents + + +def generate_command_callback_template(_command): + assert isinstance(_command, CommandDescriptor) # just to help pycharm + + callback_declaration_tpl = """ +#include "../typedefs.h" +#include "../communication.h" +#include "../hardware.h" + +err_t [callback](void) { +[comments] +[body] +}""" + + #################################################################################################################### + comments = '' + comments += ' // Command: {}\n'.format(_command.name) + comments += ' // Description: {}\n'.format(_command.description) + comments += ' // \n' + comments += ' // Request code: CMDCODE_{}_REQ\n'.format(_command.name) + comments += ' // Response code: CMDCODE_{}_REQ\n'.format(_command.name) + comments += ' // Request payload (length in bytes is {}):\n'.format(_command.get_request_payload_len()) + field_idx = 0 + for field in _command.request_payload: + if isinstance(field, PayloadFieldEnum): + ctype = field.generate_enum_typename() + else: + ctype = field.ctype + comments += ' // field #{} ({}) [type: {}] : {} ({})\n'.format(mls(str(field_idx), 3), str(field.length) + (' byte' if field.length == 1 else ' bytes'), mls(ctype, 10, stop_on_longer=False), mls(field.name, 10, stop_on_longer=False), field.description) + field_idx += 1 + comments += ' // Response payload (length in bytes is {}):\n'.format(_command.get_response_payload_len()) + field_idx = 0 + for field in _command.response_payload: + if isinstance(field, PayloadFieldEnum): + ctype = field.generate_enum_typename() + else: + ctype = field.ctype + comments += ' // field #{} ({}) [type: {}] : {} ({})\n'.format(mls(str(field_idx), 3), str(field.length) + (' byte' if field.length == 1 else ' bytes'), mls(ctype, 10, stop_on_longer=False), mls(field.name, 10, stop_on_longer=False), field.description) + field_idx += 1 + + #################################################################################################################### + body = '' + body += ' // Auto-generated section: request payload fields reading\n' + for field in _command.request_payload: + ctype = field.generate_enum_typename() if isinstance(field, PayloadFieldEnum) else field.ctype + body += ' {} req_{} = ({})communication_request_payload_retrieve_{}();\n'.format(ctype, field.name.lower(), ctype, field.ctype) + for field in _command.request_payload: + if isinstance(field, PayloadFieldEnum): + body += ' // checking range for enum field req_{}\n'.format(field.name.lower()) + body += ' if(({})req_{} < ({}){}_min) return ERR_RANGE;\n'.format(field.ctype, field.name.lower(), field.ctype, field.generate_enum_typename()) + body += ' if(({})req_{} > ({}){}_max) return ERR_RANGE;\n'.format(field.ctype, field.name.lower(), field.ctype, field.generate_enum_typename()) + body += ' // End of auto-generated section\n\n' + body += ' // USER CODE HERE\n' + body += ' // TODO implement command callback function {}\n\n'.format(_command.generate_callback_name()) + for field in _command.response_payload: + ctype = field.generate_enum_typename() if isinstance(field, PayloadFieldEnum) else field.ctype + body += ' // TODO: assign response field {} in command {} callback\n'.format(field.name, _command.name) + body += ' {} resp_{} = -1;\n'.format(ctype, field.name.lower()) + body += '\n' + + body += ' // Auto-generated section: response payload fields writing\n' + body += ' communication_response_payload_appender_reset();\n' + for field in _command.response_payload: + ctype = field.generate_enum_typename() if isinstance(field, PayloadFieldEnum) else field.ctype + body += ' communication_response_payload_append_{}(({})resp_{});\n'.format(field.ctype, field.ctype, field.name.lower()) + body += ' return NOERR;\n' + body += ' // End of auto-generated section' + + callback_declaration = callback_declaration_tpl + callback_declaration = callback_declaration.replace('[callback]', _command.generate_callback_name()) + callback_declaration = callback_declaration.replace('[comments]', comments) + callback_declaration = callback_declaration.replace('[body]', body) + + return callback_declaration + + +def generate_commands_typedefs(): + enums = PayloadFieldEnum.get_persistent_list() + + enum_tpl = """ +// [comment] +typedef enum { +[body] +} [typename]; + +#define [typename]_min [name]_[indexmin] +#define [typename]_max [name]_[indexmax] +""" + + enum_entry_tpl = """ [prepend]_[name] = [value]""" + + contents = '' + for enum in enums.values(): + + # if enum.name == 'VARIABLE_NUMBER': + # print enum.name + # print enum.__class__.__name__ + # print enum.index_list + # print enum.value_list + + + enum_entries = list() + for k in range(len(enum.index_list)): + enum_entry_src = enum_entry_tpl + enum_entry_src = enum_entry_src.replace('[prepend]', enum.name) + enum_entry_src = enum_entry_src.replace('[name]', enum.value_list[k]) + enum_entry_src = enum_entry_src.replace('[value]', str(enum.index_list[k])) + enum_entries.append(enum_entry_src) + enum_body = ',\n'.join(enum_entries) + enum_src = enum_tpl + enum_src = enum_src.replace('[comment]', enum.description) + enum_src = enum_src.replace('[typename]', enum.generate_enum_typename()) + enum_src = enum_src.replace('[name]', enum.name) + enum_src = enum_src.replace('[indexmin]', str(enum.get_value_by_index(enum.get_index_min()))) + enum_src = enum_src.replace('[indexmax]', str(enum.get_value_by_index(enum.get_index_max()))) + enum_src = enum_src.replace('[body]', enum_body) + + contents += enum_src + return contents + + +if __name__ == '__main__': + switch_list = SwitchList() + analog_variable_list = AnalogVariableList() + digital_variable_list = DigitalVariableList() + user_pin_list = UserPinList() + commands = CommandList(switch_list, analog_variable_list, digital_variable_list, user_pin_list) + print generate_commandtable_header(commands) + print generate_commandtable_sources(commands) + for command in commands.entries(): + print generate_command_callback_template(command) + print generate_commands_typedefs() + diff --git a/host/python/codegen/generate_digitalvariables.py b/host/python/codegen/generate_digitalvariables.py new file mode 100644 index 0000000000000000000000000000000000000000..8106d563fa3e550e8bceffaf1e20b95bfe826af0 --- /dev/null +++ b/host/python/codegen/generate_digitalvariables.py @@ -0,0 +1,180 @@ +from digitalvariables import DigitalVariableList + + +def generate_digitalvariables_header(_digialvariables): + + # already included from analog variables + # includes = """ + # #include "../../alarms.h" + # """ + includes = '' + + typedef = """ +// 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; + """ + + countdef = """ +// number of defined analog variables +#define DIGITAL_VARIABLES_COUNT {} + """.format(_digialvariables.count()) + + extern = """ + +// make digital variable list available to anyone including this file +extern digital_variable_t digital_variables[DIGITAL_VARIABLES_COUNT]; +""" + + ioread_tpl = """// IO read function for variable [name] +digital_value_t [readfunc](void); +""" + varindex_tpl = """ +#define DIGITAL_VARIABLE_INDEX_[varname] [index] // index of the analog variable [varname] inside analog_variables array""" + + varindex_contents = '' + index = 0 + for variable in _digialvariables.entries(): + varindex_define = varindex_tpl + varindex_define = varindex_define.replace('[varname]', variable.name) + varindex_define = varindex_define.replace('[index]', str(index)) + index += 1 + varindex_contents += varindex_define + + header_contents = includes + typedef + countdef + varindex_contents + extern + + # generate the prototypes for io read + ioread_list = list() + for digitalvariable in _digialvariables.entries(): + ioread_source = ioread_tpl + ioread_source = ioread_source.replace('[name]', digitalvariable.name) + ioread_source = ioread_source.replace('[readfunc]', digitalvariable.get_read_function_name()) + ioread_list.append(ioread_source) + + header_contents += '\n' + header_contents += '\n'.join(ioread_list) + + return header_contents + + +def generate_digitalvariables_source(_digialvariables): + + entry_tpl = """// Variable: [name] ([description]) +{ + .readfunc = [readfunc], + .value = 0, + .value_max = 0, + .alarm = { + .enabled = [alarm_enabled], + .timeout = [alarm_timeout], // [alarm_timeout_comment] + .timeout_counter = 0, + .timeout_counter_max = 0, + .firecount = 0, + .callback = [callback] + } +}""" + + ioread_tpl = """ +// IO read function for variable [name] +digital_value_t [readfunc](void) { + return (digital_value_t)(0 != [ioname]_GetValue()); +} +""" + + source_list = list() + ioread_list = list() + for digitalvariable in _digialvariables.entries(): + + alarm_timeout = digitalvariable.get_alarm_timeout_ticks() + alarm_timeout_ms = digitalvariable.get_alarm_timeout_actual_ms() + + callback = digitalvariable.get_alarm_callback_name() + + entry_source = entry_tpl + entry_source = entry_source.replace('[name]', digitalvariable.name) + entry_source = entry_source.replace('[description]', digitalvariable.description) + entry_source = entry_source.replace('[readfunc]', digitalvariable.get_read_function_name()) + + if digitalvariable.alarm.enable_default is None: + alarm_enabled_value = 'DEFAULT_' + digitalvariable.name + '_ENABLED' + elif digitalvariable.alarm.enable_default == True: + alarm_enabled_value = 'true' + elif digitalvariable.alarm.enable_default == False: + alarm_enabled_value = 'false' + else: + assert False + entry_source = entry_source.replace('[alarm_enabled]',alarm_enabled_value) + + entry_source = entry_source.replace('[alarm_timeout]', str(int(alarm_timeout))) + entry_source = entry_source.replace('[alarm_timeout_comment]', '{} ms ({} ms real)'.format(digitalvariable.alarm.timeout_default_ms, alarm_timeout_ms)) + entry_source = entry_source.replace('[callback]', callback) + + source_list.append(entry_source) + + ioread_source = ioread_tpl + ioread_source = ioread_source.replace('[name]', digitalvariable.name) + ioread_source = ioread_source.replace('[readfunc]', digitalvariable.get_read_function_name()) + ioread_source = ioread_source.replace('[ioname]', digitalvariable.ioname) + + ioread_list.append(ioread_source) + + source_contents = '' + # source_contents = '#include "variables.h"\n\n' # already included from analog variables... + source_contents = '\n#include "../../mcc_generated_files/mcc.h"\n\n' + source_contents += 'digital_variable_t digital_variables[DIGITAL_VARIABLES_COUNT] = {\n' + source_contents += ','.join(source_list) + source_contents += '};\n' + + source_contents += '\n'.join(ioread_list) + + return source_contents + + +def generate_digitalalarm_callbacks_header(_digialvariables): + alarm_callback_header_tpl = """ +// Callback function for alarm on digital variable [name] ([description]) +void [callback](); +""" + source_list = list() + for digitalvariable in _digialvariables.entries(): + source_list.append( + alarm_callback_header_tpl + .replace('[name]', digitalvariable.name) + .replace('[description]', digitalvariable.description) + .replace('[callback]', digitalvariable.get_alarm_callback_name()) + ) + return ''.join(source_list) + + +def generate_digitalalarm_callbacks_source_template(_digialvariables): + alarm_callback_source_tpl = """ +// Callback function for alarm on analog variable [name] ([description]) +void [callback]() { + // TODO implement auto-generated callback function [callback] +} +""" + source_list = list() + for digitalvariable in _digialvariables.entries(): + source_list.append( + alarm_callback_source_tpl + .replace('[name]', digitalvariable.name) + .replace('[description]', digitalvariable.description) + .replace('[callback]', digitalvariable.get_alarm_callback_name()) + ) + + contents = '' # '#include "generated/sources/variables.h"\n' already included + contents += ''.join(source_list) + return contents + + +if __name__ == '__main__': + digialvariables = DigitalVariableList() + print generate_digitalvariables_header(digialvariables) + print generate_digitalvariables_source(digialvariables) + print generate_digitalalarm_callbacks_header(digialvariables) + print generate_digitalalarm_callbacks_source_template(digialvariables) + diff --git a/host/python/codegen/generate_switches.py b/host/python/codegen/generate_switches.py new file mode 100644 index 0000000000000000000000000000000000000000..dda783390b416b6b0e38857c9ec9e1fb36468cf5 --- /dev/null +++ b/host/python/codegen/generate_switches.py @@ -0,0 +1,178 @@ +from switches import SwitchList +from commands import CommandList # need to be called to initialize all enums +from analogvariables import AnalogVariableList +from digitalvariables import DigitalVariableList +from userpins import UserPinList +from entities.descriptors import PayloadFieldEnum + + +def generate_switches_header(_switches): + + includes = """ +#include "../../errors.h" +""" + + #################################################################################################################### + typedef_tpl = """ +typedef struct { +[typedef_entries] +} switches_t; +""" + + typedef_entry_tpl = """ enum_switchstate_t state_[name]; // status of switch [name], [desc]""" + + typedef_entries = list() + for switch in _switches.entries(): + typedef_entry = typedef_entry_tpl + typedef_entry = typedef_entry.replace('[name]', switch.name) + typedef_entry = typedef_entry.replace('[desc]', switch.description) + typedef_entries.append(typedef_entry) + typedef = typedef_tpl + typedef = typedef.replace('[typedef_entries]', '\n'.join(typedef_entries)) + + #################################################################################################################### + extern = """extern switches_t switches;""" + + #################################################################################################################### + functionprotos_tpl = """ +// control functions for switch [name], [desc] +void switch_[name]_set_closed(void); +void switch_[name]_set_open(void); +void switch_[name]_set(enum_switchstate_t _state); +enum_switchstate_t switch_[name]_get(void); +""" + + functionprotos_entries = list() + for switch in _switches.entries(): + functionprotos_entry = functionprotos_tpl + functionprotos_entry = functionprotos_entry.replace('[name]', switch.name) + functionprotos_entry = functionprotos_entry.replace('[desc]', switch.description) + functionprotos_entries.append(functionprotos_entry) + functionprotos = '\n'.join(functionprotos_entries) + + #################################################################################################################### + functions_by_enum_tpl = """ +// 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); +""" + + functions_by_enum = functions_by_enum_tpl + + return '\n'.join([includes, typedef, extern, functionprotos, functions_by_enum]) + + +def generate_switches_source(_switches, _switch_enum): + + assert isinstance(_switch_enum, PayloadFieldEnum) + + includes = """""" + + #################################################################################################################### + instance_tpl = """ +switches_t switches = { +[instance_entries] +}; +""" + + instance_entry_tpl = """ .state_[name] = SWITCHSTATE_OPEN""" + + instance_entries = list() + for switch in _switches.entries(): + instance_entry = instance_entry_tpl + instance_entry = instance_entry.replace('[name]', switch.name) + instance_entries.append(instance_entry) + instance = instance_tpl + instance = instance.replace('[instance_entries]', ',\n'.join(instance_entries)) + + #################################################################################################################### + functionimpls_tpl = """ +// close switch [name] and update switch structure +void switch_[name]_set_closed(void) { + [ioname]_SetHigh(); + switches.state_[name] = SWITCHSTATE_CLOSED; +} + +// open switch [name] and update switch structure +void switch_[name]_set_open(void) { + [ioname]_SetLow(); + switches.state_[name] = SWITCHSTATE_OPEN; +} + +// set state of switch [name] and update switch structure +void switch_[name]_set(enum_switchstate_t _state) { + if(_state == SWITCHSTATE_CLOSED) { + switch_[name]_set_closed(); + }else{ + switch_[name]_set_open(); + } +} + +// get switch [name] current status +enum_switchstate_t switch_[name]_get(void) { + return switches.state_[name]; +} +""" + + functionimpls_entries = list() + for switch in _switches.entries(): + functionimpls_entry = functionimpls_tpl + functionimpls_entry = functionimpls_entry.replace('[name]', switch.name) + functionimpls_entry = functionimpls_entry.replace('[ioname]', switch.ioname) + functionimpls_entries.append(functionimpls_entry) + functionimpls = '\n'.join(functionimpls_entries) + + #################################################################################################################### + functions_by_enum_tpl = """ +// 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) { +[bodyset] +} + +// 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) { +[bodyget] +} +""" + + bodyset = """ switch(_switch_index) {\n""" + bodyget = """ switch(_switch_index) {\n""" + enumobj = _switch_enum + for idx in range(len(enumobj.value_list)): + # print enumobj.value_list[idx] + bodyset += ' case {}_{}: return switch_{}_set;\n'.format(enumobj.name, enumobj.value_list[idx], _switches.entries()[idx].name) + bodyget += ' case {}_{}: return switch_{}_get;\n'.format(enumobj.name, enumobj.value_list[idx], _switches.entries()[idx].name) + bodyset += ' }\n' + bodyset += ' // this should never be reached\n' + bodyset += ' error_die_forever();\n' + bodyset += ' // but, just in case (if we neutralize the error function):\n' + bodyset += ' return switch_{}_set;'.format(_switches.entries()[-1].name) + bodyget += ' }\n' + bodyget += ' // this should never be reached\n' + bodyget += ' error_die_forever();\n' + bodyget += ' // but, just in case (if we neutralize the error function):\n' + bodyget += ' return switch_{}_get;'.format(_switches.entries()[-1].name) + + functions_by_enum = functions_by_enum_tpl + functions_by_enum = functions_by_enum.replace('[bodyset]', bodyset) + functions_by_enum = functions_by_enum.replace('[bodyget]', bodyget) + + return '\n'.join([includes, instance, functionimpls, functions_by_enum]) + + +if __name__ == '__main__': + switches = SwitchList() + analogvariables = AnalogVariableList() + digitalvariables = DigitalVariableList() + userpins = UserPinList() + commands = CommandList(switches, analogvariables, digitalvariables, userpins) + switch_enum = PayloadFieldEnum.get_persistent_list()['SWITCHNUM'] + + print '\n' * 4 + print '=' * 64 + print generate_switches_header(switches) + print generate_switches_source(switches, switch_enum) diff --git a/host/python/codegen/generate_userpins.py b/host/python/codegen/generate_userpins.py new file mode 100644 index 0000000000000000000000000000000000000000..230c62b3823ced7542ef68da27e543f39ebe42dc --- /dev/null +++ b/host/python/codegen/generate_userpins.py @@ -0,0 +1,174 @@ +from switches import SwitchList +from commands import CommandList # need to be called to initialize all enums +from analogvariables import AnalogVariableList +from digitalvariables import DigitalVariableList +from userpins import UserPinList +from entities.descriptors import PayloadFieldEnum + + +def generate_userpins_header(_userpins): + + includes = """""" + + #################################################################################################################### + typedef_tpl = """ +typedef struct { +[typedef_entries] +} userpins_t; +""" + + typedef_entry_tpl = """ enum_pinstate_t state_[name]; // status of usr pin [name], [desc]""" + + typedef_entries = list() + for userpin in _userpins.entries(): + typedef_entry = typedef_entry_tpl + typedef_entry = typedef_entry.replace('[name]', userpin.name) + typedef_entry = typedef_entry.replace('[desc]', userpin.description) + typedef_entries.append(typedef_entry) + typedef = typedef_tpl + typedef = typedef.replace('[typedef_entries]', '\n'.join(typedef_entries)) + + #################################################################################################################### + extern = """extern userpins_t userpins;""" + + #################################################################################################################### + functionprotos_tpl = """ +// control functions for user pin [name], [desc] +void userpin_[name]_set_high(void); +void userpin_[name]_set_low(void); +void userpin_[name]_set(enum_pinstate_t _state); +enum_pinstate_t userpin_[name]_get(void); +""" + functionprotos_entries = list() + for userpin in _userpins.entries(): + functionprotos_entry = functionprotos_tpl + functionprotos_entry = functionprotos_entry.replace('[name]', userpin.name) + functionprotos_entry = functionprotos_entry.replace('[desc]', userpin.description) + functionprotos_entries.append(functionprotos_entry) + functionprotos = '\n'.join(functionprotos_entries) + + #################################################################################################################### + functions_by_enum_tpl = """ +// 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); +""" + + functions_by_enum = functions_by_enum_tpl + + return '\n'.join([includes, typedef, extern, functionprotos, functions_by_enum]) + + +def generate_userpins_source(_userpins, _pin_enum): + + assert isinstance(_pin_enum, PayloadFieldEnum) + + includes = """""" + + #################################################################################################################### + instance_tpl = """ +userpins_t userpins = { +[instance_entries] +}; +""" + + instance_entry_tpl = """ .state_[name] = PINSTATE_LOW""" + + instance_entries = list() + for pin in _userpins.entries(): + instance_entry = instance_entry_tpl + instance_entry = instance_entry.replace('[name]', pin.name) + instance_entries.append(instance_entry) + instance = instance_tpl + instance = instance.replace('[instance_entries]', ',\n'.join(instance_entries)) + + #################################################################################################################### + functionimpls_tpl = """ +// set pin [name] high and update userpins structure +void userpin_[name]_set_high(void) { + [ioname]_SetHigh(); + userpins.state_[name] = PINSTATE_HIGH; +} + +// set pin [name] low and update userpins structure +void userpin_[name]_set_low(void) { + [ioname]_SetLow(); + userpins.state_[name] = PINSTATE_LOW; +} + +// set state of userpin [name] and update userpins structure +void userpin_[name]_set(enum_pinstate_t _state) { + if(_state == PINSTATE_HIGH) { + userpin_[name]_set_high(); + }else{ + userpin_[name]_set_low(); + } +} + +// get user pin [name] current status +enum_pinstate_t userpin_[name]_get(void) { + return userpins.state_[name]; +} +""" + + functionimpls_entries = list() + for pin in _userpins.entries(): + functionimpls_entry = functionimpls_tpl + functionimpls_entry = functionimpls_entry.replace('[name]', pin.name) + functionimpls_entry = functionimpls_entry.replace('[ioname]', pin.ioname) + functionimpls_entries.append(functionimpls_entry) + functionimpls = '\n'.join(functionimpls_entries) + + #################################################################################################################### + functions_by_enum_tpl = """ +// 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) { +[bodyset] +} + +// 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) { +[bodyget] +} +""" + + bodyset = """ switch(_userpin_index) {\n""" + bodyget = """ switch(_userpin_index) {\n""" + enumobj = _pin_enum + for idx in range(len(enumobj.value_list)): + bodyset += ' case {}_{}: return userpin_{}_set;\n'.format(enumobj.name, enumobj.value_list[idx], _userpins.entries()[idx].name) + bodyget += ' case {}_{}: return userpin_{}_get;\n'.format(enumobj.name, enumobj.value_list[idx], _userpins.entries()[idx].name) + bodyset += ' }\n' + bodyset += ' // this should never be reached\n' + bodyset += ' error_die_forever();\n' + bodyset += ' // but, just in case (if we neutralize the error function):\n' + bodyset += ' return userpin_{}_set;'.format(_userpins.entries()[-1].name) + bodyget += ' }\n' + bodyget += ' // this should never be reached\n' + bodyget += ' error_die_forever();\n' + bodyget += ' // but, just in case (if we neutralize the error function):\n' + bodyget += ' return userpin_{}_get;'.format(_userpins.entries()[-1].name) + + functions_by_enum = functions_by_enum_tpl + functions_by_enum = functions_by_enum.replace('[bodyset]', bodyset) + functions_by_enum = functions_by_enum.replace('[bodyget]', bodyget) + + return '\n'.join([includes, instance, functionimpls, functions_by_enum]) + + +if __name__ == '__main__': + userpins = UserPinList() + analogvariables = AnalogVariableList() + digitalvariables = DigitalVariableList() + switches = SwitchList() + commands = CommandList(switches, analogvariables, digitalvariables, userpins) + pin_enum = PayloadFieldEnum.get_persistent_list()['PINNUM'] + + print '\n' * 4 + print '=' * 64 + print generate_userpins_header(userpins) + print generate_userpins_source(userpins, pin_enum) diff --git a/host/python/codegen/main.py b/host/python/codegen/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e55c43f8aad6d907c100576738c061d9f8788a55 --- /dev/null +++ b/host/python/codegen/main.py @@ -0,0 +1,152 @@ +from generate_analogvariables import * +from generate_digitalvariables import * +from generate_commands import * +from generate_switches import * +from generate_userpins import * +from datetime import datetime + + +def save_header_file(filename, contents, folder, is_template=False): + tpl = """// Auto-generated [istemplate]file: [filename] +// Generation timestamp: [timestamp] + +#ifndef [preprocname] +#define [preprocname] + +[contents] + +#endif // [preprocname] +""" + + preprocname = '_AUTOGENERATED_' + filename.upper().replace('.', '_') + file_contents = tpl + file_contents = file_contents.replace('[filename]', filename) + file_contents = file_contents.replace('[timestamp]', timestamp_str) + file_contents = file_contents.replace('[preprocname]', preprocname) + file_contents = file_contents.replace('[contents]', contents) + file_contents = file_contents.replace('[istemplate]', '' if not is_template else 'template ') + + with open(folder + filename, "w") as f: + f.write(file_contents) + print 'file written to "{}"'.format(folder + filename) + + +def save_source_file(filename, contents, folder, is_template=False): + tpl = """// Auto-generated [istemplate]file: [filename] +// Generation timestamp: [timestamp] + +[contents] +""" + file_contents = tpl + file_contents = file_contents.replace('[filename]', filename) + file_contents = file_contents.replace('[timestamp]', timestamp_str) + file_contents = file_contents.replace('[contents]', contents) + file_contents = file_contents.replace('[istemplate]', '' if not is_template else 'template ') + + with open(folder + filename, "w") as f: + f.write(file_contents) + print 'file written to "{}"'.format(folder + filename) + + +if __name__ == '__main__': + + timestamp_str = str(datetime.now()) + + firmware_folder = '../../../micro/BPD-V01-FIRMWARE.X' + output_folder_sources = firmware_folder + '/generated/sources/' + output_folder_templates = './output/templates/' + output_folder_templates_commands = './output/templates/commands/' + + # create list of variables used in code + switches = SwitchList() + analogvariables = AnalogVariableList() + digitalvariables = DigitalVariableList() + userpins = UserPinList() + commands = CommandList(switches, analogvariables, digitalvariables, userpins) + + #################################################################################################################### + # generate the header file variables.h + filename = 'variables.h' + contents = '' + # analog variables + contents += generate_analogvariables_header(analogvariables) + contents += generate_analogalarm_callbacks_header(analogvariables) + # digital variables + contents += generate_digitalvariables_header(digitalvariables) + contents += generate_digitalalarm_callbacks_header(digitalvariables) + # switches + contents += generate_switches_header(switches) + # user pins + contents += generate_userpins_header(userpins) + # save to file + save_header_file(filename, contents, output_folder_sources) + + #################################################################################################################### + # generate the source file variables.c + filename = 'variables.c' + contents = '' + # analog variables + contents += generate_analogvariables_source(analogvariables) + # digital variables + contents += generate_digitalvariables_source(digitalvariables) + # switches + contents += generate_switches_source(switches, PayloadFieldEnum.get_persistent_list()['SWITCHNUM']) + # user pins + contents += generate_userpins_source(userpins, PayloadFieldEnum.get_persistent_list()['PINNUM']) + # save to file + save_source_file(filename, contents, output_folder_sources) + + #################################################################################################################### + # generate the template source file for the alarm callback list + filename = 'alarm_callbacks.tpl.c' + contents = '' + # analog variables + contents += generate_analogalarm_callbacks_source_template(analogvariables) + # digital variables + contents += generate_digitalalarm_callbacks_source_template(digitalvariables) + # save to file + save_source_file(filename, contents, output_folder_templates, is_template=True) + + #################################################################################################################### + # generate the command header file commandstable.h + filename = 'commandstable.h' + contents = '' + # analog variables + contents += generate_commandtable_header(commands) + # save to file + save_header_file(filename, contents, output_folder_sources) + + #################################################################################################################### + # generate the type definition header file datatypes.h + filename = 'datatypes.h' + contents = '' + # analog variables + contents += generate_commands_typedefs() + # save to file + save_header_file(filename, contents, output_folder_sources) + + #################################################################################################################### + # generate the command table source file commandstable.c + filename = 'commandstable.c' + contents = '' + # analog variables + contents += generate_commandtable_sources(commands) + # save to file + save_source_file(filename, contents, output_folder_sources) + + #################################################################################################################### + # generate the commands callback template files + for command in commands.entries(): + if command.implement: + contents = generate_command_callback_template(command) + filename = 'command_{}.tpl.c'.format(command.name) + save_source_file(filename, contents, output_folder_templates_commands, is_template=True) + + + + + + + + + diff --git a/host/python/codegen/switches.py b/host/python/codegen/switches.py new file mode 100644 index 0000000000000000000000000000000000000000..38d92fa98e96225d57149a8169f925d1d77a9182 --- /dev/null +++ b/host/python/codegen/switches.py @@ -0,0 +1,100 @@ +from entities.descriptors import SwitchDescriptor +from firmwareconfig import FirmwareConfig as fwcfg + + +class SwitchList: + """A class to define the list of switches of the board""" + + # this class can be actually created only once + _ready = False + + def __init__(self): + assert self._ready is False, "Class {} should be created only once!".format(self.__class__.__name__) + self._create() + self._ready = True + + def count(self): + return len(self.vars) + + def entries(self): + return self.vars + + def _create(self): + self.vars = list() + self.vars.append( + SwitchDescriptor( + enum_index=1, + firmware_config=fwcfg, + name='SWITCH_VEOC_RETURN', + ioname='DOUT_375V_RTN_SWITCH_ON_OFF', + description='DU backbone ON/OFF return line control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=2, + firmware_config=fwcfg, + name='SWITCH_VEOC_DIRECT', + ioname='DOUT_375V_FWR_SWTCH_ON_OFF', + description='DU backbone ON/OFF forward line control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=3, + firmware_config=fwcfg, + name='SWITCH_12V', + ioname='DOUT_ISO_12V_SWITCH_ON_OFF', + description='DC-DC TDK 5/12V ISO ON/OFF control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=4, + firmware_config=fwcfg, + name='SWITCH_LBL', + ioname='DOUT_LBL_SWITCH_ON_OFF', + description='12V ISO LBL power ON/OFF control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=5, + firmware_config=fwcfg, + name='SWITCH_HYDRO', + ioname='DOUT_HYDRO_SWITCH_ON_OFF', + description='12V ISO HYDRO power ON/OFF control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=6, + firmware_config=fwcfg, + name='SWITCH_GLRA', + ioname='DOUT_GLR_A_SWITCH_ON_OFF', + description='12V GLENAIR-A power ON/OFF control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=7, + firmware_config=fwcfg, + name='SWITCH_GLRB', + ioname='DOUT_GLR_B_SWITCH_ON_OFF', + description='12V GLENAIR-B power ON/OFF control (high=ON)', + ) + ) + self.vars.append( + SwitchDescriptor( + enum_index=8, + firmware_config=fwcfg, + name='SWITCH_PWB', + ioname='DOUT_PWB_SWITCH_ON_OFF', + description='12V POWER BOARD power ON/OFF control (high=ON)', + ) + ) + + +if __name__ == '__main__': + switches = SwitchList() + print switches.vars[0].name diff --git a/host/python/codegen/userpins.py b/host/python/codegen/userpins.py new file mode 100644 index 0000000000000000000000000000000000000000..48c2f0cb078f7dca25443c8548f5fbb8331777e9 --- /dev/null +++ b/host/python/codegen/userpins.py @@ -0,0 +1,48 @@ +from entities.descriptors import UserPinDescriptor +from firmwareconfig import FirmwareConfig as fwcfg + + +class UserPinList: + """A class to define the list of user pins of the board""" + + # this class can be actually created only once + _ready = False + + def __init__(self): + assert self._ready is False, "Class {} should be created only once!".format(self.__class__.__name__) + self._create() + self._ready = True + + def count(self): + return len(self.vars) + + def entries(self): + return self.vars + + def _create(self): + self.vars = list() + + self.vars.append( + UserPinDescriptor( + enum_index=1, + firmware_config=fwcfg, + name='SWITCH_LED_D9', + ioname='DOUT_JP1_LED_D9', + description='Line IN/OUT not assigned. Free line available on JP1 jumper. Usable in output to turn on the LED' + ) + ) + self.vars.append( + UserPinDescriptor( + enum_index=2, + firmware_config=fwcfg, + name='SWITCH_LED_D10', + ioname='DOUT_JP2_LED_D10', + description='Line IN/OUT not assigned. Free line available on JP2 jumper. Usable in output to turn on the LED' + ) + ) + + +if __name__ == '__main__': + userpins = UserPinList() + print userpins.vars[0].name + diff --git a/host/python/codegen/utils.py b/host/python/codegen/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..44c57e83c0ff8a2bc4f40da608fcc2304f209d8e --- /dev/null +++ b/host/python/codegen/utils.py @@ -0,0 +1,4 @@ +def mls(s, minlen, filler=' ', stop_on_longer=True): + if stop_on_longer: + assert len(s) <= minlen, "In function mls(...): string '{}' is too long {} (max is {})".format(s, len(s), minlen) + return s + filler * (minlen - len(s)) \ No newline at end of file diff --git a/micro/BPD-V01-FIRMWARE.X/Makefile b/micro/BPD-V01-FIRMWARE.X/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..fca8e2ccd1ea7fad28edee1341799410c330132e --- /dev/null +++ b/micro/BPD-V01-FIRMWARE.X/Makefile @@ -0,0 +1,113 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin +RANLIB=ranlib + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... +# WARNING: the IDE does not call this target since it takes a long time to +# simply run make. Instead, the IDE removes the configuration directories +# under build and dist directly without calling make. +# This target is left here so people can do a clean when running a clean +# outside the IDE. + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/micro/BPD-V01-GPIOTEST.X/main.c b/micro/BPD-V01-GPIOTEST.X/main.c new file mode 100644 index 0000000000000000000000000000000000000000..fef11b52089fff5bbb2e8eec6c8e35232b163d67 --- /dev/null +++ b/micro/BPD-V01-GPIOTEST.X/main.c @@ -0,0 +1,82 @@ +/** + Generated Main Source File + + Company: + Microchip Technology Inc. + + File Name: + main.c + + Summary: + This is the main 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 +*/ + +/* + (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_generated_files/mcc.h" + +/* + Main application + */ +void main(void) +{ + // Initialize the device + SYSTEM_Initialize(); + + // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts + // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global and Peripheral Interrupts + // Use the following macros to: + + // Enable the Global Interrupts + //INTERRUPT_GlobalInterruptEnable(); + + // Disable the Global Interrupts + //INTERRUPT_GlobalInterruptDisable(); + + // Enable the Peripheral Interrupts + //INTERRUPT_PeripheralInterruptEnable(); + + // Disable the Peripheral Interrupts + //INTERRUPT_PeripheralInterruptDisable(); + + NOT IMPLEMENTED + + while (1) + { + // Add your application code + + // just blink... + OUT_JP2_LED_D10_Toggle(); + } +} +/** + End of File +*/ \ No newline at end of file diff --git a/micro/BPD-V01-GPIOTEST.X/mcc.mc3 b/micro/BPD-V01-GPIOTEST.X/mcc.mc3 new file mode 100644 index 0000000000000000000000000000000000000000..8f29e9dbbabf2c42b60a9fae40d98ee9a38e6a28 --- /dev/null +++ b/micro/BPD-V01-GPIOTEST.X/mcc.mc3 @@ -0,0 +1,3932 @@ +<config configVersion="1.1" device="PIC18F46K22" coreVersion="5.0.2"> + <usedClasses class="java.util.HashMap"> + <entry> + <string>System Module</string> + <string>class com.microchip.mcc.mcu8.systemManager.SystemManager</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>RESET</string> + <string>class com.microchip.mcc.mcu8.systemManager.reset.RESET</string> + </entry> + <entry> + <string>EUSART1</string> + <string>class com.microchip.mcc.mcu8.modules.eusart.EUSART</string> + </entry> + <entry> + <string>Interrupt Module</string> + <string>class com.microchip.mcc.mcu8.interruptManager.InterruptManager</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.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.SettingKey" moduleName="System Module" registerAlias="CONFIG3H" settingAlias="HFOFST"/> + <value>ON</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="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.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.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.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="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.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.OptionKey" moduleName="Pin Module" registerAlias="ANSELE" settingAlias="ANSE1" alias="analog"/> + <value>1</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="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="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.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>-1</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="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="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.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.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.SettingKey" moduleName="Pin Module" registerAlias="TRISC" settingAlias="TRISC6"/> + <value>output</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.SettingKey" moduleName="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS"/> + <value>32768</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="Pin Module" registerAlias="TRISA"/> + <value>63</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="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="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.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.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.OptionKey" moduleName="Pin Module" registerAlias="TRISE" settingAlias="TRISE2" alias="output"/> + <value>0</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>digital</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.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>output</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>digital</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.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>digital</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="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.CustomKey" moduleName="Pin Module" name="ioc RD5"/> + <value>none</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.OptionKey" moduleName="Pin Module" registerAlias="LATB" settingAlias="LATB7" alias="set"/> + <value>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="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.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>digital</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>digital</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>disabled</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.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.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.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="System Module" registerAlias="CONFIG2H" settingAlias="WDTPS" alias="32"/> + <value>20</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.CustomKey" moduleName="EUSART1" name="DT1"/> + <value>disabled</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.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="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>disabled</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.OptionKey" moduleName="System Module" registerAlias="CONFIG7H" settingAlias="EBTRB" alias="ON"/> + <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.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.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.OptionKey" moduleName="System Module" registerAlias="CONFIG6H" settingAlias="WRTB" alias="OFF"/> + <value>64</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="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.OptionKey" moduleName="System Module" registerAlias="CONFIG5H" settingAlias="CPB" alias="OFF"/> + <value>64</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.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.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.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="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="RESET" registerAlias="RCON" settingAlias="POR" alias="occurred"/> + <value>0</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.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.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.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/> + </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.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.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>IN_GLR_B_PG</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB1"/> + <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="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="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/> + </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>OUT_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="Pin Module" name="Custom Name RA7"/> + <value>OUT_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/> + </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/> + </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/> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RA4"/> + <value>IN_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="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.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="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="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.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.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.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.OptionKey" moduleName="System Module" registerAlias="CONFIG4L" settingAlias="STVREN" alias="OFF"/> + <value>0</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.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.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="2MHz_HFINTOSC/8"/> + <value>4</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.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.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON2" settingAlias="PLLRDY" alias="PLL"/> + <value>1</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.OptionKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCCON" settingAlias="IRCF" alias="31KHz_MFINTOSC/16"/> + <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.SettingKey" moduleName="INTERNAL OSCILLATOR" registerAlias="OSCTUNE" settingAlias="TUN"/> + <value>0</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.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.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.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="Pin Module" registerAlias="TRISC" settingAlias="TRISC5" alias="input"/> + <value>1</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="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.CustomKey" moduleName="Pin Module" name="Custom Name RE1"/> + <value/> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RE2"/> + <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/> + </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="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>OUT_HYDRO_SWITCH_ON_OFF</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD5"/> + <value>OUT_GLR_A_SWITCH_ON_OFF</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD6"/> + <value>OUT_GLR_B_SWITCH_ON_OFF</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD7"/> + <value>OUT_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.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.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>IN_PWB_PG</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC1"/> + <value>IN_LBL_PWR_FLT</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC2"/> + <value>IN_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="Pin Module" registerAlias="ANSELA" settingAlias="ANSA1" alias="digital"/> + <value>0</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.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>IN_ALRMNEG1</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB7"/> + <value>IN_ALRMNEG2</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.CustomKey" moduleName="Pin Module" name="Custom Name RB2"/> + <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.CustomKey" moduleName="Pin Module" name="Custom Name RB3"/> + <value/> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB4"/> + <value>IN_ALRMPOS1</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RB5"/> + <value>IN_ALRMPOS2</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD0"/> + <value>OUT_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>OUT_375V_FWR_SWTCH_ON_OFF</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD2"/> + <value>OUT_ISO_12V_SWITCH_ON_OFF</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RD3"/> + <value>OUT_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>IN_GLR_B_FLT</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC4"/> + <value>IN_PWB_FLT</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="Custom Name RC5"/> + <value>IN_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.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.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.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.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.OptionKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="SYNC" alias="asynchronous"/> + <value>0</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="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.SettingKey" moduleName="System Module" registerAlias="CONFIG5L" settingAlias="CP1"/> + <value>OFF</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.SettingKey" moduleName="System Module" registerAlias="CONFIG6L" settingAlias="WRT3"/> + <value>OFF</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.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.CustomKey" moduleName="Pin Module" name="anselUserSetRC2"/> + <value>disabled</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.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="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="Pin Module" name="anselUserSetRD6"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD7"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD4"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD5"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD2"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD3"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="anselUserSetRD0"/> + <value>enabled</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>enabled</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.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.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.SettingKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR1"/> + <value>OFF</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.SettingKey" moduleName="Pin Module" registerAlias="ANSELC" settingAlias="ANSC3"/> + <value>digital</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="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.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="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="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="System Module" registerAlias="CONFIG4L" settingAlias="DEBUG" alias="OFF"/> + <value>128</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.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.SettingKey" moduleName="Pin Module" registerAlias="ANSELD" settingAlias="ANSD7"/> + <value>digital</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="Pin Module" registerAlias="TRISB" settingAlias="TRISB3" alias="output"/> + <value>0</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.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.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="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="Pin Module" registerAlias="LATD" settingAlias="LATD0" alias="clear"/> + <value>0</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="System Module" registerAlias="CONFIG1H" settingAlias="PLLCFG" alias="OFF"/> + <value>0</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.CustomKey" moduleName="Pin Module" name="customNameUserSet RC1"/> + <value>enabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB1"/> + <value>disabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB2"/> + <value>disabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RB3"/> + <value>disabled</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.CustomKey" moduleName="Pin Module" name="customNameUserSet RB6"/> + <value>enabled</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.OptionKey" moduleName="Pin Module" registerAlias="LATA" settingAlias="LATA3" alias="clear"/> + <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.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.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>disabled</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>disabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RE2"/> + <value>disabled</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.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.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>digital</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.OptionKey" moduleName="System Module" registerAlias="CONFIG7L" settingAlias="EBTR0" alias="OFF"/> + <value>1</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.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.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.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.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.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.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>digital</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="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="Pin Module" registerAlias="ANSELB" settingAlias="ANSB5" alias="digital"/> + <value>0</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.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="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_noninterrupt</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="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.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.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="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="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="Pin Module" name="trisUserSetRC0"/> + <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.OptionKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="BRG16" alias="16bit_generator"/> + <value>1</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.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>0</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.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.OptionKey" moduleName="Pin Module" registerAlias="IOCB" settingAlias="IOCB5" alias="enabled"/> + <value>1</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.OptionKey" moduleName="EUSART1" registerAlias="RCSTA" settingAlias="CREN" alias="disabled"/> + <value>0</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.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>output</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="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="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="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="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>disabled</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>0</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.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>-1</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>disabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA1"/> + <value>disabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA2"/> + <value>disabled</value> + </entry> + <entry> + <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="Pin Module" name="customNameUserSet RA3"/> + <value>disabled</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>disabled</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="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="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.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.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.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>enabled</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/device_config.h</file> + <hash>455315f4857de718383343a0bc9f905e09ceac38bd97f903d8521ad636b9f4b2</hash> + </entry> + <entry> + <file>mcc_generated_files/pin_manager.h</file> + <hash>00552b3a6dcf3b2369ec5540c4af60a6fd00e7faca0714f31a78ba00e7ce2c62</hash> + </entry> + <entry> + <file>main.c</file> + <hash>87bbe9578cf7703cdbfd9af1caeeb4c11efd4c03fde69c03bbc26710a79b1ca5</hash> + </entry> + <entry> + <file>mcc_generated_files/eusart1.h</file> + <hash>7205c92f301e59df282c450e19b0897dce2f04189d8a277ea27e5bb11ee47a04</hash> + </entry> + <entry> + <file>mcc_generated_files/mcc.h</file> + <hash>6a533aa9e0ddece3e3e6bf1b248eceb8c9d66d717d82bc46645d9a7b61cdad45</hash> + </entry> + <entry> + <file>mcc_generated_files/eusart1.c</file> + <hash>cb493bc5a67535a19de1261a965b67360299a6d9ffa957aae47aa514bfa40011</hash> + </entry> + <entry> + <file>mcc_generated_files/device_config.c</file> + <hash>1a03314d224a4ddfcbee78607808e14e673be22bdfa19b5cdc5906eae36baa31</hash> + </entry> + <entry> + <file>mcc_generated_files/mcc.c</file> + <hash>45b531f895e931e1acd2ab0e2820c2169bbc55fb87d51df0f8be3768b07c8493</hash> + </entry> + <entry> + <file>mcc_generated_files/pin_manager.c</file> + <hash>b8814e96b138ca260b8ff6685d7a862c528f049fb7a5548867807e1181b8dcc9</hash> + </entry> + </generatedFileHashHistoryMap> + <mc3libFileHashHistoryMap class="java.util.HashMap"/> +</config> \ No newline at end of file