// Operate NOT on each data public static CANData operator ~(CANData cd) { CANData cdrtn = new CANData(cd.ID, cd.Data); int invSize = cdrtn.getDataLen(); for (int i = 0; i < invSize; i++) { cdrtn.SetData(i, (byte)~cdrtn.GetData(i)); } return(cdrtn); }
// Operate AND on each data public static CANData operator &(CANData d1, CANData d2) { int dlen = d1.getDataLen(); if (dlen != d2.getDataLen() && d1.ID != d2.ID) { throw new Exception("Can't make OR operation in two byte array in different size or ID."); } else { byte[] src = new byte[dlen]; byte[] s1 = d1.GetData(); byte[] s2 = d2.GetData(); CANData cdrtn = new CANData(); cdrtn.ID = d1.ID; for (int i = 0; i < dlen; i++) { src[i] = (byte)(s1[i] & s2[i]); } cdrtn.SetData(src); return(cdrtn); } }