#include #include #include #include #include "Nano100Series.h" #include "adc.h" #include "gpio.h" #include "pwm.h" #include "timer.h" #include "uart.h" #include "sys.h" #include "clk.h" #include "My_define.h" extern uint8_t Tx_roomcon232_buffer[25]; extern uint8_t Rx_roomcon232_buffer[25]; extern volatile uint8_t Err_Code; extern uint8_t Target_Fan1_Speed, Target_Fan2_Speed; extern volatile uint32_t Reserve_timer_sec; extern signed int In_Temperature; extern signed int Out_Temperature; //-------------------- SC 0 ----------------------------------- //-------------------- roomcon ------------------------------ uint8_t Rx_roomcon_TimeOut = 0; uint8_t Rx_roomcon_Pos = 0; void rx_roomcon_check(uint8_t data) { uint8_t cksum = 0, i = 0; if(Rx_roomcon_TimeOut == 0)Rx_roomcon_Pos = 0; switch(Rx_roomcon_Pos) { case 0: if(data != 0xAA)break; Rx_roomcon232_buffer[Rx_roomcon_Pos++] = data; break; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: Rx_roomcon232_buffer[Rx_roomcon_Pos++] = data; break; case 13: for(i=0; i<13; i++)cksum ^= Rx_roomcon232_buffer[i]; if(cksum == data) { Rx_roomcon232_buffer[Rx_roomcon_Pos++] = data; } else { Rx_roomcon_Pos = 0; } break; case 14: if(data == 0xEE) { com_roomcon_delay = 50; Rx_roomcon_complete = 1; } Rx_roomcon_Pos = 0; break; default: Rx_roomcon_Pos = 0; break; } } volatile uint8_t Roomcon_connect_mode = 0; uint8_t roomcon_com_count = 0; void com_roomcon_process(void) { if(Rx_roomcon_complete == 1) { if(com_roomcon_delay)return; Rx_roomcon_complete = 0; roomcon_parsing(); Roomcon_connect_mode = 1; roomcon_com_count = 0; } } uint8_t Com_Err_Flag = 0; void RJ_Com_Err_Check(void) { if(Roomcon_connect_mode == 0) { //Reservation_process(); //Exception_mode_process(); roomcon_com_count = 0; Com_Err_Flag = 0; RJ_Vsp_Mode = 0; } else // exist roomcon { if(roomcon_com_count++ >= 10) { roomcon_com_count = 10; Roomcon_connect_mode = 0; Com_Err_Flag = 1; RJ_Vsp_Mode = 0; // Power_off_process(1); } } } volatile uint32_t Set_Reserve_timer_sec = 0; volatile uint8_t Set_Run_Mode = 0, Set_Fan_Mode = 0; uint8_t Rommcon_Version = 0; uint8_t Vsp_Select = 0; uint8_t Heater_OnOff = 0, UV_OnOff = 0; uint8_t Filter_Reset_Flag = 0; uint8_t EEP_Save_Flag = 0; uint8_t Command_request_type = 0; uint8_t Roomcon_Filter_Error = 0; // 2021.5.31 #define COMMAND_REQUEST_FILTER_INFO 0x05 #define COMMAND_REQUEST_SENSOR_INFO 0x06 #define COMMAND_CONTROLL 0x07 // mode / speed / reservaion #define TYPE_MODE 0x01 #define TYPE_FAN_SPEED 0x02 #define TYPE_RESERVATION 0x04 #define TYPE_FILTER_INFO 0x10 #define TYPE_SENSOR_INFO 0x20 #define TYPE_SEND_FLAG 0x80 uint8_t Kijer_Enable = 0, Heater_Enable = 0, UV_Enable = 0; void Txbuff_init(void) { uint8_t i; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = 0; Tx_roomcon232_buffer[2] = Run_Mode; if(Run_Mode == MODE_AUTO)Fan_Mode = Set_Fan_Mode;///////////////// DEMO Tx_roomcon232_buffer[3] = Fan_Mode; Tx_roomcon232_buffer[4] = Auto_Mode; Tx_roomcon232_buffer[5] = (Heater_Enable|(UV_Enable<<4)|Kijer_Enable); Tx_roomcon232_buffer[6] = 0; Tx_roomcon232_buffer[7] = Err_Code & (ERROR_EA_FAN|ERROR_SA_FAN|ERROR_TEMP_SENSOR|ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_PROTECT|ERROR_SOMETIME); Tx_roomcon232_buffer[7] |= Roomcon_Filter_Error; // 2021.5.31 if(Out_Temperature < 0)Tx_roomcon232_buffer[8] = 0x01; else Tx_roomcon232_buffer[8] = 0x00; if(Out_Temperature == 100) Tx_roomcon232_buffer[9] = 0xFF; else Tx_roomcon232_buffer[9] = (uint8_t)(Out_Temperature+20); if(In_Temperature == 100)Tx_roomcon232_buffer[10] = 0xFF; else Tx_roomcon232_buffer[10] = (uint8_t)(In_Temperature+20); Tx_roomcon232_buffer[11] = 0; //reserve hour Tx_roomcon232_buffer[12] = 0; //reserve min Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; } void Spec_info_reply(void) { uint8_t i; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = RX_DATA_CONTROLL_INFO; Tx_roomcon232_buffer[2] = SPEC_VERSION1_INFO; Tx_roomcon232_buffer[3] = SPEC_VERSION2_INFO; Tx_roomcon232_buffer[4] = SPEC_DEVICE_TYPE_INFO; Tx_roomcon232_buffer[5] = SPEC_CMH_INFO; Tx_roomcon232_buffer[6] = SPEC_MODE_INFO; Tx_roomcon232_buffer[7] = SPEC_HOMENET_INFO; Tx_roomcon232_buffer[8] = SPEC_HOOD_INFO ; // add 2022.1.25 Tx_roomcon232_buffer[9] = 0; // add 2022.1.25 Tx_roomcon232_buffer[10] = 0; Tx_roomcon232_buffer[11] = 0; Tx_roomcon232_buffer[12] = 0; Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; } void Rpm_info_reply(void) { uint8_t i; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = RX_DATA_RPM_INFO; Tx_roomcon232_buffer[2] = 0x41; Tx_roomcon232_buffer[3] = (uint8_t)((uint16_t)urpm1>>8); Tx_roomcon232_buffer[4] = (uint8_t)((uint16_t)urpm1); Tx_roomcon232_buffer[5] = 0; Tx_roomcon232_buffer[6] = 0x42; Tx_roomcon232_buffer[7] = (uint8_t)((uint16_t)urpm2>>8); Tx_roomcon232_buffer[8] = (uint8_t)((uint16_t)urpm2); Tx_roomcon232_buffer[9] = 0; Tx_roomcon232_buffer[10] = 0; Tx_roomcon232_buffer[11] = 0; Tx_roomcon232_buffer[12] = 0; Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; } void Filter_info_reply(void) { uint8_t i; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = RX_DATA_FILTER_INFO; Tx_roomcon232_buffer[2] = 0x01; Tx_roomcon232_buffer[3] = (uint8_t)((Filter_timer_clean>>8)&0x00FF); Tx_roomcon232_buffer[4] = (uint8_t)(Filter_timer_clean&0x00FF); Tx_roomcon232_buffer[5] = 0; Tx_roomcon232_buffer[6] = 0x02; Tx_roomcon232_buffer[7] = (uint8_t)((Filter_timer_change>>8)&0x00FF); Tx_roomcon232_buffer[8] = (uint8_t)(Filter_timer_change&0x00FF); Tx_roomcon232_buffer[9] = 0; Tx_roomcon232_buffer[10] = 0x03; Tx_roomcon232_buffer[11] = (uint8_t)((Soja_timer_change>>8)&0x00FF); Tx_roomcon232_buffer[12] = (uint8_t)(Soja_timer_change&0x00FF); Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; } uint8_t Hood_Yeundong_flag = 0; void Hood_info_command(void)// add 2022.1.25 { uint8_t i; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = RX_DATA_HOOD_INFO; if(Hood_Yeundong_flag == 1)//on { Tx_roomcon232_buffer[2] = MODE_VENTILATION; Tx_roomcon232_buffer[3] = 1; } else { Tx_roomcon232_buffer[2] = Set_Run_Mode; Tx_roomcon232_buffer[3] = Set_Fan_Mode; } Tx_roomcon232_buffer[4] = Auto_Mode; Tx_roomcon232_buffer[5] = 0; if((Hood_Yeundong_flag == 1) && (Hood_YeunDong_Enable == 1))//2023.02.14 Hood Enable Add { Tx_roomcon232_buffer[6] = 0x81; //ON } else { Tx_roomcon232_buffer[6] = 0x80; //OFF } Tx_roomcon232_buffer[7] = 0; Tx_roomcon232_buffer[8] = 0; Tx_roomcon232_buffer[9] = 0; Tx_roomcon232_buffer[10] = 0; Tx_roomcon232_buffer[11] = 0; Tx_roomcon232_buffer[12] = 0; Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; } uint8_t RJ_Vsp_Mode = 0; void roomcon_parsing(void) { uint8_t i = 0; RJ_Vsp_Mode = Rx_roomcon232_buffer[1]; switch(Rx_roomcon232_buffer[1]) { case RX_DATA_MODE_NORMAL: Err_Code &= ~(ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_PROTECT|ERROR_SOMETIME); Err_Code |= Rx_roomcon232_buffer[7]&(ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_PROTECT|ERROR_SOMETIME); if((Command_request_type & (TYPE_MODE|TYPE_FAN_SPEED|TYPE_RESERVATION)) || Homenet_RJ_Request ) { Command_request_type |= Homenet_RJ_Request; /* PC대시보드 푸시 래치 병합(bunbaegi 클리어 무관) */ if((Hood_Yeundong_flag == 1)&&(Tx_Yeundong_Delay == 0)) { Hood_Warming_up_Timer = 0;///////////////// Hood_Yeundong_flag = 0; Command_request_type |= (TYPE_HOOD_STATE); } Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = COMMAND_CONTROLL; Tx_roomcon232_buffer[2] = Set_Run_Mode; Tx_roomcon232_buffer[3] = Set_Fan_Mode; Tx_roomcon232_buffer[4] = Auto_Mode; Tx_roomcon232_buffer[5] = (Heater_Enable|(UV_Enable<<4)|Kijer_Enable); Tx_roomcon232_buffer[6] = 0; Tx_roomcon232_buffer[7] = 0; Tx_roomcon232_buffer[8] = 0; Tx_roomcon232_buffer[9] = 0; if(Command_request_type & TYPE_RESERVATION) { Tx_roomcon232_buffer[10] = 1; Tx_roomcon232_buffer[11] = (uint8_t)(Set_Reserve_timer_sec/3600); //// extern setting timer Tx_roomcon232_buffer[12] = (uint8_t)(Set_Reserve_timer_sec%3600/60); ////extern setting timer } else { Tx_roomcon232_buffer[10] = 0; Tx_roomcon232_buffer[11] = 0; Tx_roomcon232_buffer[12] = 0; } Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; Command_request_type |= TYPE_SEND_FLAG; } else if(Command_request_type & (TYPE_HOOD_STATE))// add 2022.1.25 { Hood_info_command(); } else { Set_Reserve_timer_sec = (uint32_t)Rx_roomcon232_buffer[11]*3600 + (uint32_t)Rx_roomcon232_buffer[12]*60 ; Txbuff_init(); } SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_MODE_EVENT: Run_Mode = Rx_roomcon232_buffer[2]; if(Run_Mode != MODE_AUTO) { Fan_Mode = Rx_roomcon232_buffer[3]; } if(Fan_Mode != 0)Err_Code &= ~(ERROR_EA_FAN|ERROR_SA_FAN); if(Command_request_type & TYPE_SEND_FLAG) { Command_request_type = 0; Command_request_type &= ~TYPE_SEND_FLAG; Homenet_RJ_Request = 0; /* PC대시보드 푸시 래치 소비 완료 */ Run_Mode = Rx_roomcon232_buffer[2]; if(Run_Mode != MODE_AUTO) { Fan_Mode = Rx_roomcon232_buffer[3];//DEMO } //if(Run_Mode != MODE_AUTO)Fan_Mode = Rx_roomcon232_buffer[3];//DEMO //else Fan_Mode = Set_Fan_Mode; } else { Set_Run_Mode = Run_Mode = Rx_roomcon232_buffer[2]; Set_Fan_Mode = Fan_Mode = Rx_roomcon232_buffer[3]; if((Fan_Mode == 0)&&(Run_Mode == MODE_VENTILATION)&&(RJ_Vsp_Mode != RX_DATA_MODE_VSP)) { if((Memory_Hood_Status != Hood_Status)&&(Hood_YeunDong_Enable == 1)) { if(Memory_Hood_Status == 0) { Hood_Power_On = 0; Hood_Fan_Mode = 0; Hood_Control = 0x80; } else { Hood_Power_On = 1; Hood_Fan_Mode = Memory_Hood_Status; Hood_Control = 0x80; } Hood_Status = Memory_Hood_Status; } Set_Run_Mode = My_Memory_Run_Mode = 0; Set_Fan_Mode = My_Memory_Fan_Mode = 0; Command_request_type |= (TYPE_MODE|TYPE_FAN_SPEED); Force_Damper_Mode = 0; Ext_Run_Mode = 0; Ext_Run_Mode_Off_Delay = 0; Pre_Ext_Run_Mode = Ext_Run_Mode ; Pre_Ext_Select_Room = Ext_Select_Room; HREV_Hood_Control = 0; } if(Hood_Yeundong_flag == 1) { Hood_Yeundong_flag = 0; Command_request_type |= (TYPE_HOOD_STATE); } } //Auto_Mode = Rx_roomcon232_buffer[4]; Heater_OnOff = Rx_roomcon232_buffer[5]&0x01; UV_OnOff = Rx_roomcon232_buffer[5]&0x10; Filter_Reset_Flag |= Rx_roomcon232_buffer[7]&0x01; if(Rx_roomcon232_buffer[10] == 1) { Set_Reserve_timer_sec = (uint32_t)Rx_roomcon232_buffer[11]*3600 + (uint32_t)Rx_roomcon232_buffer[12]*60 ; } if(Run_Mode == MODE_VENTILATION) { for(i=1; i<7; i++)Diffuser_Run_Mode[i] = 1; ////// difuser run mode; } else if(Run_Mode == MODE_AUTO) { for(i=1; i<7; i++)Diffuser_Run_Mode[i] = 2; ////// difuser run mode; } else if(Run_Mode == MODE_BYPASS) { for(i=1; i<7; i++)Diffuser_Run_Mode[i] = 4; ////// difuser run mode; } else if(Run_Mode == MODE_AIRCLEAN) { for(i=1; i<7; i++)Diffuser_Run_Mode[i] = 8; ////// difuser run mode; } for(i=1; i<7; i++)Diffuser_Fan_Speed[i] = Fan_Mode; ////// difuser fan mode; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = 0x01; Tx_roomcon232_buffer[2] = Run_Mode; //if(Run_Mode == MODE_AUTO)Fan_Mode = Set_Fan_Mode;///////////////// DEMO Tx_roomcon232_buffer[3] = Fan_Mode; Tx_roomcon232_buffer[5] = (Heater_Enable|(UV_Enable<<4)|Kijer_Enable); Tx_roomcon232_buffer[6] = 0; Tx_roomcon232_buffer[7] = Err_Code & (ERROR_EA_FAN|ERROR_SA_FAN|ERROR_TEMP_SENSOR|ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_PROTECT|ERROR_SOMETIME); Tx_roomcon232_buffer[7] |= Roomcon_Filter_Error; // 2021.5.31 if(Out_Temperature < 0)Tx_roomcon232_buffer[8] = 0x01; else Tx_roomcon232_buffer[8] = 0x00; if(Out_Temperature == 100) Tx_roomcon232_buffer[9] = 0xFF; else Tx_roomcon232_buffer[9] = (uint8_t)(Out_Temperature+20); if(In_Temperature == 100)Tx_roomcon232_buffer[10] = 0xFF; else Tx_roomcon232_buffer[10] = (uint8_t)(In_Temperature+20); Tx_roomcon232_buffer[11] = 0; //reserve hour Tx_roomcon232_buffer[12] = 0; //reserve min Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_MODE_RESTART1: Run_Mode = 0; Fan_Mode = 0; Reserve_hour = 0; Reserve_timer_sec = 0; //Reserve_Time_Update(Reserve_hour); Err_Code = 0; Rommcon_Version = Rx_roomcon232_buffer[2]; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = 0x02; Tx_roomcon232_buffer[2] = 0; Tx_roomcon232_buffer[3] = 0; Tx_roomcon232_buffer[4] = 0x10; Tx_roomcon232_buffer[5] = s_FAN1_VEN_1_DAN; Tx_roomcon232_buffer[6] = s_FAN2_VEN_1_DAN; Tx_roomcon232_buffer[7] = s_FAN1_VEN_2_DAN; Tx_roomcon232_buffer[8] = s_FAN2_VEN_2_DAN; Tx_roomcon232_buffer[9] = s_FAN1_VEN_3_DAN; Tx_roomcon232_buffer[10] = s_FAN2_VEN_3_DAN; Tx_roomcon232_buffer[11] = s_FAN1_VEN_4_DAN; Tx_roomcon232_buffer[12] = s_FAN2_VEN_4_DAN; Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_MODE_RESTART2: Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = 0x12; Tx_roomcon232_buffer[2] = 0; Tx_roomcon232_buffer[3] = 0; Tx_roomcon232_buffer[4] = 0x10; Tx_roomcon232_buffer[5] = s_FAN1_BYPASS_1_DAN; Tx_roomcon232_buffer[6] = s_FAN2_BYPASS_1_DAN; Tx_roomcon232_buffer[7] = s_FAN1_AIR_1_DAN; Tx_roomcon232_buffer[8] = s_FAN1_AIR_2_DAN; Tx_roomcon232_buffer[9] = s_FAN1_AIR_3_DAN; Tx_roomcon232_buffer[10] = s_FAN1_AIR_4_DAN; Tx_roomcon232_buffer[11] = 0; Tx_roomcon232_buffer[12] = 0; // Tx_roomcon232_buffer[13] = 0;; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_MODE_VSP: // in test mode Vsp_Select = Rx_roomcon232_buffer[3]; switch(Vsp_Select) { case 1: // Test_Fan1_Ven_1_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Ven_1_dan = Rx_roomcon232_buffer[5]; break; case 2: // Test_Fan1_Ven_2_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Ven_2_dan = Rx_roomcon232_buffer[5]; break; case 3: // Test_Fan1_Ven_3_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Ven_3_dan = Rx_roomcon232_buffer[5]; break; case 4: // Test_Fan1_Ven_4_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Ven_4_dan = Rx_roomcon232_buffer[5]; break; case 5: // Test_Fan1_Bypass_1_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Bypass_1_dan = Rx_roomcon232_buffer[5]; break; case 6: // Test_Fan1_Air_1_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Air_1_dan = 0;//Rx_roomcon232_buffer[5]; break; case 7: // Test_Fan1_Air_2_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Air_2_dan = 0;//Rx_roomcon232_buffer[5]; break; case 8: // Test_Fan1_Air_3_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Air_3_dan = 0;//Rx_roomcon232_buffer[5]; case 9: // Test_Fan1_Air_4_dan = Rx_roomcon232_buffer[4]; Test_Fan2_Air_4_dan = 0;//Rx_roomcon232_buffer[5]; break; default: break; } Test_Fan1_Speed = Rx_roomcon232_buffer[4]; Test_Fan2_Speed = Rx_roomcon232_buffer[5]; if((Vsp_Select == 6)||(Vsp_Select == 7)||(Vsp_Select == 8)||(Vsp_Select == 9))Test_Fan2_Speed = 0; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = 0x03; Tx_roomcon232_buffer[2] = 0; Tx_roomcon232_buffer[3] = Rx_roomcon232_buffer[3]; Tx_roomcon232_buffer[4] = Rx_roomcon232_buffer[4]; Tx_roomcon232_buffer[5] = Rx_roomcon232_buffer[5]; Tx_roomcon232_buffer[6] = 0; Tx_roomcon232_buffer[7] = 0; Tx_roomcon232_buffer[8] = 0; Tx_roomcon232_buffer[9] = (uint8_t)((urpm1>>8)&0x00FF); //2021.5.31 Tx_roomcon232_buffer[10] = (uint8_t)(urpm1&0x00FF); Tx_roomcon232_buffer[11] = (uint8_t)((urpm2>>8)&0x00FF); Tx_roomcon232_buffer[12] = (uint8_t)(urpm2&0x00FF); Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_MODE_EXIT: // out test mode Run_Mode = Rx_roomcon232_buffer[2]; EEP_Save_Flag = 1; Tx_roomcon232_buffer[0] = 0xAA; Tx_roomcon232_buffer[1] = 0x04; Tx_roomcon232_buffer[2] = 0; Tx_roomcon232_buffer[3] = 0; Tx_roomcon232_buffer[4] = 0; Tx_roomcon232_buffer[5] = 0; Tx_roomcon232_buffer[6] = 0; Tx_roomcon232_buffer[7] = 0; Tx_roomcon232_buffer[8] = 0; Tx_roomcon232_buffer[9] = 0; Tx_roomcon232_buffer[10] = 0; Tx_roomcon232_buffer[11] = 0; Tx_roomcon232_buffer[12] = 0; Tx_roomcon232_buffer[13] = 0; for(i=0; i<13; i++)Tx_roomcon232_buffer[13] ^= Tx_roomcon232_buffer[i]; Tx_roomcon232_buffer[14] = 0xEE; SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_SENSOR_INFO: // Command_request_type &= ~(TYPE_SENSOR_INFO); Txbuff_init(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_FILTER_INFO: //룸콘 Command_request_type &= ~(TYPE_FILTER_INFO); Filter_info_reply(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_CONTROLL: // if(Command_request_type & TYPE_SEND_FLAG) { Command_request_type &= ~TYPE_SEND_FLAG; Run_Mode = Rx_roomcon232_buffer[2]; if(Run_Mode != MODE_AUTO) { Fan_Mode = Rx_roomcon232_buffer[3];///////////////// DEMO } } else { Set_Run_Mode = Run_Mode = Rx_roomcon232_buffer[2]; if(Run_Mode != MODE_AUTO) { Set_Fan_Mode = Fan_Mode = Rx_roomcon232_buffer[3]; } } //Auto_Mode = Rx_roomcon232_buffer[4]; Heater_OnOff = Rx_roomcon232_buffer[5]&0x01; UV_OnOff = Rx_roomcon232_buffer[5]&0x10; Filter_Reset_Flag |= Rx_roomcon232_buffer[7]; Reserve_timer_sec = (uint32_t)Rx_roomcon232_buffer[11]*3600 + (uint32_t)Rx_roomcon232_buffer[12]*60 ; if(Set_Run_Mode == Run_Mode)Command_request_type &= ~TYPE_MODE; if(Set_Fan_Mode == Fan_Mode)Command_request_type &= ~TYPE_FAN_SPEED; if(Reserve_timer_sec == 0){if(Set_Reserve_timer_sec == 0)Command_request_type &= ~TYPE_RESERVATION;} else { if(Set_Reserve_timer_sec != 0) { if(((Reserve_timer_sec-1)/3600 + 1) == ((Set_Reserve_timer_sec-1)/3600 + 1))Command_request_type &= ~TYPE_RESERVATION; } } Txbuff_init(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_CONTROLL_INFO: // 룸콘 Spec_info_reply(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_RPM_INFO: //2021.5.31 if(Rx_roomcon232_buffer[2] == 1)Roomcon_Filter_Error |= ERROR_FILTER_CLEAN; else Roomcon_Filter_Error &= ~ERROR_FILTER_CLEAN; if(Rx_roomcon232_buffer[3] == 1)Roomcon_Filter_Error |= ERROR_FILTER_CHANGE; else Roomcon_Filter_Error &= ~ERROR_FILTER_CHANGE; if(Rx_roomcon232_buffer[4] == 1)Roomcon_Filter_Error |= ERROR_SOJA_CHANGE; else Roomcon_Filter_Error &= ~ERROR_SOJA_CHANGE; Rpm_info_reply(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_ERROR_CLEAR: //2021.5.31 if(Rx_roomcon232_buffer[1] == 0x22) { Err_Code &= ~(ERROR_SA_FAN|ERROR_EA_FAN); } Txbuff_init(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; case RX_DATA_HOOD_INFO: // add 2022.1.25 Command_request_type &= ~(TYPE_HOOD_STATE); Txbuff_init(); SCUART_Write(SC0,Tx_roomcon232_buffer,15); break; default: break; } } void SC0_IRQHandler(void) { uint8_t data; data = SCUART_READ(SC0); rx_roomcon_check(data); Rx_roomcon_TimeOut = 50; return; }