You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

80 lines
2.4 KiB

////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_drv.c
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
#include "task_bedalarm.h"
#include "app_config.h"
#include "../msp/uart/msp_uart1.h"
S_TASK_Bed_ALARM _s_task_bed_alarm;
//=============================================
void L3_task_bed_alarm_init(void)
{
L1_task_init(&_s_task_bed_alarm.task);
L3_task_s_go(_s_task_bed_alarm,D_task_init);
}
#define D_task_STATUS_READ 0x50
#define D_task_WEIGHT_READ_AGAIN 0x51
#define D_task_ALARM_DELETE 0x52
void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s)
{
TTSS_Task_init():
L2_task_go(D_task_STATUS_READ);
//判定是否开启离床报警
TTSS_Task_step(D_task_STATUS_READ):
// if(R.LeaveForbid_flag == LeaveForbid_OPEN)
// {
// R.weight.last = R.weight.kgx10_out * 10; 应该在 按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。
// L2_task_go_Tdelay(D_task_WEIGHT_READ_AGAIN, D_Tdelay_100ms);
// }
//判定是否触发报警
TTSS_Task_step(D_task_WEIGHT_READ_AGAIN):
R.weight.differ = R.weight.last - R.weight.kgx10_out * 10;
//触发报警 //放在该task的第二步
if(R.weight.differ >= 100)
{
R.beep = beep_on;
R.beep_startime = D_sys_now;
L2_task_go_Tdelay(D_task_ALARM_DELETE, 0);
}
//未触发报警
else
{
R.weight.last = R.weight.kgx10_out * 10;
L2_task_go_Tdelay(D_task_WEIGHT_READ_AGAIN, 0);
}
//判定是否解除报警
TTSS_Task_step(D_task_ALARM_DELETE):
//手动解除
// if(R.ForbidDelate_flag == 1)
// {
// R.beep = beep_on;
// R.beep_startime = 0;
// R.LeaveForbid_flag = LeaveForbid_OFF; 应在按键按下时,操作beep还和置位R.LeaveForbid_flag = LeaveForbid_OFF
// }
//超时解除 //放在该task的第一步
else if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(30000))
{
R.beep = beep_on;
R.beep_startime = 0;
R.LeaveForbid_flag = LeaveForbid_OFF;
}
L2_task_go_Tdelay(D_task_STATUS_READ, 0);
TTSS_Task_end();
}