feat: Update Fusion to create a GUID file per room

This allows for multiple rooms to be designated and created without any issues. Also moved post Activation action to it's own method rather than a lambda.

In the interest of backwards compatibility, the Fusion class will look for a GUID file with the old file name and migrate it to the new file name.
This commit is contained in:
Andrew Welker
2021-07-20 17:30:45 -06:00
parent 88e5c49663
commit de7a74eaff

View File

@@ -119,8 +119,20 @@ namespace PepperDash.Essentials.Core.Fusion
var slot = Global.ControlSystem.ProgramNumber; var slot = Global.ControlSystem.ProgramNumber;
var guidFilePath = Global.FilePathPrefix + var guidFilePath = Global.FilePathPrefix +
string.Format(@"{0}-FusionGuids-{1:X2}.json", InitialParametersClass.ProgramIDTag, _ipId);
var oldGuidFilePath = Global.FilePathPrefix +
string.Format(@"{0}-FusionGuids.json", InitialParametersClass.ProgramIDTag); string.Format(@"{0}-FusionGuids.json", InitialParametersClass.ProgramIDTag);
if (File.Exists(oldGuidFilePath))
{
Debug.Console(0, this, "Migrating from old Fusion GUID file to new Fusion GUID File");
File.Copy(oldGuidFilePath, guidFilePath);
File.Delete(oldGuidFilePath);
}
_guidFileExists = File.Exists(guidFilePath); _guidFileExists = File.Exists(guidFilePath);
// Check if file exists // Check if file exists
@@ -149,7 +161,15 @@ namespace PepperDash.Essentials.Core.Fusion
} }
AddPostActivationAction(() => AddPostActivationAction(() => PostActivate(guidFilePath));
}
catch (Exception e)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Building Fusion System Controller: {0}", e);
}
}
private void PostActivate(string guidFilePath)
{ {
CreateSymbolAndBasicSigs(_ipId); CreateSymbolAndBasicSigs(_ipId);
SetUpSources(); SetUpSources();
@@ -161,12 +181,6 @@ namespace PepperDash.Essentials.Core.Fusion
FusionRVI.GenerateFileForAllFusionDevices(); FusionRVI.GenerateFileForAllFusionDevices();
GenerateGuidFile(guidFilePath); GenerateGuidFile(guidFilePath);
});
}
catch (Exception e)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Building Fusion System Controller: {0}", e);
}
} }
protected string RoomGuid protected string RoomGuid
@@ -314,7 +328,7 @@ namespace PepperDash.Essentials.Core.Fusion
protected virtual void CreateSymbolAndBasicSigs(uint ipId) protected virtual void CreateSymbolAndBasicSigs(uint ipId)
{ {
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Creating Fusion Room symbol with GUID: {0}", RoomGuid); Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Creating Fusion Room symbol with GUID: {0} and IP-ID {1:X2}", RoomGuid, ipId);
FusionRoom = new FusionRoom(ipId, Global.ControlSystem, Room.Name, RoomGuid); FusionRoom = new FusionRoom(ipId, Global.ControlSystem, Room.Name, RoomGuid);
FusionRoom.ExtenderRoomViewSchedulingDataReservedSigs.Use(); FusionRoom.ExtenderRoomViewSchedulingDataReservedSigs.Use();