60 likes | 229 Views
The ADLink Support Library. N.Leclercq & G.Abeillé - ICA - SOLEIL. A bit of history…. In 2003, SOLEIL made some choices… cPCI as hw platform for DAQ applications ADLink as main DAQ boards provider ADLink? Who is this? the “little NI clone” from Taiwan good hw products (for price) but…
E N D
The ADLink Support Library N.Leclercq & G.Abeillé - ICA - SOLEIL
A bit of history… • In 2003, SOLEIL made some choices… • cPCI as hw platform for DAQ applications • ADLink as main DAQ boards provider • ADLink? Who is this? • the “little NI clone” from Taiwan • good hw products (for price) but… • …poor drivers (telecom market) • infinite (re)tiggered DAQ • data overflow detection in db DAQ • many bug fixes
The (obvious) aims of ASL… • Factorize DAQ services • do not reinvent the wheel for each device • a single framework for all applications • a single/systematic approach for hw integration • DAQ oriented devices becomes homogeneous (impl) • Help developers… • DAQ part impl. is a question of hours not weeks • simple concepts for non hw gurus • provide powerful DAQ features • easy to use C++ API • focus on device core functionality not hw hell!
The provided services… • synchronous “single shot” operations • for DI, DO, AI, AO • asynchronous “continuous” operations • for AI, AO (, DI, DO) operations • support for multipurpose boards • e.g. access DIO capabilities of an AI board • multiple inheritance + common mother class
About the ContinuousAI class… • fully multithreaded (i.e. async.) DAQ for free • actual DAQ and user data processing run in different threads • process (CPU) while acquiring (DMA) • best effort soft real time data delivery to user • message Q (CPU peak load absorber) • data lost strategy: ignore, notify, abort • other nice little features… • external trigger signal loss/shutdown detection • ”end of DAQ” notification with “reason” specified
One step further… • hardware abstraction layer • provide support for several manufacturers • plug-in oriented architecture • one plug-in per manufacturer or… • one plug-in for a given driver (hw family support) or… • one plug-in for a single given board • runtime capabilities discovery (introspection) • required vs. implemented hw features