private static void AddMessagesToList(FocasLibBase.ODBOMHIS obj, List <OprMessageDTO> oprMessagesObj)
 {
     oprMessagesObj.Add(ConvertToMessage(obj.omhis1));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis2));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis3));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis4));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis5));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis6));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis7));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis8));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis9));
     oprMessagesObj.Add(ConvertToMessage(obj.omhis10));
 }
        /*(9) CNC parameter error CNC parameter '3112#2' must be 1. */
        public static List <OprMessageDTO> ReadExternalOperatorMessageHistory18i(string machineID, string ipAddress, ushort portNo)
        {
            int    ret            = 0;
            ushort focasLibHandle = 0;
            List <OprMessageDTO> oprMessagesObj = new List <OprMessageDTO>();

            try
            {
                ret = FocasLib.cnc_allclibhndl3(ipAddress, portNo, 10, out focasLibHandle);
                if (ret != 0)
                {
                    Logger.WriteErrorLog("cnc_allclibhndl3() failed. return value is = " + ret);
                    return(null);
                }

                ret = FocasLib.cnc_stopomhis(focasLibHandle);
                if (ret != 0)
                {
                    Logger.WriteErrorLog("cnc_stopomhis() failed. return value is = " + ret);
                    return(null);
                }
                FocasLibBase.ODBOMIF a = new FocasLibBase.ODBOMIF();
                ret = FocasLib.cnc_rdomhisinfo(focasLibHandle, a);
                if (ret != 0)
                {
                    Logger.WriteErrorLog("cnc_rdomhisinfo() failed. return value is = " + ret);
                    return(null);
                }
                if (a.om_max == 0)
                {
                    return(oprMessagesObj);
                }
                //TODO - check it?
                int totalMessages = a.om_max;
                //10 rows at a time
                ushort loop_count = (ushort)(totalMessages / 10);
                ushort remainder = (ushort)(totalMessages % 10);
                ushort i = 0, s_no = 0, e_no = 0;
                //ushort length = 4 + 512 * 10;

                for (i = 0; i <= loop_count; i++)
                {
                    if (i == loop_count)
                    {
                        if (remainder > 0)
                        {
                            s_no = (ushort)(i * 10 + 1);
                            e_no = (ushort)(s_no + (remainder - 1));
                            FocasLibBase.ODBOMHIS obj = new FocasLibBase.ODBOMHIS();
                            ushort length             = (ushort)Marshal.SizeOf(obj);
                            ret = FocasLib.cnc_rdomhistry(focasLibHandle, s_no, ref e_no, obj);
                            if (ret != 0)
                            {
                                Logger.WriteErrorLog("cnc_rdomhistry() failed. return value is = " + ret);
                                continue;
                            }
                            AddMessagesToList(obj, oprMessagesObj);
                            try
                            {
                                oprMessagesObj.RemoveRange(totalMessages, oprMessagesObj.Count - totalMessages);
                            }
                            catch (Exception exxx)
                            {
                                Logger.WriteErrorLog(exxx.ToString());
                            }
                        }
                    }
                    else
                    {
                        s_no = (ushort)(i * 10 + 1);
                        e_no = (ushort)(s_no + 9);
                        FocasLibBase.ODBOMHIS obj = new FocasLibBase.ODBOMHIS();
                        ushort length             = (ushort)Marshal.SizeOf(obj);
                        ret = FocasLib.cnc_rdomhistry(focasLibHandle, s_no, ref e_no, obj);
                        if (ret != 0)
                        {
                            Logger.WriteErrorLog("cnc_rdomhistry() failed. return value is = " + ret);
                            continue;
                        }
                        //TODO - add the message based on s_no and e_no
                        AddMessagesToList(obj, oprMessagesObj);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteErrorLog(ex.ToString());
            }
            finally
            {
                if (focasLibHandle > 0)
                {
                    ret = FocasLib.cnc_startophis(focasLibHandle);
                    FocasData.cnc_freelibhndl(focasLibHandle);
                }
            }

            return(oprMessagesObj);
        }