📄 alarmer.c
字号:
/****************************************************************
** *
** FILE : Alarmer.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : Cyb 2006.11.25 *
****************************************************************/
#include "includes.h"
#include "errcode.h"
#include "errtask.h"
#include "message.h"
#include "tools.h"
#include "public.h"
#include "timetask.h"
#include "sensor.h"
#include "portdrv.h"
#include "systask.h"
#include "almtask.h"
#include "alarmer.h"
#include "uart_drv.h"
#include "recorder.h"
#include "systask.h"
#include "audio.h"
#include "UartSer.h"
#include "SimuSteer.h"
#include "Predictor.h"
#include "DisplayTask.h"
#include "VolumeControl.h"
#include "PredicTools.h"
/*
********************************************************************************
* DEFINE CONFIG PARAMETERS
********************************************************************************
*/
#define PERIOD_TEST MINUTE, 5
#define PEIROD_DELAY SECOND, 10
#define LEDPARA_TRIGGER PORT_LEDWARN, 10, 2, 3, 0
#define LEDPARA_RESPOND PORT_LEDWARN, 8, 20, 20, 0
#define LEDPARA_INDICATE PORT_LEDRED, 15, 1, 1, 0
static INT16U GetVoiceID(INT16U stanum)
{
INT8U i;
INT8U nums;
INT16U id;
nums = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down;
for(i=0;i< nums;i++)
{
if (stanum == Curstation_Tbl.sta_line[i].Stanum)
{
id = Curstation_Tbl.sta_line[i].AD_id;
break;
}
}
return id;
}
static BOOLEAN IsOpenAdPos_Voice(void)
{
if(AdVoiceIDPara.status_pos == OPEN_)
{
return TRUE;
}
else
{
return FALSE;
}
}
static BOOLEAN IsOpenAdTime_Voice(void)
{
if(AdVoiceIDPara.status_time == OPEN_)
{
return TRUE;
}
else
{
return FALSE;
}
}
static void PlayerLineNumber(INT16U linenum)
{
PlayerNumbers(linenum);
}
static void PlayerTime_hour(INT8U hour)
{
if (hour >=20)
{
Player_A_Number(hour/10);
PlaySingleAudio(FALSE,TRUE,AD_ten);
if((hour%10)>0)
{
Player_A_Number(hour%10);
}
}
else if (hour >=10)
{
PlaySingleAudio(FALSE,TRUE,AD_ten);
if((hour%10)>0)
{
Player_A_Number(hour%10);
}
}
else
{
Player_A_Number(hour);
}
PlaySingleAudio(FALSE,TRUE,AD_dian);
}
static void PlayerStationFd( INT16U stanum)
{
INT16U id;
INT16U AD_id;
INT16U AV_id;
id = GetVoiceID(stanum);
AD_id = AD_ZHANDIAN + id;
PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
if(IsOpenAdPos_Voice())
{
AV_id = AD_ADVOICE1 + AdVoiceIDPara.Adid_pos;
PlaySingleAudio(FALSE,TRUE,AV_id);
PlaySingleAudio(FALSE,TRUE,AD_tixingnin); // 提醒您
}
if(( stanum == SpecailStation.end_sta1) || (stanum == SpecailStation.end_sta1))
{
PlaySingleAudio(FALSE,TRUE,AD_zhongdianzhan); // 终点站
}
PlaySingleAudio(FALSE,TRUE,AD_id);
PlaySingleAudio(FALSE,TRUE,AD_jijiangdaoda); // 即将到达
PlaySingleAudio(FALSE,TRUE,AD_yaoxiachedechengke); // 要下车的乘客
PlaySingleAudio(FALSE,TRUE,AD_zuohaozhunbei); // 请做好准备
}
static void PlayerStationArived(INT16U cursta,INT16U nextsta)
{
INT16U id1,id2;
INT16U AD_id1,AD_id2;
id1 = GetVoiceID(cursta);
AD_id1 = AD_ZHANDIAN + id1;
id2 = GetVoiceID(nextsta);
AD_id2 = AD_ZHANDIAN + id2;
PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
if((cursta == SpecailStation.end_sta1) || (cursta == SpecailStation.end_sta1))
{
PlaySingleAudio(FALSE,TRUE,AD_zhongdianzhan); // 终点站
}
PlaySingleAudio(FALSE,TRUE,AD_id1);
PlaySingleAudio(FALSE,TRUE,AD_daole); // 到了
PlaySingleAudio(FALSE,TRUE,AD_yaoxiachedechengke); // 要下车的乘客
PlaySingleAudio(FALSE,TRUE,AD_daichetingwenhouxiache); // 待车停稳后下车
if((cursta != SpecailStation.end_sta1) && (cursta != SpecailStation.end_sta1))
{
PlaySingleAudio(FALSE,TRUE,AD_xiayizhan); //下一站
PlaySingleAudio(FALSE,TRUE,AD_id2);
}
}
static void PlayerStationStart(INT16U nextsta,INT16U endsta)
{
INT16U id1,id2;
INT16U AD_id1,AD_id2;
INT16U AV_id;
id1 = GetVoiceID(nextsta);
id2 = GetVoiceID(endsta);
AD_id1 = AD_ZHANDIAN + id1;
AD_id2 = AD_ZHANDIAN + id2;
PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
PlaySingleAudio(FALSE,TRUE,AD_huanyingchengzuo); //欢迎乘座
PlayerLineNumber(LineNumPara.linenumber);
PlaySingleAudio(FALSE,TRUE,AD_lu); //路
PlaySingleAudio(FALSE,TRUE,AD_gongjiaoche); //公交车
PlaySingleAudio(FALSE,TRUE,AD_benbanzhongdianzhan);//本班终点站
PlaySingleAudio(FALSE,TRUE,AD_id2);
if(IsOpenAdPos_Voice())
{
AV_id = AD_ADVOICE1 + AdVoiceIDPara.Adid_pos;
PlaySingleAudio(FALSE,TRUE,AV_id);
PlaySingleAudio(FALSE,TRUE,AD_tixingnin); // 提醒您
}
PlaySingleAudio(FALSE,TRUE,AD_xiayizhan); //下一站
PlaySingleAudio(FALSE,TRUE,AD_id1);
PlaySingleAudio(FALSE,TRUE,AD_yaoxiachedechengke); // 要下车的乘客
PlaySingleAudio(FALSE,TRUE,AD_zuohaozhunbei); // 请做好准备
}
static void PlayerBusStart(void)
{
PlaySingleAudio(FALSE,TRUE,AD_cheliangqibu); //车辆起步
PlaySingleAudio(FALSE,TRUE,AD_qinglahaofushou); //请拉好扶手
}
static void PlayerSimuBegin(void)
{
PlaySingleAudio(FALSE,TRUE,AD_huanyingshiyong); // 欢迎使用
PlaySingleAudio(FALSE,TRUE,AD_qidong);
}
static void PlayerSimuEnd(void)
{
PlaySingleAudio(FALSE,TRUE,AD_xiexieshiyong); // 谢谢使用
PlaySingleAudio(FALSE,TRUE,AD_qidong);
}
static void PlayerWandaoFd(void)
{
//PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
PlaySingleAudio(FALSE,TRUE,AD_cheliangzhuanwan); // 车辆即将转弯
PlaySingleAudio(FALSE,TRUE,AD_qinglahaofushou); // 请拉好扶手
}
static void PlayerShangPoFd(void)
{
//PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
PlaySingleAudio(FALSE,TRUE,AD_shangpo); //车辆即将上坡
PlaySingleAudio(FALSE,TRUE,AD_qinglahaofushou); // 请拉好扶手
}
static void PlayerXiaPoFd(void)
{
PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
PlaySingleAudio(FALSE,TRUE,AD_xiapo); // 车辆即将下坡
PlaySingleAudio(FALSE,TRUE,AD_qinglahaofushou); // 请拉好扶手
}
static void PlayerAdObjFd(INT8U ad_id)
{
INT8U adid;
PlaySingleAudio(FALSE,TRUE,AD_TISHIYIN+HitChoicePara.Hit_id); //提示音
adid = AD_ADVOICE2 + ad_id;
PlaySingleAudio(FALSE,TRUE, adid);
}
static void PlayerTimePrompt(INT8U hour)
{
INT16U AV_id;
INT8U i;
for(i=0;i<3;i++)
{
PlaySingleAudio(FALSE,TRUE,AD_tishiyin4);
}
if(IsOpenAdTime_Voice())
{
AV_id = AD_ADVOICE1 + AdVoiceIDPara.Adid_time;
PlaySingleAudio(FALSE,TRUE,AV_id);
PlaySingleAudio(FALSE,TRUE,AD_weininzhengtianbaoshi); // 为您整点报时
}
PlaySingleAudio(FALSE,TRUE,AD_xianzaishibeijing); // 现在是北京时间
PlayerTime_hour(hour);
PlaySingleAudio(FALSE,TRUE,AD_zheng); //整
}
static void PlayerRangzuo(void)
{
PlaySingleAudio(FALSE,TRUE,AD_chengkepengyou);
PlaySingleAudio(FALSE,TRUE,AD_rangzuo);
}
static void PlayerRongji(void)
{
PlaySingleAudio(FALSE,TRUE,AD_chengkepengyou);
PlaySingleAudio(FALSE,TRUE,AD_yongji);
PlaySingleAudio(FALSE,TRUE, AD_xiexiehezuo);
}
static void PlayerLayoutSuccess(void)
{
PlaySingleAudio(FALSE,TRUE,AD_guihuachenggong);
PlayerLineNumber(AlmCurMsg.LMsgPara);
PlaySingleAudio(FALSE,TRUE,AD_lu);
}
static void PlayerLayoutNosta(void)
{
PlaySingleAudio(FALSE,TRUE,AD_havewrongstation);
}
static void PlayerLayoutNoline(void)
{
PlaySingleAudio(FALSE,TRUE,AD_wuxianlu);
}
static void HdlStationFd(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_STATIONFD, AlmCurMsg.LMsgPara, 0);
#endif
PlayerStationFd(AlmCurMsg.LMsgPara);
}
static void HdlStationArived(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_STATIONARIVED, AlmCurMsg.LMsgPara, 0);
#endif
PlayerStationArived(AlmCurMsg.LMsgPara,AlmCurMsg.HMsgPara);
}
static void HdlStationStart(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_STATIONSTART, AlmCurMsg.LMsgPara, 0);
#endif
PlayerStationStart(AlmCurMsg.LMsgPara,AlmCurMsg.HMsgPara);
}
static void HdlSimuBegin(void)
{
PlayerSimuBegin();
}
static void HdlSimuEnd(void)
{
PlayerSimuEnd();
}
static void HdlWandaoFd(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_WANDAOFD, 0, 0);
#endif
PlayerWandaoFd();
}
static void HdlShangPoFd(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_SHANGPOFD, 0, 0);
#endif
PlayerShangPoFd();
}
static void HdlXiaPoFd(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_XIAPOFD, 0, 0);
#endif
PlayerXiaPoFd();
}
static void HdlAdObjFd(void)
{
#if DEBUG_UARTNo_ALARMER <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_ADOBJ, 0, 0);
#endif
PlayerAdObjFd(AlmCurMsg.LMsgPara);
}
static void HdlTimePrompt(void)
{
PlayerTimePrompt(AlmCurMsg.LMsgPara);
}
static void HdlRangzuo(void)
{
#if DEBUG_UARTNo_ALARMER <=1
PrintFromUART( DEBUG_UARTNo_ALARMER, "女士们,先生们,现在车上有乘客需要帮助,请为其让座!\n");
#endif
PlayerRangzuo();
}
static void HdlRongji(void)
{
#if DEBUG_UARTNo_ALARMER <=1
PrintFromUART( DEBUG_UARTNo_ALARMER, "女士们,先生们,现在是乘车高峰,车辆很拥挤,为了大家的方便,请主动往后门移动!\n");
#endif
PlayerRongji();
}
static void HdlReceiveRECCON(void)
{
if(SensorValid_FILTER(_RECCON))
{
ActivateRecorder();
}
else
{
ExitRecorder();
}
}
static void HdlBusStart(void)
{
PlayerBusStart();
}
static void HdlMSG_LAYOUT_SUCCESS(void)
{
PlayerLayoutSuccess();
}
static void HdlMSG_LAYOUT_NOSTA(void)
{
PlayerLayoutNosta();
}
static void HdlMSG_LAYOUT_NOLINE(void)
{
PlayerLayoutNoline();
}
static void HdlMSG_TIMESEC_CHANGE(void)
{
ChangeVolumeInTimeSec();
}
static void HdlMSG_VOLUME_STEPDOWN(void)
{
VolumeStepDown(AlmCurMsg.LMsgPara);
}
static void HdlMSG_VOLUME_STEPUP(void)
{
VolumeStepUp(AlmCurMsg.LMsgPara);
}
static FUNCENTRY_STRUCT functionentry[] = {
MSG_BUSSTATION_STATIONFD, HdlStationFd,
MSG_BUSSTATION_STATIONARIVED, HdlStationArived,
MSG_BUSSTATION_STATIONSTART, HdlStationStart,
MSG_UARTSER_SIMUBEGIN, HdlSimuBegin,
MSG_UARTSER_SIMUEND, HdlSimuEnd,
MSG_OBJECT_SHANGPOFD, HdlShangPoFd,
MSG_OBJECT_WANDAOFD, HdlWandaoFd,
MSG_OBJECT_XIAPOFD, HdlXiaPoFd,
MSG_OBJECT_ADOBJ, HdlAdObjFd,
MSG_TIME_PROMPT, HdlTimePrompt,
MSG_BUSSWORDS_RANGZUO, HdlRangzuo,
MSG_BUSSWORDS_RONGJI, HdlRongji,
MSG_SENSOR_TRIGGERECCON, HdlReceiveRECCON,
MSG_BUSSWORDS_BUSSTART, HdlBusStart,
MSG_LAYOUT_SUCCESS, HdlMSG_LAYOUT_SUCCESS,
MSG_LAYOUT_NOSTA, HdlMSG_LAYOUT_NOSTA,
MSG_LAYOUT_NOLINE, HdlMSG_LAYOUT_NOLINE,
MSG_TIMESEC_CHANGE, HdlMSG_TIMESEC_CHANGE,
MSG_VOLUME_STEPDOWN, HdlMSG_VOLUME_STEPDOWN,
MSG_VOLUME_STEPUP, HdlMSG_VOLUME_STEPUP
};
FUNCENTRY_STRUCT *GetAlarmerEntry(void)
{
return functionentry;
}
INT16U GetAlarmerEntryNum(void)
{
return sizeof(functionentry)/sizeof(functionentry[0]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -