Per migliorare la scalabilità dei sistemi è stata realizzata una libreria unificata per tutti i sistemi, chi è abituato a programmare in ambiente LogicLab, ha una familiarità con il termine XTarget, il livello di XTarget indica l’evoluzione del sistema. Un programma sviluppato per un certo sistema con un certo XTarget è sicuramente eseguibile su tutti i sistemi con lo stesso livello, o con livello superiore. Questa impostazione costringeva ad aggiornare LogicLab ad ogni aggiornamento del firmware dei sistemi che prevedesse l’avanzamento di versione XTarget.
Per permettere a LogicLab di adattarsi automaticamente alle nuove versioni del firmware abbiamo realizzato XUnified che non è più seguito da un numero di versione perchè è utilizzabile su tutte le versioni firmware. La diversificazione con le varie versioni firmware dei sistemi è attuata dalla libreria eLLabXUnifiedxxLib dove xx indica il livello di oggetti supportati. La compatibilità tra il livello della libreria e la versione del firmware dei sistemi è riportata nella tabella Compatibilità con firmwares.
Con il passaggio ad XUnified sono state apportate modifiche ad alcuni oggetti (Vedi tabella Oggetti libreria modificati).

Approfondimenti
- In questo topic conversione programma gateway Modbus da XTarget ad XUnified.
- In questo topic conversione vecchio progetto da XTarget ad XUnified.
- In questo topic problemi nella conversione progetto da XTarget ad XUnified.
Compatibilità con firmwares
Livello libreria
La libreria eLLabXUnified12Lib (Vers. 1.0.0) garantisce la compatibilità con XTarget 12.0, ha tutte le funzionalità dei sistemi attuali. Molte funzionalità della libreria sono embedded, cioè gestite dal sistema operativo del dispositivo, per questo quando si utilizza una libreria è importante verificare la versione del sistema operativo. Ecco una tabella riassuntiva, per ogni libreria è riportato il livello minimo di sistema operativo supportato, i livelli superiori supportano tutte le versioni di libreria di livello inferiore.
Modifiche nella libreria che risolvono BUGs o aggiungono funzionalità mantenendo compatibilità con il sistema operativo, non cambiano livello ma riporteranno versioni superiori alla 1.0.0. Se nella libreria vengono aggiunte funzionalità embedded che comportano una modifica del sistema operativo, viene cambiato il livello di XUnified, esempio eLLabXUnified13Lib.
| Tipo di dispositivo | Libreria | Sistema operativo |
|---|---|---|
| Sistemi basati su ARM7 | eLLabXUnified12Lib | SFW184C000 |
| Sistemi basati su Cortex M7 | eLLabXUnified12Lib | SFW198D000 |
| Sistemi basati su Raspberry | eLLabXUnified12Lib | MDP154A230 |
Oggetti di libreria modificati
| Tipo | Eliminato | Sostituito da | Decrizione | Nota |
|---|---|---|---|---|
| F | SysUDPSktSend | Non esiste funzione che la sostituisce, utilizzare SysUDPClient o SysUDPServer | 1 | |
| F | SysUDPSktRcv | Non esiste funzione che la sostituisce, utilizzare SysUDPClient o SysUDPServer | 1 | |
| F | SysSktListen | Non esiste funzione che la sostituisce, utilizzare SysUDPClient o SysUDPServer | 1 | |
| F | SysGetIChars | SysFGetIChars | Get input available characters from file | 1 |
| F | SysGetOSpace | SysFGetOSpace | Get output available space on file | 1 |
| F | SysGetRxBSize | SysFGetIBfSize | Get file Rx input buffer size | 1 |
| F | SysGetTxBSize | SysFGetOBfSize | Get file Tx output buffer size | 1 |
| F | Sysfopen | SysFfopen | File open | 2 |
| F | Sysfilelength | SysGetFileLen | Get file length | 2 |
| F | Sysrename | SysFileRename | File rename | 2 |
| F | Sysremove | SysFileRemove | File remove | 2 |
| F | SysPCodeAccept | SysPCodeVerify | Accepts the protection code | 2 |
| F | SysPhrInfos | SysGetPhrInfos | Get infos from peripheral modules | 2 |
| F | SysVarsscanf | SysVsscanf | Extracts values from string | 2 |
| F | SysVarfprintf | SysVfprintf | Variable print to file | 2 |
| F | SysVarsnprintf | SysVsnprintf | Variable print to string | 2 |
| F | SysLWVarsnprintf | SysCVsnprintf | Concatenate variable print to string | 2 |
| F | SysSpyData | SysWrSpyData | Invia dati alla console di spionaggio | 2 |
| FB | SysGetCrc | Non esiste FB che lo sostituisce, utilizzare la funzione SysGetCheck | 1 | |
| FB | SysIPReach | SysPing | IP address is reachable | 2 |
| FB | SysGetIpInfos | SysGetPeerInfos | Get peer infos | 2 |
| FB | SysDirListing | SysGetFileInfos | Get file infos | 2 |
- (Nota 1) Eliminati oggetti obsoleti presenti per compatibilità con il passato.
- (Nota 2) Modificati oggetti con parametri STRING[] in parametri @STRING, per non avere costrizioni legate alla lunghezza dei parametri.

Migrazione progetto da XTarget ad XUnified
Per convertire un progetto XTarget in un progetto XUnified, occorre aprire il progetto con LogicLab, dal menù Project – Select target selezionare il dispositivo XUnified, in questo modo al progetto verrà collegata la libreria eLLabXUnifiedxxLib ed il progetto potrà essere ricompilato. Siccome nella libreria XUnified sono state apportate modifiche ad alcuni oggetti ricompilando il progetto si avranno degli errori. Per eliminarli occorre correggere gli errori manualmente modificando il codice sorgente, in questo modo si avrà un programma allineato alla nuova libreria.
Se non si vuole agire sul programma sorgente con modifiche basterà dal menù Project – Library manager inserire nel progetto la libreria eLLabXTargetAdjLib che contiene l’adattamento degli oggetti alla nuova libreria.
Approfondimenti
Progetto XTarget con flag Case sensivity settata
Consigliamo sempre di settare nei progetti LogicLab la flag Case sensivity,se è settata il passaggio da XTarget ad XUnified è molto semplificato.
Basterà nel progetto selezionare il nuovo tipo di target che automaticamente includerà l’ultima versione della raccolta librerie o in alternativa aggiungerla manualmente dal menù Project->Library manager. L’ultima raccolta attualmente disponibile è la Pck055a60.
Sempre dal menù Project->Library manager includere la libreria eLLabXTargetAdjLib (Si trova nella raccolta librerie distribuita con LogcLab), che contiene le definizioni per allineare i nomi dei vecchi oggetti XTarget.
Ora sarà possibile compilare il progetto e scaricarlo nel sistema target.

Progetto XTarget con flag Case sensivity non settata
Se nel progetto XTarget la flag Case sensivity non è settata nel passggio si incontra qualche difficoltà maggiore.
Selezionando nel progetto il nuovo tipo di target automaticamente includerà l’ultima versione della raccolta librerie ma questo può creare problemi con alcune definizioni (Vedi topic). Quindi dopo avere selezionato il target dal menù Project->Library manager eliminare la raccolta librerie dalle impostazioni.
Sempre dal menù Project->Library manager si dovranno includere le 3 librerie essenziali per disporre di tutti gli oggetti necessari alla compilazione. Dalla ultima versione della raccolta librerie distribuita con LogcLab eseguire l’inclusione di eLLabCommonLib, eLLabXUnified12Lib, eLLabXTargetAdjLib.
Ora sarà possibile compilare il progetto e scaricarlo nel sistema target. Nel caso la compilazione generi errori del tipo Unknown called function, significa che l’oggetto che ha generato l’errore non è presente nel progetto. Come abbiamo visto precedentemente tutti gli oggetti sono distributi per librerie nella raccolta, quindi basterà importare nel progetto l’oggetto mancante:
- error S1305: Sysfclose => Unknown called function: Importare nel progetto dalla libreria eLLabObsoleteLib la funzione Sysfclose.
- error S1305: SysGetSysTime => Unknown called function: Importare nel progetto dalla libreria eLLabDTimeAdjLib la funzione SysGetSysTime.

Migrazione progetto da XUnified a XTarget
Per convertire un progetto XUnified in un progetto XTarget, occorre aprire il progetto con LogicLab, dal menù Project – Library manager rimuovere dal progetto la libreria eLLabXUnifiedxxLib ed inserire la libreria eLLabXTargetAdjLib. Dal menù Project – Select target selezionare il dispositivo XTarget, ora il progetto potrà essere ricompilato.
Tutti gli esempi del manuale sono realizzati secondo le specifiche XUnified quindi se si desidera utilizzarli in un programma XTarget occorre dal menù Project – Library manager inserire la libreria eLLabXTargetAdjLib.
Se non si vuole agire sul programma sorgente con modifiche basterà dal menù Project – Library manager inserire nel progetto la libreria eLLabXUnifiedAdjLib che contiene l’adattamento degli oggetti alla nuova libreria.