diff -r f71c22b2ca25 -r 703ebf57508a bacnet/web_settings.py --- a/bacnet/web_settings.py Mon Jun 29 14:38:04 2020 +0200 +++ b/bacnet/web_settings.py Wed Jul 01 10:36:20 2020 +0200 @@ -34,14 +34,14 @@ # Will contain references to the C functions # (implemented in beremiz/bacnet/runtime/server.c) # used to get/set the BACnet specific configuration paramters -GetParamFuncs = {} -SetParamFuncs = {} +BacnetGetParamFuncs = {} +BacnetSetParamFuncs = {} # Upon PLC load, this Dictionary is initialised with the BACnet configuration # hardcoded in the C file # (i.e. the configuration inserted in Beremiz IDE when project was compiled) -_DefaultConfiguration = None +_BacnetDefaultConfiguration = None # Dictionary that contains the BACnet configuration currently being shown @@ -52,13 +52,13 @@ # The configuration viewed on the web will only be different to the current # configuration when the user edits the configuration, and when # the user asks to save the edited configuration but it contains an error. -_WebviewConfiguration = None +_BacnetWebviewConfiguration = None # Dictionary that stores the BACnet configuration currently stored in a file # Currently only used to decide whether or not to show the "Delete" button on the -# web interface (only shown if _SavedConfiguration is not None) -_SavedConfiguration = None +# web interface (only shown if _BacnetSavedConfiguration is not None) +_BacnetSavedConfiguration = None # File to which the new BACnet configuration gets stored on the PLC @@ -99,7 +99,7 @@ -def _CheckPortnumber(port_number): +def _CheckBacnetPortnumber(port_number): """ check validity of the port number """ try: portnum = int(port_number) @@ -112,7 +112,7 @@ -def _CheckDeviceID(device_id): +def _CheckBacnetDeviceID(device_id): """ # check validity of the Device ID # NOTE: BACnet device (object) IDs are 22 bits long (not counting the 10 bits for the type ID) @@ -133,25 +133,25 @@ -def _CheckConfiguration(BACnetConfig): +def _CheckBacnetConfiguration(BACnetConfig): res = True - res = res and _CheckPortnumber(BACnetConfig["port_number"]) - res = res and _CheckDeviceID (BACnetConfig["device_id"]) + res = res and _CheckBacnetPortnumber(BACnetConfig["port_number"]) + res = res and _CheckBacnetDeviceID (BACnetConfig["device_id"]) return res -def _CheckWebConfiguration(BACnetConfig): +def _CheckBacnetWebConfiguration(BACnetConfig): res = True # check the port number - if not _CheckPortnumber(BACnetConfig["port_number"]): + if not _CheckBacnetPortnumber(BACnetConfig["port_number"]): raise annotate.ValidateError( {"port_number": "Invalid port number: " + str(BACnetConfig["port_number"])}, _("BACnet configuration error:")) res = False - if not _CheckDeviceID(BACnetConfig["device_id"]): + if not _CheckBacnetDeviceID(BACnetConfig["device_id"]): raise annotate.ValidateError( {"device_id": "Invalid device ID: " + str(BACnetConfig["device_id"])}, _("BACnet configuration error:")) @@ -164,26 +164,26 @@ -def _SetSavedConfiguration(BACnetConfig): +def _SetBacnetSavedConfiguration(BACnetConfig): """ Stores in a file a dictionary containing the BACnet parameter configuration """ - global _SavedConfiguration - - if BACnetConfig == _DefaultConfiguration : - _DelSavedConfiguration() - _SavedConfiguration = None + global _BacnetSavedConfiguration + + if BACnetConfig == _BacnetDefaultConfiguration : + _DelBacnetSavedConfiguration() + _BacnetSavedConfiguration = None else : with open(os.path.realpath(_BACnetConfFilename), 'w') as f: json.dump(BACnetConfig, f, sort_keys=True, indent=4) - _SavedConfiguration = BACnetConfig - - -def _DelSavedConfiguration(): + _BacnetSavedConfiguration = BACnetConfig + + +def _DelBacnetSavedConfiguration(): """ Deletes the file cotaining the persistent BACnet configuration """ if os.path.exists(_BACnetConfFilename): os.remove(_BACnetConfFilename) -def _GetSavedConfiguration(): +def _GetBacnetSavedConfiguration(): """ # Returns a dictionary containing the BACnet parameter configuration # that was last saved to file. If no file exists, then return None @@ -194,67 +194,67 @@ except Exception: return None - if _CheckConfiguration(saved_config): + if _CheckBacnetConfiguration(saved_config): return saved_config else: return None -def _GetPLCConfiguration(): +def _GetBacnetPLCConfiguration(): """ # Returns a dictionary containing the current BACnet parameter configuration # stored in the C variables in the loaded PLC (.so file) """ current_config = {} for par_name, x1, x2, x3 in BACnet_parameters: - value = GetParamFuncs[par_name]() + value = BacnetGetParamFuncs[par_name]() if value is not None: current_config[par_name] = value return current_config -def _SetPLCConfiguration(BACnetConfig): +def _SetBacnetPLCConfiguration(BACnetConfig): """ # Stores the BACnet parameter configuration into the # the C variables in the loaded PLC (.so file) """ for par_name in BACnetConfig: value = BACnetConfig[par_name] - #PLCObject.LogMessage("BACnet web server extension::_SetPLCConfiguration() Setting " + #PLCObject.LogMessage("BACnet web server extension::_SetBacnetPLCConfiguration() Setting " # + par_name + " to " + str(value) ) if value is not None: - SetParamFuncs[par_name](value) + BacnetSetParamFuncs[par_name](value) # update the configuration shown on the web interface - global _WebviewConfiguration - _WebviewConfiguration = _GetPLCConfiguration() - - - -def _GetWebviewConfigurationValue(ctx, argument): + global _BacnetWebviewConfiguration + _BacnetWebviewConfiguration = _GetBacnetPLCConfiguration() + + + +def _GetBacnetWebviewConfigurationValue(ctx, argument): """ # Callback function, called by the web interface (NevowServer.py) # to fill in the default value of each parameter """ try: - return _WebviewConfiguration[argument.name] + return _BacnetWebviewConfiguration[argument.name] except Exception: return "" # The configuration of the web form used to see/edit the BACnet parameters -webFormInterface = [(name, web_dtype (label=web_label, default=_GetWebviewConfigurationValue)) +webFormInterface = [(name, web_dtype (label=web_label, default=_GetBacnetWebviewConfigurationValue)) for name, web_label, c_dtype, web_dtype in BACnet_parameters] -def OnButtonSave(**kwargs): +def OnBacnetButtonSave(**kwargs): """ # Function called when user clicks 'Save' button in web interface # The function will configure the BACnet plugin in the PLC with the values # specified in the web interface. However, values must be validated first! """ - #PLCObject.LogMessage("BACnet web server extension::OnButtonSave() Called") + #PLCObject.LogMessage("BACnet web server extension::OnBacnetButtonSave() Called") newConfig = {} for par_name, x1, x2, x3 in BACnet_parameters: @@ -264,20 +264,20 @@ # First check if configuration is OK. - if not _CheckWebConfiguration(newConfig): + if not _CheckBacnetWebConfiguration(newConfig): return # store to file the new configuration so that # we can recoup the configuration the next time the PLC # has a cold start (i.e. when Beremiz_service.py is retarted) - _SetSavedConfiguration(newConfig) + _SetBacnetSavedConfiguration(newConfig) # Configure PLC with the current BACnet parameters - _SetPLCConfiguration(newConfig) - - - -def OnButtonReset(**kwargs): + _SetBacnetPLCConfiguration(newConfig) + + + +def OnBacnetButtonReset(**kwargs): """ # Function called when user clicks 'Delete' button in web interface # The function will delete the file containing the persistent @@ -285,12 +285,12 @@ """ # Delete the file - _DelSavedConfiguration() + _DelBacnetSavedConfiguration() # Set the current configuration to the default (hardcoded in C) - _SetPLCConfiguration(_DefaultConfiguration) + _SetBacnetPLCConfiguration(_BacnetDefaultConfiguration) # Reset global variable - global _SavedConfiguration - _SavedConfiguration = None + global _BacnetSavedConfiguration + _BacnetSavedConfiguration = None @@ -317,25 +317,25 @@ # XXX TODO : stop reading from PLC .so file. This code is template code # that can use modbus extension build data - GetParamFuncs[name] = getattr(PLCObject.PLClibraryHandle, GetParamFuncName) - GetParamFuncs[name].restype = c_dtype - GetParamFuncs[name].argtypes = None + BacnetGetParamFuncs[name] = getattr(PLCObject.PLClibraryHandle, GetParamFuncName) + BacnetGetParamFuncs[name].restype = c_dtype + BacnetGetParamFuncs[name].argtypes = None - SetParamFuncs[name] = getattr(PLCObject.PLClibraryHandle, SetParamFuncName) - SetParamFuncs[name].restype = None - SetParamFuncs[name].argtypes = [c_dtype] + BacnetSetParamFuncs[name] = getattr(PLCObject.PLClibraryHandle, SetParamFuncName) + BacnetSetParamFuncs[name].restype = None + BacnetSetParamFuncs[name].argtypes = [c_dtype] # Default configuration is the configuration done in Beremiz IDE # whose parameters get hardcoded into C, and compiled into the .so file # We read the default configuration from the .so file before the values # get changed by the user using the web server, or by the call (further on) - # to _SetPLCConfiguration(SavedConfiguration) - global _DefaultConfiguration - _DefaultConfiguration = _GetPLCConfiguration() + # to _SetBacnetPLCConfiguration(BacnetSavedConfiguration) + global _BacnetDefaultConfiguration + _BacnetDefaultConfiguration = _GetBacnetPLCConfiguration() # Show the current PLC configuration on the web interface - global _WebviewConfiguration - _WebviewConfiguration = _GetPLCConfiguration() + global _BacnetWebviewConfiguration + _BacnetWebviewConfiguration = _GetBacnetPLCConfiguration() # Read from file the last used configuration, which is likely # different to the hardcoded configuration. @@ -344,13 +344,13 @@ # so the PLC will start off with this saved configuration instead # of the hardcoded (in Beremiz C generated code) configuration values. # - # Note that _SetPLCConfiguration() will also update - # _WebviewConfiguration , if necessary. - global _SavedConfiguration - _SavedConfiguration = _GetSavedConfiguration() - if _SavedConfiguration is not None: - if _CheckConfiguration(_SavedConfiguration): - _SetPLCConfiguration(_SavedConfiguration) + # Note that _SetBacnetPLCConfiguration() will also update + # _BacnetWebviewConfiguration , if necessary. + global _BacnetSavedConfiguration + _BacnetSavedConfiguration = _GetBacnetSavedConfiguration() + if _BacnetSavedConfiguration is not None: + if _CheckBacnetConfiguration(_BacnetSavedConfiguration): + _SetBacnetPLCConfiguration(_BacnetSavedConfiguration) WebSettings = NS.newExtensionSetting("BACnet extension", "bacnet_token") @@ -360,7 +360,7 @@ _("BACnet Configuration"), # description webFormInterface, # fields _("Apply"), # button label - OnButtonSave) # callback + OnBacnetButtonSave) # callback # Add the Delete button to the web interface WebSettings.addSettings( @@ -369,15 +369,15 @@ [ ("status", annotate.String(label=_("Current state"), immutable=True, - default=lambda *k:getConfigStatus())), + default=lambda *k:getBacnetConfigStatus())), ], # fields (empty, no parameters required!) _("Reset"), # button label - OnButtonReset) - - - -def getConfigStatus(): - if _WebviewConfiguration == _DefaultConfiguration : + OnBacnetButtonReset) + + + +def getBacnetConfigStatus(): + if _BacnetWebviewConfiguration == _BacnetDefaultConfiguration : return "Unchanged" return "Modified" @@ -392,11 +392,11 @@ NS.removeExtensionSetting("bacnet_token") - GetParamFuncs = {} - SetParamFuncs = {} - _WebviewConfiguration = None - _SavedConfiguration = None - - - - + BacnetGetParamFuncs = {} + BacnetSetParamFuncs = {} + _BacnetWebviewConfiguration = None + _BacnetSavedConfiguration = None + + + +