= AMV Technic I = [[Image(Technic02.gif)]] The [wiki:TBR/UserApp/AMV_Technic_I TECHNIC I] is syringe pump for high-precision pharmaceutical dispensing. Producer: [http://www.amvtechnics.cz/ AMV_Technics] Electronics and SW design: [http://www.pikron.com/ PiKRON] Industrial Design: [http://www.exact-tech.cz/ EXACT Technology] The system is based on two independent processor systems to achieve high safety rules. Each system is based on different architecture libraries and GCC toolchain version. The TI MSP430 based one provides advanced stepper motor control to achieve rotor lag compensation by current/torque control from current phase to voltage determination. This system is directly programmed on the hardware without operating system or NewLib use. The other system is based on PiMX1 board build around i.MX MX1 FreeScale's ARM920T MPU. This system takes care of user interface, communications and precise independent position measurement and supervisors and checks activities of other MCU. This system fully utilizes features of RTEMS executive which is used as backbone for more specialized drivers and subsystem layers. The graphical user interface is driven by SuiTk library. It implements its own widgetset and allows build on fly user screens from hierarchic description stored in XML files and objects found in the application namespace. Parsed widgets, styles and other objects can be named and registered into namespace as well. The user actions inside one screen can be handled by states and transitions description stored in a scenarios description included in the screen set definition without complex XML reparsing. Transition to other screens invokes parsing of new XML's and cleaning local namespace references. Transitions can be initiated by scenarios or embedded application logic and "hardware" state transitions. Access to the system (application logic) process variables is fully separated from user interface through concept of named data info objects (DINFOs) registered into global application namespace. The namespace and other sorted lists objects are organized as AVL trees and utilize GAVL algorithms found in uLUt library. Low level graphics code is build above [wiki:Packages/MicroWindows MicroWindows] low level GDI API to be portable to other systems which allows to run user interface tests on Linux system in X11 canvas for example. Keyboard function is implemented as fully interrupts/timers driven MX1 RTEMS driver on the target. The other noticeable subsystems are * IrDA stack allowing to print actual and archived batches details directly to IrDA printers * SecureDigital MX1 SDHC block driver enabling to store records of all batches and systems logs on SD card and retrieving history data for all days of instrument use * Multi-domain log system (ul_log from uLUt library) allowing to se messages and alter loglevels from RTEMS console, logging from interrupt context and store messages above selected severity onto SD card medium * The remote access to the archives and log data is based on own compact OBEX protocol implementation Build environment utilizes [http://rtime.felk.cvut.cz/omk/ OMK make rules] concept developed originally for [http://www.ocera.org/ OCERA] project. Actual version is maintained in DCE FEL CTU [http://rtime.felk.cvut.cz/darcs/darcsweb.cgi?r=omk;a=summary OMK repository]. [http://rtime.felk.cvut.cz/repos/rtems-devel/rtems-omk-template/ Template] for RTEMS applications can be found in DCE FEL CTU [http://rtime.felk.cvut.cz/darcs/darcsweb.cgi?r=rtems-devel;a=summary Pavel Pisa's RTEMS devel repository] as well. More of base technologies and libraries developed by PiKRON Ltd. and associated developers are or can be released under some form of open source licenses. The instrument has received HospiMedica 2006 [http://www.amvtechnics.cz/_images/mefa_large.gif Golden Award] for its advances in the area of infusion systems area.