Exemple #1
0
 private void autoResponse(byte[] data)
 {
     if (data[0] == 0x67)
     {
         uint seed = 0;
         byte level;
         uint key = 0;
         if (data.Length == 4)
         {
             seed = (uint)data[2] << 8
                    | (uint)data[3];
         }
         else if (data.Length == 6)
         {
             seed = (uint)data[2] << 24
                    | (uint)data[3] << 16
                    | (uint)data[4] << 8
                    | (uint)data[5];
         }
         level = data[1];
         if (seed != 0 && level % 2 != 0)
         {
             key = securityDriver.UdsCallback_CalcKey(seed, level);
             if (data.Length == 4)
             {
                 key &= 0xFFFF;
                 driverTrans.CanSendString("27" + (level + 1).ToString("x2") + key.ToString("x4"));
             }
             else if (data.Length == 6)
             {
                 driverTrans.CanSendString("27" + (level + 1).ToString("x2") + key.ToString("x8"));
             }
         }
     }
 }