16 changed files with 661 additions and 895 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,80 @@ |
|||
////////////////////////////////////////////////////////////////////////////
|
|||
///@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(); |
|||
} |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,33 @@ |
|||
////////////////////////////////////////////////////////////////////////////
|
|||
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
|||
///-------------------------------------------------------------------------
|
|||
/// @file bsp_drv.h
|
|||
/// @brief bsp @ driver config
|
|||
///-------------------------------------------------------------------------
|
|||
/// @version 1.0
|
|||
/// @author CC
|
|||
/// @date 20180331
|
|||
/// @note cc_AS_stc02
|
|||
|
|||
//////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
#ifndef _APP_TASK_Bed_Alarm_H |
|||
#define _APP_TASK_Bed_Alarm_H |
|||
|
|||
#include "../ctask/TTSS_task.h" |
|||
#include "../clib/c_lib.h" |
|||
|
|||
|
|||
typedef struct _s_task_low_power |
|||
{ |
|||
TS_task task; |
|||
}S_TASK_Bed_ALARM; |
|||
|
|||
extern S_TASK_Bed_ALARM _s_task_bed_alarm; |
|||
|
|||
extern void L3_task_bed_alarm_init(void); |
|||
extern void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s); |
|||
|
|||
|
|||
#endif // #ifndef _APP_TASK_Bed_Alarm_H
|
|||
|
@ -0,0 +1,63 @@ |
|||
#include "task_screen_save.h" |
|||
|
|||
|
|||
#define SCREEN_SAVE_LEN 10 |
|||
|
|||
#define EEPROM_WEIGHT_ADDR 0x100 |
|||
|
|||
#define HEAD0 0xa3 |
|||
#define HEAD1 0xa4 |
|||
#define TAIL0 0xa5 |
|||
#define TAIL1 0xa6 |
|||
|
|||
|
|||
SCREEN_SAVE screen_save_arr[SCREEN_SAVE_LEN]; |
|||
|
|||
void screen_save_init() |
|||
{ |
|||
for(i = 0;i < SCREEN_SAVE_LEN; i++) |
|||
{ |
|||
screen_save_arr[i].head[0] = HEAD0; |
|||
screen_save_arr[i].head[1] = HEAD1; |
|||
screen_save_arr[i].kgx10_out = 0; |
|||
screen_save_arr[i].available = 0; |
|||
screen_save_arr[i].tail[0] = TAIL0; |
|||
screen_save_arr[i].tail[1] = TAIL1; |
|||
} |
|||
} |
|||
|
|||
void screen_save_push(U16 weight) |
|||
{ |
|||
int i = 0; |
|||
int free = 0; |
|||
// 从eeprom中取出数组
|
|||
L0_Iap_Read_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr)); |
|||
if(screen_save_arr[0].head[0] != HEAD0 || screen_save_arr[0].head[1] != HEAD1 |
|||
|| screen_save_arr[0].tail[0] != TAIL0 || screen_save_arr[0].tail[1] != TAIL1) |
|||
{ |
|||
screen_save_init(); |
|||
} |
|||
// 遍历寻找空位
|
|||
for(i = 0;i < SCREEN_SAVE_LEN; i++) |
|||
{ |
|||
if(screen_save_arr[i].available =! 1) |
|||
{ |
|||
free = i; |
|||
break; |
|||
} |
|||
} |
|||
// 当都有数据时
|
|||
if(i == SCREEN_SAVE_LEN) |
|||
{ |
|||
for(i = 0; i < SCREEN_SAVE_LEN-1; i++ ) |
|||
{ |
|||
screen_save_arr[i] = screen_save_arr[i+1]; |
|||
} |
|||
free = SCREEN_SAVE_LEN-1; |
|||
} |
|||
// 放到free位置
|
|||
screen_save_arr[free].available = 1; |
|||
screen_save_arr[free].kgx10_out = weight; |
|||
// 把数组放回eeprom中
|
|||
L0_Iap_Program_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr)); |
|||
} |
@ -0,0 +1,30 @@ |
|||
#ifndef _APP_TASK_SCREEN_SAVE_H |
|||
#define _APP_TASK_SCREEN_SAVE_H |
|||
|
|||
#include "../bsp/TTSSbsp/bsp_config.h" |
|||
|
|||
typedef struct |
|||
{ |
|||
U8 head[2]; |
|||
U8 available; |
|||
U16 kgx10_out; |
|||
U8 tail[2]; |
|||
|
|||
}SCREEN_SAVE; |
|||
|
|||
|
|||
typedef struct _s_task_screen_save |
|||
{ |
|||
TS_task task; |
|||
}S_TASK_SCREEN_SAVE; |
|||
|
|||
extern S_TASK_SCREEN_SAVE _s_task_screen_save; |
|||
|
|||
extern void L3_task_screen_save_init(void); |
|||
extern void L3_task_screen_save_handler(S_TASK_Bed_ALARM *s); |
|||
|
|||
|
|||
void screen_save_push(U16 weight); |
|||
|
|||
|
|||
#endif |
Loading…
Reference in new issue