Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
Z3dev-AllToOneFanPanel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
limm
Z3dev-AllToOneFanPanel
Commits
5459550e
Commit
5459550e
authored
Dec 18, 2020
by
limm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1,修复死机问题改为复位;
2,修复退出老化方式; 3,增加三个设备绑定,解绑操作;
parent
1de4b7b1
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
612 additions
and
349 deletions
+612
-349
Code/海顿-多合一新风面板/APP/User/inc/BL55072A.h
Code/海顿-多合一新风面板/APP/User/inc/BL55072A.h
+1
-1
Code/海顿-多合一新风面板/APP/User/inc/CC2530_transparent_analyze.h
Code/海顿-多合一新风面板/APP/User/inc/CC2530_transparent_analyze.h
+5
-10
Code/海顿-多合一新风面板/APP/User/inc/control_comm.h
Code/海顿-多合一新风面板/APP/User/inc/control_comm.h
+3
-2
Code/海顿-多合一新风面板/APP/User/inc/display_common.h
Code/海顿-多合一新风面板/APP/User/inc/display_common.h
+3
-0
Code/海顿-多合一新风面板/APP/User/inc/hardware_init.h
Code/海顿-多合一新风面板/APP/User/inc/hardware_init.h
+1
-1
Code/海顿-多合一新风面板/APP/User/inc/mfg_factory.h
Code/海顿-多合一新风面板/APP/User/inc/mfg_factory.h
+8
-12
Code/海顿-多合一新风面板/APP/User/src/BL55072A.c
Code/海顿-多合一新风面板/APP/User/src/BL55072A.c
+88
-77
Code/海顿-多合一新风面板/APP/User/src/CC2530_transparent_analyze.c
Code/海顿-多合一新风面板/APP/User/src/CC2530_transparent_analyze.c
+32
-23
Code/海顿-多合一新风面板/APP/User/src/Key.c
Code/海顿-多合一新风面板/APP/User/src/Key.c
+119
-45
Code/海顿-多合一新风面板/APP/User/src/VCNL3040.c
Code/海顿-多合一新风面板/APP/User/src/VCNL3040.c
+4
-3
Code/海顿-多合一新风面板/APP/User/src/ZH_protocol.c
Code/海顿-多合一新风面板/APP/User/src/ZH_protocol.c
+1
-1
Code/海顿-多合一新风面板/APP/User/src/control_comm.c
Code/海顿-多合一新风面板/APP/User/src/control_comm.c
+108
-65
Code/海顿-多合一新风面板/APP/User/src/display_common.c
Code/海顿-多合一新风面板/APP/User/src/display_common.c
+200
-75
Code/海顿-多合一新风面板/APP/User/src/mfg_factort.c
Code/海顿-多合一新风面板/APP/User/src/mfg_factort.c
+39
-34
No files found.
Code/海顿-多合一新风面板/APP/User/inc/BL55072A.h
View file @
5459550e
...
@@ -88,7 +88,7 @@ typedef enum{
...
@@ -88,7 +88,7 @@ typedef enum{
#define DisplayCharB 0x73 // ???
#define DisplayCharB 0x73 // ???
#define DisplayCharE 0x79 // E
#define DisplayCharE 0x79 // E
#define DisplayCharF 0x78 // F
#define DisplayCharF 0x78 // F
#define DisplayCharr 0x
58
// r
#define DisplayCharr 0x
30
// r
#define DisplayCharL 0x51
#define DisplayCharL 0x51
#define DisplayCharo 0x33
#define DisplayCharo 0x33
...
...
Code/海顿-多合一新风面板/APP/User/inc/CC2530_transparent_analyze.h
View file @
5459550e
...
@@ -28,8 +28,6 @@
...
@@ -28,8 +28,6 @@
#include <stdint.h>
#include <stdint.h>
/* Exported macro ------------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
//#define USATR_1_DEBUG 1
//#define USATR_1_DEBUG 1
#if (USATR_1_DEBUG == 1)
#if (USATR_1_DEBUG == 1)
...
@@ -68,7 +66,7 @@ typedef enum {TP_ERROR = 0, TP_SUCCESS = !TP_ERROR} TP_ErrorStatus;
...
@@ -68,7 +66,7 @@ typedef enum {TP_ERROR = 0, TP_SUCCESS = !TP_ERROR} TP_ErrorStatus;
#define SOF_LOW_BYTE_DEF 0X55
#define SOF_LOW_BYTE_DEF 0X55
#define USART_RECIVE_LEN_DEF 40 //串口最多一次接受的数据量
#define USART_RECIVE_LEN_DEF 40 //串口最多一次接受的数据量
#define USART_RECIVE_DEPTH
5
//缓存的深度
#define USART_RECIVE_DEPTH
3
//缓存的深度
//透传数据接受最大间隔时间,超时未接收到数据,停止一串数据接收
//透传数据接受最大间隔时间,超时未接收到数据,停止一串数据接收
#define DEF_TRANSPARENT_MAXIMUM_INTERVAL 100 //(ms)
#define DEF_TRANSPARENT_MAXIMUM_INTERVAL 100 //(ms)
...
@@ -100,17 +98,14 @@ typedef struct _Recive_usart_data_deal
...
@@ -100,17 +98,14 @@ typedef struct _Recive_usart_data_deal
//homebuf buf缓存
//homebuf buf缓存
#define _IO volatile
/*!< Defines 'read / write' permissions */
typedef
struct
_Recive_usart_buff
typedef
struct
_Recive_usart_buff
{
{
TP_u8
Usart_buff
[
USART_RECIVE_DEPTH
][
USART_RECIVE_LEN_DEF
];
//homebus 缓存存放区
TP_u8
Usart_buff
[
USART_RECIVE_DEPTH
][
USART_RECIVE_LEN_DEF
];
//homebus 缓存存放区
_IO
TP_u8
Usart_buff_len
[
USART_RECIVE_DEPTH
];
//homebus 缓存区长度
TP_u8
Usart_buff_len
[
USART_RECIVE_DEPTH
];
//homebus 缓存区长度
_IO
TP_u8
Buff_send_serial_num
;
//BUFF发送序列
_IO
TP_u8
Download_serial_num
;
//BUFF缓存序列
TP_u8
Buff_send_serial_num
;
//BUFF发送序列
TP_u8
Download_serial_num
;
//BUFF缓存序列
}
RECIVE_USART_BUFF
;
}
RECIVE_USART_BUFF
;
//协议中的功能码
//协议中的功能码
...
...
Code/海顿-多合一新风面板/APP/User/inc/control_comm.h
View file @
5459550e
...
@@ -106,8 +106,8 @@ extern TIMEING_OPTION _Time_Power_Off;
...
@@ -106,8 +106,8 @@ extern TIMEING_OPTION _Time_Power_Off;
#define ENABLE_FAST_AGING_TEST 0
#define ENABLE_FAST_AGING_TEST 0
#if ENABLE_FAST_AGING_TEST
#if ENABLE_FAST_AGING_TEST
#define FAST_AGING_STEP1_TIME
60
//1min
#define FAST_AGING_STEP1_TIME
(60)
//1min
#define FAST_AGING_STEP2_TIME
150
//2.5min
#define FAST_AGING_STEP2_TIME
(3*60)
//2.5min
#else
#else
#define FAST_AGING_STEP1_TIME (15*60) //15min
#define FAST_AGING_STEP1_TIME (15*60) //15min
#define FAST_AGING_STEP2_TIME (60*60*4) //4h
#define FAST_AGING_STEP2_TIME (60*60*4) //4h
...
@@ -276,6 +276,7 @@ void delay_operate_calibrate_temper_Task_Stop(void);
...
@@ -276,6 +276,7 @@ void delay_operate_calibrate_temper_Task_Stop(void);
void
delay_operate_delay_off_Task_Start
(
void
);
void
delay_operate_delay_off_Task_Start
(
void
);
void
delay_operate_delay_off_Task_Stop
(
void
);
void
delay_operate_delay_off_Task_Stop
(
void
);
void
Reset_DelayOFF_timer
(
u8
device_type
);
void
Reset_DelayOFF_timer
(
u8
device_type
);
void
task_exit_aging_test_start
(
void
);
#define Network_Control(join_or_leave) Send_Device_Data(0,_OPCODE_SET_NET_STATE,&join_or_leave,1)
#define Network_Control(join_or_leave) Send_Device_Data(0,_OPCODE_SET_NET_STATE,&join_or_leave,1)
#define proximity_triagger_report_zigbee() do{ uint8_t res = 1; \
#define proximity_triagger_report_zigbee() do{ uint8_t res = 1; \
...
...
Code/海顿-多合一新风面板/APP/User/inc/display_common.h
View file @
5459550e
...
@@ -54,6 +54,8 @@ typedef struct
...
@@ -54,6 +54,8 @@ typedef struct
u16
screen_save_time
;
//屏保时间 00 代表30
u16
screen_save_time
;
//屏保时间 00 代表30
u16
filter_wash_time
;
//滤网清洗时间 3000
u16
filter_wash_time
;
//滤网清洗时间 3000
u8
no_disturb_mode
;
//勿扰模式 0
u8
no_disturb_mode
;
//勿扰模式 0
u8
air_product_id
;
u8
air_type
;
}
OLED_AIR_DSD
;
}
OLED_AIR_DSD
;
typedef
struct
typedef
struct
{
{
...
@@ -173,6 +175,7 @@ void delay_confirm_fan_speed(void); //
...
@@ -173,6 +175,7 @@ void delay_confirm_fan_speed(void); //
void
Control_LED_ON_OFF
(
u8
onoff_bits
);
void
Control_LED_ON_OFF
(
u8
onoff_bits
);
u8
Key_Operate_Config_Operation
(
u8
keyid
,
u8
keyEvent
);
u8
Key_Operate_Config_Operation
(
u8
keyid
,
u8
keyEvent
);
u8
IsLocalConfigMode
(
void
);
u8
IsLocalConfigMode
(
void
);
u8
kAllLedIsBlinking
(
void
);
void
Display_Up_Contend
(
u8
device_type
);
void
Display_Up_Contend
(
u8
device_type
);
void
Setup_Mode_Handle
(
void
);
void
Setup_Mode_Handle
(
void
);
...
...
Code/海顿-多合一新风面板/APP/User/inc/hardware_init.h
View file @
5459550e
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#define __HARDWARE_INIT_H__
#define __HARDWARE_INIT_H__
#include "Key.h"
#include "Key.h"
#define Flash_Base_Addr 0x00007
0
00
#define Flash_Base_Addr 0x00007
4
00
#define NO_FMC_WRITE 0xFFFFFFFF
#define NO_FMC_WRITE 0xFFFFFFFF
#define OFFSET_ADDR 4
#define OFFSET_ADDR 4
#define BYTE_ADDR 8
#define BYTE_ADDR 8
...
...
Code/海顿-多合一新风面板/APP/User/inc/mfg_factory.h
View file @
5459550e
...
@@ -20,8 +20,8 @@
...
@@ -20,8 +20,8 @@
#define SOF_HIGH_BYTE_DEF 0XAA
#define SOF_HIGH_BYTE_DEF 0XAA
#define SOF_LOW_BYTE_DEF 0X55
#define SOF_LOW_BYTE_DEF 0X55
#define MAX_USART_RECIVE_LEN 5
0
//串口最多一次接受的数据量
#define MAX_USART_RECIVE_LEN 5
6
//串口最多一次接受的数据量
#define USART_RECIVE_DEPTHS
5
//缓存的深度
#define USART_RECIVE_DEPTHS
3
//缓存的深度
...
@@ -55,14 +55,10 @@ typedef struct
...
@@ -55,14 +55,10 @@ typedef struct
typedef
struct
typedef
struct
{
{
TP_u8
Usart_buff
[
USART_RECIVE_DEPTH
][
MAX_USART_RECIVE_LEN
];
//homebus 缓存存放区
TP_u8
Usart_buff
[
USART_RECIVE_DEPTHS
][
MAX_USART_RECIVE_LEN
];
//homebus 缓存存放区
_IO
TP_u8
Usart_buff_len
[
USART_RECIVE_DEPTHS
];
//homebus 缓存区长度
TP_u8
Usart_buff_len
[
USART_RECIVE_DEPTHS
];
//homebus 缓存区长度
_IO
TP_u8
Buff_send_serial_num
;
//BUFF发送序列
_IO
TP_u8
Download_serial_num
;
//BUFF缓存序列
TP_u8
Buff_send_serial_num
;
//BUFF发送序列
TP_u8
Download_serial_num
;
//BUFF缓存序列
}
RECIVE_USART_DATA_BUFF
;
}
RECIVE_USART_DATA_BUFF
;
//协议中的功能码
//协议中的功能码
typedef
struct
typedef
struct
...
@@ -85,10 +81,10 @@ typedef struct
...
@@ -85,10 +81,10 @@ typedef struct
void
uart0_data_deal_init
(
void
);
void
uart0_data_deal_init
(
void
);
void
uart_msg_deal
(
void
);
void
uart_msg_deal
(
void
);
void
proximity_triagger_report
(
void
);
void
proximity_triagger_report
(
void
);
u8
Usart_recive_deal
(
TP_uc8
*
data
,
TP_uc
16
len
);
u8
Usart_recive_deal
(
TP_uc8
*
data
,
TP_uc
8
len
);
u8
uart_msg_recive
(
u8
RcvChar
);
u8
uart_msg_recive
(
u8
RcvChar
);
void
ack_info
(
PROTOCOL_DEAL
recv_data
,
TP_uc8
*
arg
,
TP_u8
len
);
void
ack_info
(
PROTOCOL_DEAL
recv_data
,
TP_uc8
*
arg
,
TP_u8
len
);
TP_u16
CreateCrc16_Self
(
const
u8
*
msg
,
TP_u
32
len
)
;
TP_u16
CreateCrc16_Self
(
const
u8
*
msg
,
TP_u
8
len
)
;
static
void
send_crc_error_data
(
TP_u16
seq_data
);
static
void
send_crc_error_data
(
TP_u16
seq_data
);
void
uart_protocol_send
(
PROTOCOL_SEND_MSG
send_protocol
,
TP_u16
SEQ
);
void
uart_protocol_send
(
PROTOCOL_SEND_MSG
send_protocol
,
TP_u16
SEQ
);
#endif
#endif
...
...
Code/海顿-多合一新风面板/APP/User/src/BL55072A.c
View file @
5459550e
...
@@ -75,6 +75,11 @@ Lcd_Status_Info_t LCDAutoSystemModeSettingIconCTR_t =
...
@@ -75,6 +75,11 @@ Lcd_Status_Info_t LCDAutoSystemModeSettingIconCTR_t =
u16
guSetLCDShowTime
=
SysLCDShowTimer
;
u16
guSetLCDShowTime
=
SysLCDShowTimer
;
#if 1 // add by dingmz_frc.20201215
extern
u8
g_u8Temp_Buffer
[];
extern
u8
g_u8Temp_Length
;
#endif
void
PWM_init
(
void
)
void
PWM_init
(
void
)
{
{
// PWM0 frequency is 100Hz, duty 30%,
// PWM0 frequency is 100Hz, duty 30%,
...
@@ -102,113 +107,119 @@ u16 GetLCDShowTime( void )
...
@@ -102,113 +107,119 @@ u16 GetLCDShowTime( void )
void
BL55072A_Init
(
uint8_t
slaver_addr
,
u32
freq
)
void
BL55072A_Init
(
uint8_t
slaver_addr
,
u32
freq
)
{
{
u8
err
=
0xff
;
u8
err
=
0xff
;
u8
Send_Buffer
[
10
]
=
{
0
};
//
u8 Send_Buffer[10] = {0};
u8
length
=
0
;
//
u8 length = 0;
g_u8slaver_addr
=
slaver_addr
;
g_u8slaver_addr
=
slaver_addr
;
I2C_SW_Open
(
freq
);
I2C_SW_Open
(
freq
);
CLK_SysTickDelay
(
5000
);
//delay 5ms
CLK_SysTickDelay
(
5000
);
//delay 5ms
Send_Buffer
[
length
++
]
=
BL55072A_CMD_APCTL_OFF
;
g_u8Temp_Length
=
0
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_MODESET_ON
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_APCTL_OFF
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_ICSET_RST
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_MODESET_ON
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ICSET_RST
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_ICSET
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ICSET
;
err
=
I2C_SW_Send
(
g_u8slaver_addr
,
Send_Buffer
,
l
ength
);
err
=
I2C_SW_Send
(
g_u8slaver_addr
,
g_u8Temp_Buffer
,
g_u8Temp_L
ength
);
printf
(
"Bl55072A init err = (%d),length = (%d)
\r\n
"
,
err
,
length
);
//
printf("Bl55072A init err = (%d),length = (%d)\r\n", err, length);
}
}
void
BL55072A_DisplayON
(
void
)
void
BL55072A_DisplayON
(
void
)
{
{
uint8_t
buffer
[
20
]
=
{
0
};
//
uint8_t buffer[20] = {0};
uint8_t
length
=
0
;
//
uint8_t length = 0;
buffer
[
length
++
]
=
BL55072A_CMD_APCTL_OFF
;
g_u8Temp_Length
=
0
;
buffer
[
length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_APCTL_OFF
;
buffer
[
length
++
]
=
BL55072A_CMD_ICSET
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
buffer
[
length
++
]
=
BL55072A_CMD_BLKCTL_OFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ICSET
;
buffer
[
length
++
]
=
0xFC
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_BLKCTL_OFF
;
buffer
[
length
++
]
=
BL55072A_CMD_MODESET_ON
&
0x7F
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFC
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_MODESET_ON
&
0x7F
;
I2C_SW_Send
(
g_u8slaver_addr
,
buffer
,
l
ength
);
I2C_SW_Send
(
g_u8slaver_addr
,
g_u8Temp_Buffer
,
g_u8Temp_L
ength
);
//printf("BL55072A Display ON err = (%d),length = (%d)\r\n", err, length);
//printf("BL55072A Display ON err = (%d),length = (%d)\r\n", err, length);
}
}
void
BL55072A_Clear
(
void
)
void
BL55072A_Clear
(
void
)
{
{
uint8_t
buffer
[
20
]
=
{
0
};
//uint8_t buffer[20] = {0};
uint8_t
length
=
0
;
//uint8_t length = 0;
buffer
[
length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
g_u8Temp_Length
=
0
;
buffer
[
length
++
]
=
BL55072A_CMD_BLKCTL_OFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
buffer
[
length
++
]
=
0xFC
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_BLKCTL_OFF
;
buffer
[
length
++
]
=
BL55072A_CMD_MODESET_ON
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFC
;
buffer
[
length
++
]
=
BL55072A_CMD_ICSET
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_MODESET_ON
;
buffer
[
length
++
]
=
BL55072A_CMD_ADSET
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ICSET
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ADSET
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
buffer
[
length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0x00
;
I2C_SW_Send
(
g_u8slaver_addr
,
buffer
,
length
);
I2C_SW_Send
(
g_u8slaver_addr
,
g_u8Temp_Buffer
,
g_u8Temp_Length
);
//printf("BL55072A Display Test err = (%d),length = (%d)\r\n", err, length);
//printf("BL55072A Display Test err = (%d),length = (%d)\r\n", err, length);
}
}
void
BL55072A_DisplayALL
(
void
)
void
BL55072A_DisplayALL
(
void
)
{
{
u8
Send_Buffer
[
20
]
=
{
0
};
//u8 Send_Buffer[20] = {0};
u8
length
=
0
;
//u8 length = 0;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
g_u8Temp_Length
=
0
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_BLKCTL_OFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_DISCTL_PSM1
;
Send_Buffer
[
length
++
]
=
0xFE
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_BLKCTL_OFF
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_MODESET_ON
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFE
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_ICSET
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_MODESET_ON
;
Send_Buffer
[
length
++
]
=
BL55072A_CMD_ADSET
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ICSET
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
BL55072A_CMD_ADSET
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
Send_Buffer
[
length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
g_u8Temp_Buffer
[
g_u8Temp_Length
++
]
=
0xFF
;
I2C_SW_Send
(
g_u8slaver_addr
,
Send_Buffer
,
length
);
I2C_SW_Send
(
g_u8slaver_addr
,
g_u8Temp_Buffer
,
g_u8Temp_Length
);
//printf("BL55072A Display Test err = (%d),length = (%d)\r\n", err, length);
//printf("BL55072A Display Test err = (%d),length = (%d)\r\n", err, length);
}
}
static
u8
Buffer_Temp
[
5
]
=
{
0
};
u8
BL55072A_ReadByte
(
u8
addr
)
u8
BL55072A_ReadByte
(
u8
addr
)
{
{
u8
buffer
[
4
]
=
{
0
};
static
u8
tmp
=
0
;
u8
length
=
0
;
u8
tmp
;
buffer
[
length
++
]
=
BL55072A_CMD_ICSET
;
memset
(
Buffer_Temp
,
0
,
sizeof
(
Buffer_Temp
));
buffer
[
length
++
]
=
BL55072A_CMD_ADSET
|
addr
|
0x80
;
//cmd end
Buffer_Temp
[
0
]
=
BL55072A_CMD_ICSET
;
I2C_SW_Send
(
g_u8slaver_addr
,
buffer
,
length
);
Buffer_Temp
[
1
]
=
BL55072A_CMD_ADSET
|
addr
|
0x80
;
//cmd end
I2C_SW_Send
(
g_u8slaver_addr
,
Buffer_Temp
,
2
);
I2C_SW_Get_Without_Delay
(
g_u8slaver_addr
,(
u8
*
)
&
tmp
,
1
);
I2C_SW_Get_Without_Delay
(
g_u8slaver_addr
,(
u8
*
)
&
tmp
,
1
);
return
(
tmp
&
0xff
);
return
(
tmp
&
0xff
);
}
}
void
BL55072A_DisplayGeneral
(
u8
addr
,
u8
control_bits
,
u8
display_bits
)
void
BL55072A_DisplayGeneral
(
u8
addr
,
u8
control_bits
,
u8
display_bits
)
{
{
u8
buffer
[
6
]
=
{
0
};
static
u8
Data
=
0
;
u8
length
=
0
;
static
u8
i
=
0
;
u8
Data
=
0
;
static
u8
tmp
=
0
;
u8
i
=
0
;
memset
(
Buffer_Temp
,
0
,
sizeof
(
Buffer_Temp
));
u8
tmp
=
BL55072A_ReadByte
(
addr
);
i
=
Data
=
0
;
tmp
=
BL55072A_ReadByte
(
addr
);
//printf("BL55072A_DisplayGeneral,Process Before TMP DATA = %x\r\n", tmp);
//printf("BL55072A_DisplayGeneral,Process Before TMP DATA = %x\r\n", tmp);
buffer
[
length
++
]
=
BL55072A_CMD_ICSET
;
Buffer_Temp
[
0
]
=
BL55072A_CMD_ICSET
;
buffer
[
length
++
]
=
BL55072A_CMD_ADSET
|
addr
;
//cmd end
Buffer_Temp
[
1
]
=
BL55072A_CMD_ADSET
|
addr
;
//cmd end
for
(
i
=
0
;
i
<
4
;
i
++
)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
{
...
@@ -228,8 +239,8 @@ void BL55072A_DisplayGeneral(u8 addr,u8 control_bits,u8 display_bits)
...
@@ -228,8 +239,8 @@ void BL55072A_DisplayGeneral(u8 addr,u8 control_bits,u8 display_bits)
}
}
tmp
=
((
tmp
&
0x0f
)
|
(
Data
<<
4
)
);
tmp
=
((
tmp
&
0x0f
)
|
(
Data
<<
4
)
);
//printf("BL55072A_DisplayGeneral,Process After TMP=%x, DATA = %x\r\n",tmp, Data);
//printf("BL55072A_DisplayGeneral,Process After TMP=%x, DATA = %x\r\n",tmp, Data);
buffer
[
length
++
]
=
tmp
;
//cmd end
Buffer_Temp
[
2
]
=
tmp
;
//cmd end
I2C_SW_Send
(
g_u8slaver_addr
,
buffer
,
length
);
I2C_SW_Send
(
g_u8slaver_addr
,
Buffer_Temp
,
3
);
//printf("BL55072A_DisplayGeneral,err = (%d),length = (%d)\r\n", err, length);
//printf("BL55072A_DisplayGeneral,err = (%d),length = (%d)\r\n", err, length);
}
}
...
...
Code/海顿-多合一新风面板/APP/User/src/CC2530_transparent_analyze.c
View file @
5459550e
...
@@ -32,7 +32,6 @@ readme: 使
...
@@ -32,7 +32,6 @@ readme: 使
#include "hardware_init.h"
#include "hardware_init.h"
#include "Key.h"
#include "Key.h"
/**************************************************************************************************************
/**************************************************************************************************************
此文件内部使用,不允许外部使用,不用更改
此文件内部使用,不允许外部使用,不用更改
***************************************************************************************************************/
***************************************************************************************************************/
...
@@ -44,13 +43,13 @@ static TP_u32 status_check_time = 0x00;
...
@@ -44,13 +43,13 @@ static TP_u32 status_check_time = 0x00;
static
void
send_crc_error
(
TP_u16
seq_data
);
static
void
send_crc_error
(
TP_u16
seq_data
);
static
TP_u8
Usart_recive_write_buff
(
TP_uc8
*
data
,
TP_uc16
len
);
static
TP_u8
Usart_recive_write_buff
(
TP_uc8
*
data
,
TP_uc16
len
);
TP_u16
CreateCrc16
(
TP_uc8
*
msg
,
TP_u
32
len
);
TP_u16
CreateCrc16
(
TP_uc8
*
msg
,
TP_u
8
len
);
static
void
(
*
uart_data_send
)(
TP_uc8
*
msg
,
TP_u32
len
);
static
void
(
*
uart_data_send
)(
TP_uc8
*
msg
,
TP_u32
len
);
static
void
(
*
non_permeable_opcode_analysis
)(
PROTOCOL_DEAL
protocol_data
);
static
void
(
*
non_permeable_opcode_analysis
)(
PROTOCOL_DEAL
protocol_data
);
static
void
(
*
transparent_opcode_analysis
)(
PROTOCOL_DEAL
protocol_data
);
static
void
(
*
transparent_opcode_analysis
)(
PROTOCOL_DEAL
protocol_data
);
static
TP_ErrorStatus
transparent_protocol_analysis
(
TP_uc8
*
data
,
TP_uc
32
len
);
static
TP_ErrorStatus
transparent_protocol_analysis
(
TP_uc8
*
data
,
TP_uc
8
len
);
/**************************************************************************************************************
/**************************************************************************************************************
全局变量,用于 transparent_protocol_send
全局变量,用于 transparent_protocol_send
...
@@ -67,6 +66,10 @@ const PROTOCOL_SEND opcode_force_assert = {0x00,0x0002,0x10,&opcode_force_assert
...
@@ -67,6 +66,10 @@ const PROTOCOL_SEND opcode_force_assert = {0x00,0x0002,0x10,&opcode_force_assert
//SEQ
//SEQ
TP_u16
tp_report_seq_num
=
0
;
TP_u16
tp_report_seq_num
=
0
;
#if 1 // add by dingmz_frc.20201215
extern
u8
g_u8Temp_Buffer
[];
extern
u8
g_u8Temp_Length
;
#endif
#define EXAMPLE
#define EXAMPLE
/**************************************************************************************************************
/**************************************************************************************************************
...
@@ -346,27 +349,27 @@ void transparent_msg_deal(void)
...
@@ -346,27 +349,27 @@ void transparent_msg_deal(void)
void
transparent_protocol_send
(
PROTOCOL_SEND
send_protocol
,
TP_u16
SEQ
)
void
transparent_protocol_send
(
PROTOCOL_SEND
send_protocol
,
TP_u16
SEQ
)
{
{
static
TP_u8
KK_Buf
[
125
]
=
{
0
};
//
static TP_u8 KK_Buf[125] = {0};
TP_u16
KK_CRC16_Num
=
0
;
//计算校验值
TP_u16
KK_CRC16_Num
=
0
;
//计算校验值
memset
(
KK_Buf
,
0
,
sizeof
(
KK_Buf
));
//
memset(KK_Buf,0,sizeof(KK_Buf));
KK_Buf
[
0
]
=
0xAA
;
g_u8Temp_Buffer
[
0
]
=
0xAA
;
KK_Buf
[
1
]
=
0x55
;
g_u8Temp_Buffer
[
1
]
=
0x55
;
KK_Buf
[
2
]
=
send_protocol
.
ARG_len
+
6
;
//长度 7
g_u8Temp_Buffer
[
2
]
=
send_protocol
.
ARG_len
+
6
;
//长度 7
KK_Buf
[
4
]
=
(
SEQ
&
0xff
);
//序列号L
g_u8Temp_Buffer
[
4
]
=
(
SEQ
&
0xff
);
//序列号L
KK_Buf
[
3
]
=
send_protocol
.
ControlField
;
//控制域: 不需要ack
g_u8Temp_Buffer
[
3
]
=
send_protocol
.
ControlField
;
//控制域: 不需要ack
KK_Buf
[
5
]
=
send_protocol
.
ARG_len
+
3
;
g_u8Temp_Buffer
[
5
]
=
send_protocol
.
ARG_len
+
3
;
KK_Buf
[
6
]
=
send_protocol
.
Channel_ID
;
//下行协议: 信道00
g_u8Temp_Buffer
[
6
]
=
send_protocol
.
Channel_ID
;
//下行协议: 信道00
KK_Buf
[
7
]
=
((
send_protocol
.
Opcode
>>
8
)
&
0xff
);
//下行协议: Opcode_H
g_u8Temp_Buffer
[
7
]
=
((
send_protocol
.
Opcode
>>
8
)
&
0xff
);
//下行协议: Opcode_H
KK_Buf
[
8
]
=
(
send_protocol
.
Opcode
&
0xff
);
//下行协议: Opcode_L
g_u8Temp_Buffer
[
8
]
=
(
send_protocol
.
Opcode
&
0xff
);
//下行协议: Opcode_L
memcpy
(
&
KK_Buf
[
9
],
send_protocol
.
ARG
,
send_protocol
.
ARG_len
);
memcpy
(
&
g_u8Temp_Buffer
[
9
],
send_protocol
.
ARG
,
send_protocol
.
ARG_len
);
//KK_Buf[9] = 0X00;
//KK_Buf[9] = 0X00;
KK_CRC16_Num
=
CreateCrc16
((
TP_uc8
*
)
&
KK_Buf
[
3
],
KK_Buf
[
2
]);
KK_CRC16_Num
=
CreateCrc16
((
TP_uc8
*
)
&
g_u8Temp_Buffer
[
3
],
g_u8Temp_Buffer
[
2
]);
KK_Buf
[
send_protocol
.
ARG_len
+
9
]
=
(
KK_CRC16_Num
>>
8
)
&
0xff
;
//校验值 CRC_H
g_u8Temp_Buffer
[
send_protocol
.
ARG_len
+
9
]
=
(
KK_CRC16_Num
>>
8
)
&
0xff
;
//校验值 CRC_H
KK_Buf
[
send_protocol
.
ARG_len
+
10
]
=
KK_CRC16_Num
&
0xff
;
//校验值 CRC_L
g_u8Temp_Buffer
[
send_protocol
.
ARG_len
+
10
]
=
KK_CRC16_Num
&
0xff
;
//校验值 CRC_L
uart_data_send
(
KK_Buf
,
send_protocol
.
ARG_len
+
11
);
uart_data_send
(
g_u8Temp_Buffer
,
send_protocol
.
ARG_len
+
11
);
}
}
...
@@ -450,10 +453,16 @@ static TP_u8 Usart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
...
@@ -450,10 +453,16 @@ static TP_u8 Usart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
*******************************************************************************/
*******************************************************************************/
//AA 55 07 80 01 04 00 10 11 01 F5 91
//AA 55 07 80 01 04 00 10 11 01 F5 91
//0 1 2 3 4 5 6 7 8 9 10 11
//0 1 2 3 4 5 6 7 8 9 10 11
static
TP_ErrorStatus
transparent_protocol_analysis
(
TP_uc8
*
data
,
TP_uc32
len
)
static
TP_ErrorStatus
transparent_protocol_analysis
(
TP_uc8
*
data
,
TP_uc8
len
)
{
{
PROTOCOL_DEAL
Usart_protocol_deal
=
{
0
};
PROTOCOL_DEAL
Usart_protocol_deal
=
{
0
};
if
((
data
==
NULL
)
||
(
len
<
5
)
||
(
len
>
USART_RECIVE_LEN_DEF
))
{
//printf("non valied msg,discard it all\r\n");
return
TP_ERROR
;
}
Usart_protocol_deal
.
SEQ
=
*
(
data
+
4
);
//记录 seq 的值
Usart_protocol_deal
.
SEQ
=
*
(
data
+
4
);
//记录 seq 的值
if
(
BYTE_MOVE
(
*
(
data
+
len
-
2
),
*
(
data
+
len
-
1
))
!=
CreateCrc16
(
data
+
3
,
len
-
5
))
//CRC校验
if
(
BYTE_MOVE
(
*
(
data
+
len
-
2
),
*
(
data
+
len
-
1
))
!=
CreateCrc16
(
data
+
3
,
len
-
5
))
//CRC校验
{
//校验不对
{
//校验不对
...
@@ -501,10 +510,10 @@ static void send_crc_error(TP_u16 seq_data)
...
@@ -501,10 +510,10 @@ static void send_crc_error(TP_u16 seq_data)
/*
/*
接收到的数据crc错误回复
接收到的数据crc错误回复
*/
*/
TP_u16
CreateCrc16
(
u8
*
msg
,
TP_u
32
len
)
TP_u16
CreateCrc16
(
u8
*
msg
,
TP_u
8
len
)
{
{
TP_u16
crc
=
0xFFFF
;
TP_u16
crc
=
0xFFFF
;
TP_u
32
i
,
j
=
0
;
TP_u
8
i
,
j
=
0
;
for
(
i
=
0
;
i
<
len
;
i
++
)
for
(
i
=
0
;
i
<
len
;
i
++
)
{
{
...
...
Code/海顿-多合一新风面板/APP/User/src/Key.c
View file @
5459550e
...
@@ -60,19 +60,38 @@ u8 auto_type = 0;
...
@@ -60,19 +60,38 @@ u8 auto_type = 0;
static
_Bool
LongLongPress10s_Handler
(
u8
keyid
,
u8
KeyPressEvent
)
static
_Bool
LongLongPress10s_Handler
(
u8
keyid
,
u8
KeyPressEvent
)
{
{
//退老化处理
//退老化处理
static
u32
last_time
=
0
;
static
u8
first_10s_press
=
0
;
if
((
keyid
==
6
)
&&
(
KeyPressEvent
==
Button10sLongEvent
))
if
((
keyid
==
6
)
&&
(
KeyPressEvent
==
Button10sLongEvent
))
{
{
if
(
Oled_Display_Info
.
aging_test_flag
!=
2
)
//老化期间
if
(
Oled_Display_Info
.
aging_test_flag
!=
2
)
{
{
Spake_Start
();
Spake_Start
();
if
(
((
Oled_Display_Info
.
local_timer
-
last_time
)
<=
20
*
1000
)
&&
first_10s_press
)
{
first_10s_press
=
0
;
//所有指示灯闪烁一次
kNetIndicatorOptTrigger
(
7
,
200
,
200
,
5
*
1000
/
(
200
+
200
),
0
,
1
);
LCD_CONTROL
(
1
);
LCD_CONTROL
(
1
);
BL55072A_DisplayALL
();
BL55072A_DisplayALL
();
Oled_Display_Info
.
aging_test_flag
=
2
;
//写入产测标志位
Oled_Display_Info
.
aging_test_flag
=
2
;
//写入产测标志位
First_Exit_Factory_Mode
=
1
;
First_Exit_Factory_Mode
=
1
;
save_data
();
save_data
();
aging_test_stop
();
//停止老化事件
aging_test_stop
();
//停止老化事件
task_exit_aging_test_start
();
return
TRUE
;
return
TRUE
;
}
}
else
{
first_10s_press
=
1
;
last_time
=
Oled_Display_Info
.
local_timer
;
//所有指示灯闪烁一次
if
(
LED1
)
kNetIndicatorOptTrigger
(
7
,
200
,
200
,
1
,
0
,
1
);
else
kNetIndicatorOptTrigger
(
7
,
200
,
200
,
1
,
1
,
0
);
}
}
}
}
//滤网清洗事件错误清除
//滤网清洗事件错误清除
if
((
keyid
==
2
)
&&
(
KeyPressEvent
==
Button10sLongEvent
))
if
((
keyid
==
2
)
&&
(
KeyPressEvent
==
Button10sLongEvent
))
...
@@ -336,9 +355,9 @@ u8 KeyScanState( KeyScan_t* Buttion_T, u8 ButtonState )
...
@@ -336,9 +355,9 @@ u8 KeyScanState( KeyScan_t* Buttion_T, u8 ButtonState )
void
key_scan
(
void
)
void
key_scan
(
void
)
{
{
u8
EventTemp
[
KeyTotalNum
]
=
{
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
};
static
u8
EventTemp
[
KeyTotalNum
]
=
{
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
,
NoButtonEvent
};
u8
i
=
0
;
u8
i
=
0
;
memset
(
EventTemp
,
0
,
sizeof
(
EventTemp
));
if
(
!
GetkeyScanTime
())
if
(
!
GetkeyScanTime
())
{
{
SetkeyScanTime
(
SyskeyScanTimer
);
SetkeyScanTime
(
SyskeyScanTimer
);
...
@@ -369,10 +388,10 @@ static void LED_BEEP_Feedback(u8 key_id)
...
@@ -369,10 +388,10 @@ static void LED_BEEP_Feedback(u8 key_id)
if
(
Oled_Display_Info
.
net_work_flage
==
IN_LINE
)
if
(
Oled_Display_Info
.
net_work_flage
==
IN_LINE
)
{
{
kNetIndicatorOptTrigger
(
key_id
,
200
,
200
,
2
,
0
,
1
);
kNetIndicatorOptTrigger
(
key_id
,
200
,
200
,
1
,
0
,
1
);
}
else
{
}
else
{
kNetIndicatorOptTrigger
(
key_id
,
200
,
200
,
4
,
0
,
1
);
kNetIndicatorOptTrigger
(
key_id
,
200
,
200
,
3
,
0
,
1
);
}
}
}
}
void
KeyProcess_Handler_Callbacks
(
u8
key_id
,
u8
KeyPressEvent
)
void
KeyProcess_Handler_Callbacks
(
u8
key_id
,
u8
KeyPressEvent
)
...
@@ -391,20 +410,19 @@ void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent)
...
@@ -391,20 +410,19 @@ void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent)
//printf("####KeyProcess_Handler_After ,keyid = %d,Key_Event = %x\r\n",key_id,KeyPressEvent);
//printf("####KeyProcess_Handler_After ,keyid = %d,Key_Event = %x\r\n",key_id,KeyPressEvent);
if
(
KeyPressEvent
!=
ButtonLongEvent
)
if
(
KeyPressEvent
!=
ButtonLongEvent
)
{
{
Detect_Human_Dispaly
();
if
(
IsLcdEnterScreenSave
())
//息屏状态,触摸按键,该次触发只唤醒,不做有效触发
if
(
IsLcdEnterScreenSave
())
//息屏状态,触摸按键,该次触发只唤醒,不做有效触发
{
{
Detect_Human_Dispaly
();
Reload_Save_Time
();
Reload_Save_Time
();
return
;
return
;
}
}
Reload_Save_Time
();
//地暖的按键2无效
//地暖的按键2无效
if
(
(
Oled_Display_Info
.
screen_page
==
2
)
&&
(
key_id
==
2
)
&&
(
Oled_Display_Info
.
aging_test_flag
==
2
))
if
(
(
Oled_Display_Info
.
screen_page
==
2
)
&&
(
key_id
==
2
)
&&
(
Oled_Display_Info
.
aging_test_flag
==
2
))
return
;
return
;
LED_BEEP_Feedback
(
key_id
);
LED_BEEP_Feedback
(
key_id
);
}
}
Reload_Save_Time
();
/******************************************
/******************************************
童锁打开后,操作按键处理
童锁打开后,操作按键处理
*******************************************/
*******************************************/
...
@@ -614,11 +632,13 @@ void Control_OnOff_handler(u8 device_type,u8 onoff)
...
@@ -614,11 +632,13 @@ void Control_OnOff_handler(u8 device_type,u8 onoff)
{
{
if
(
onoff
==
1
)
if
(
onoff
==
1
)
{
{
Oled_Display_Info
.
Air_Device
.
on_off
=
1
;
Oled_Display_whole
();
Oled_Display_whole
();
}
}
else
else
{
{
PowerOff
();
PowerOff
();
Oled_Display_Info
.
Air_Device
.
on_off
=
0
;
if
(
Oled_Display_Info
.
Air_Device
.
power_off_time
>
0
)
if
(
Oled_Display_Info
.
Air_Device
.
power_off_time
>
0
)
{
{
Oled_Display_Info
.
Air_Device
.
power_off_time
=
0
;
Oled_Display_Info
.
Air_Device
.
power_off_time
=
0
;
...
@@ -715,6 +735,11 @@ static void KEY1_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -715,6 +735,11 @@ static void KEY1_Botton_Process_Handler(u8 KeyPressEvent)
else
else
{
{
Control_OnOff_handler
(
AIR_CONDITION
,
0
);
Control_OnOff_handler
(
AIR_CONDITION
,
0
);
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_onoff_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
...
@@ -738,6 +763,12 @@ static void KEY1_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -738,6 +763,12 @@ static void KEY1_Botton_Process_Handler(u8 KeyPressEvent)
}
}
else
{
else
{
Control_OnOff_handler
(
AIR_CONDITION
,
1
);
Control_OnOff_handler
(
AIR_CONDITION
,
1
);
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_onoff_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
}
}
...
@@ -922,14 +953,15 @@ static void KEY2_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -922,14 +953,15 @@ static void KEY2_Botton_Process_Handler(u8 KeyPressEvent)
{
{
case
ButtonShortEvent
:
case
ButtonShortEvent
:
{
{
if
(
Oled_Display_Info
.
device_typ
e
==
AIR_CONDITION
)
if
(
Oled_Display_Info
.
screen_pag
e
==
AIR_CONDITION
)
{
{
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
//开机模式才能操作
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
//开机模式才能操作
return
;
return
;
Fan_Button_Handler
();
Fan_Button_Handler
();
}
}
else
if
(
Oled_Display_Info
.
device_typ
e
==
FAN
)
else
if
(
Oled_Display_Info
.
screen_pag
e
==
FAN
)
{
{
if
(
Oled_Display_Info
.
FAN_Device
.
on_off
==
0
)
//开机模式才能操作
if
(
Oled_Display_Info
.
FAN_Device
.
on_off
==
0
)
//开机模式才能操作
return
;
return
;
...
@@ -975,6 +1007,13 @@ static void KEY3_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -975,6 +1007,13 @@ static void KEY3_Botton_Process_Handler(u8 KeyPressEvent)
return
;
return
;
system_mode_temp
=
System_Mode_Trans
(
AIR_CONDITION
,
0
);
system_mode_temp
=
System_Mode_Trans
(
AIR_CONDITION
,
0
);
Oled_Display_Info
.
Air_Device
.
system_type
=
system_mode_temp
;
Oled_Display_Info
.
Air_Device
.
system_type
=
system_mode_temp
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_system_mode_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
{
{
...
@@ -1093,34 +1132,40 @@ static void KEY4_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -1093,34 +1132,40 @@ static void KEY4_Botton_Process_Handler(u8 KeyPressEvent)
switch
(
KeyPressEvent
)
switch
(
KeyPressEvent
)
{
{
case
ButtonShortEvent
:
case
ButtonShortEvent
:
{
u8
bind_device_len
=
0
;
u8
device1_type
=
0
;
u8
device2_type
=
0
;
if
(
Oled_Display_Info
.
binding_device
==
0
)
//未绑定
if
(
Oled_Display_Info
.
binding_device
==
0
)
//未绑定
return
;
return
;
if
(
Oled_Display_Info
.
screen_page
==
Oled_Display_Info
.
device_type
)
//切换绑定设备界面
delay_confirm_system_control
(
0
);
bind_device_len
=
((
Oled_Display_Info
.
binding_device
&
0xF0
)
>>
4
);
device1_type
=
Oled_Display_Info
.
binding_device
&
0x03
;
device2_type
=
((
Oled_Display_Info
.
binding_device
&
0x0C
)
>>
2
);
if
(
bind_device_len
==
1
)
{
{
delay_confirm_system_control
(
0
);
//提前中断延时确认system mode
if
(
Oled_Display_Info
.
screen_page
==
Oled_Display_Info
.
device_type
)
{
if
(
Oled_Display_Info
.
binding_device
==
1
){
if
(
device1_type
!=
0
)
Oled_Display_Info
.
screen_page
=
1
;
Oled_Display_Info
.
screen_page
=
device1_type
;
else
}
Oled_Display_Info
.
screen_page
=
device2_type
;
else
if
(
Oled_Display_Info
.
binding_device
==
2
){
Oled_Display_Info
.
screen_page
=
2
;
}
else
if
(
Oled_Display_Info
.
binding_device
==
3
){
Oled_Display_Info
.
screen_page
=
3
;
}
}
else
Oled_Display_Info
.
screen_page
=
Oled_Display_Info
.
device_type
;
}
}
else
{
//切换原设备界面
else
if
(
bind_device_len
==
2
)
{
if
(
Oled_Display_Info
.
screen_page
==
Oled_Display_Info
.
device_type
)
Oled_Display_Info
.
screen_page
=
device1_type
;
else
if
(
Oled_Display_Info
.
screen_page
==
device1_type
)
Oled_Display_Info
.
screen_page
=
device2_type
;
else
Oled_Display_Info
.
screen_page
=
Oled_Display_Info
.
device_type
;
Oled_Display_Info
.
screen_page
=
Oled_Display_Info
.
device_type
;
}
}
//显示所有的界面
//显示所有的界面
display_current_page
();
display_current_page
();
}
break
;
case
ButtonLongEvent
:
break
;
case
ButtonLongUpEvent
:
break
;
break
;
default:
default:
break
;
break
;
...
@@ -1164,6 +1209,14 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -1164,6 +1209,14 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
{
{
next_speed
=
Get_NextOne_By_Current_Speed_Level
(
1
,
Oled_Display_Info
.
Air_Device
.
wind_speed
,
0
);
next_speed
=
Get_NextOne_By_Current_Speed_Level
(
1
,
Oled_Display_Info
.
Air_Device
.
wind_speed
,
0
);
display_wind_speed
(
next_speed
,
0
);
display_wind_speed
(
next_speed
,
0
);
Oled_Display_Info
.
Air_Device
.
wind_speed
=
next_speed
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_fan_speed_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
//Control_AIR_CONDITION_By_RS485(AIR_CMD_FAN_SPEED,next_speed); //控制空调风速
}
}
}
}
else
if
(
Oled_Display_Info
.
Air_Device
.
air_cond_type
==
1
)
//风机盘管,新风只支持3档+自动调节
else
if
(
Oled_Display_Info
.
Air_Device
.
air_cond_type
==
1
)
//风机盘管,新风只支持3档+自动调节
...
@@ -1226,8 +1279,18 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -1226,8 +1279,18 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
display_set_temp
(
0
,
sKey_Operation
[
0
].
set_temper_temp
,
0
);
//显示设置温度
display_set_temp
(
0
,
sKey_Operation
[
0
].
set_temper_temp
,
0
);
//显示设置温度
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.0调整到26.6度时,不管空调的反馈,直接上报
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.0调整到26.6度时,不管空调的反馈,直接上报
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
{
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
sKey_Operation
[
0
].
set_temper_temp
=
0xff
;
//不需要下发控制命令给空调
}
else
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
...
@@ -1329,10 +1392,10 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -1329,10 +1392,10 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
}
}
break
;
break
;
case
ButtonLongEvent
:
//
case ButtonLongEvent:
break
;
//
break;
case
ButtonLongUpEvent
:
//
case ButtonLongUpEvent:
break
;
//
break;
default:
default:
break
;
break
;
}
}
...
@@ -1378,18 +1441,21 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -1378,18 +1441,21 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
next_speed
=
Get_NextOne_By_Current_Speed_Level
(
0
,
Oled_Display_Info
.
Air_Device
.
wind_speed
,
0
);
next_speed
=
Get_NextOne_By_Current_Speed_Level
(
0
,
Oled_Display_Info
.
Air_Device
.
wind_speed
,
0
);
display_wind_speed
(
next_speed
,
0
);
display_wind_speed
(
next_speed
,
0
);
Oled_Display_Info
.
Air_Device
.
wind_speed
=
next_speed
;
Oled_Display_Info
.
Air_Device
.
wind_speed
=
next_speed
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_fan_speed_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
else
if
(
Oled_Display_Info
.
Air_Device
.
air_cond_type
==
1
)
//风机盘管,新风只支持3档+自动调节
//
else if(Oled_Display_Info.Air_Device.air_cond_type == 1) //风机盘管,新风只支持3档+自动调节
{
//
{
next_speed
=
Get_NextOne_By_Current_Speed_Level
(
0
,
Oled_Display_Info
.
Air_Device
.
wind_speed
,
0
);
//
next_speed = Get_NextOne_By_Current_Speed_Level(0,Oled_Display_Info.Air_Device.wind_speed,0);
display_wind_speed
(
next_speed
,
0
);
//
display_wind_speed(next_speed,0);
Oled_Display_Info
.
Air_Device
.
wind_speed
=
next_speed
;
//
Oled_Display_Info.Air_Device.wind_speed = next_speed;
//
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
//
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
}
//
}
break
;
break
;
}
}
...
@@ -1436,9 +1502,17 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
...
@@ -1436,9 +1502,17 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
display_set_temp
(
0
,
sKey_Operation
[
0
].
set_temper_temp
,
0
);
//显示设置温度
display_set_temp
(
0
,
sKey_Operation
[
0
].
set_temper_temp
,
0
);
//显示设置温度
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.5调整到26度时,不管空调的反馈,直接上报
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.5调整到26度时,不管空调的反馈,直接上报
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
{
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
sKey_Operation
[
0
].
set_temper_temp
=
0xff
;
//不需要下发控制命令给空调
}
else
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
...
...
Code/海顿-多合一新风面板/APP/User/src/VCNL3040.c
View file @
5459550e
...
@@ -26,8 +26,9 @@ void VCNL3040_Init(u8 i2cAddress)
...
@@ -26,8 +26,9 @@ void VCNL3040_Init(u8 i2cAddress)
}
}
static
u32
VCNL3040_WriteCommand
(
ECommand_ID
command
,
u16
Data
)
static
u32
VCNL3040_WriteCommand
(
ECommand_ID
command
,
u16
Data
)
{
{
u32
error
=
0
;
// error code
static
u32
error
=
0
;
// error code
u8
cmd_buf
[
4
]
=
{
0
};
static
u8
cmd_buf
[
4
]
=
{
0
};
error
=
0
;
cmd_buf
[
0
]
=
command
;
cmd_buf
[
0
]
=
command
;
cmd_buf
[
1
]
=
Data
;
cmd_buf
[
1
]
=
Data
;
cmd_buf
[
2
]
=
Data
>>
8
;
cmd_buf
[
2
]
=
Data
>>
8
;
...
@@ -37,7 +38,7 @@ static u32 VCNL3040_WriteCommand(ECommand_ID command,u16 Data)
...
@@ -37,7 +38,7 @@ static u32 VCNL3040_WriteCommand(ECommand_ID command,u16 Data)
}
}
u16
VCNL3040_ReadBytes
(
ECommand_ID
command
)
u16
VCNL3040_ReadBytes
(
ECommand_ID
command
)
{
{
u8
cmd_buf
[
4
]
=
{
0
};
static
u8
cmd_buf
[
4
]
=
{
0
};
cmd_buf
[
0
]
=
command
;
cmd_buf
[
0
]
=
command
;
I2C_SW_Send_Without_Stop
(
_VCNL3040_Addr
,
cmd_buf
,
1
);
I2C_SW_Send_Without_Stop
(
_VCNL3040_Addr
,
cmd_buf
,
1
);
memset
(
cmd_buf
,
0
,
sizeof
(
cmd_buf
));
memset
(
cmd_buf
,
0
,
sizeof
(
cmd_buf
));
...
...
Code/海顿-多合一新风面板/APP/User/src/ZH_protocol.c
View file @
5459550e
...
@@ -99,7 +99,7 @@ static void send_temperature(uint8_t state)
...
@@ -99,7 +99,7 @@ static void send_temperature(uint8_t state)
static
void
send_poll_check
(
void
)
static
void
send_poll_check
(
void
)
{
{
uint8_t
data
[
FRAME_LEN
]
=
{
0x01
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
static
uint8_t
data
[
FRAME_LEN
]
=
{
0x01
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
data
[
9
]
=
CRC_check
(
data
,
9
);
data
[
9
]
=
CRC_check
(
data
,
9
);
...
...
Code/海顿-多合一新风面板/APP/User/src/control_comm.c
View file @
5459550e
...
@@ -42,7 +42,7 @@ u8 network_state = OUT_LINE;
...
@@ -42,7 +42,7 @@ u8 network_state = OUT_LINE;
u8
send_data_seq
=
0
;
u8
send_data_seq
=
0
;
u8
Device_status
[
2
0
]
=
{
u8
Device_status
[
2
5
]
=
{
16
,
//len
16
,
//len
0X00
,
//错误码 0
0X00
,
//错误码 0
0X00
,
//开关状态 1
0X00
,
//开关状态 1
...
@@ -69,6 +69,11 @@ ZIGBEE_UART_CONTROL sUartDetect = {1,0,0};
...
@@ -69,6 +69,11 @@ ZIGBEE_UART_CONTROL sUartDetect = {1,0,0};
//STRAINER_OPTION Strainer_Net_Used_Time = {0,0,0,0}; //产测时间,状态保存
//STRAINER_OPTION Strainer_Net_Used_Time = {0,0,0,0}; //产测时间,状态保存
#if 1 // add by dingmz_frc.20201215
u8
g_u8Temp_Buffer
[
40
]
=
{
0
};
u8
g_u8Temp_Length
=
0
;
#endif
u32
Strainer_Net_Used_Time
=
0
;
u32
Strainer_Net_Used_Time
=
0
;
u16
Board_test_time
=
0
;
u16
Board_test_time
=
0
;
...
@@ -689,14 +694,16 @@ void ReDefine_AIR_Condition_Syetem_Mode(void)
...
@@ -689,14 +694,16 @@ void ReDefine_AIR_Condition_Syetem_Mode(void)
***********************************************************************/
***********************************************************************/
static
void
sensor_measure_loop
(
void
)
static
void
sensor_measure_loop
(
void
)
{
{
u16
CurrentValue
=
0
;
static
u16
CurrentValue
=
0
;
static
u16
LastValue
=
0
;
static
u16
LastValue
=
0
;
static
u8
board_test_flag
=
0
;
static
u8
report_times
=
0
;
extern
u8
First_Exit_Factory_Mode
;
extern
u8
First_Exit_Factory_Mode
;
CurrentValue
=
VCNL3040_Get_Current_Data
();
CurrentValue
=
VCNL3040_Get_Current_Data
();
if
(
(
CurrentValue
>
LastValue
)
&&
(
(
CurrentValue
-
LastValue
)
>=
PERSON_TRAGGER_MIN_RANGE
))
if
(
(
CurrentValue
>
LastValue
)
&&
(
(
CurrentValue
-
LastValue
)
>=
PERSON_TRAGGER_MIN_RANGE
))
{
{
u8
board_test_flag
=
Oled_Display_Info
.
recv_lcd_off
&
0x80
;
board_test_flag
=
Oled_Display_Info
.
recv_lcd_off
&
0x80
;
u8
report_times
=
Oled_Display_Info
.
recv_lcd_off
&
0x0f
;
report_times
=
Oled_Display_Info
.
recv_lcd_off
&
0x0f
;
Reload_Save_Time
();
Reload_Save_Time
();
if
((
First_Exit_Factory_Mode
==
0
)
&&
(
board_test_flag
==
0
))
if
((
First_Exit_Factory_Mode
==
0
)
&&
(
board_test_flag
==
0
))
Detect_Human_Dispaly
();
Detect_Human_Dispaly
();
...
@@ -853,7 +860,7 @@ void setup_handler(void)
...
@@ -853,7 +860,7 @@ void setup_handler(void)
temp_init
();
temp_init
();
//上电显示
//上电显示
Oled_Display_whole
();
Detect_Human_Dispaly
();
}
}
else
if
(
count
==
1
){
else
if
(
count
==
1
){
count
=
2
;
count
=
2
;
...
@@ -1016,6 +1023,7 @@ static void aging_test(void)
...
@@ -1016,6 +1023,7 @@ static void aging_test(void)
LCD_CONTROL
(
1
);
LCD_CONTROL
(
1
);
BL55072A_DisplayALL
();
BL55072A_DisplayALL
();
light_or_dark_flang
=
1
;
light_or_dark_flang
=
1
;
if
(
!
kAllLedIsBlinking
())
Control_LED_ON_OFF
(
0xff
);
Control_LED_ON_OFF
(
0xff
);
#if DEVICE_TYPE_FLOOR_HEATING
#if DEVICE_TYPE_FLOOR_HEATING
Relay_Action
(
0x01
,
0x01
);
Relay_Action
(
0x01
,
0x01
);
...
@@ -1029,6 +1037,7 @@ static void aging_test(void)
...
@@ -1029,6 +1037,7 @@ static void aging_test(void)
LCD_CONTROL
(
0
);
LCD_CONTROL
(
0
);
BL55072A_Clear
();
BL55072A_Clear
();
light_or_dark_flang
=
0
;
light_or_dark_flang
=
0
;
if
(
!
kAllLedIsBlinking
())
Control_LED_ON_OFF
(
0
);
Control_LED_ON_OFF
(
0
);
#if DEVICE_TYPE_FLOOR_HEATING
#if DEVICE_TYPE_FLOOR_HEATING
Relay_Action
(
0x01
,
0x00
);
Relay_Action
(
0x01
,
0x00
);
...
@@ -1092,8 +1101,24 @@ static void delay_300ms_report_task(void)
...
@@ -1092,8 +1101,24 @@ static void delay_300ms_report_task(void)
//printf("start report proximity_triagger event\r\n");
//printf("start report proximity_triagger event\r\n");
}
}
/******************************5s退老化,延时复位*************************************/
void
task_exit_aging_test_start
(
void
)
{
task_comps
[
13
].
task_switch
=
SWITCH_ON
;
}
static
void
task_exit_aging_test_stop
(
void
)
{
task_comps
[
13
].
task_switch
=
SWITCH_OFF
;
}
//强退老化后,主动复位
static
void
task_exit_aging_test
(
void
)
{
task_exit_aging_test_stop
();
SYS_UnlockReg
();
SYS_ResetChip
();
}
void
Spake_Start
(
void
)
void
Spake_Start
(
void
)
{
{
...
@@ -1115,9 +1140,9 @@ void Ararm_Init(void)
...
@@ -1115,9 +1140,9 @@ void Ararm_Init(void)
struct
task_components_t
task_comps
[]
=
struct
task_components_t
task_comps
[]
=
{
{
{
0
,
SWITCH_ON
,
ALWAYS_RUN
,
SET_FLAG_0
,
0
,
0
,
main_task
},
//主任务,无延时轮询
{
0
,
SWITCH_ON
,
ALWAYS_RUN
,
SET_FLAG_0
,
0
,
0
,
main_task
},
//主任务,无延时轮询
{
1
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_5
,
Sec_5
,
NULL
},
//使用时间记录
{
1
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_5
,
Sec_5
,
record_dev_used_time
},
//使用时间记录
{
2
,
SWITCH_ON
,
RUN_FLAG_0
,
SET_FLAG_0
,
Ms_200
,
Ms_200
,
sensor_measure_loop
},
//传感器数据采集
{
2
,
SWITCH_ON
,
RUN_FLAG_0
,
SET_FLAG_0
,
Ms_200
,
Ms_200
,
sensor_measure_loop
},
//传感器数据采集
{
3
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Ms_100
,
Ms_100
,
NULL
},
//蜂鸣器控制 (未使用)
{
3
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Ms_100
,
Ms_100
,
spake_control_loop
},
//蜂鸣器控制 (未使用)
{
4
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
delay_confirm_system_mode
},
//空调模式延时确认
{
4
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
delay_confirm_system_mode
},
//空调模式延时确认
{
5
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_10
,
Sec_10
,
delay_confirm_fan_speed
},
//风速延时确认
{
5
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_10
,
Sec_10
,
delay_confirm_fan_speed
},
//风速延时确认
{
6
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Ms_500
,
Ms_500
,
setup_handler
},
//上电延时启动
{
6
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Ms_500
,
Ms_500
,
setup_handler
},
//上电延时启动
...
@@ -1132,8 +1157,8 @@ struct task_components_t task_comps[] =
...
@@ -1132,8 +1157,8 @@ struct task_components_t task_comps[] =
#endif
#endif
{
11
,
SWITCH_OFF
,
RUN_FLAG_1
,
SET_FLAG_0
,
Sec_1
,
Sec_1
,
aging_test
},
//老化测试
{
11
,
SWITCH_OFF
,
RUN_FLAG_1
,
SET_FLAG_0
,
Sec_1
,
Sec_1
,
aging_test
},
//老化测试
{
12
,
SWITCH_ON
,
RUN_FLAG_1
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
task_feed_dog
},
//喂狗
{
12
,
SWITCH_ON
,
RUN_FLAG_1
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
task_feed_dog
},
//喂狗
{
13
,
SWITCH_OFF
,
RUN_FLAG_
1
,
SET_FLAG_0
,
Sec_5
,
Sec_5
,
NULL
},
//离网闪烁五秒 (未使用)
{
13
,
SWITCH_OFF
,
RUN_FLAG_
0
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
task_exit_aging_test
},
//退老化5s快闪
{
14
,
SWITCH_OFF
,
RUN_FLAG_
1
,
SET_FLAG_0
,
Ms_300
,
Ms_300
,
delay_300ms_report_task
},
//延时300ms上报接近感应触发事件
{
14
,
SWITCH_OFF
,
RUN_FLAG_
0
,
SET_FLAG_0
,
Ms_300
,
Ms_300
,
delay_300ms_report_task
},
//延时300ms上报接近感应触发事件
{
15
,
SWITCH_ON
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_5
,
Sec_5
,
shtc3_sensor_measure_loop
},
//温湿度传感器数据采集
{
15
,
SWITCH_ON
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_5
,
Sec_5
,
shtc3_sensor_measure_loop
},
//温湿度传感器数据采集
#if DEVICE_TYPE_FLOOR_HEATING
#if DEVICE_TYPE_FLOOR_HEATING
{
16
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
Tap_Status_Scan
},
//阀门实时动态开关
{
16
,
SWITCH_OFF
,
RUN_FLAG_0
,
SET_FLAG_0
,
Sec_3
,
Sec_3
,
Tap_Status_Scan
},
//阀门实时动态开关
...
@@ -1186,8 +1211,7 @@ void Reset_DelayOFF_timer(u8 device_type)
...
@@ -1186,8 +1211,7 @@ void Reset_DelayOFF_timer(u8 device_type)
***********************************************************************/
***********************************************************************/
void
Power_Off_Scan
(
void
)
void
Power_Off_Scan
(
void
)
{
{
u8
i
;
static
u8
i
=
0
;
u8
display_data
[
3
]
=
{
0
};
for
(
i
=
0
;
i
<
3
;
i
++
)
for
(
i
=
0
;
i
<
3
;
i
++
)
{
{
if
((
i
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
power_off_flage
==
0
))
if
((
i
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
power_off_flage
==
0
))
...
@@ -1217,6 +1241,7 @@ void Power_Off_Scan (void)
...
@@ -1217,6 +1241,7 @@ void Power_Off_Scan (void)
if
(
sKey_Operation
[
i
].
operate_delay_off_min
>=
30
)
if
(
sKey_Operation
[
i
].
operate_delay_off_min
>=
30
)
{
{
u8
display_data
[
3
]
=
{
0
};
sKey_Operation
[
i
].
operate_delay_off_min
=
0
;
sKey_Operation
[
i
].
operate_delay_off_min
=
0
;
if
(
i
==
0
){
//定时关机
if
(
i
==
0
){
//定时关机
if
(
Oled_Display_Info
.
Air_Device
.
power_off_time
>=
5
)
if
(
Oled_Display_Info
.
Air_Device
.
power_off_time
>=
5
)
...
@@ -1298,7 +1323,7 @@ void Reset_Fiter_Time(u8 device_type)
...
@@ -1298,7 +1323,7 @@ void Reset_Fiter_Time(u8 device_type)
***********************************************************************/
***********************************************************************/
void
Filter_Start_Scan
(
void
)
void
Filter_Start_Scan
(
void
)
{
{
u8
i
=
0
;
static
u8
i
=
0
;
for
(
i
=
0
;
i
<
3
;
i
=
i
+
2
)
for
(
i
=
0
;
i
<
3
;
i
=
i
+
2
)
{
{
if
((
i
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
))
if
((
i
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
))
...
@@ -1377,7 +1402,7 @@ void Backlight_Handle (void)
...
@@ -1377,7 +1402,7 @@ void Backlight_Handle (void)
{
{
if
(
sBacklight
.
blacklight_flag
)
if
(
sBacklight
.
blacklight_flag
)
{
{
u16
backlight_temp
=
0
;
static
u16
backlight_temp
=
0
;
backlight_temp
=
Get_Current_Backlight_Time
();
backlight_temp
=
Get_Current_Backlight_Time
();
sBacklight
.
time_blacklight_ms
++
;
sBacklight
.
time_blacklight_ms
++
;
if
(
sBacklight
.
time_blacklight_ms
>=
1000
)
if
(
sBacklight
.
time_blacklight_ms
>=
1000
)
...
@@ -1426,7 +1451,6 @@ void Zigbee_Uart_Error_Handle (void)
...
@@ -1426,7 +1451,6 @@ void Zigbee_Uart_Error_Handle (void)
sUartDetect
.
zigbee_uart_ms
=
0
;
sUartDetect
.
zigbee_uart_ms
=
0
;
}
}
}
}
/*
/*
1:代表当前未处于屏保模式且状态为开,0表示处于关机或者进入屏保模式,
1:代表当前未处于屏保模式且状态为开,0表示处于关机或者进入屏保模式,
获取显示的状态
获取显示的状态
...
@@ -1459,7 +1483,7 @@ u8 IsLcdEnterScreenSave(void)
...
@@ -1459,7 +1483,7 @@ u8 IsLcdEnterScreenSave(void)
//**********************************************************************/
//**********************************************************************/
void
TMR0_IRQHandler
(
void
)
void
TMR0_IRQHandler
(
void
)
{
{
u8
i
=
0
;
static
u8
i
=
0
;
TIMER_ClearIntFlag
(
TIMER0
);
TIMER_ClearIntFlag
(
TIMER0
);
for
(
i
=
0
;
i
<
task_num
;
i
++
)
// 逐个任务时间处理
for
(
i
=
0
;
i
<
task_num
;
i
++
)
// 逐个任务时间处理
{
{
...
@@ -1505,6 +1529,8 @@ void TMR0_IRQHandler(void)
...
@@ -1505,6 +1529,8 @@ void TMR0_IRQHandler(void)
Setup_Mode_Handle
();
//配置模式10s超时
Setup_Mode_Handle
();
//配置模式10s超时
Zigbee_Uart_Error_Handle
();
//zigbee串口故障检测
Zigbee_Uart_Error_Handle
();
//zigbee串口故障检测
//kLedModuleActionDetectCallback(); //zigbee指示灯操作
}
}
/*********************************************************************/
/*********************************************************************/
void
zero_check_init
(
void
)
void
zero_check_init
(
void
)
...
@@ -1529,6 +1555,7 @@ void zero_check_init(void)
...
@@ -1529,6 +1555,7 @@ void zero_check_init(void)
void
TMR1_IRQHandler
(
void
)
//过零点
void
TMR1_IRQHandler
(
void
)
//过零点
{
{
TIMER_ClearIntFlag
(
TIMER1
);
TIMER_ClearIntFlag
(
TIMER1
);
#if ( (DEV_TYPE == 1) &&(DEVICE_TYPE_AIR_CONDITION ==1)) ||(DEVICE_TYPE_FLOOR_HEATING) ||(DEVICE_TYPE_FAN)
switch
(
Tap_Control
.
set_tap
)
switch
(
Tap_Control
.
set_tap
)
{
{
case
RELAY1
:
//新风高风阀 //地暖继电器
case
RELAY1
:
//新风高风阀 //地暖继电器
...
@@ -1608,6 +1635,7 @@ void TMR1_IRQHandler(void) //
...
@@ -1608,6 +1635,7 @@ void TMR1_IRQHandler(void) //
Tap_Control
.
tap_end_flage
=
0
;
Tap_Control
.
tap_end_flage
=
0
;
Timer1_Close
();
Timer1_Close
();
#endif
}
}
#define Delay1us 3//3*0.34
#define Delay1us 3//3*0.34
...
@@ -1629,6 +1657,7 @@ void delay_us( u32 time)
...
@@ -1629,6 +1657,7 @@ void delay_us( u32 time)
//***********************************************************************/
//***********************************************************************/
void
GPIO234_IRQHandler
()
void
GPIO234_IRQHandler
()
{
{
#if ( (DEV_TYPE == 1) &&(DEVICE_TYPE_AIR_CONDITION ==1)) ||(DEVICE_TYPE_FLOOR_HEATING) ||(DEVICE_TYPE_FAN)
if
((
P2
->
INTSRC
&
BIT5
)
>
0
)
//过零信号检测中断 P25
if
((
P2
->
INTSRC
&
BIT5
)
>
0
)
//过零信号检测中断 P25
{
{
P2
->
INTSRC
=
BIT5
;
/* 清中断标志 */
P2
->
INTSRC
=
BIT5
;
/* 清中断标志 */
...
@@ -1658,7 +1687,7 @@ void GPIO234_IRQHandler()
...
@@ -1658,7 +1687,7 @@ void GPIO234_IRQHandler()
}
}
GPIO_DisableEINT0
(
P2
,
5
);
GPIO_DisableEINT0
(
P2
,
5
);
}
}
#endif
}
}
/***********************************************************************
/***********************************************************************
* 函 数 名: Update_Dev_Info
* 函 数 名: Update_Dev_Info
...
@@ -1673,7 +1702,7 @@ void Update_Dev_Info(u8 channel_id)
...
@@ -1673,7 +1702,7 @@ void Update_Dev_Info(u8 channel_id)
u8
i
=
0
;
u8
i
=
0
;
if
(
channel_id
==
1
)
if
(
channel_id
==
1
)
{
{
Device_status
[
i
++
]
=
1
7
;
//长度
Device_status
[
i
++
]
=
1
9
;
//长度
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
error
;
//错误码
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
error
;
//错误码
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
on_off
;
//开关状态
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
on_off
;
//开关状态
...
@@ -1703,6 +1732,8 @@ void Update_Dev_Info(u8 channel_id)
...
@@ -1703,6 +1732,8 @@ void Update_Dev_Info(u8 channel_id)
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
correct_temperature
;
//校准温度
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
correct_temperature
;
//校准温度
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
;
//勿扰模式
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
;
//勿扰模式
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
air_product_id
;
//空调品牌
Device_status
[
i
++
]
=
Oled_Display_Info
.
Air_Device
.
air_type
;
//空调类型
}
}
else
if
(
channel_id
==
2
)
else
if
(
channel_id
==
2
)
{
{
...
@@ -1771,35 +1802,6 @@ void Update_Dev_Info(u8 channel_id)
...
@@ -1771,35 +1802,6 @@ void Update_Dev_Info(u8 channel_id)
}
}
}
}
/////***********************************************************************
////* 函 数 名: Update_Error_Info
////* 功能说明: 更新系统状态信息
////* 形 参:无
////* 返 回 值: 无
////***********************************************************************/
////void Update_Error_Info(void)
////{
//// s16 temp_num = 0;
//// Device_status[0] = 0XE2;
//// Device_status[1] = Time_Power_Off.power_switch_status; //开关状态
//// Device_status[2] = Oled_Display_Info.operation_mode; //运行模式
//// temp_num = Oled_Display_Info.set_temperature; //获得设置温度
//// Device_status[3] = ((temp_num >> 8) &0XFF); //设定温度高字节
//// Device_status[4] = (temp_num & 0XFF); //设定温度低字节
//// temp_num = 0X8000;
//// Device_status[5] = ((temp_num >> 8) &0XFF); //环境温度高字节
//// Device_status[6] = (temp_num & 0XFF); //环境温度低字节
//// Device_status[7] = Oled_Display_Info.wind_speed; //当前风速
//// Device_status[8] = Oled_Display_Info.power_off_time; //定时关机时间
////}
/////***********************************************************************
/////***********************************************************************
////* 函 数 名: transparent_data_analyze
////* 函 数 名: transparent_data_analyze
////* 功能说明: 透传数据解析
////* 功能说明: 透传数据解析
...
@@ -1842,32 +1844,66 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
...
@@ -1842,32 +1844,66 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
}
}
case
OPCODE_GENERAL_BING_DEVICE
:
//绑定设备
case
OPCODE_GENERAL_BING_DEVICE
:
//绑定设备
{
{
u8
bind_type
;
u8
bind_ep
;
u8
temp
=
0
;
u8
temp1
=
0
;
memset
(
arg_data
,
0
,
sizeof
(
arg_data
));
memset
(
arg_data
,
0
,
sizeof
(
arg_data
));
arg_data
[
1
]
=
recv_data
.
ARG
[
0
];
bind_type
=
recv_data
.
ARG
[
0
];
if
(
device_type
!=
recv_data
.
ARG
[
0
])
bind_ep
=
recv_data
.
ARG
[
1
];
temp
=
Oled_Display_Info
.
binding_device
&
0x03
;
temp1
=
((
Oled_Display_Info
.
binding_device
&
0x0c
)
>>
2
);
if
(
bind_type
==
1
)
//绑定
{
{
if
(
recv_data
.
ARG
[
0
]
==
0
)
//解绑
if
(
(
Oled_Display_Info
.
binding_device
&
0xf0
)
==
0
)
//绑定第一个设备
{
{
//如果当前不在主控页面,则切回到主页面
Oled_Display_Info
.
binding_device
=
0x10
;
//绑定设备个数为1
if
(
Oled_Display_Info
.
screen_page
!=
Oled_Display_Info
.
device_type
)
Oled_Display_Info
.
binding_device
|=
bind_ep
;
}
else
if
((
Oled_Display_Info
.
binding_device
&
0xf0
)
==
0x10
)
//绑定第二个设备
{
{
Oled_Display_Info
.
screen_page
=
Oled_Display_Info
.
device_type
;
if
(
temp
!=
bind_ep
)
//显示所有的界面
{
display_current_page
();
temp
=
Oled_Display_Info
.
binding_device
&
0x03
;
Oled_Display_Info
.
binding_device
=
0x20
|
temp
;
//绑定设备个数为2
Oled_Display_Info
.
binding_device
|=
(
bind_ep
<<
2
);
}
}
}
}
else
//绑定
{
arg_data
[
0
]
=
0
;
arg_data
[
0
]
=
0
;
Oled_Display_Info
.
binding_device
=
recv_data
.
ARG
[
0
];
}
}
else
{
//解绑
if
((
Oled_Display_Info
.
binding_device
&
0xf0
)
==
0x10
)
//绑定第一个设备
{
if
(
temp
==
bind_ep
)
Oled_Display_Info
.
binding_device
=
0
;
else
if
(
temp1
==
bind_ep
)
Oled_Display_Info
.
binding_device
=
0
;
}
}
else
{
else
if
((
Oled_Display_Info
.
binding_device
&
0xf0
)
==
0x20
)
//绑定第二个设备
arg_data
[
0
]
=
0xff
;
{
if
(
temp
==
bind_ep
)
{
temp
=
Oled_Display_Info
.
binding_device
&
0x0c
;
Oled_Display_Info
.
binding_device
=
(
0x10
|
temp
);
//绑定设备个数为2
}
}
ack_dev_info
(
recv_data
,
arg_data
,
2
);
else
if
(
temp1
==
bind_ep
)
//printf("bind device result =%d bind device = 0x%x\r\n",arg_data[0] ,Oled_Display_Info.binding_device);
{
temp
=
Oled_Display_Info
.
binding_device
&
0x03
;
Oled_Display_Info
.
binding_device
=
(
0x10
|
temp
);
//绑定设备个数为2
}
}
if
(
Oled_Display_Info
.
screen_page
==
bind_ep
)
{
Oled_Display_Info
.
screen_page
=
Oled_Display_Info
.
device_type
;
//显示所有的界面
display_current_page
();
}
arg_data
[
0
]
=
0
;
}
save_data
();
arg_data
[
1
]
=
recv_data
.
ARG
[
0
];
arg_data
[
2
]
=
recv_data
.
ARG
[
1
];
ack_dev_info
(
recv_data
,
arg_data
,
3
);
break
;
break
;
}
}
case
OPCODE_GENERAL_MCU_DATA_QUERY
:
//zigbee读取mcu信息
case
OPCODE_GENERAL_MCU_DATA_QUERY
:
//zigbee读取mcu信息
...
@@ -1904,9 +1940,16 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
...
@@ -1904,9 +1940,16 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
network_state_machine
(
recv_data
.
ARG
[
0
]);
network_state_machine
(
recv_data
.
ARG
[
0
]);
//清除本地绑定信息
//清除本地绑定信息
if
(
recv_data
.
ARG
[
0
]
==
0
)
if
(
recv_data
.
ARG
[
0
]
==
0
)
{
if
(
Oled_Display_Info
.
binding_device
!=
0
)
{
{
Oled_Display_Info
.
binding_device
=
0
;
//清除绑定信息
Oled_Display_Info
.
binding_device
=
0
;
//清除绑定信息
Oled_Display_Info
.
screen_page
=
Oled_Display_Info
.
device_type
;
//显示所有的界面
display_current_page
();
}
kNetIndicatorOptTrigger
(
0
,
200
,
200
,
(
5
*
1000
)
/
(
200
+
200
),
1
,
0
);
kNetIndicatorOptTrigger
(
0
,
200
,
200
,
(
5
*
1000
)
/
(
200
+
200
),
1
,
0
);
if
(
Oled_Display_Info
.
device_type
==
1
)
if
(
Oled_Display_Info
.
device_type
==
1
)
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
=
0
;
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
=
0
;
...
@@ -2281,13 +2324,13 @@ u8 Get_Channel_Id(u8 device_type)
...
@@ -2281,13 +2324,13 @@ u8 Get_Channel_Id(u8 device_type)
void
Print_Buff
(
u8
*
data
,
u8
len
)
void
Print_Buff
(
u8
*
data
,
u8
len
)
{
{
u8
i
=
0
;
u8
i
=
0
;
printf
(
"
\r\n
Buffer Data : "
);
//
printf("\r\n Buffer Data : ");
while
(
i
<
len
)
while
(
i
<
len
)
{
{
printf
(
"%4x"
,
data
[
i
]);
//
printf("%4x",data[i]);
i
++
;
i
++
;
}
}
printf
(
"
\n
"
);
//
printf("\n");
}
}
Code/海顿-多合一新风面板/APP/User/src/display_common.c
View file @
5459550e
...
@@ -7,11 +7,11 @@
...
@@ -7,11 +7,11 @@
extern
Lcd_Status_Info_t
LCDShowTemp_state_t
;
extern
Lcd_Status_Info_t
LCDShowTemp_state_t
;
#if DEVICE_TYPE_AIR_CONDITION
#if DEVICE_TYPE_AIR_CONDITION
OLED_ALL_DSD
Oled_Display_Info
=
{
1
,
0
,
1
,
0
,
0
,
0x1
0
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
OLED_ALL_DSD
Oled_Display_Info
=
{
1
,
0
,
1
,
0
,
0
,
0x1
1
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
#elif DEVICE_TYPE_FLOOR_HEATING
#elif DEVICE_TYPE_FLOOR_HEATING
OLED_ALL_DSD
Oled_Display_Info
=
{
2
,
0
,
2
,
0
,
0
,
0x1
0
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
OLED_ALL_DSD
Oled_Display_Info
=
{
2
,
0
,
2
,
0
,
0
,
0x1
1
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
#elif DEVICE_TYPE_FAN
#elif DEVICE_TYPE_FAN
OLED_ALL_DSD
Oled_Display_Info
=
{
3
,
0
,
3
,
0
,
0
,
0x1
0
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
0
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
OLED_ALL_DSD
Oled_Display_Info
=
{
3
,
0
,
3
,
0
,
0
,
0x1
1
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
0
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
#endif
#endif
Key_Operation_Status
gKey_Press_Info
=
{
0
};
Key_Operation_Status
gKey_Press_Info
=
{
0
};
// .device_type = 1, //AIR_CONDITION
// .device_type = 1, //AIR_CONDITION
...
@@ -118,9 +118,10 @@ void Display_Current_Temper(u16 temper)
...
@@ -118,9 +118,10 @@ void Display_Current_Temper(u16 temper)
***************************************************/
***************************************************/
static
void
Display_Middle_Digtal
(
u8
control_bits
,
int
data
)
static
void
Display_Middle_Digtal
(
u8
control_bits
,
int
data
)
{
{
u8
temp
[
3
]
=
{
0
};
static
u8
temp
[
3
]
=
{
0
};
u8
is_dispaly
[
3
]
=
{
0
};
static
u8
is_dispaly
[
3
]
=
{
0
};
memset
(
temp
,
0
,
3
);
memset
(
is_dispaly
,
0
,
3
);
if
(
control_bits
==
0x07
)
//显示三个字段
if
(
control_bits
==
0x07
)
//显示三个字段
{
{
temp
[
0
]
=
data
/
100
;
temp
[
0
]
=
data
/
100
;
...
@@ -429,6 +430,9 @@ static void LED_ONOFF(u8 id,u8 onoff)
...
@@ -429,6 +430,9 @@ static void LED_ONOFF(u8 id,u8 onoff)
case
6
:
case
6
:
(
onoff
==
1
)
?
(
LED6
=
1
)
:
(
LED6
=
0
);
(
onoff
==
1
)
?
(
LED6
=
1
)
:
(
LED6
=
0
);
break
;
break
;
case
7
:
(
onoff
==
1
)
?
(
Control_LED_ON_OFF
(
0xff
))
:
(
Control_LED_ON_OFF
(
0
));
break
;
default:
default:
break
;
break
;
...
@@ -535,8 +539,6 @@ void Display_Up_Contend(u8 device_type)
...
@@ -535,8 +539,6 @@ void Display_Up_Contend(u8 device_type)
}
}
void
Fan_Oled_Display
()
void
Fan_Oled_Display
()
{
{
Operate_Led_Button
(
FAN
,
1
);
// 显示可操作的按键
/********************************************
/********************************************
显示“新风”字样
显示“新风”字样
*********************************************/
*********************************************/
...
@@ -565,11 +567,6 @@ void Fan_Oled_Display()
...
@@ -565,11 +567,6 @@ void Fan_Oled_Display()
}
}
void
Floor_Heating_Oled_Display
()
void
Floor_Heating_Oled_Display
()
{
{
//15min老化阶段,全显指示灯
if
(
Oled_Display_Info
.
aging_test_flag
==
2
)
Operate_Led_Button
(
FLOOR_HEATING
,
1
);
// 显示可操作的按键
else
Operate_Led_Button
(
AIR_CONDITION
,
1
);
/********************************************
/********************************************
显示“地暖”字样
显示“地暖”字样
*********************************************/
*********************************************/
...
@@ -598,8 +595,6 @@ void Floor_Heating_Oled_Display()
...
@@ -598,8 +595,6 @@ void Floor_Heating_Oled_Display()
}
}
void
Air_Oled_Display
(
void
)
void
Air_Oled_Display
(
void
)
{
{
Operate_Led_Button
(
AIR_CONDITION
,
1
);
// 显示可操作的按键
/********************************************
/********************************************
显示“空调”字样
显示“空调”字样
*********************************************/
*********************************************/
...
@@ -656,43 +651,53 @@ void Oled_Display_whole(void)
...
@@ -656,43 +651,53 @@ void Oled_Display_whole(void)
void
PowerOff
(
void
)
void
PowerOff
(
void
)
{
{
if
(
Oled_Display_Info
.
screen_page
==
AIR_CONDITION
)
if
(
Oled_Display_Info
.
screen_page
==
AIR_CONDITION
)
{
{
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
BL55072A_Clear
();
BL55072A_Clear
();
LCDShowTemp_state_t
.
LCD_place
=
DEVICE_TYPE_AIRCONDITION_CHAR_DISPLAY
;
if
(
!
IsLcdEnterScreenSave
())
LCDShowTemp_state_t
.
LCD_state
=
ON
;
{
LcdShowCTR
(
LCDShowTemp_state_t
);
Device_Type_Display
(
1
,
0
,
0
);
LCDShowTemp_state_t
.
LCD_place
=
CHILD_LOCK_DISPLAY
;
LCDShowTemp_state_t
.
LCD_place
=
CHILD_LOCK_DISPLAY
;
LCDShowTemp_state_t
.
LCD_state
=
Oled_Display_Info
.
Air_Device
.
lock_flage
;
LCDShowTemp_state_t
.
LCD_state
=
Oled_Display_Info
.
Air_Device
.
lock_flage
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
else
if
(
Oled_Display_Info
.
screen_page
==
FAN
)
}
else
if
(
Oled_Display_Info
.
screen_page
==
FLOOR_HEATING
)
{
{
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
BL55072A_Clear
();
BL55072A_Clear
();
LCDShowTemp_state_t
.
LCD_place
=
DEVICE_TYPE_FAN_CHAR_DISPLAY
;
if
(
!
IsLcdEnterScreenSave
())
LCDShowTemp_state_t
.
LCD_state
=
ON
;
{
LcdShowCTR
(
LCDShowTemp_state_t
);
Device_Type_Display
(
0
,
1
,
0
);
LCDShowTemp_state_t
.
LCD_place
=
CHILD_LOCK_DISPLAY
;
LCDShowTemp_state_t
.
LCD_place
=
CHILD_LOCK_DISPLAY
;
LCDShowTemp_state_t
.
LCD_state
=
Oled_Display_Info
.
FAN
_Device
.
lock_flage
;
LCDShowTemp_state_t
.
LCD_state
=
Oled_Display_Info
.
FLOOR
_Device
.
lock_flage
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
}
else
else
{
{
if
(
Oled_Display_Info
.
FAN_Device
.
on_off
)
if
(
Oled_Display_Info
.
FAN_Device
.
on_off
)
BL55072A_Clear
();
BL55072A_Clear
();
LCDShowTemp_state_t
.
LCD_place
=
DEVICE_TYPE_HEATING_CHAR_DISPLAY
;
if
(
!
IsLcdEnterScreenSave
())
LCDShowTemp_state_t
.
LCD_state
=
ON
;
{
LcdShowCTR
(
LCDShowTemp_state_t
);
Device_Type_Display
(
0
,
0
,
1
);
LCDShowTemp_state_t
.
LCD_place
=
CHILD_LOCK_DISPLAY
;
LCDShowTemp_state_t
.
LCD_place
=
CHILD_LOCK_DISPLAY
;
LCDShowTemp_state_t
.
LCD_state
=
Oled_Display_Info
.
FLOOR
_Device
.
lock_flage
;
LCDShowTemp_state_t
.
LCD_state
=
Oled_Display_Info
.
FAN
_Device
.
lock_flage
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
}
if
(
IsLcdEnterScreenSave
())
{
LCD_CONTROL
(
0
);
//关闭屏幕背景
return
;
}
//关闭上放的显示
Delay_OFF_Rel_Display
(
1
,
0
,
NULL
,
0
,
0
,
0
);
LCDShowTemp_state_t
.
LCD_place
=
SET_MIDDLE_DIGITRON_DISPLAY_01
;
LCDShowTemp_state_t
.
LCD_place
=
SET_MIDDLE_DIGITRON_DISPLAY_01
;
LCDShowTemp_state_t
.
LCD_code_data
=
0
;
LCDShowTemp_state_t
.
LCD_code_data
=
0
;
...
@@ -786,7 +791,7 @@ void EnterScreenSaveMode(void)
...
@@ -786,7 +791,7 @@ void EnterScreenSaveMode(void)
{
{
if
((
Oled_Display_Info
.
Air_Device
.
on_off
)
&&
(
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
==
0
))
if
((
Oled_Display_Info
.
Air_Device
.
on_off
)
&&
(
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
==
0
))
{
{
Operate_Led_Button
(
AIR_CONDITION
,
1
);
// 显示可操作的按键
Operate_Led_Button
(
AIR_CONDITION
,
0
);
// 显示可操作的按键
/********************************************
/********************************************
显示“空调”字样
显示“空调”字样
...
@@ -810,8 +815,6 @@ void EnterScreenSaveMode(void)
...
@@ -810,8 +815,6 @@ void EnterScreenSaveMode(void)
LcdShowCTR
(
LCDShowTemp_state_t
);
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
Operation_LED
(
0
);
//全关led
}
}
else
{
else
{
Operation_LED
(
0
);
//全关led
Operation_LED
(
0
);
//全关led
...
@@ -903,6 +906,7 @@ void Detect_Human_Dispaly(void)
...
@@ -903,6 +906,7 @@ void Detect_Human_Dispaly(void)
{
{
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
{
{
Operate_Led_Button
(
AIR_CONDITION
,
1
);
// 显示可操作的按键
Oled_Display_whole
();
Oled_Display_whole
();
}
}
else
{
else
{
...
@@ -914,6 +918,11 @@ void Detect_Human_Dispaly(void)
...
@@ -914,6 +918,11 @@ void Detect_Human_Dispaly(void)
{
{
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
{
{
//15minà??ˉ?×??£?è?????ê?μ?
if
(
Oled_Display_Info
.
aging_test_flag
==
2
)
Operate_Led_Button
(
FLOOR_HEATING
,
1
);
// ??ê??é2ù×÷μ?°′?ü
else
Operate_Led_Button
(
AIR_CONDITION
,
1
);
Oled_Display_whole
();
Oled_Display_whole
();
}
}
else
{
else
{
...
@@ -925,6 +934,7 @@ void Detect_Human_Dispaly(void)
...
@@ -925,6 +934,7 @@ void Detect_Human_Dispaly(void)
{
{
if
(
Oled_Display_Info
.
FAN_Device
.
on_off
)
if
(
Oled_Display_Info
.
FAN_Device
.
on_off
)
{
{
Operate_Led_Button
(
FAN
,
1
);
Oled_Display_whole
();
Oled_Display_whole
();
}
}
else
{
else
{
...
@@ -1126,6 +1136,16 @@ void delay_confirm_system_mode(void)
...
@@ -1126,6 +1136,16 @@ void delay_confirm_system_mode(void)
Displayt_System_Mode
(
Oled_Display_Info
.
FAN_Device
.
system_type
);
Displayt_System_Mode
(
Oled_Display_Info
.
FAN_Device
.
system_type
);
}
}
}
}
void
Fan_speed_and_direct_control
(
u8
windspeed_onoff
,
u8
winddirect_onoff
)
{
LCDShowTemp_state_t
.
LCD_place
=
WIND_DIRECT_CHAR_DISPLAY
;
//关闭风向闪烁
LCDShowTemp_state_t
.
LCD_state
=
winddirect_onoff
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//打开风速
LCDShowTemp_state_t
.
LCD_state
=
windspeed_onoff
;
LcdShowCTR
(
LCDShowTemp_state_t
);
}
/*************************************************
/*************************************************
短按风扇按键操作空调模式
短按风扇按键操作空调模式
***************************************************/
***************************************************/
...
@@ -1138,15 +1158,9 @@ void Fan_Button_Handler(void)
...
@@ -1138,15 +1158,9 @@ void Fan_Button_Handler(void)
press_count
=
1
;
press_count
=
1
;
if
(
press_count
==
1
)
//第一次按下
if
(
press_count
==
1
)
//第一次按下
{
{
LCDShowTemp_state_t
.
LCD_place
=
WIND_DIRECT_CHAR_DISPLAY
;
//关闭风向闪烁
Fan_speed_and_direct_control
(
1
,
0
);
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LcdShowCTR
(
LCDShowTemp_state_t
);
display_wind_direct
(
0
,
0
,
0
);
//关闭风向显示
display_wind_direct
(
0
,
0
,
0
);
//关闭风向显示
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//打开风速
LCDShowTemp_state_t
.
LCD_state
=
ON
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//风速
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//风速
LCDShowTemp_state_t
.
LCD_state
=
FLASHING
;
LCDShowTemp_state_t
.
LCD_state
=
FLASHING
;
...
@@ -1175,13 +1189,7 @@ void Fan_Button_Handler(void)
...
@@ -1175,13 +1189,7 @@ void Fan_Button_Handler(void)
if
(
press_count
==
2
)
//切换风向
if
(
press_count
==
2
)
//切换风向
{
{
press_count
=
0
;
press_count
=
0
;
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//关闭风速闪烁
Fan_speed_and_direct_control
(
0
,
1
);
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LCDShowTemp_state_t
.
LCD_place
=
WIND_DIRECT_CHAR_DISPLAY
;
//打开风向闪烁
LCDShowTemp_state_t
.
LCD_state
=
ON
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LCDShowTemp_state_t
.
LCD_place
=
FAN_SPEED_DIGITRON_DISPLAY_01
;
//关闭风速等级显示
LCDShowTemp_state_t
.
LCD_place
=
FAN_SPEED_DIGITRON_DISPLAY_01
;
//关闭风速等级显示
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
...
@@ -1216,27 +1224,17 @@ void delay_confirm_fan_speed(void)
...
@@ -1216,27 +1224,17 @@ void delay_confirm_fan_speed(void)
{
{
delay_confirm_fan_speed_control
(
0
);
delay_confirm_fan_speed_control
(
0
);
gKey_Press_Info
.
adjust_fan_speed_status
=
0
;
gKey_Press_Info
.
adjust_fan_speed_status
=
0
;
Fan_speed_and_direct_control
(
0
,
0
);
LCDShowTemp_state_t
.
LCD_place
=
WIND_DIRECT_CHAR_DISPLAY
;
//关闭风向字体
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LcdShowCTR
(
LCDShowTemp_state_t
);
display_wind_direct
(
0
,
0
,
0
);
//关闭风向显示
display_wind_direct
(
0
,
0
,
0
);
//关闭风向显示
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//关闭风速字体
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LCDShowTemp_state_t
.
LCD_place
=
WIND_SPEED_CHAR_DISPLAY
;
//关闭风速字体
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LCDShowTemp_state_t
.
LCD_place
=
FAN_SPEED_DIGITRON_DISPLAY_01
;
//关闭风速等级显示
LCDShowTemp_state_t
.
LCD_place
=
FAN_SPEED_DIGITRON_DISPLAY_01
;
//关闭风速等级显示
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LCDShowTemp_state_t
.
LCD_state
=
OFF
;
LcdShowCTR
(
LCDShowTemp_state_t
);
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
void
Set_CMD_Handler
(
u8
device_type
,
u16
opcode
,
u8
*
arg
,
u8
arg_len
)
void
Set_CMD_Handler
(
u8
device_type
,
u16
opcode
,
u8
*
arg
,
u8
arg_len
)
{
{
if
(
arg
==
NULL
)
return
;
switch
(
device_type
)
switch
(
device_type
)
{
{
case
1
:
//空调
case
1
:
//空调
...
@@ -1250,21 +1248,31 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1250,21 +1248,31 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
{
{
//仅仅更新开关状态
//仅仅更新开关状态
Oled_Display_Info
.
Air_Device
.
on_off
=
onoff
;
Oled_Display_Info
.
Air_Device
.
on_off
=
onoff
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
break
;
break
;
}
}
if
(
onoff
==
ON
)
if
(
onoff
==
ON
)
{
{
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
{
{
//Oled_Display_Info.Air_Device.on_off = 1;
Control_OnOff_handler
(
AIR_CONDITION
,
1
);
Oled_Display_whole
();
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_onoff_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
else
else
{
{
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
1
)
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
1
)
{
{
PowerOff
();
Control_OnOff_handler
(
AIR_CONDITION
,
0
);
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_onoff_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
}
}
...
@@ -1275,16 +1283,26 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1275,16 +1283,26 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
case
OPCODE_GENERAL_OPERATION_MODE
:
case
OPCODE_GENERAL_OPERATION_MODE
:
{
{
u8
system_mode
=
arg
[
0
];
u8
system_mode
=
arg
[
0
];
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
return
;
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
{
{
//仅仅更新状态
//仅仅更新状态
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
arg
[
1
]
=
system_mode
;
arg
[
1
]
=
system_mode
;
Oled_Display_Info
.
Air_Device
.
system_type
=
system_mode
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
break
;
break
;
}
}
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
{
{
Displayt_System_Mode
(
system_mode
);
Displayt_System_Mode
(
system_mode
);
Oled_Display_Info
.
Air_Device
.
system_type
=
system_mode
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_system_mode_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
}
}
else
else
...
@@ -1298,10 +1316,14 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1298,10 +1316,14 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
set_temper
=
(
set_temper
<<
8
)
|
(
arg
[
1
]
&
0xff
);
set_temper
=
(
set_temper
<<
8
)
|
(
arg
[
1
]
&
0xff
);
arg
[
1
]
=
set_temper
>>
8
;
arg
[
1
]
=
set_temper
>>
8
;
arg
[
2
]
=
set_temper
&
0xff
;
arg
[
2
]
=
set_temper
&
0xff
;
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
return
;
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
{
{
//仅仅更新状态
//仅仅更新状态
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
Oled_Display_Info
.
Air_Device
.
set_temperature
=
set_temper
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
break
;
break
;
}
}
//通风模式下不可以调节设定温度
//通风模式下不可以调节设定温度
...
@@ -1311,10 +1333,18 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1311,10 +1333,18 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
sKey_Operation
[
0
].
set_temper_temp
=
set_temper
;
sKey_Operation
[
0
].
set_temper_temp
=
set_temper
;
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.5调整到26度时,不管空调的反馈,直接上报
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.5调整到26度时,不管空调的反馈,直接上报
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
{
//else
//Control_AIR_CONDITION_By_RS485(AIR_CMD_SET_TEMPER,set_temper); //控制空调目标温度
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
sKey_Operation
[
0
].
set_temper_temp
=
0xff
;
}
else
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
}
}
else
else
arg
[
0
]
=
0xff
;
arg
[
0
]
=
0xff
;
...
@@ -1324,6 +1354,14 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1324,6 +1354,14 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
{
{
u8
wind_speed
=
arg
[
0
];
u8
wind_speed
=
arg
[
0
];
arg
[
1
]
=
wind_speed
;
arg
[
1
]
=
wind_speed
;
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
return
;
Oled_Display_Info
.
Air_Device
.
wind_speed
=
wind_speed
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_fan_speed_start
();
#else
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
#endif
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
}
}
break
;
break
;
...
@@ -1353,13 +1391,29 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1353,13 +1391,29 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
u8
delay_off_time
=
arg
[
0
];
u8
delay_off_time
=
arg
[
0
];
arg
[
1
]
=
delay_off_time
;
arg
[
1
]
=
delay_off_time
;
if
(
Oled_Display_Info
.
Air_Device
.
on_off
==
0
)
return
;
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
{
//仅仅更新状态
arg
[
0
]
=
0
;
arg
[
1
]
=
delay_off_time
;
Oled_Display_Info
.
Air_Device
.
power_off_time
=
delay_off_time
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
break
;
}
Oled_Display_Info
.
Air_Device
.
power_off_time
=
delay_off_time
;
Oled_Display_Info
.
Air_Device
.
power_off_time
=
delay_off_time
;
Oled_Display_Info
.
Air_Device
.
power_off_flage
=
1
;
if
(
delay_off_time
>
0
)
Oled_Display_Info
.
Air_Device
.
power_off_flage
=
1
;
if
(
(
Get_Display_Status
())
&&
(
delay_off_time
>
0
)
)
if
(
(
Get_Display_Status
())
&&
(
delay_off_time
>
0
)
)
Display_poweroff_time
(
delay_off_time
);
Display_poweroff_time
(
delay_off_time
);
else
if
((
Get_Display_Status
())
&&
(
delay_off_time
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
power_off_flage
))
Delay_OFF_Rel_Display
(
1
,
0
,
NULL
,
0
,
0
,
0
);
if
(
delay_off_time
>
0
)
Oled_Display_Info
.
Air_Device
.
power_off_flage
=
1
;
else
if
(
Oled_Display_Info
.
Air_Device
.
power_off_flage
==
1
)
Oled_Display_Info
.
Air_Device
.
power_off_flage
=
0
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态更新上报
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态更新上报
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
...
@@ -1433,7 +1487,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1433,7 +1487,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
=
no_disturb_mode
;
Oled_Display_Info
.
Air_Device
.
no_disturb_mode
=
no_disturb_mode
;
save_data
();
//保存token
save_data
();
//保存token
if
(
IsLcdEnterScreenSave
()
&&
(
Oled_Display_Info
.
screen_page
==
device_type
)
&&
no_disturb_mode
)
{
LCD_CONTROL
(
0
);
BL55072A_Clear
();
}
else
if
(
IsLcdEnterScreenSave
()
&&
(
no_disturb_mode
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
on_off
))
{
LCD_CONTROL
(
1
);
EnterScreenSaveMode
();
}
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态更新上报
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态更新上报
}
}
...
@@ -1452,6 +1515,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1452,6 +1515,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
{
{
//仅仅更新开关状态
//仅仅更新开关状态
Oled_Display_Info
.
FLOOR_Device
.
on_off
=
onoff
;
Oled_Display_Info
.
FLOOR_Device
.
on_off
=
onoff
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
break
;
break
;
}
}
if
(
onoff
==
ON
)
if
(
onoff
==
ON
)
...
@@ -1480,12 +1544,15 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1480,12 +1544,15 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
case
OPCODE_GENERAL_OPERATION_MODE
:
case
OPCODE_GENERAL_OPERATION_MODE
:
{
{
u8
system_mode
=
arg
[
0
];
u8
system_mode
=
arg
[
0
];
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
==
0
)
return
;
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
{
{
//仅仅更新状态
//仅仅更新状态
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
arg
[
1
]
=
system_mode
;
arg
[
1
]
=
system_mode
;
Oled_Display_Info
.
FLOOR_Device
.
system_type
=
system_mode
;
Oled_Display_Info
.
FLOOR_Device
.
system_type
=
system_mode
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
break
;
break
;
}
}
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
...
@@ -1506,11 +1573,14 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1506,11 +1573,14 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
u16
set_temper
=
((
u16
)
arg
[
0
])
<<
8
|
arg
[
1
];
u16
set_temper
=
((
u16
)
arg
[
0
])
<<
8
|
arg
[
1
];
arg
[
1
]
=
set_temper
>>
8
;
arg
[
1
]
=
set_temper
>>
8
;
arg
[
2
]
=
set_temper
&
0xff
;
arg
[
2
]
=
set_temper
&
0xff
;
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
==
0
)
return
;
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
{
{
//仅仅更新状态
//仅仅更新状态
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
Oled_Display_Info
.
FLOOR_Device
.
set_temperature
=
set_temper
;
Oled_Display_Info
.
FLOOR_Device
.
set_temperature
=
set_temper
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
break
;
break
;
}
}
if
(
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
&&
(
Oled_Display_Info
.
FLOOR_Device
.
system_type
==
SYSTEM_MODE_MANUAL
)
)
if
(
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
)
&&
(
Oled_Display_Info
.
FLOOR_Device
.
system_type
==
SYSTEM_MODE_MANUAL
)
)
...
@@ -1554,11 +1624,29 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1554,11 +1624,29 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
u8
delay_off_time
=
arg
[
0
];
u8
delay_off_time
=
arg
[
0
];
arg
[
1
]
=
delay_off_time
;
arg
[
1
]
=
delay_off_time
;
if
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
==
0
)
return
;
if
(
Oled_Display_Info
.
screen_page
!=
device_type
)
{
//仅仅更新状态
arg
[
0
]
=
0
;
arg
[
1
]
=
delay_off_time
;
Oled_Display_Info
.
FLOOR_Device
.
power_off_time
=
delay_off_time
;
Oled_Display_Info
.
FLOOR_Device
.
power_off_time
=
delay_off_time
;
if
(
delay_off_time
>
0
)
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
Oled_Display_Info
.
FLOOR_Device
.
power_off_flage
=
1
;
break
;
}
Oled_Display_Info
.
FLOOR_Device
.
power_off_time
=
delay_off_time
;
if
(
(
Get_Display_Status
())
&&
(
delay_off_time
>
0
)
)
if
(
(
Get_Display_Status
())
&&
(
delay_off_time
>
0
)
)
Display_poweroff_time
(
delay_off_time
);
Display_poweroff_time
(
delay_off_time
);
else
if
((
Get_Display_Status
())
&&
(
delay_off_time
==
0
)
&&
(
Oled_Display_Info
.
FLOOR_Device
.
power_off_flage
))
Delay_OFF_Rel_Display
(
1
,
0
,
NULL
,
0
,
0
,
0
);
if
(
delay_off_time
>
0
)
Oled_Display_Info
.
FLOOR_Device
.
power_off_flage
=
1
;
else
if
(
Oled_Display_Info
.
FLOOR_Device
.
power_off_flage
==
1
)
Oled_Display_Info
.
FLOOR_Device
.
power_off_flage
=
0
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
...
@@ -1608,7 +1696,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1608,7 +1696,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg
[
1
]
=
no_disturb_mode
;
arg
[
1
]
=
no_disturb_mode
;
Oled_Display_Info
.
FLOOR_Device
.
no_disturb_mode
=
no_disturb_mode
;
Oled_Display_Info
.
FLOOR_Device
.
no_disturb_mode
=
no_disturb_mode
;
if
(
IsLcdEnterScreenSave
()
&&
(
Oled_Display_Info
.
screen_page
==
device_type
)
&&
no_disturb_mode
)
{
LCD_CONTROL
(
0
);
BL55072A_Clear
();
}
else
if
(
IsLcdEnterScreenSave
()
&&
(
no_disturb_mode
==
0
)
&&
(
Oled_Display_Info
.
FLOOR_Device
.
on_off
))
{
LCD_CONTROL
(
1
);
EnterScreenSaveMode
();
}
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
2
);
save_data
();
//保存token
save_data
();
//保存token
...
@@ -1629,6 +1726,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1629,6 +1726,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
{
{
//仅仅更新开关状态
//仅仅更新开关状态
Oled_Display_Info
.
FAN_Device
.
on_off
=
onoff
;
Oled_Display_Info
.
FAN_Device
.
on_off
=
onoff
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
break
;
break
;
}
}
if
(
onoff
==
ON
)
if
(
onoff
==
ON
)
...
@@ -1663,6 +1761,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1663,6 +1761,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
arg
[
1
]
=
system_mode
;
arg
[
1
]
=
system_mode
;
Oled_Display_Info
.
FAN_Device
.
system_type
=
system_mode
;
Oled_Display_Info
.
FAN_Device
.
system_type
=
system_mode
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
break
;
break
;
}
}
...
@@ -1692,6 +1791,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1692,6 +1791,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
arg
[
1
]
=
wind_speed
;
arg
[
1
]
=
wind_speed
;
Oled_Display_Info
.
FAN_Device
.
wind_speed
=
wind_speed
;
Oled_Display_Info
.
FAN_Device
.
wind_speed
=
wind_speed
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
break
;
break
;
}
}
...
@@ -1728,6 +1828,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1728,6 +1828,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
arg
[
1
]
=
child_lock
;
arg
[
1
]
=
child_lock
;
Oled_Display_Info
.
FAN_Device
.
lock_flage
=
child_lock
;
Oled_Display_Info
.
FAN_Device
.
lock_flage
=
child_lock
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
break
;
break
;
}
}
Oled_Display_Info
.
FAN_Device
.
lock_flage
=
child_lock
;
Oled_Display_Info
.
FAN_Device
.
lock_flage
=
child_lock
;
...
@@ -1750,13 +1851,20 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1750,13 +1851,20 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
arg
[
1
]
=
delay_off_time
;
arg
[
1
]
=
delay_off_time
;
Oled_Display_Info
.
FAN_Device
.
power_off_time
=
delay_off_time
;
Oled_Display_Info
.
FAN_Device
.
power_off_time
=
delay_off_time
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
break
;
break
;
}
}
Oled_Display_Info
.
FAN_Device
.
power_off_time
=
delay_off_time
;
Oled_Display_Info
.
FAN_Device
.
power_off_time
=
delay_off_time
;
if
(
delay_off_time
>
0
)
Oled_Display_Info
.
FAN_Device
.
power_off_flage
=
1
;
if
(
(
Get_Display_Status
()
)
&&
(
delay_off_time
>
0
))
if
(
(
Get_Display_Status
()
)
&&
(
delay_off_time
>
0
))
Display_poweroff_time
(
delay_off_time
);
Display_poweroff_time
(
delay_off_time
);
else
if
((
Get_Display_Status
())
&&
(
delay_off_time
==
0
)
&&
(
Oled_Display_Info
.
FAN_Device
.
power_off_flage
))
Delay_OFF_Rel_Display
(
1
,
0
,
NULL
,
0
,
0
,
0
);
if
(
delay_off_time
>
0
)
Oled_Display_Info
.
FAN_Device
.
power_off_flage
=
1
;
else
if
(
Oled_Display_Info
.
FAN_Device
.
power_off_flage
==
1
)
Oled_Display_Info
.
FAN_Device
.
power_off_flage
=
0
;
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
}
}
arg
[
0
]
=
0
;
arg
[
0
]
=
0
;
...
@@ -1817,6 +1925,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
...
@@ -1817,6 +1925,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg
[
1
]
=
no_disturb_mode
;
arg
[
1
]
=
no_disturb_mode
;
Oled_Display_Info
.
FAN_Device
.
no_disturb_mode
=
no_disturb_mode
;
Oled_Display_Info
.
FAN_Device
.
no_disturb_mode
=
no_disturb_mode
;
if
(
IsLcdEnterScreenSave
()
&&
(
Oled_Display_Info
.
screen_page
==
device_type
)
&&
no_disturb_mode
)
{
LCD_CONTROL
(
0
);
BL55072A_Clear
();
}
else
if
(
IsLcdEnterScreenSave
()
&&
(
no_disturb_mode
==
0
)
&&
(
Oled_Display_Info
.
FAN_Device
.
on_off
))
{
LCD_CONTROL
(
1
);
EnterScreenSaveMode
();
}
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
3
);
save_data
();
//保存token
save_data
();
//保存token
...
@@ -2134,8 +2252,15 @@ u8 kLedIsBlinking(u8 led_id)
...
@@ -2134,8 +2252,15 @@ u8 kLedIsBlinking(u8 led_id)
{
{
return
(
g_NetOptIndicator
[
led_id
].
blink_cnt
>
0
);
return
(
g_NetOptIndicator
[
led_id
].
blink_cnt
>
0
);
}
}
u8
kAllLedIsBlinking
(
void
)
{
return
(
g_NetOptIndicator
[
7
].
blink_cnt
>
0
);
}
/* DESP: Indicator lamp behavior control interface.
/* DESP: Indicator lamp behavior control interface.
Auth: dingmz_frc.20191108.
Auth: lmm_frc.20201218.
id = 0,网络图标
id 1-6 指示灯1-6
id 7 所有指示灯
*/
*/
void
kNetIndicatorOptTrigger
(
uint8_t
id
,
uint32_t
duration_on_ms
,
uint32_t
duration_off_ms
,
uint32_t
times
,
u8
start
,
u8
end
)
void
kNetIndicatorOptTrigger
(
uint8_t
id
,
uint32_t
duration_on_ms
,
uint32_t
duration_off_ms
,
uint32_t
times
,
u8
start
,
u8
end
)
{
{
...
@@ -2177,7 +2302,7 @@ void kLedModuleActionDetectCallback(void )
...
@@ -2177,7 +2302,7 @@ void kLedModuleActionDetectCallback(void )
u8
i
=
0
;
u8
i
=
0
;
SetNetScanTime
(
SysIndicatorScanTimer
);
SetNetScanTime
(
SysIndicatorScanTimer
);
// PROCESS...
// PROCESS...
for
(
i
=
0
;
i
<
7
;
i
++
)
for
(
i
=
0
;
i
<
8
;
i
++
)
{
{
if
(
g_NetOptIndicator
[
i
].
blink_cnt
>
0
)
{
if
(
g_NetOptIndicator
[
i
].
blink_cnt
>
0
)
{
...
...
Code/海顿-多合一新风面板/APP/User/src/mfg_factort.c
View file @
5459550e
...
@@ -11,6 +11,11 @@ extern u8 boad_test_falg[6];
...
@@ -11,6 +11,11 @@ extern u8 boad_test_falg[6];
u16
g_u16
=
0
;
u16
g_u16
=
0
;
#if 1 // add by dingmz_frc.20201215
extern
u8
g_u8Temp_Buffer
[];
extern
u8
g_u8Temp_Length
;
#endif
void
uart0_data_deal_init
(
void
)
void
uart0_data_deal_init
(
void
)
{
{
memset
(
&
static_transparent_msg_info
,
0
,
sizeof
(
RECIVE_USART_DATA_HANDLE
));
memset
(
&
static_transparent_msg_info
,
0
,
sizeof
(
RECIVE_USART_DATA_HANDLE
));
...
@@ -19,24 +24,19 @@ void uart0_data_deal_init(void)
...
@@ -19,24 +24,19 @@ void uart0_data_deal_init(void)
static
TP_u8
uart_recive_write_buff
(
TP_uc8
*
data
,
TP_uc16
len
)
static
TP_u8
uart_recive_write_buff
(
TP_uc8
*
data
,
TP_uc16
len
)
{
{
TP_u8
rem_serial
=
0
;
TP_u8
rem_serial
=
0
;
if
(
len
>
USART_RECIVE_LEN_DEF
)
{
//DEBUG_USATR1("data too long");
return
0
;
}
if
(
len
<=
MAX_USART_RECIVE_LEN
)
{
rem_serial
=
static_transprent_buff
.
Download_serial_num
;
rem_serial
=
static_transprent_buff
.
Download_serial_num
;
if
(
static_transprent_buff
.
Download_serial_num
>
(
USART_RECIVE_DEPTHS
-
1
))
if
(
static_transprent_buff
.
Download_serial_num
>
(
USART_RECIVE_DEPTHS
-
1
))
{
{
static_transprent_buff
.
Download_serial_num
=
0
;
static_transprent_buff
.
Download_serial_num
=
0
;
rem_serial
=
static_transprent_buff
.
Download_serial_num
;
//add by YWQ
rem_serial
=
static_transprent_buff
.
Download_serial_num
;
//add by YWQ
}
}
memcpy
(
&
static_transprent_buff
.
Usart_buff
[
rem_serial
][
0
],
data
,
len
);
memcpy
(
&
static_transprent_buff
.
Usart_buff
[
rem_serial
][
0
],
data
,
len
);
static_transprent_buff
.
Usart_buff_len
[
static_transprent_buff
.
Download_serial_num
]
=
len
;
static_transprent_buff
.
Usart_buff_len
[
static_transprent_buff
.
Download_serial_num
]
=
len
;
static_transprent_buff
.
Download_serial_num
++
;
static_transprent_buff
.
Download_serial_num
++
;
if
(
static_transprent_buff
.
Download_serial_num
==
static_transprent_buff
.
Buff_send_serial_num
)
if
(
static_transprent_buff
.
Download_serial_num
==
static_transprent_buff
.
Buff_send_serial_num
)
{
{
...
@@ -44,6 +44,7 @@ static TP_u8 uart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
...
@@ -44,6 +44,7 @@ static TP_u8 uart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
static_transprent_buff
.
Download_serial_num
=
rem_serial
;
static_transprent_buff
.
Download_serial_num
=
rem_serial
;
return
0
;
return
0
;
}
}
}
return
1
;
return
1
;
}
}
...
@@ -66,7 +67,7 @@ u8 uart_msg_recive(u8 RcvChar)
...
@@ -66,7 +67,7 @@ u8 uart_msg_recive(u8 RcvChar)
}
}
else
if
(
static_transparent_msg_info
.
Recive_len
==
3
)
else
if
(
static_transparent_msg_info
.
Recive_len
==
3
)
{
{
if
((
RcvChar
<
(
USART_RECIVE_LEN_DEF
-
5
))
&&
(
RcvChar
>
4
))
//长度在正常值之间
if
((
RcvChar
<
(
MAX_USART_RECIVE_LEN
-
5
))
&&
(
RcvChar
>
4
))
//长度在正常值之间
{
{
static_transparent_msg_info
.
Data
[
static_transparent_msg_info
.
Recive_len
++
]
=
RcvChar
;
static_transparent_msg_info
.
Data
[
static_transparent_msg_info
.
Recive_len
++
]
=
RcvChar
;
static_transparent_msg_info
.
Data_len
=
RcvChar
;
static_transparent_msg_info
.
Data_len
=
RcvChar
;
...
@@ -76,7 +77,7 @@ u8 uart_msg_recive(u8 RcvChar)
...
@@ -76,7 +77,7 @@ u8 uart_msg_recive(u8 RcvChar)
static_transparent_msg_info
.
Recive_len
=
0x00
;
//这串数据不对
static_transparent_msg_info
.
Recive_len
=
0x00
;
//这串数据不对
}
}
}
}
else
if
((
static_transparent_msg_info
.
Recive_len
>
3
)
&&
(
static_transparent_msg_info
.
Recive_len
<
(
USART_RECIVE_LEN_DEF
-
2
)))
//接受数据
else
if
((
static_transparent_msg_info
.
Recive_len
>
3
)
&&
(
static_transparent_msg_info
.
Recive_len
<
(
MAX_USART_RECIVE_LEN
-
2
)))
//接受数据
{
{
static_transparent_msg_info
.
Data
[
static_transparent_msg_info
.
Recive_len
++
]
=
RcvChar
;
static_transparent_msg_info
.
Data
[
static_transparent_msg_info
.
Recive_len
++
]
=
RcvChar
;
...
@@ -102,7 +103,7 @@ void uart_msg_deal(void)
...
@@ -102,7 +103,7 @@ void uart_msg_deal(void)
if
(
static_transprent_buff
.
Buff_send_serial_num
!=
static_transprent_buff
.
Download_serial_num
)
if
(
static_transprent_buff
.
Buff_send_serial_num
!=
static_transprent_buff
.
Download_serial_num
)
{
{
if
(
static_transprent_buff
.
Buff_send_serial_num
>
5
)
if
(
(
static_transprent_buff
.
Buff_send_serial_num
>
USART_RECIVE_DEPTHS
)
||
(
static_transprent_buff
.
Download_serial_num
>
USART_RECIVE_DEPTHS
)
)
{
{
return
;
//防止内存溢出导致错误值
return
;
//防止内存溢出导致错误值
}
}
...
@@ -117,15 +118,19 @@ void uart_msg_deal(void)
...
@@ -117,15 +118,19 @@ void uart_msg_deal(void)
static_transprent_buff
.
Buff_send_serial_num
++
;
static_transprent_buff
.
Buff_send_serial_num
++
;
}
}
}
}
u8
Usart_recive_deal
(
TP_uc8
*
data
,
TP_uc16
len
)
u8
Usart_recive_deal
(
TP_uc8
*
data
,
TP_uc8
len
)
{
{
PROTOCOL_DEAL
Usart_protocol_deal
=
{
0
};
PROTOCOL_DEAL
Usart_protocol_deal
=
{
0
};
u8
arg_data
[
20
]
=
{
0
};
u8
arg_data
[
20
]
=
{
0
};
if
(
(
data
==
NULL
)
||
(
len
>
40
))
//printf("66:len = %d\r\n", len);
if
((
data
==
NULL
)
||
(
len
<
6
)
||
(
len
>
MAX_USART_RECIVE_LEN
))
{
{
//printf("non valied msg,discard it all\r\n");
//printf("non valied msg,discard it all\r\n");
return
0
;
return
DEAL_ERROR
;
}
}
//printf("77\r\n");
Usart_protocol_deal
.
SEQ
=
BYTE_MOVE
(
*
(
data
+
5
),
*
(
data
+
6
));
Usart_protocol_deal
.
SEQ
=
BYTE_MOVE
(
*
(
data
+
5
),
*
(
data
+
6
));
// for(i = 0;i<len;i++)
// for(i = 0;i<len;i++)
// printf("data[%d] = %x",i,data[i] );
// printf("data[%d] = %x",i,data[i] );
...
@@ -257,30 +262,30 @@ void proximity_triagger_report(void)
...
@@ -257,30 +262,30 @@ void proximity_triagger_report(void)
void
uart_protocol_send
(
PROTOCOL_SEND_MSG
send_protocol
,
TP_u16
SEQ
)
void
uart_protocol_send
(
PROTOCOL_SEND_MSG
send_protocol
,
TP_u16
SEQ
)
{
{
TP_u8
KK_Buf
[
125
]
=
{
0
};
//
TP_u8 KK_Buf[125] = {0};
TP_u16
KK_CRC16_Num
=
0
;
//计算校验值
TP_u16
KK_CRC16_Num
=
0
;
//计算校验值
memset
(
KK_Buf
,
0
,
sizeof
(
KK_Buf
));
//
memset(KK_Buf,0,sizeof(KK_Buf));
KK_Buf
[
0
]
=
0xAA
;
g_u8Temp_Buffer
[
0
]
=
0xAA
;
KK_Buf
[
1
]
=
0x55
;
g_u8Temp_Buffer
[
1
]
=
0x55
;
KK_Buf
[
2
]
=
(
send_protocol
.
ARG_len
+
7
)
>>
8
;
//长度 7
g_u8Temp_Buffer
[
2
]
=
(
send_protocol
.
ARG_len
+
7
)
>>
8
;
//长度 7
KK_Buf
[
3
]
=
(
send_protocol
.
ARG_len
+
7
)
&
0xff
;
//长度 7
g_u8Temp_Buffer
[
3
]
=
(
send_protocol
.
ARG_len
+
7
)
&
0xff
;
//长度 7
KK_Buf
[
5
]
=
(
SEQ
>>
8
)
&
0xff
;
//序列号H
g_u8Temp_Buffer
[
5
]
=
(
SEQ
>>
8
)
&
0xff
;
//序列号H
KK_Buf
[
6
]
=
(
SEQ
&
0xff
);
//序列号L
g_u8Temp_Buffer
[
6
]
=
(
SEQ
&
0xff
);
//序列号L
KK_Buf
[
4
]
=
send_protocol
.
ControlField
;
//控制域: 不需要ack
g_u8Temp_Buffer
[
4
]
=
send_protocol
.
ControlField
;
//控制域: 不需要ack
KK_Buf
[
7
]
=
send_protocol
.
ARG_len
+
3
;
//长度
g_u8Temp_Buffer
[
7
]
=
send_protocol
.
ARG_len
+
3
;
//长度
KK_Buf
[
8
]
=
send_protocol
.
Channel_ID
;
//下行协议: 信道00
g_u8Temp_Buffer
[
8
]
=
send_protocol
.
Channel_ID
;
//下行协议: 信道00
KK_Buf
[
9
]
=
((
send_protocol
.
Opcode
>>
8
)
&
0xff
);
//下行协议: Opcode_H
g_u8Temp_Buffer
[
9
]
=
((
send_protocol
.
Opcode
>>
8
)
&
0xff
);
//下行协议: Opcode_H
KK_Buf
[
10
]
=
(
send_protocol
.
Opcode
&
0xff
);
//下行协议: Opcode_L
g_u8Temp_Buffer
[
10
]
=
(
send_protocol
.
Opcode
&
0xff
);
//下行协议: Opcode_L
memcpy
(
&
KK_Buf
[
11
],
send_protocol
.
ARG
,
send_protocol
.
ARG_len
);
memcpy
(
&
g_u8Temp_Buffer
[
11
],
send_protocol
.
ARG
,
send_protocol
.
ARG_len
);
//KK_Buf[9] = 0X00;
//KK_Buf[9] = 0X00;
KK_CRC16_Num
=
CreateCrc16_Self
((
TP_uc8
*
)
&
KK_Buf
[
4
],
send_protocol
.
ARG_len
+
7
);
KK_CRC16_Num
=
CreateCrc16_Self
((
TP_uc8
*
)
&
g_u8Temp_Buffer
[
4
],
send_protocol
.
ARG_len
+
7
);
KK_Buf
[
send_protocol
.
ARG_len
+
11
]
=
(
KK_CRC16_Num
>>
8
)
&
0xff
;
//校验值 CRC_H
g_u8Temp_Buffer
[
send_protocol
.
ARG_len
+
11
]
=
(
KK_CRC16_Num
>>
8
)
&
0xff
;
//校验值 CRC_H
KK_Buf
[
send_protocol
.
ARG_len
+
12
]
=
KK_CRC16_Num
&
0xff
;
//校验值 CRC_L
g_u8Temp_Buffer
[
send_protocol
.
ARG_len
+
12
]
=
KK_CRC16_Num
&
0xff
;
//校验值 CRC_L
UART0_Send_Bytes
(
KK_Buf
,
send_protocol
.
ARG_len
+
13
);
UART0_Send_Bytes
(
g_u8Temp_Buffer
,
send_protocol
.
ARG_len
+
13
);
}
}
/*
/*
接收到的数据crc错误回复
接收到的数据crc错误回复
...
@@ -305,7 +310,7 @@ static void send_crc_error_data(TP_u16 seq_data)
...
@@ -305,7 +310,7 @@ static void send_crc_error_data(TP_u16 seq_data)
/*
/*
接收到的数据crc错误回复
接收到的数据crc错误回复
*/
*/
TP_u16
CreateCrc16_Self
(
const
u8
*
msg
,
TP_u
32
len
)
TP_u16
CreateCrc16_Self
(
const
u8
*
msg
,
TP_u
8
len
)
{
{
TP_u16
crc
=
0xFFFF
;
TP_u16
crc
=
0xFFFF
;
TP_u32
i
,
j
=
0
;
TP_u32
i
,
j
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment