⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfw_td.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 2 页
字号:

/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         $Workfile:: mfw_td.c       $|
| $Author: root $ CONDAT GmbH           $Revision: 1.1.1.1 $|
| CREATED: 21.09.98                     $Modtime:: 2.03.00 11:49    $|
| STATE  : code                                                      |
+--------------------------------------------------------------------+

   MODULE  : MFW_TD

   PURPOSE : time and date functions

   EXPORT  :

   TO DO   :

   $History:: mfw_td.c                                             $
 * 

*/


#define ENTITY_MFW

#if defined (NEW_FRAME)

#include "typedefs.h"
#include "vsi.h"
#include "custom.h"
#include "gsm.h"

#else

#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"

#endif

#include "mfw_mfw.h"
#include "mfw_sys.h"
#include "drv_tmr.h"
#include "mfw_tim.h"
#include "mfw_td.h"
#include "mfw_win.h"
#include "mfw_acie.h"
#include "dspl.h"


#define TD_STRING_LEN 15

#define ONE_MINUTE 60000

/***************************Prototypes****************************************
**/
void mfw_td_signal (MfwEvt event, void* para); // Used to send event to MMI.
int mfw_td_sign_exec (MfwHdr *cur_elem, MfwEvt event, T_MFW_TD_PARA *para); // Used by mfw_td_signal() function to send event to MMI.
GLOBAL BOOL mfw_td_response_cb (ULONG opc, void * data);
static int tdCommand (U32 cmd, void *h);

BOOL dates_match(T_MFW_DATE* date1, T_MFW_DATE* date2);//returns TRUE if date paarmeters are the same
BOOL times_match(T_MFW_TIME* time1, T_MFW_TIME* time2);//returns TRUE if time parameters are the same
void mfw_td_alarm_callback(void* para);
/***************************global variables****************************************
**/
EXTERN MfwHdr * current_mfw_elem;

T_MFW_TIME current_time;
T_MFW_DATE current_date;


//MfwHnd timer_handle= NULL;

char time_string[TD_STRING_LEN];
char date_string[TD_STRING_LEN];
static int pSlot;                       /* primitive handler slot   */


/***************************Public methods****************************************
**/

/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_init   |
+--------------------------------------------------------------------+

   PURPOSE : initialise time and date and create primitive handler

*/

void mfw_td_init()
{	T_MFW_TIME alarm_time;
	T_MFW_DATE alarm_date;
    


	TRACE_EVENT("mfw_td_init");
	/* 
     * install prim handler     
     */
    pSlot = aci_create(mfw_td_response_cb,NULL);/*put in dummy callback handler*/
    mfwCommand[MfwTypTd] = (MfwCb) tdCommand;

    
/*if clock not cleared*/
	if(!rtc_clock_cleared())
	{	/*get time/date from driver and initialise these*/
		rtc_get_time_date(&current_date, &current_time);
	}
	else
	{
		rtc_get_time_date(&current_date, &current_time);
		/*use a default time/date*/
		current_time.second = 0;
		current_time.minute = 0;
		current_time.hour = 0;

		current_date.year = 2000;
		current_date.month = 1;
		current_date.day = 1;
		mfw_td_set_time(&current_time);
		mfw_td_set_date(&current_date);
		mfw_td_set_time_format(MFW_TIME_FORMAT_24HOUR);
		mfw_td_cancel_alarm();
	}
	rtc_get_alarm(&alarm_date, &alarm_time);
	if (dates_match(&current_date, &alarm_date) && times_match(&current_time, &alarm_time))
	{	mfw_td_signal(MFW_TD_ALARM, NULL);}

	
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_create   |
+--------------------------------------------------------------------+

   PURPOSE : Link callback function with MFW+TD events

*/
T_MFW_HND mfw_td_create(MfwHnd hWin, MfwEvt event, MfwCb cbfunc)
{
    MfwHdr *hdr;
    T_MFW_TD *para;

    TRACE_EVENT("mfw_td_timer_create");

    hdr = (MfwHdr *) mfwAlloc(sizeof(MfwHdr));
    para = (T_MFW_TD *) mfwAlloc(sizeof(T_MFW_TD));

    if (!hdr || !para)
        return 0;

    para->emask = event;
    para->handler = cbfunc;

    hdr->data = para;
    hdr->type = MfwTypTd;

    return mfwInsert((MfwHdr *) hWin,hdr);	


}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_set_time   |
+--------------------------------------------------------------------+

   PURPOSE : set the current time

*/
MfwRes mfw_td_set_time(T_MFW_TIME* time)
{	int result;

	TRACE_EVENT("mfw_td_set_time");
	result = rtc_set_time_date(&current_date, time);
	if (result == 0)
	{	memcpy(&current_time, time, sizeof(T_MFW_TIME));
		return MfwResOk;
	}
	TRACE_EVENT_P1("RTC driver Error:%d", result);
	return MfwResErr;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_set_date   |
+--------------------------------------------------------------------+

   PURPOSE : set the current date

*/
MfwRes mfw_td_set_date(T_MFW_DATE* date)
{	int result;
	TRACE_EVENT("mfw_td_set_date");
	result = rtc_set_time_date(date, &current_time);
	if (result == 0)
	{	
		memcpy(&current_date, date, sizeof(T_MFW_DATE));
		return MfwResOk;
	}
	TRACE_EVENT_P1("RTC driver Error:%d", result);
	
	return MfwResErr;

}

/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_get_clock_str   |
+--------------------------------------------------------------------+

   PURPOSE : returns an ASCII string containing the current time

*/
char* mfw_td_get_clock_str()
{	TRACE_EVENT("mfw_td_get_clock_str");
	rtc_get_time_date(&current_date, &current_time);
	sprintf(time_string, "%02d:%02d", current_time.hour, current_time.minute);
	return time_string;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_get_date_str   |
+--------------------------------------------------------------------+

   PURPOSE : returns an ASCII string containing the current date

*/
char* mfw_td_get_date_str()
{	TRACE_EVENT("mfw_td_get_date_str");
	rtc_get_time_date(&current_date, &current_time);
	sprintf(date_string, "%02d/%02d/%04d", current_date.day, current_date.month, current_date.year);
	return date_string;
}

/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_get_date   |
+--------------------------------------------------------------------+

   PURPOSE : returns the current date in a data structure

*/
T_MFW_DATE* mfw_td_get_date()
{	int result;
	rtc_get_time_date(&current_date, &current_time);	
	TRACE_EVENT("mfw_td_get_date");

	return &current_date;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_get_time   |
+--------------------------------------------------------------------+

   PURPOSE : returns the current time in a data structure

*/
T_MFW_TIME* mfw_td_get_time()
{	
	TRACE_EVENT("mfw_td_get_time");
	rtc_get_time_date(&current_date, &current_time);
	return &current_time;
}



/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_set_alarm   |
+--------------------------------------------------------------------+

   PURPOSE : set alarm to date and time passed to function

*/
MfwRes mfw_td_set_alarm(T_MFW_TIME* time, T_MFW_DATE* date)
{	char debug[50];
	int result = rtc_set_alarm(date, time,mfw_td_alarm_callback);
	TRACE_EVENT("mfw_td_set_alarm");
	sprintf(debug, "alarm Time:%d:%d, date %d/%d%d", time->hour, time->minute, date->day, date->month, date->year);
	TRACE_EVENT(debug);
	
	if (result == 0)
		return MfwResOk;
	TRACE_EVENT_P1("RTC driver Error:%d", result);
	
	return MfwResErr;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         MODULE: MFW_TD            |
| STATE  : code                         ROUTINE: mfw_td_cancel_alarm   |
+--------------------------------------------------------------------+

   PURPOSE : Cancels the alarm setting

*/
MfwRes mfw_td_cancel_alarm()
{	int result =  rtc_unset_alarm();
	TRACE_EVENT("mfw_td_cancel_alarm");
	if (!result)
		return MfwResOk;
	TRACE_EVENT_P1("RTC driver Error:%d", result);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -