Exemplo n.º 1
0
        /*****************************************************/
        /// <summary>
        /// This function returns the byte array included 1byte checksum value.
        /// </summary>
        /// <param name="data"></param>
        /// <param name="type">This parameter means checksum algorithm type.</param>
        /// <returns></returns>
        /*****************************************************/
        public static IEnumerable <byte> WithCheckSum8(this IEnumerable <byte> data, CheckSum8Type type = CheckSum8Type.Xor)
        {
            if (type == CheckSum8Type.Xor)
            {
                return(data.Append(data.CheckSum8Xor()));
            }
            else if (type == CheckSum8Type.NMEA)
            {
                return(data.Append(data.CheckSum8Xor()));
            }
            else if (type == CheckSum8Type.Modulo256)
            {
                return(data.Append(data.CheckSum8Modulo256()));
            }
            else if (type == CheckSum8Type.TwosComplement)
            {
                return(data.Append(data.CheckSum8TwosComplement()));
            }

            return(new List <byte>());
        }
Exemplo n.º 2
0
        /*****************************************************/
        /// <summary>
        /// This function returns 1byte checksum.
        /// </summary>
        /// <param name="data"></param>
        /// <param name="type">This parameter means checksum algorithm type.</param>
        /// <see cref="https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/"/>
        /// <seealso cref="https://nmeachecksum.eqth.net/"/>
        /// <returns></returns>
        /*****************************************************/
        public static byte CheckSum8(this IEnumerable <byte> data, CheckSum8Type type = CheckSum8Type.Xor)
        {
            byte result = 0;

            if (type == CheckSum8Type.Xor)
            {
                result = data.CheckSum8Xor();
            }
            else if (type == CheckSum8Type.NMEA)
            {
                result = data.CheckSum8Xor();
            }
            else if (type == CheckSum8Type.Modulo256)
            {
                result = data.CheckSum8Modulo256();
            }
            else if (type == CheckSum8Type.TwosComplement)
            {
                result = data.CheckSum8TwosComplement();
            }

            return(result);
        }