Files
HECO2/program/User/My_RJ2.c
T
jeon a502322188 chore: HERV 통합 저장소 재초기화 커밋
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋.
.claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:32:17 +09:00

782 lines
22 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#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;
}