using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bluetoolth
{
   public class Utility
    {

     //服务
     public static  String UUID_SERVER = "0000ff12-0000-1000-8000-00805f9b34fb";
    
        //间隔
    public static  String UUID_Interval = "0000ff04-0000-1000-8000-00805f9b34fb";

        //写  WriteWithoutResponse
        public static string UUID_Write = "0000ff01-0000-1000-8000-00805f9b34fb";
        //读 Notify
        public static string UUID_Read = "0000ff02-0000-1000-8000-00805f9b34fb";

    //名字 Read Write
    public static  String UUID_Name = "0000ff06-0000-1000-8000-00805f9b34fb";

    public static  Guid UUID_CONFIG_DESCRIPTOR = Guid.Parse("00002902-0000-1000-8000-00805f9b34fb");
    public static Guid UUID_HEART_RATE_MEASUREMENT = Guid
            .Parse("00002a37-0000-1000-8000-00805f9b34fb");

        /// <summary>
        /// CRC校验
        /// </summary>
        /// <param name="data"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        public static ushort CRC(byte[] data, int length)
        {
            ushort tempCrcResult = 0xffff;
            for (int i = 0; i < length; i++)
            {
                tempCrcResult = (ushort)(tempCrcResult ^ data[i]);
                for (int j = 0; j < 8; j++)
                {
                    if ((tempCrcResult & 0x0001) == 1)
                        tempCrcResult = (ushort)((tempCrcResult >> 1) ^ 0xa001);
                    else tempCrcResult = (ushort)(tempCrcResult >> 1);
                }
            }
            return (tempCrcResult = (ushort)(((tempCrcResult & 0xff) << 8) | (tempCrcResult >> 8)));
        }
    }
}