------------------------------------------------------------------------------- Matrox Imaging Library (MIL) 10.0 MIL 9 to MIL 10 IO conversion table for the Matrox Morphis QxT December, 2013 (c) Copyright Matrox Electronic Systems Ltd., 1992-2013. ------------------------------------------------------------------------------- MIL 10 has a new mechanism to control and inquire IO signals. It has unified some concepts under the M_IO_... constants of MsysControl/MsysInquire. Although the old mechanism still works, the old mechanism is deprecated. To port your code to the new mechanism, use the equivalence tables below. Note that the concept of user-defined signals is now treated differently. To output a user-defined signal, you set a bit in a static user output register (M_USER_BIT_STATE). To inquire the state of an auxiliary input signal so that you can act upon it (user input), you inquire the status of the auxiliary signal directly (M_IO_STATUS); you don’t inquire a bit. The following conversion table applies to the Matrox Morphis QxT. Contents 1. MIL 9 to MIL 10 conversion table. 2. MIL 9 to MIL 10 conversion examples. 2.1 Setting a user-bit. 2.2 Inquiring a user-bit. 2.3 Hooking a callback function on a user-bit. =============================================================================== 1. MIL 9 to MIL 10 conversion table. Note that the following table includes only equivalences for inquiring whether a signal is an input or an output. MsysInquire M_USER_BIT_MODE + n becomes M_IO_MODE + M_AUX_IOn Note that the following table includes only equivalences for setting up output user-defined signals; see the subsequent table for inquiring user input signals (no corresponding register bit). MsysControl M_USER_BIT_VALUE_OUT + 0 becomes M_USER_BIT_STATE + M_USER_BIT0 MsysControl M_USER_BIT_VALUE_OUT + 1 becomes M_USER_BIT_STATE + M_USER_BIT1 MsysControl M_USER_BIT_VALUE_OUT + 2 becomes M_USER_BIT_STATE + M_USER_BIT2 MsysControl M_USER_BIT_VALUE_OUT + 3 becomes M_USER_BIT_STATE + M_USER_BIT3 MsysControl M_USER_BIT_VALUE_OUT + 4 becomes M_USER_BIT_STATE + M_USER_BIT4 MsysControl M_USER_BIT_VALUE_OUT + 5 becomes M_USER_BIT_STATE + M_USER_BIT5 MsysControl M_USER_BIT_VALUE_OUT + 6 becomes M_USER_BIT_STATE + M_USER_BIT6 MsysControl M_USER_BIT_VALUE_OUT + 7 becomes M_USER_BIT_STATE + M_USER_BIT7 MsysControl M_USER_BIT_VALUE_OUT + 8 becomes M_USER_BIT_STATE + M_USER_BIT8 MsysControl M_USER_BIT_VALUE_OUT + 9 becomes M_USER_BIT_STATE + M_USER_BIT9 MsysControl M_USER_BIT_VALUE_OUT + 10 becomes M_USER_BIT_STATE + M_USER_BIT10 MsysControl M_USER_BIT_VALUE_OUT + 11 becomes M_USER_BIT_STATE + M_USER_BIT11 MsysControl M_USER_BIT_VALUE_OUT + 12 becomes M_USER_BIT_STATE + M_USER_BIT12 MsysControl M_USER_BIT_VALUE_OUT + 13 becomes M_USER_BIT_STATE + M_USER_BIT13 MsysControl M_USER_BIT_VALUE_OUT + 14 becomes M_USER_BIT_STATE + M_USER_BIT14 MsysControl M_USER_BIT_VALUE_OUT + 15 becomes M_USER_BIT_STATE + M_USER_BIT15 Note that the following table includes only equivalences for reading the status of a user input signal. MsysInquire M_USER_BIT_VALUE_IN + 0 becomes M_IO_STATUS + M_AUX_IO16 MsysInquire M_USER_BIT_VALUE_IN + 1 becomes M_IO_STATUS + M_AUX_IO17 MsysInquire M_USER_BIT_VALUE_IN + 2 becomes M_IO_STATUS + M_AUX_IO18 MsysInquire M_USER_BIT_VALUE_IN + 3 becomes M_IO_STATUS + M_AUX_IO19 MsysInquire M_USER_BIT_VALUE_IN + 4 becomes M_IO_STATUS + M_AUX_IO20 MsysInquire M_USER_BIT_VALUE_IN + 5 becomes M_IO_STATUS + M_AUX_IO21 MsysInquire M_USER_BIT_VALUE_IN + 6 becomes M_IO_STATUS + M_AUX_IO22 MsysInquire M_USER_BIT_VALUE_IN + 7 becomes M_IO_STATUS + M_AUX_IO23 MsysInquire M_USER_BIT_VALUE_IN + 8 becomes M_IO_STATUS + M_AUX_IO24 MsysInquire M_USER_BIT_VALUE_IN + 9 becomes M_IO_STATUS + M_AUX_IO25 MsysInquire M_USER_BIT_VALUE_IN + 10 becomes M_IO_STATUS + M_AUX_IO26 MsysInquire M_USER_BIT_VALUE_IN + 11 becomes M_IO_STATUS + M_AUX_IO27 MsysInquire M_USER_BIT_VALUE_IN + 12 becomes M_IO_STATUS + M_AUX_IO28 MsysInquire M_USER_BIT_VALUE_IN + 13 becomes M_IO_STATUS + M_AUX_IO29 MsysInquire M_USER_BIT_VALUE_IN + 14 becomes M_IO_STATUS + M_AUX_IO30 MsysInquire M_USER_BIT_VALUE_IN + 15 becomes M_IO_STATUS + M_AUX_IO31 MsysHookFunction M_USER_BIT_CHANGE becomes M_IO_CHANGE Note that the following table includes only equivalences for inquiring which input signal caused the interrupt event. MsysGetHookInfo M_USER_BIT returns 0 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO16 MsysGetHookInfo M_USER_BIT returns 1 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO17 MsysGetHookInfo M_USER_BIT returns 2 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO18 MsysGetHookInfo M_USER_BIT returns 3 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO19 MsysGetHookInfo M_USER_BIT returns 4 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO20 MsysGetHookInfo M_USER_BIT returns 5 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO21 MsysGetHookInfo M_USER_BIT returns 6 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO22 MsysGetHookInfo M_USER_BIT returns 7 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO23 MsysGetHookInfo M_USER_BIT returns 8 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO24 MsysGetHookInfo M_USER_BIT returns 9 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO25 MsysGetHookInfo M_USER_BIT returns 10 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO26 MsysGetHookInfo M_USER_BIT returns 11 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO27 MsysGetHookInfo M_USER_BIT returns 12 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO28 MsysGetHookInfo M_USER_BIT returns 13 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO29 MsysGetHookInfo M_USER_BIT returns 14 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO30 MsysGetHookInfo M_USER_BIT returns 15 becomes M_IO_INTERRUPT_SOURCE returns M_AUX_IO31 Note that the following table includes only equivalences for controlling/ inquiring whether an input signal should cause an interrupt. MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 0 becomes M_IO_INTERRUPT_STATE + M_AUX_IO16 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 1 becomes M_IO_INTERRUPT_STATE + M_AUX_IO17 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 2 becomes M_IO_INTERRUPT_STATE + M_AUX_IO18 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 3 becomes M_IO_INTERRUPT_STATE + M_AUX_IO19 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 4 becomes M_IO_INTERRUPT_STATE + M_AUX_IO20 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 5 becomes M_IO_INTERRUPT_STATE + M_AUX_IO21 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 6 becomes M_IO_INTERRUPT_STATE + M_AUX_IO22 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 7 becomes M_IO_INTERRUPT_STATE + M_AUX_IO23 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 8 becomes M_IO_INTERRUPT_STATE + M_AUX_IO24 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 9 becomes M_IO_INTERRUPT_STATE + M_AUX_IO25 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 10 becomes M_IO_INTERRUPT_STATE + M_AUX_IO26 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 11 becomes M_IO_INTERRUPT_STATE + M_AUX_IO27 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 12 becomes M_IO_INTERRUPT_STATE + M_AUX_IO28 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 13 becomes M_IO_INTERRUPT_STATE + M_AUX_IO29 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 14 becomes M_IO_INTERRUPT_STATE + M_AUX_IO30 MsysControl/Inquire M_USER_BIT_INTERRUPT_STATE + 15 becomes M_IO_INTERRUPT_STATE + M_AUX_IO31 Note that the following table includes only equivalences for controlling/ inquiring input signals that cause an interrupt. MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 0 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO16 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 1 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO17 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 2 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO18 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 3 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO19 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 4 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO20 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 5 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO21 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 6 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO22 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 7 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO23 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 8 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO24 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 9 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO25 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 10 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO26 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 11 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO27 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 12 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO28 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 13 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO29 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 14 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO30 MsysControl/Inquire M_USER_BIT_INTERRUPT_MODE + 15 becomes M_IO_INTERRUPT_ACTIVATION + M_AUX_IO31 2. MIL 9 to MIL 10 conversion examples. 2.1 Setting a user-bit. Using Mil 9 IO API: MsysControl(MilSystem, M_USER_BIT_VALUE_OUT + 0, M_ON); Using Mil 10 IO API: MsysControl(MilSystem, M_USER_BIT_STATE + M_USER_BIT0, M_ON); 2.2 Inquiring a user-bit. Using Mil 9 IO API: MsysInquire(MilSystem, M_USER_BIT_VALUE_IN + 0, &Value); Using Mil 10 IO API: MsysInquire(MilSystem, M_IO_STATUS + M_AUX_IO16, &Value); 2.3 Hooking a callback function on a user-bit. Using Mil 9 IO API: MsysControl(MilSystem, M_USER_BIT_INTERRUPT_MODE + 0, M_EDGE_RISING); MsysHookFunction(MilSystem, M_USER_BIT_CHANGE, HookHandlerFnc, &HookData); MsysControl(MilSystem, M_USER_BIT_INTERRUPT_STATE + 0, M_ENABLE); MIL_INT HookHandlerFnc(MIL_INT HookType, MIL_ID EventId, void *UserDataPtr) { MIL_INT UserBit = 0; MsysGetHookInfo(EventId, M_USER_BIT, &UserBit); // UserBit will be 0 when interrupt is fired. } Using Mil 10 IO API: MsysControl(MilSystem, M_IO_INTERRUPT_ACTIVATION + M_AUX_IO16, M_EDGE_RISING); MsysHookFunction(MilSystem, M_IO_CHANGE, HookHandlerFnc, &HookData); MsysControl(MilSystem, M_IO_INTERRUPT_STATE + M_AUX_IO16, M_ENABLE); MIL_INT HookHandlerFnc(MIL_INT HookType, MIL_ID EventId, void *UserDataPtr) { MIL_INT IOSource = 0; MsysGetHookInfo(EventId, M_IO_INTERRUPT_SOURCE, &IOSource); // IOSource will be M_AUX_IO16 when interrupt is fired. }