Example #1
0
        private void ClarionVWPremium4SafeCode(IKW1281Dialog kwp1281)
        {
            if (_controllerAddress != (int)ControllerAddress.Radio)
            {
                Logger.WriteLine("Only supported for radio address 56");
                return;
            }

            // Thanks to Mike Naberezny for this (https://github.com/mnaberez)
            const byte readWriteSafeCode = 0xF0;
            const byte read = 0x00;

            kwp1281.SendBlock(new List <byte> {
                readWriteSafeCode, read
            });

            var block = kwp1281.ReceiveBlocks().FirstOrDefault(b => !b.IsAckNak);

            if (block == null)
            {
                Logger.WriteLine("No response received from radio.");
            }
            else if (block.Title != readWriteSafeCode)
            {
                Logger.WriteLine(
                    $"Unexpected response received from radio. Block title: ${block.Title:X2}");
            }
            else
            {
                var safeCode = block.Body[0] * 256 + block.Body[1];
                Logger.WriteLine($"Safe code: {safeCode:X4}");
            }
        }