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

📄 mmitimedate.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                break;
            default:
                break;
            }             
        }
        else
        {
            ALARM_FLAG=FALSE;
        }
    }

    alarm_timedate.year=FFS_flashData.latest_alarm.year;
    alarm_timedate.month=FFS_flashData.latest_alarm.month;
    alarm_timedate.day=FFS_flashData.latest_alarm.day;
    alarm_timedate.hour=FFS_flashData.latest_alarm.hour;
    alarm_timedate.minute=FFS_flashData.latest_alarm.minute;
    GetNextMinute(&alarm_timedate, -2, &next);
    if( (next.year==currdate.year)&&(next.month==currdate.month)&&(next.day==currdate.day)&&(next.hour==currclock.hour)&&
        (next.minute==currclock.min) )
    {
        TRACE_EVENT("RTC_DISABLE_IT_ALARM");
        RTC_DISABLE_IT_ALARM;
        //rvf_disable(25);
    }

    //power off detecting and setting power on time		
    if( FFS_flashData.poweroff_switch )
    {
        if( !autopower_flag )
        {
            if( (FFS_flashData.closetime[0] == currclock.hour)&&
                (FFS_flashData.closetime[1] == currclock.min) )
            {
                set_latest_alarm();
                alarm_timedate.year=FFS_flashData.latest_alarm.year;
                alarm_timedate.month=FFS_flashData.latest_alarm.month;
                alarm_timedate.day=FFS_flashData.latest_alarm.day;
                alarm_timedate.hour=FFS_flashData.latest_alarm.hour;
                alarm_timedate.minute=FFS_flashData.latest_alarm.minute;
                GetNextMinute(&alarm_timedate, -1, &next);
                time_date.year=next.year-2000;
                time_date.month=next.month;
                time_date.day=next.day;
                time_date.hour=next.hour;
                time_date.minute=next.minute;
                time_date.mode_12_hour=FALSE;                     
                if( alarm_win||call_data.win_incoming||call_data.win_calling||call_win_flag )
                {
                    RTC_SetAlarm(time_date, path);
                    TIMCREATE_SETFLLAG(tim_win=timCreate(parent_win, 1000, (T_MFW_CB)autopower_tim_cb);)
                    timStart(tim_win);
                }
                else
                {
                    RTC_SetAlarm(time_date, path);
                    ConfirmAutopower();
                }

                autopower_flag=TRUE;
            }
        }
        else autopower_flag=FALSE;
    }
    if( (FFS_flashData.fullhralert==1)&&(currclock.min==0) )
    {
        if( !call_win_flag&&!call_data.win_incoming&&!call_win_flag&&!alarm_win )
        {
            if( !STROKE_FLAG )
            {
                StartPlayByReason(FULLHRALERT,0);     //wms modified 03-03-05	
                STROKE_FLAG=!STROKE_FLAG;
            }
            else
            {
                STROKE_FLAG=!STROKE_FLAG;
            }
        }
    }
    if( currclock.min>59 )
    {
        currclock.min=0;
        currclock.hour++;
    }
    if( currclock.hour>23 )
    {
        currclock.hour=0;
        currdate.day++;
    }
    switch( currdate.month )
    {
    case 2:
        if( (!(currdate.year%4))&&(currdate.year%100)||(!(currdate.year%400)) )
        {
            if( currdate.day>29 )
            {
                currdate.day=0;
                currdate.month++;
            }
        }
        else
        {
            if( currdate.day>28 )
            {
                currdate.day=0;
                currdate.month++;
            }
        }              
        break;
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        if( currdate.day>31 )
        {
            currdate.day=0;
            currdate.month++;
        }
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        if( currdate.day>30 )
        {
            currdate.day=0;
            currdate.month++;
        }
        break;
    }
    if( currdate.month>12 )
    {
        currdate.month=1;
        currdate.year++;
    }
    if( currdate.day<1 )
        currdate.day=1;
    if( currdate.month<1 )
        currdate.month=1;
    if( currdate.year<2000 )
        currdate.year=2000;
    if( currclock.hour<0 )
        currclock.hour=0;
    if( currclock.min<0 )
        currclock.min=0;
}
T_MFW_CB  autopower_tim_cb(MfwEvt e, MfwTim *tc)
{
    if( alarm_win||call_data.win_incoming||call_data.win_calling||call_win_flag )
        timStart(tim_win);
    else
    {
        timStop(tim_win);
        ConfirmAutopower();
    }
}

T_MFW_CB CallAndAlarm_tim_cb(MfwEvt e, MfwTim *tc)
{
    if( call_data.win_incoming||call_data.win_calling||call_win_flag||timer_win )
    {
        timStart(tim_win);
    }
    else
    {
        timDelete(tim_win);
        if( FFS_flashData.latest_alarm.alarm_type==ORDINARY_ALARM )
            alarm_screen();
        else schedule_alarm_screen();
    }
}
/*******************************************************************************

 $Function:  alarm_screen

 $Description:	 displays alarm screen

 $Returns:		none.

 $Arguments:	none
 
*******************************************************************************/
#if 0
void alarm_screen()
{
    T_MFW_HND idle_win = idle_get_window();
    T_DISPLAY_DATA display_info;

    char text[25];


    FFS_flashData.alarm_day = 0;//Alarm no longer set	
    flash_write();
    StartTone();

    sprintf(text, "%02d:%02d", FFS_flashData.latest_alarm.hour, FFS_flashData.latest_alarm.minute);
    display_info.KeyEvents    = KEY_CLEAR|KEY_LEFT|KEY_RIGHT;
    display_info.TextId       = TxtAlarm;
    display_info.TextId2      = 0;
    display_info.TextString   ='\0';
    display_info.TextString2  = text;
    display_info.LeftSoftKey  = TxtNull;
    display_info.RightSoftKey = TxtSoftOK;
    display_info.Time         = FOREVER;
    display_info.Callback     = (T_VOID_FUNC) NULL;

    /* Call Info Screen
    */
    info_dialog( idle_win, &display_info );

}
#endif


void alarm_screen()
{
    T_MFW_HND idle_win = idle_get_window();
    T_MFW_HND win  =alarm_screen_create(idle_win);

    if( win NEQ NULL )
    {
        SEND_EVENT(win, ALARM_ODINARY, 0, 0);
    }
#if 0
    StartTone();

    display_info.KeyEvents    = KEY_CLEAR|KEY_LEFT|KEY_RIGHT;
    display_info.TextId       = TxtAlarm;
    display_info.TextId2      = 0;
    display_info.TextString   ='\0';//FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position].text;
    display_info.TextString2  = '\0';
    display_info.LeftSoftKey  = TxtNull;
    display_info.RightSoftKey = TxtSoftOK;
    display_info.Time         = FOREVER;
    display_info.Callback     = (T_VOID_FUNC) NULL;

    /* Call Info Screen
    */
    info_dialog( idle_win, &display_info );
#endif

}


void schedule_alarm_screen()
{
    T_MFW_HND idle_win = idle_get_window();
    T_MFW_HND win  =alarm_screen_create(idle_win);

    if( win NEQ NULL )
    {
        SEND_EVENT(win, ALARM_SCHEDULE, 0, 0);
    }
}

static T_MFW_HND alarm_screen_create(T_MFW_HND parent_window)
{
    ALARM_DATA* data = (ALARM_DATA *)ALLOC_MEMORY (sizeof (ALARM_DATA));

    T_MFW_WIN * win;

    data->win = win_create (parent_window, 0, MfwWinVisible, (T_MFW_CB)alarm_win_cb);

    TRACE_FUNCTION("alarm_screen_create");

    if( data->win EQ 0 )
        return 0;

    /*
     * Create window handler
     */
    data->mmi_control.dialog    = (T_DIALOG_FUNC)alarm_dialog;
    data->mmi_control.data      = data;
    data->parent_win = parent_window;
    win                         = ((T_MFW_HDR *)data->win)->data;
    win->user                   = (void *) data;    

    alarm_win=data->win;
    /*
     * return window handle
     */
    return data->win;
}


static void alarm_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    ALARM_DATA* data = (ALARM_DATA *)win_data->user;

    data->count=0;
    data->id=event; 
    data->animal_id=FALSE;
    data->Melody_index=FALSE;
    data->AfterCall=0;

//2004.08.02 Added by Cathy for Camera
#ifdef CAMERA_ENABLED
    CamExit();
#endif


    switch( event )
    {
    case ALARM_ODINARY:
    case ALARM_SCHEDULE:
    case ALARM_STROKE:
        TRACE_EVENT("alarm is on");         
        data->kbd = kbd_create(data->win,KEY_ALL|KEY_F4,(T_MFW_CB)alarm_kbd_cb); 
        data->info_time=timCreate(data->win,500,(T_MFW_CB)alarm_tim_cb);
        //  if(call_data.win_incoming||call_data.win_calling||call_win_flag)
        //		{
        //	StartConnectedTone();
        //	timStart(data->info_time);
        //	showAlarmIcon();
        //	winShow(win);
        //	break;
        //	}
        //if(HallStatus())					// 2004.4.16 WYJ MI18800000262
        //{
        //LCD_ON();
        LedLightnessAdjust( 200 );      // 2004.4.2 WYJ fix MI18800000155
        timStart(gtVibator);
        //}
        setOuterState(OUTERIDLESTATE_ALERT,1,0);//2004-04-22 Sunny add
        if( data->id!=ALARM_STROKE )
        {
#ifndef FOR_FTA_CTA
            timStart(data->info_time);      
#endif
            StartPlayByReason(ALARMPLAY,0);
            //StartMelody2(MelodyTablestr[3],0);
            data->Melody_index=TRUE;
            showAlarmIcon();
        }
        else
        {
            //StartTonebypara(5);  xsf changed 2003.01.06
            StartPlayByReason(FULLHRALERT,0);
            //  StartTone();
            break;
        }
        // else
        // 	{
        //        timStart(data->info_time);
        //        StartTone();
        // 	}
        winShow(win);
        break;
    case ALARM_EXIT:
        alarm_destroy(win);
        break;
    default:
        break;
    }
}


static T_MFW_CB  alarm_tim_cb(MfwEvt e, MfwTim *tc)

⌨️ 快捷键说明

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