/*
 * msp_DH_W_H.c
 *
 *  Created on: 2023年12月26日
 *      Author: Administrator
 */


#include "MSP/msp_DH_W_H.h"

UART_HandleTypeDef* Huart_DH_WH;
uint8_t DH_stas[14];
SP_MSP_DH_Handset_Parameters *DH_WH_BING;
int32_t DH_Falg=1;
void  GF_DH_Hangset_Unscramble_Callback();
void DH_Command_Comp(uint8_t *buf);


uint8_t GF_MSP_DH_Wash_H_Init(UART_HandleTypeDef* huart,SP_MSP_DH_Handset_Parameters *_DH_Handset_W_H)
{
	DH_Falg=1;
	Huart_DH_WH=huart;
	GF_BSP_Interrupt_Add_CallBack(DF_BSP_InterCall_RS485_1_RxCpltCallback, GF_DH_Hangset_Unscramble_Callback);//这句话的理解有问题
	HAL_UART_Receive_IT(Huart_DH_WH,DH_stas,1);
	DH_WH_BING = _DH_Handset_W_H;
	return 1;
}


void GF_MSP_DH_Stu_Inquiry()
{
	uint8_t Inquiry_Order[8]={0X03, 0X04, 0X00, 0X00, 0X00, 0X06, 0X71, 0XEA};
	GF_BSP_UART_Transmit(1, Inquiry_Order, 8);//这句话的关联有问题
}

void  GF_DH_Hangset_Unscramble_Callback()
{
	switch(DH_Falg)
	{
	case 1:
		if(DH_stas[0]==0X03)
		{
		HAL_UART_Receive_IT(Huart_DH_WH,DH_stas,3);
		DH_Falg=2;
		}
		else
		{
		HAL_UART_Receive_IT(Huart_DH_WH,DH_stas,1);
		DH_Falg=1;
		}
		break;
	case 2:
		if((DH_stas[0]==0X04)&&(DH_stas[1]==0X0C)&&(DH_stas[2]==0X00))
		{
		HAL_UART_Receive_IT(Huart_DH_WH,DH_stas,13);
		DH_Falg=3;
		}
		else
		{
		HAL_UART_Receive_IT(Huart_DH_WH,DH_stas,1);
		DH_Falg=1;
		}
		break;
	case 3:
		DH_Command_Comp(DH_stas);
		HAL_UART_Receive_IT(Huart_DH_WH,DH_stas,1);
		DH_Falg=1;
		break;
	}
}

void DH_Command_Comp(uint8_t *buf)
{
	if(((buf[4])&(0X01))>0)
	{
		DH_WH_BING->EMERGENCY_STOP=1;
	}
	else
	{
		DH_WH_BING->EMERGENCY_STOP=0;
	}

	if(((buf[4])&(0X02))>0)
	{
		DH_WH_BING->Wireless_Status=1;
	}
	else
	{
		DH_WH_BING->Wireless_Status=0;
	}



//	if(((buf[4])&(0X02))>0)
//	{
//		DH_WH_BING->Wireless_Status=1;
//	}
//	else
//	{
//		DH_WH_BING->Wireless_Status=0;
//	}

////////////////////

	if(((buf[4])&(0X04))>0)
	{
		DH_WH_BING->For_Back_Value_X=(int32_t)(buf[0])*1;
	}
	else if(((buf[4])&(0X08))>0)
	{
		DH_WH_BING->For_Back_Value_X=(int32_t)(buf[0])*-1;
	}
	else if(((buf[4])&(0X10))>0)
	{
		DH_WH_BING->Left_Right_Value_Y=(int32_t)(buf[2]);
	}
	else if(((buf[4])&(0X20))>0)
	{
		DH_WH_BING->Left_Right_Value_Y=(int32_t)(buf[2])*-1;
	}
	else
	{
		DH_WH_BING->For_Back_Value_X=0;
		DH_WH_BING->Left_Right_Value_Y=0;
	}


	if(((buf[6])&(0X01))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)1;
	}
	else if(((buf[6])&(0X02))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)2;
	}
	else if(((buf[6])&(0X04))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)3;
	}
	else if(((buf[6])&(0X08))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)4;
	}
	else if(((buf[6])&(0X10))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)5;
	}
	else if(((buf[6])&(0X20))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)6;
	}
	else if(((buf[6])&(0X40))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)7;
	}
	else if(((buf[6])&(0X80))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)8;
	}
	else if(((buf[5])&(0X01))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)9;
	}
	else if(((buf[5])&(0X02))>0)
	{
		DH_WH_BING->Polish_Speed=(int32_t)10;
	}
	else
	{
		DH_WH_BING->Polish_Speed=0;
	}






//	if(((buf[12])&(0X40))>0)
//	{
//		DH_WH_BING->Rise_down_X=(int32_t)((int32_t)buf[5]<<8|buf[4])*1;
//	}
//	else if(((buf[12])&(0X80))>0)
//	{
//		DH_WH_BING->Rise_down_X=(int32_t)((int32_t)buf[5]<<8|buf[4])*-1;
//	}
//	else if(((buf[13])&(0X01))>0)
//	{
//		DH_WH_BING->Turn_Left_Right_Y=(int32_t)((int32_t)buf[7]<<8|buf[6]);
//	}
//	else if(((buf[13])&(0X02))>0)
//	{
//		DH_WH_BING->Turn_Left_Right_Y=(int32_t)((int32_t)buf[7]<<8|buf[6])*-1;
//	}
//	else
//	{
//		DH_WH_BING->Rise_down_X=0;
//		DH_WH_BING->Turn_Left_Right_Y=0;
//	}
//
//	if(((buf[13])&(0X04))>0)
//	{
//		DH_WH_BING->Clean_Fire1_HighPres2=1;
//	}
//	else if(((buf[13])&(0X08))>0)
//	{
//		DH_WH_BING->Clean_Fire1_HighPres2=2;
//	}
//	else
//	{
//		DH_WH_BING->Clean_Fire1_HighPres2=0;
//	}
//
//
//	if(((buf[13])&(0X10))>0)
//	{
//		DH_WH_BING->Mov_Horiz1_vert2=1;
//	}
//	else if(((buf[13])&(0X20))>0)
//	{
//		DH_WH_BING->Mov_Horiz1_vert2=2;
//	}
//	else
//	{
//		DH_WH_BING->Mov_Horiz1_vert2=0;
//	}
//
//
//	if(((buf[13])&(0X40))>0)
//	{
//		DH_WH_BING->Mode_A1_B2=1;
//	}
//	else if(((buf[13])&(0X80))>0)
//	{
//		DH_WH_BING->Mode_A1_B2=2;
//	}
//	else
//	{
//		DH_WH_BING->Mode_A1_B2=0;
//	}
//
//
//	if(((buf[14])&(0X01))>0)
//	{
//		DH_WH_BING->Mode_C1_D2=1;
//	}
//	else if(((buf[14])&(0X02))>0)
//	{
//		DH_WH_BING->Mode_C1_D2=2;
//	}
//	else
//	{
//		DH_WH_BING->Mode_C1_D2=0;
//	}
//
//
//	if(((buf[14])&(0X03))>0)
//	{
//		DH_WH_BING->Scan_horiz1_vert2=1;
//	}
//	else if(((buf[14])&(0X04))>0)
//	{
//		DH_WH_BING->Scan_horiz1_vert2=2;
//	}
//	else
//	{
//		DH_WH_BING->Scan_horiz1_vert2=0;
//	}


//
//	//int32_t Checksum_Sum=(int32_t)((int32_t)Data_Value[3]<<24|Data_Value[2]<<16|Data_Value[1]<<8|Data_Value[0]);
//	DH_WH_BING->For_Back_Value_X=(int32_t)((int32_t)buf[1]<<8|buf[0]);
//	DH_WH_BING->Left_Right_Value_Y=(int32_t)((int32_t)buf[3]<<8|buf[2]);
//	DH_Command_Comp_Sub(buf);
}


