public int daveBuildAndSendPDU(IPDU myPDU, byte[] Parameter, byte[] Data)
 {
     throw new NotImplementedException();
 }
        /*public int execReadRequest(IPDU p, IresultSet rl)//!!!!!!!!!!!!!!!!!! for delete
        {
            return 0;
        }*/
        public int execReadRequest(IPDU p, IresultSet rl)
        {
            //int DECL2 daveExecReadRequest(daveConnection * dc, PDU *p, daveResultSet* rl){
            Pdu p2;
            byte[] q, qU;
            resultN cr;//, c2;
            int res, i, len, rlen;

            AnswLen = 0;	// 03/12/05
            //dc->resultPointer=NULL;
            //dc->_resultPointer=NULL;
            //res=_daveExchange(dc, p);
            p2 = ExchangePdu((Pdu)p);
            //if (res!=daveResOK) return res;
            //res=_daveSetupReceivedPDU(dc, &p2);
            //if (res!=daveResOK) return res;
            res = p2.testReadResultMulti();
            if (res != Connection.daveResOK) return res;
            i = 0;
            if (rl != null)
            {
                //cr=(daveResult*)calloc(p2.param[1], sizeof(daveResult));
                int numResults = p2.Param[1];
                //rl->results=cr;
                //c2=cr;
                q = p2.Data.ToArray();
                //qU = p2.UData.ToArray();
                int countQ = 0;

                rlen = p2.Data.Count;
                while (i < p2.Param[1])
                {
                    cr = new resultN();
                    /*	    printf("result %d: %d  %d %d %d\n",i, *q,q[1],q[2],q[3]); */
                    if ((q[countQ] == 255) && (rlen > 4))
                    {
                        len = q[countQ + 2] * 0x100 + q[countQ + 3];
                        if (q[countQ + 1] == 4)
                        {
                            len >>= 3;	/* len is in bits, adjust */
                        }
                        else if (q[countQ + 1] == 5)
                        {			/* Fehlenden Size-Type INTEGER ergдnzt */
                            len >>= 3;	/* len is in bits, adjust */
                        }
                        else if (q[countQ + 1] == 7)
                        {			/* Fehlenden Size-Type REAL ergдnzt */
                            /* len is already in bytes, ok */
                        }
                        else if (q[countQ + 1] == 9)
                        {
                            /* len is already in bytes, ok */
                        }
                        else if (q[countQ + 1] == 3)
                        {
                            /* len is in bits, but there is a byte per result bit, ok */
                        }
                        else
                        {
                            //if (daveDebug & daveDebugPDU)
                            //	LOG2("fixme: what to do with data type %d?\n",q[1]);
                        }
                    }
                    else
                    {
                        len = 0;
                    }
                    /*	    printf("Store result %d length:%d\n", i, len); */
                    //c2->length=len;
                    if (len > 0)
                    {
                        //c2.bytes=(uc*)malloc(len);
                        //memcpy(c2->bytes, q+4, len);
                        cr.bytes = new byte[len];
                        Array.Copy(q, countQ + 4, cr.bytes, 0, len);
                    }
                    cr.error = Connection.daveUnknownError;

                    if (q[countQ] == 0xFF)
                    {
                        cr.error = Connection.daveResOK;
                    }
                    else
                        cr.error = q[countQ];

                    /*	    printf("Error %d\n", c2->error); */
                    //q+=len+4;
                    countQ += len + 4;
                    rlen -= len;
                    if ((len % 2) == 1)
                    {
                        countQ++;
                        rlen--;
                    }
                    //c2++;
                    ((daveResultN)rl).allResults.Add(cr);
                    i++;
                }
            }
            return res;

        }
        public int execWriteRequest(IPDU p, IresultSet rl)//not checked
        {
            Pdu p2;
            byte[] q;
            resultN cr;//, c2;
            int res, i;
            p2 = ExchangePdu((Pdu)p);
            //if (res != daveResOK) return res;
            //res=_daveSetupReceivedPDU(dc, &p2);
            //if(res!=daveResOK) return res;
            res = p2.testReadResultMulti();
            if (res != Connection.daveResOK) return res;
            if (rl != null)
            {
                //cr=(daveResult*)calloc(p2.param[1], sizeof(daveResult));
                int numResults = p2.Param[1];
                //rl->results=cr;
                //c2=cr;
                //q=p2.data;
                q = p2.Data.ToArray();
                i = 0;
                int countQ = 0;
                while (i < p2.Param[1])
                {
                    cr = new resultN();
                    /*		printf("result %d: %d  %d %d %d\n",i, *q,q[1],q[2],q[3]); */
                    cr.error = Connection.daveUnknownError;
                    if (q[countQ] == 0x0A)
                    {	/* 300 and 400 families */
                        cr.error = Connection.daveResItemNotAvailable;
                    }
                    else if (q[countQ] == 0x03)
                    {	/* 200 family */
                        cr.error = Connection.daveResItemNotAvailable;
                    }
                    else if (q[countQ] == 0x05)
                    {
                        cr.error = Connection.daveAddressOutOfRange;
                    }
                    else if (q[countQ] == 0xFF)
                    {
                        cr.error = Connection.daveResOK;
                    }
                    else if (q[countQ] == 0x07)
                    {
                        cr.error = Connection.daveWriteDataSizeMismatch;
                    }
                    /*		    printf("Error %d\n", c2->error); */
                    countQ++;
                    //c2++;
                    i++;
                    ((daveResultN)rl).allResults.Add(cr);
                }
            }
            return res;

        }
Exemple #4
0
 public int execWriteRequest(IPDU p, IresultSet rl)
 {
     throw new NotImplementedException();
 }
Exemple #5
0
 public int getMessage(IPDU p)
 {
     throw new NotImplementedException();
 }
 public int daveGetPDUData(IPDU myPDU, out byte[] data, out byte[] param)
 {
     byte[] tmp1 = new byte[65536];
     byte[] tmp2 = new byte[65536];
     int ltmp1 = 0;
     int ltmp2 = 0;
     int res = 0;
     if (IntPtr.Size == 8)
         res = daveGetPDUData64(pointer, myPDU.pointer, tmp1, ref ltmp1, tmp2, ref ltmp2);
     else
         res = daveGetPDUData32(pointer, myPDU.pointer, tmp1, ref ltmp1, tmp2, ref ltmp2);
     data = new byte[ltmp1];
     param = new byte[ltmp2];
     Array.Copy(tmp1, data, ltmp1);
     Array.Copy(tmp2, param, ltmp2);
     return res;
 }
Exemple #7
0
        public int execReadRequest(IPDU p, IresultSet rl)
        {
            PDUs.Add(p);

            return(0);
        }
Exemple #8
0
 public void SendMessage(IPDU message)
 {
     SendMessage(message.Write());
 }
Exemple #9
0
 public int daveBuildAndSendPDU(IPDU myPDU, byte[] Parameter, byte[] Data)
 {
     throw new NotImplementedException();
 }
 public int execWriteRequest(IPDU p, IresultSet rl)
 {
     throw new NotImplementedException();
 }
Exemple #11
0
 public void SendMessage(IPDU message)
 {
     SendMessage(message.Write());
 }
        public int execReadRequest(IPDU p, IresultSet rl)
        {
            PDUs.Add(p);

            return 0;
        }
 public int execWriteRequest(IPDU p, IresultSet rl)
 {
     if (IntPtr.Size == 8)
         return daveExecWriteRequest64(pointer, p.pointer, rl.pointer);
     return daveExecWriteRequest32(pointer, p.pointer, rl.pointer);
 }
 public int daveBuildAndSendPDU(IPDU myPDU, byte[] Parameter, byte[] Data)
 {
     int res = 0;
     if (IntPtr.Size == 8)
         res = daveBuildAndSendPDU64(pointer, myPDU.pointer, Parameter, Parameter.Length, Data, Data.Length);
     else
         res = daveBuildAndSendPDU32(pointer, myPDU.pointer, Parameter, Parameter.Length, Data, Data.Length);
     //return p;
     return res;
 }
 public int daveGetPDUData(IPDU myPDU, out byte[] data, out byte[] param)
 {
     throw new NotImplementedException();
 }
Exemple #16
0
 public int daveGetPDUData(IPDU myPDU, out byte[] data, out byte[] param)
 {
     throw new NotImplementedException();
 }
 public int getMessage(IPDU p)
 {
     throw new NotImplementedException();
 }
 public int getMessage(IPDU p)
 {
     if (IntPtr.Size == 8)
         return daveSendMessage64(pointer, p.pointer);
     else
         return daveSendMessage32(pointer, p.pointer);
 }