diff --git a/app.go b/app.go
index 36d1024..f55e03f 100644
--- a/app.go
+++ b/app.go
@@ -28,9 +28,9 @@ type App struct {
func NewApp() *App {
// Create a new hadware manager
hardwareManager := hardware.NewHardwareManager()
- hardwareManager.RegisterFinder(hardware.NewMIDIFinder(5 * time.Second))
+ // hardwareManager.RegisterFinder(hardware.NewMIDIFinder(5 * time.Second))
hardwareManager.RegisterFinder(hardware.NewFTDIFinder(5 * time.Second))
- hardwareManager.RegisterFinder(hardware.NewOS2LFinder())
+ // hardwareManager.RegisterFinder(hardware.NewOS2LFinder())
return &App{
hardwareManager: hardwareManager,
projectSave: "",
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 14f79f3..032ecde 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -32,7 +32,7 @@
return {...peripherals}
})
console.log("Hardware has been added to the system");
- generateToast('info', 'bxs-hdd', 'Your ' + peripheralInfo.Name + ' device has been detected')
+ generateToast('info', 'bxs-hdd', $_("peripheralArrivalToast") + ' ' + peripheralInfo.Name + '')
})
// Handle the event when a peripheral is removed from the system
@@ -51,7 +51,7 @@
storedPeripherals[peripheralInfo.SerialNumber].isDetected = false
return {...storedPeripherals}
})
- generateToast('warning', 'bxs-hdd', 'Your ' + peripheralInfo.Name + ' device has been removed')
+ generateToast('warning', 'bxs-hdd', $_("peripheralRemovalToast") + ' ' + peripheralInfo.Name + '')
})
// Set the window title
@@ -70,10 +70,10 @@
SaveProject().then((filePath) => {
needProjectSave.set(false)
console.log("Project has been saved to " + filePath)
- generateToast('info', 'bxs-save', 'The project has been saved')
+ generateToast('info', 'bxs-save', $_("projectSavedToast"))
}).catch((error) => {
console.error(`Unable to save the project: ${error}`)
- generateToast('danger', 'bx-error', 'Unable to save the project: ' + error)
+ generateToast('danger', 'bx-error', $_("projectSaveErrorToast") + ' ' + error)
})
}
diff --git a/frontend/src/components/Settings/InputsOutputsContent.svelte b/frontend/src/components/Settings/InputsOutputsContent.svelte
index b183ab3..2b12d8e 100644
--- a/frontend/src/components/Settings/InputsOutputsContent.svelte
+++ b/frontend/src/components/Settings/InputsOutputsContent.svelte
@@ -62,7 +62,7 @@
$needProjectSave = true
}).catch((error) => {
console.log("Unable to add the peripheral to the project: " + error)
- generateToast('danger', 'bx-error', 'Unable to add this device to project')
+ generateToast('danger', 'bx-error', $_("addPeripheralErrorToast"))
})
}
@@ -86,7 +86,7 @@
$needProjectSave = true
}).catch((error) => {
console.log("Unable to remove the peripheral from the project: " + error)
- generateToast('danger', 'bx-error', 'Unable to remove this device from project')
+ generateToast('danger', 'bx-error', $_("removePeripheralErrorToast"))
})
}
@@ -100,10 +100,10 @@
return {...currentPeriph}
})
$needProjectSave = true
- generateToast('info', 'bx-signal-5', 'Your OS2L peripheral has been created')
+ generateToast('info', 'bx-signal-5', $_("os2lPeripheralCreatedToast"))
}).catch(error => {
console.log("Unable to add the OS2L peripheral: " + error)
- generateToast('danger', 'bx-error', 'Unable to create the OS2L peripheral')
+ generateToast('danger', 'bx-error', $_("os2lPeripheralCreateErrorToast"))
})
}
diff --git a/frontend/src/components/Settings/Settings.svelte b/frontend/src/components/Settings/Settings.svelte
index 167be7b..dfcc601 100644
--- a/frontend/src/components/Settings/Settings.svelte
+++ b/frontend/src/components/Settings/Settings.svelte
@@ -23,7 +23,7 @@
$projectsList = projects
}).catch((error) => {
console.error(`Unable to get the projects list: ${error}`)
- generateToast('danger', 'bx-error', 'Unable to get the projects list')
+ generateToast('danger', 'bx-error', $_("projectsLoadErrorToast"))
})
}
@@ -68,10 +68,10 @@
// Load the new project peripherals
loadPeripherals(projectInfo.PeripheralsInfo)
needProjectSave.set(false)
- generateToast('info', 'bx-folder-open', 'The project ' + projectInfo.ShowInfo.Name + ' was opened')
+ generateToast('info', 'bx-folder-open', $_("projectOpenedToast") + ' ' + projectInfo.ShowInfo.Name + '')
}).catch((error) => {
console.error(`Unable to open the project: ${error}`)
- generateToast('danger', 'bx-error', 'Unable to open the project')
+ generateToast('danger', 'bx-error', $_("projectOpenErrorToast"))
})
}
@@ -82,7 +82,7 @@
// Remove the saved peripherals ofthe current project
unsavePeripherals()
$needProjectSave = true
- generateToast('info', 'bxs-folder-plus', 'The project was created')
+ generateToast('info', 'bxs-folder-plus', $_("projectCreatedToast"))
})
}
diff --git a/frontend/src/lang/en.json b/frontend/src/lang/en.json
index a97cb8f..f1c1ee8 100644
--- a/frontend/src/lang/en.json
+++ b/frontend/src/lang/en.json
@@ -34,5 +34,18 @@
"projectHardwareInputsLabel": "INPUTS",
"projectHardwareOutputsLabel": "OUTPUTS",
"projectHardwareDeleteTooltip": "Delete this peripheral",
- "projectHardwareAddTooltip": "Add this peripheral to project"
+ "projectHardwareAddTooltip": "Add this peripheral to project",
+
+ "peripheralArrivalToast": "Peripheral inserted:",
+ "peripheralRemovalToast": "Peripheral removed:",
+ "projectSavedToast": "The project has been saved",
+ "projectSaveErrorToast": "Unable to save the project:",
+ "addPeripheralErrorToast": "Unable to add this peripheral to project",
+ "removePeripheralErrorToast": "Unable to remove this peripheral from project",
+ "os2lPeripheralCreatedToast": "Your OS2L peripheral has been created",
+ "os2lPeripheralCreateErrorToast": "Unable to create the OS2L peripheral",
+ "projectsLoadErrorToast": "Unable to get the projects list",
+ "projectOpenedToast": "The project was opened:",
+ "projectOpenErrorToast": "Unable to open the project",
+ "projectCreatedToast": "The project was created"
}
diff --git a/hardware/FTDIFinder.go b/hardware/FTDIFinder.go
index 279dad2..4d1fc29 100644
--- a/hardware/FTDIFinder.go
+++ b/hardware/FTDIFinder.go
@@ -196,7 +196,7 @@ func (f *FTDIFinder) scanPeripherals(ctx context.Context) error {
// The program output is like '0:1:2' where 0 is the location, 1 is the S/N and 2 is the name
peripheralInfo := strings.Split(peripheralString, ":")
- log.Debug().Str("file", "FTDIFinder").Str("peripheralName", peripheralInfo[2]).Str("peripheralSN", peripheralInfo[1]).Msg("new FTDI peripheral detected")
+ log.Trace().Str("file", "FTDIFinder").Str("scannedString", peripheralString).Str("peripheralName", peripheralInfo[2]).Str("peripheralSN", peripheralInfo[1]).Msg("new FTDI peripheral detected")
// Convert the location to an integer
location, err := strconv.Atoi(peripheralInfo[0])
if err != nil {
@@ -208,16 +208,13 @@ func (f *FTDIFinder) scanPeripherals(ctx context.Context) error {
if err != nil {
return fmt.Errorf("unable to create the FTDI peripheral: %v", err)
}
+ log.Trace().Any("periph", &peripheral).Str("file", "FTDIFinder").Str("peripheralName", peripheralInfo[2]).Msg("has been created")
+
ftdiPeripherals[peripheralInfo[1]] = peripheral
- log.Trace().Str("file", "FTDIFinder").Str("peripheralName", peripheralInfo[2]).Msg("successfully added the FTDI peripheral to the finder")
+ log.Trace().Any("periph", ftdiPeripherals).Str("file", "FTDIFinder").Str("peripheralName", peripheralInfo[2]).Msg("successfully added the FTDI peripheral to the finder")
}
- // Compare with the current peripherals to detect arrivals/removals
- removedList, addedList := comparePeripherals(f.peripherals, ftdiPeripherals)
- // Emit the events
- emitPeripheralsEvents(ctx, removedList, PeripheralRemoval)
- log.Info().Str("file", "FTDIFinder").Msg("FTDI remove list emitted to the front")
- emitPeripheralsEvents(ctx, addedList, PeripheralArrival)
- log.Info().Str("file", "FTDIFinder").Msg("FTDI add list emitted to the front")
+ // Emit the peripherals changes to the front
+ emitPeripheralsChanges(ctx, f.peripherals, ftdiPeripherals)
// Store the new peripherals list
f.peripherals = ftdiPeripherals
return nil
diff --git a/hardware/MIDIFinder.go b/hardware/MIDIFinder.go
index 6116d12..4d7a65e 100644
--- a/hardware/MIDIFinder.go
+++ b/hardware/MIDIFinder.go
@@ -152,11 +152,11 @@ func (f *MIDIFinder) scanPeripherals(ctx context.Context) error {
midiPeripherals[sn] = NewMIDIPeripheral(name, location, sn)
}
// Compare with the current peripherals to detect arrivals/removals
- removedList, addedList := comparePeripherals(f.peripherals, midiPeripherals)
+ // removedList, addedList := comparePeripherals(f.peripherals, midiPeripherals)
// Emit the events
- emitPeripheralsEvents(ctx, removedList, PeripheralRemoval)
+ // emitPeripheralsEvents(ctx, removedList, PeripheralRemoval)
log.Info().Str("file", "MIDIFinder").Msg("MIDI remove list emitted to the front")
- emitPeripheralsEvents(ctx, addedList, PeripheralArrival)
+ // emitPeripheralsEvents(ctx, addedList, PeripheralArrival)
log.Info().Str("file", "MIDIFinder").Msg("MIDI add list emitted to the front")
// Store the new peripherals list
f.peripherals = midiPeripherals
diff --git a/hardware/hardware.go b/hardware/hardware.go
index f77033c..f7aeabf 100644
--- a/hardware/hardware.go
+++ b/hardware/hardware.go
@@ -129,37 +129,23 @@ func (h *HardwareManager) Stop() error {
return nil
}
-// peripheralsList emits a peripheral event
-func emitPeripheralsEvents(ctx context.Context, peripheralsList map[string]Peripheral, peripheralEvent PeripheralEvent) {
- for _, peripheral := range peripheralsList {
- runtime.EventsEmit(ctx, string(peripheralEvent), peripheral.GetInfo())
- log.Trace().Str("file", "hardware").Str("event", string(peripheralEvent)).Msg("emit peripheral event")
- }
-}
+// emitPeripheralsChanges compares the old and new peripherals to determine which ones have been added or removed.
+func emitPeripheralsChanges(ctx context.Context, oldPeripherals map[string]Peripheral, newPeripherals map[string]Peripheral) {
+ log.Trace().Any("oldList", oldPeripherals).Any("newList", newPeripherals).Msg("emitting peripherals changes to the front")
-// comparePeripherals compares the peripherals to determine which has been inserted or removed
-func comparePeripherals(oldPeripherals map[string]Peripheral, newPeripherals map[string]Peripheral) (map[string]Peripheral, map[string]Peripheral) {
- // Duplicate the lists
- oldList := make(map[string]Peripheral)
- newList := make(map[string]Peripheral)
-
- for key, value := range oldPeripherals {
- oldList[key] = value
- }
- log.Trace().Str("file", "hardware").Any("oldList", oldList).Msg("peripheral oldList comparison")
- for key, value := range newPeripherals {
- newList[key] = value
- }
- log.Trace().Str("file", "hardware").Any("newList", newList).Msg("peripheral newList comparison")
- // Remove in these lists all the commons peripherals
- for key := range newList {
- if _, exists := oldList[key]; exists {
- delete(oldList, key)
- delete(newList, key)
+ // Identify removed peripherals: present in the old list but not in the new list
+ for oldPeriphName := range oldPeripherals {
+ if _, exists := newPeripherals[oldPeriphName]; !exists {
+ runtime.EventsEmit(ctx, string(PeripheralRemoval), oldPeripherals[oldPeriphName].GetInfo())
+ log.Trace().Str("file", "hardware").Str("event", string(PeripheralRemoval)).Msg("emit peripheral removal event")
+ }
+ }
+
+ // Identify added peripherals: present in the new list but not in the old list
+ for newPeriphName := range newPeripherals {
+ if _, exists := oldPeripherals[newPeriphName]; !exists {
+ runtime.EventsEmit(ctx, string(PeripheralArrival), newPeripherals[newPeriphName].GetInfo())
+ log.Trace().Str("file", "hardware").Str("event", string(PeripheralArrival)).Msg("emit peripheral arrival event")
}
}
- // Now the old list contains the removed peripherals, and the new list contains the added peripherals
- log.Trace().Str("file", "hardware").Any("oldList", oldList).Msg("peripheral oldList computed")
- log.Trace().Str("file", "hardware").Any("newList", newList).Msg("peripheral newList computed")
- return oldList, newList
}
diff --git a/hardware/third-party/ftdi/detectFTDI.cpp b/hardware/third-party/ftdi/detectFTDI.cpp
index 691cd48..c1e8722 100644
--- a/hardware/third-party/ftdi/detectFTDI.cpp
+++ b/hardware/third-party/ftdi/detectFTDI.cpp
@@ -8,6 +8,7 @@ int main() {
FT_HANDLE ftHandle = nullptr;
FT_DEVICE_LIST_INFO_NODE *devInfo;
DWORD numDevs;
+
// create the device information list
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus != FT_OK) {