示例#1
0
int main(void)
{
	int m,od,ext_div;
	int fvco,fout;
	int ret;
	int * freq_table = NULL;
	int flag;
	
	freq_table = init_freq_table(F_MIN, F_MAX, crystal);

#ifdef DEBUG	
	printf(" === Freq table before ===\n");
	show_freq(freq_table);
#endif

	for(ext_div = 0; ext_div < 1024; ext_div++){
		for(od = 0; od <= 2; od++){
				for(m = 1; m < 512; m++){

					fvco = calc_fvco(m, 1);

					if(fvco < FVCO_MIN || fvco > FVCO_MAX){
						continue;
					}

  				fout = calc_fout(fvco, od, ext_div);
					debug("--- fvco: %d, fout: %d, od: %d, m: %d, ext_div: %d\n",fvco,fout, od, m, ext_div);
  				if(fout < F_MIN || fout > F_MAX){
 						debug("=== skip fout %d\n",fout);
  					continue;
					} 
 					debug("--- fout: %d, od: %d, m: %d, ext_div: %d\n",fout,od, m, ext_div);
  				if((fout / (crystal / 1000)) != ((fout / crystal) * 1000))
  					continue;
  				
  				/* get a poper fout */
  				debug("=== found fvco %d, fout %d, m %d, od %d, ext_div, %d\n",
  					fvco,fout,m, od, ext_div);
  				ret = add_freq_to_table(freq_table, fout, fvco, m, od, ext_div);
  				if(ret == 0)// Add successful
  					continue;
  				if(ret == -1)// Alread have this item
  					continue;
  				if(ret == -2)
  					goto FINISH;

			}		
		}
	}

FINISH:
	printf(" ======= Meson8 syspll freq table  =======\n");
	show_freq(freq_table);
	printf(" ======= Meson8 syspll freq table finished =======\n");
	
	free(freq_table);
	return 0;
}
示例#2
0
static int __init test_init(void)
{
	spinlock_t  lock;
	u64 count = 1024*1024*50;
	u64 i;
	//unsigned long start, end;
	unsigned long flags;
	struct timespec start, end;
	uint32_t jiff_s, jiff_e;
	unsigned long long tsc_s, tsc_e;
	int cpu = 0;

	spin_lock_init(&lock);
	set_affinity(cpu);
	show_freq(cpu);
	local_irq_save(flags);

	getnstimeofday(&start);
	jiff_s = jiffies;
	tsc_s = native_read_tsc();
	for(i=0; i<count; i++) {
		spin_lock(&lock);
		spin_unlock(&lock);
	}
	tsc_e = native_read_tsc();
	jiff_e = jiffies;
	getnstimeofday(&end);

	local_irq_restore(flags);
	show_freq(cpu);

	printk(KERN_DEBUG "start: %ld,%ld\n", start.tv_sec, start.tv_nsec);
	printk(KERN_DEBUG "end: %ld,%ld\n", end.tv_sec, end.tv_nsec);
	printk(KERN_DEBUG "offset:%ld, %ld\n", end.tv_sec - start.tv_sec,
		(end.tv_sec - start.tv_sec)*1000000 + (end.tv_nsec - start.tv_nsec)/1000);

	printk(KERN_DEBUG "HZ:%u\n", HZ);
	printk(KERN_DEBUG "Jiffies %u,%u, %u\n", jiff_e, jiff_s, jiffies_to_msecs(jiff_e - jiff_s));

	printk(KERN_DEBUG "TSC %llu,%llu, delta %llu\n", tsc_s, tsc_e, (tsc_e - tsc_s) >> 20);
	return 0;
}
RETURN_CODE display_hd_ui(void)
{
	RETURN_CODE ret = SUCCESS;

	LCD_Clear(LCD_CLEAR_LINE2);
	show_freq(0,0);

    eeprom_save_parameter();

	return ret;
}
RETURN_CODE refresh_fm_ui(void)
{
	RETURN_CODE ret = SUCCESS;
	LCD_Clear(LCD_CLEAR_LINE2);
	ret |= UpdateMetrics();
	show_freq(0,0);

    eeprom_save_parameter();

	return ret;	
}
/****************************************************************************************
fmhd main process
******************************************************************************************/
RETURN_CODE fmhd_amhd_work_mode(void)
{
	RETURN_CODE ret = SUCCESS;

	//u8 temp_str[16];
#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
	static bit hd_flag = 0;
	static u8 display_item_state = 0;
#endif

	if( power_flag ==0)
	{
		power_flag =1;
		fmhd_amhd_initialize();
	}

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
	ret |=fmhd_amhd_key_process();
	
	if(display_item_str_4ms >0)
	{
		//display_refresh_flag = 1;
		return 0;// wait for time up
	}

    if(ber_running_flag == 1)
    {
        fmhd_BER_update_display();
        return 0; // We do not want to leave this screen until we have stopped running the BER test
    }

	 if(display_refresh_flag==1)
	{
		display_refresh_flag=0;
		ret |= display_hd_ui();
	}
	else //if(display_item_str_4ms == 0)
	{
	
		display_item_str_4ms = STATUS_UPDATE_INTERVAL;
		if(item_loop == ITEM_AUTO_ROLL) // display will auto change next next 
		{
			if(work_mode == fmhd)
			{
				if(display_item_state > sizeof(FMHD_DISPLAY_ITEM)/sizeof(FMHD_DISPLAY_ITEM[0])-1)
				{
					display_item_state = 1;
				}
			}
        #ifdef OPTION__INCLUDE_MODE__AMHD
			else if(work_mode == amhd)
			{
				if(display_item_state > sizeof(AMHD_DISPLAY_ITEM)/sizeof(AMHD_DISPLAY_ITEM[0])-1)
				{
					display_item_state = 1;
				}
			}
        #endif // OPTION__INCLUDE_MODE__AMHD		
		}
		else
		{
			display_item_state = item_loop;// fix display special item switched by hold tune knobs
		}

		if(work_mode == fmhd)
		{
			if (display_data_item(FMHD_DISPLAY_ITEM[display_item_state]) == ITEM_NEXT)
			{
				display_item_state ++;
			}   
			ret = UpdateMetrics();
			if(MetricsGetFMHDPtr()->AUDIO_SOURCE != hd_flag)
			{
				hd_flag= MetricsGetFMHDPtr()->AUDIO_SOURCE;
				show_freq(0,0);
			}			 
		}
    #ifdef OPTION__INCLUDE_MODE__AMHD
		else
		{
			if (display_data_item(AMHD_DISPLAY_ITEM[display_item_state]) == ITEM_NEXT)
			{
				display_item_state ++;
			}  
			ret = UpdateMetrics();
			if(MetricsGetAMHDPtr()->AUDIO_SOURCE != hd_flag)
			{
				hd_flag= MetricsGetAMHDPtr()->AUDIO_SOURCE;
				show_freq(0,0);
			}			  
		}
    #endif //OPTION__INCLUDE_MODE__AMHD		
	}
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

#ifdef OPTION__OPERATE_AS_SLAVE_NO_MMI
	ret |= UpdateMetrics();
	ret |= UpdateDataServiceData();
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

    ret |= UpdateServiceList(); // Need to periodically check for updates to the service list - reconfiguration
	return ret;
}
RETURN_CODE fmhd_amhd_key_process(void)
{
	RETURN_CODE ret = SUCCESS;
	if(key_flag==1)
	{
		key_flag = 0;
		display_refresh_flag = 1;
		switch(key_value)
		{
			case TUNE_PRESS_KNOBS:
				item_loop ++;
				if(item_loop>(sizeof(FMHD_ITEM_STR)/sizeof(FMHD_ITEM_STR[0]))-1)
				{
					item_loop = 0;
				}
				show_freq(0,0);
				LCD_Clear(LCD_CLEAR_LINE2);
				LCD_DisplayStr(FMHD_ITEM_STR[item_loop],0,1);	
				display_item_str_4ms = 500;
                loop_display_times = 0;
				break;
			case DOWN_KEY:
			case TUNE_DEC_KNOBS:
                #ifdef OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
                    if(ber_running_flag == 1)
                    {
                        fmhd_ber_mode --;
                        if(fmhd_ber_mode < HD_P1)
                        {
                            fmhd_ber_mode = HD_PIDS_BLOCK;
                        }
                    }
                    else
                    {
                #endif //OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS

				ret |= tune_up_down(0);
                if(ret == SUCCESS)
                {
                    fmhd_key_update_display();
                }

                #ifdef OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
                    }
                #endif //OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS

				break;
			case UP_KEY:
			case TUNE_INC_KNOBS:
                #ifdef OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
                    if(ber_running_flag == 1)
                    {
                        fmhd_ber_mode ++;
                        if(fmhd_ber_mode > HD_PIDS_BLOCK)
                        {
                            fmhd_ber_mode = HD_P1;
                        }
                    }
                    else
                    {
                #endif //OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS

				ret |= tune_up_down(1);
                if(ret == SUCCESS)
                {
                    fmhd_key_update_display();
                }

                #ifdef OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
                    }
                #endif //OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS

				break;
			case HDSEEK_KEY:
			#ifdef OPTION__INCLUDE_MODE__AMHD
				if(work_mode == amhd)
				{
					return SUCCESS;//amhd mode will not support HD station only seeking
				}
			#endif
				if(seek_state == SEEK_NULL)
				{
					fmhd_seekonly ^= 1;
                    LCD_Clear(LCD_CLEAR_ALL);
    		        LCD_DisplayStr("HD-Only Seek\n",0,0);
                    if(fmhd_seekonly)
                    {
                        LCD_DisplayStr("Enabled\n",0,1);
                    }
                    else
                    {
                        LCD_DisplayStr("Disabled\n",0,1);
                    }
                    display_item_str_4ms = 500;
				}
				break;
			case SEEK_UP_KEY:
				if(seek_state == SEEK_NULL)
				{
                    seek_state = SEEK_PROCESS;
					ret|=SeekStart(1,1,fmhd_seekonly);
                    fmhd_key_update_display();
				}
				break;
			case SEEK_DOWN_KEY:
				if(seek_state == SEEK_NULL)
				{
                    seek_state = SEEK_PROCESS;
					ret|=SeekStart(0,1,fmhd_seekonly);
                    fmhd_key_update_display();						
				}
				break;
			case PRESET_INC_KEY:
            case PRESET_DEC_KEY:
				ret |=pset_operate(key_value);
				display_item_str_4ms = 2000;
				break;
			case PRESET_INC_HOLD_KEY:
            case PRESET_DEC_HOLD_KEY:
				ret |=pset_operate(key_value);
				display_item_str_4ms = 1000;
				break;
#ifdef OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
            case DAB_RESCAN_KEY:
                //iBiquity has requested the push botton be used to start a free-running BER test.  The previous 1,000,000 bit sample test is still included in the ATS commands
                if(ber_running_flag == 1)
                {
                    display_item_str_4ms = 3000;
                }
                else
                {
                    Test_StartFreeRunningBER_FMHD();
                }

                ber_running_flag ^= 1;

		
				break;
            case DAB_RESCAN_HOLD_KEY:
                fmhd_split_mode_setting ++;
                if(fmhd_split_mode_setting > 2)
                {
                    fmhd_split_mode_setting = 0;
                }
                ret |= SetProperty(0xE801, fmhd_split_mode_setting); // Test mode for HD split mode rotates through splits
                ret |= Tune(MetricsGetFMHDPtr()->FREQUENCY_10KHZ); //Retune to make the property change take effect
                LCD_Clear(LCD_CLEAR_ALL);
                LCD_DisplayStr("HD-SplitMode\n",0,0);
                LCD_DisplayNum(fmhd_split_mode_setting,0,1);
                display_item_str_4ms = 3000;
                break;
#endif //OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
			default:
                key_flag = 1;display_refresh_flag = 0;
                break;
		}
	}
	return ret;
}
void fmhd_key_update_display()
{
    show_freq(0,0);
    display_item_str_4ms = 500;
}
示例#8
0
void time_update(void)
{
    extern struct tm *time_ptr;
    extern char qsonrstr[];
    extern int bandinx;
    extern int this_second;
    extern int system_secs;
    extern int miniterm;

    char time_buf[11];
    int currentterm = 0;
    static int s = 0;
    static int m = 0;
    static int oldsecs = -1;  	/* trigger immediate update */

    get_time();
    this_second = time_ptr->tm_sec;		/* seconds */
    system_secs = time_ptr->tm_min * 60 + time_ptr->tm_sec;

    if (this_second != oldsecs) {
	/* do it every second */
	oldsecs = this_second;

	if (wpx == 1) {
	    if (minute_timer > 0)
		minute_timer--;
	}

	s = (s + 1) % 2;
	if (s > 0) {		/* every 2 seconds */

	    strftime(time_buf, 10, "%H:%M:%S", time_ptr);
	    time_buf[5] = '\0';

	    if ((time_buf[6] == '1') && (m >= 30)) {

		m = 0;
		getwwv();

	    } else {
		m++;
	    }

	    currentterm = miniterm;
	    miniterm = 0;

	    broadcast_lan();
	    update_line(time_buf);
	    show_freq();
	    clusterinfo();		/* update cluster info (2 seconds) */

	    attron(COLOR_PAIR(C_LOG) | A_STANDOUT);

	    mvprintw(7, 0, logline0);
	    mvprintw(8, 0, logline1);
	    mvprintw(9, 0, logline2);
	    mvprintw(10, 0, logline3);
	    mvprintw(11, 0, logline4);
	    mvprintw(13, 0,
		    "                                                                    ");
	    attron(COLOR_PAIR(C_WINDOW));
	    mvprintw(12, 23, qsonrstr);
	    printcall();

	    showscore();	/* update  score  window every 2 seconds */
	    show_zones(bandinx);
	    miniterm = currentterm;
	}
    }
}
RETURN_CODE fm_am_key_process(void)
{
	RETURN_CODE ret = SUCCESS;
	if(key_flag)
	{
		key_flag = 0;
		display_refresh_flag = 1;
		switch(key_value)
		{
			case SELECT_KEY:
			case TUNE_PRESS_KNOBS:
				item_loop ++;
				LCD_Clear(LCD_CLEAR_LINE2);
				if(work_mode == fmonly)
				{
					if(item_loop>(sizeof(FM_ITEM_STR)/sizeof(FM_ITEM_STR[0]))-1)
					{
						item_loop = 0;
					}
					LCD_DisplayStr(FM_ITEM_STR[item_loop],0,1);	
				}
				#ifdef OPTION__INCLUDE_MODE__AM
				else if(work_mode == am)
				{
					if(item_loop>(sizeof(AM_ITEM_STR)/sizeof(AM_ITEM_STR[0]))-1)
					{
						item_loop = 0;
					}
					LCD_DisplayStr(AM_ITEM_STR[item_loop],0,1);	
				}	
				#endif				
				show_freq(0,0);
				display_item_str_4ms = 500;
                loop_display_times = 0;
				break;
			case DOWN_KEY:
			case TUNE_DEC_KNOBS:
				ret |= tune_up_down(0);
				show_freq(0,0);
				display_item_str_4ms = 500;
				break;
			case UP_KEY:
			case TUNE_INC_KNOBS:
				ret |= tune_up_down(1);
				show_freq(0,0);
				display_item_str_4ms = 500;
				break;
			case SEEK_UP_KEY:
				if(seek_state == SEEK_NULL)
				{
                    seek_state = SEEK_PROCESS;
					ret|=SeekStart(1,1,0);
				}
				break;
			case SEEK_DOWN_KEY:
				if(seek_state == SEEK_NULL)
				{
                    seek_state = SEEK_PROCESS;
					ret|=SeekStart(0,1,0);
				}
				break;
				
			case PRESET_INC_KEY:
            case PRESET_DEC_KEY:
            	ret |=pset_operate(key_value);
				display_item_str_4ms = 1500;
				break;
			case PRESET_INC_HOLD_KEY:
            case PRESET_DEC_HOLD_KEY:
				ret |=pset_operate(key_value);
				display_item_str_4ms = 1000;
				break;
			default:
				display_refresh_flag = 0;
				key_flag = 1;
				break;
		}
	}
	return ret;		
}
void CALLBACK_Updated_Data(SDK_CALLBACKS_UPDATED_DATA_TYPE updatedType)
{
#ifdef OPTION__INCLUDE_MODE__DAB
#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
	u8 i;
	static u16 temp_index =0;
    u8 totalFrequencyIndex;
#endif
#endif

    switch(updatedType)
    {
#ifdef OPTION__INCLUDE_MODE__FM
        case UPDATED_RDS_PI:
			rds_update_ready_item |=UPDATED_RDS_PI_ITEM;
        	break;

        case UPDATED_RDS_PTY:
			rds_update_ready_item |=UPDATED_RDS_PTY_ITEM;
        	break;

        case UPDATED_RDS_RT:
			rds_update_ready_item |=UPDATED_RDS_RT_ITEM;
        	break;

        case UPDATED_RDS_PST:
			rds_update_ready_item |=UPDATED_RDS_PST_ITEM;
        	break;

        case UPDATED_RDS_TIME:
			rds_update_ready_item |=UPDATED_RDS_TIME_ITEM;
        	break;

        case UPDATED_RDS_ALT_FREQ:
			rds_update_ready_item |=UPDATED_RDS_ALT_FREQ_ITEM;
        	break;
#endif //OPTION__INCLUDE_MODE__FM
#ifdef OPTION__INCLUDE_MODE__FMHD
    #ifdef OPTION__DECODE_SIS
        //SIS
        case UPDATED_SIS_SLOGAN:
			sis_update_ready_item |= UPDATED_SIS_SLOGAN_ITEM;
        	break;

        case UPDATED_SIS_UNIVERSAL_SHORT_NAME:
			sis_update_ready_item |= UPDATED_SIS_UNIVERSAL_SHORT_NAME_ITEM;
        	break;

        case UPDATED_SIS_STATION_MESSAGE:
			sis_update_ready_item |= UPDATED_SIS_STATION_MESSAGE_ITEM;
        	break;

        case UPDATED_SIS_STATION_NAME_LONG:
			sis_update_ready_item |= UPDATED_SIS_STATION_NAME_LONG_ITEM;
        	break;

        case UPDATED_SIS_STATION_NAME_SHORT:
			sis_update_ready_item |= UPDATED_SIS_STATION_NAME_SHORT_ITEM;
        	break;

        case UPDATED_SIS_STATION_ID:
			sis_update_ready_item |= UPDATED_SIS_STATION_ID_ITEM;
        	break;

        case UPDATED_SIS_LOC_LAT:
			sis_update_ready_item |= UPDATED_SIS_LOC_LAT_ITEM;
        	break;

        case UPDATED_SIS_LOC_LON:
			sis_update_ready_item |= UPDATED_SIS_LOC_LON_ITEM;
        	break;
    #endif //OPTION__DECODE_SIS
    #ifdef OPTION__DECODE_PSD
        //PSD
        case UPDATED_PSD_TITLE:
			psd_update_ready_item |= UPDATED_PSD_TITLE_ITEM;
        	break;

        case UPDATED_PSD_ARTIST:
			psd_update_ready_item |= UPDATED_PSD_ARTIST_ITEM;
        	break;

        case UPDATED_PSD_ALBUM:
			psd_update_ready_item |= UPDATED_PSD_ALBUM_ITEM;
        	break;

        case UPDATED_PSD_GENRE:
			psd_update_ready_item |= UPDATED_PSD_GENRE_ITEM;
        	break;

    #endif //OPTION__DECODE_PSD
    #ifdef OPTION__DECODE_HD_ALERTS
        case UPDATED_HD_ALERT:
			alert_update_ready_item |= UPDATED_ALERT_ITEM;
        	break;
    #endif //OPTION__DECODE_HD_ALERTS

        case UPDATED_SERVICE_LIST_FAST:	
    	case UPDATED_SERVICE_LIST_AUDIO:
	    case UPDATED_SERVICE_LIST_DATA:

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
				show_freq(0,0);
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI
			break;

#endif //OPTION__INCLUDE_MODE__FMHD
#ifdef OPTION__INCLUDE_MODE__DAB
        case DAB_SERVICE_LIST_REQUIRED_UPDATE:
            if(!dab_scan_flag)//avoid display scroll when tuning not scanning
			{

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
				LCD_Clear(LCD_CLEAR_LINE1);
                LCD_DisplayStr("List Update\n",0,0);
                display_refresh_flag = 1;
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

			}
            break;
//#ifdef OPTION__DAB_SERVICE_LIST_PERSISTENCE
//        case UPDATED_SERVICE_LIST_DAB:
//            eeprom_save_parameter();
//            break;
//#endif //OPTION__DAB_SERVICE_LIST_PERSISTENCE
    #ifdef OPTION__DECODE_DLS
        //DLS
        case UPDATED_DLS_STRING:
			dls_update_ready_item |= UPDATED_DLS_STRING_ITEM;
        	break;
    #endif //OPTION__DECODE_DLS
        case SERVICE_LIST_BUFFER_FULL_ERROR:

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
            LCD_DisplayStr("LIST FULL \n",0,0);
			wait_ms(1000);
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI
            break;

		case DAB_TUNE_SCAN_PROCESS_UPDATE:

#ifdef OPTION__OPERATE_AS_SLAVE_NO_MMI
			seek_scan_process_dispatch();
#endif

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI

			key_scan();
			if(key_flag)
			{
				key_flag = 0;
				switch(key_value)
				{
					case MODE_KEY:
					case ON_OFF_KEY:
					case DAB_RESCAN_KEY:
						ScanBandCancel_DAB();
						LCD_DisplayStr("Stop scan\n",0,0);
						wait_ms(1000);
						break;
					default:break;
				}
			}
			if(!dab_scan_flag)//avoid display scroll when tuning not scanning
			{
				break;
			}
			if(temp_index == MetricsGetDABPtr()->FREQUENCY_INDEX)
			{
				break;
			}
			temp_index = MetricsGetDABPtr()->FREQUENCY_INDEX;

			LCD_DisplayNum(DABServiceListAudioPtr()->SERVICE_COUNT,14,0);

            if(dab_reduced_list_flag)
            {
                totalFrequencyIndex = DAB_NUM_ENSEMBLES_UK_REGION;
            }
            else
            {
                totalFrequencyIndex = DAB_STANDARD__MAX_ENSEMBLES_EUROPE;
            }
			for(i=0;i<16;i++)
			{	
				if((((temp_index+1)*16)/totalFrequencyIndex)>i)
				{
					LCD_DisplayCBD(DEF_SFRECTANGLE,i,1);
				}
				else
				{
					LCD_DisplayCBD(DEF_SERECTANLG,i,1);	
				}			
			}
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI
			break;
        case DAB_TUNE_REQUIRED_UPDATE:

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
            LCD_Clear(LCD_CLEAR_ALL);
    		LCD_DisplayStr("Tuning...\n",0,0);
    		LCD_DisplayStr("Please wait\n",0,1);
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

            break;
		case DAB_TUNE_SCAN_PROCESS_COMPLETE:
#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
				LCD_Clear(LCD_CLEAR_LINE2);
				//LCD_DisplayStr("- Complete -\n",2,1);
				//wait_ms(1000);//comment for speeding up in manual tuning
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI
			break;
//		case EVENT_ENSEMBLE_RECONFIGURATION:
//
//            break;
//        case EVENT_ENSEMBLE_RECONFIGURATION_WARNING:
//
//            break;
//        case EVENT_CURRENT_SERVICE_NO_LONGER_AVAILABLE:
//
//            break;
        case EVENT_FINDING_ALTERNATE_SERVICE:

#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
            LCD_Clear(LCD_CLEAR_ALL);
    		LCD_DisplayStr("Searching\n",0,0);
#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

            break;
    #ifdef OPTION__INCLUDE_FRONT_END_TEST_FUNCTIONS
        case DAB_FRONT_END_CAL_PROCESS_UPDATE:

			#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
            LCD_Clear(LCD_CLEAR_LINE1);
            LCD_DisplayNum(_ANTCAP_DAB,0,0);
			#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

            break;
    #endif
#endif //OPTION__INCLUDE_MODE__DAB

        case EVENT_READY_FOR_FIRMWARE_UPDATE:

			#ifndef OPTION__OPERATE_AS_SLAVE_NO_MMI
            LCD_DisplayStr("FIRMWARE UPDATE\n",0,0);
			#endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

			//wait_ms(1000);
            break;
#ifdef OPTION__INCLUDE_MODE__FM
        case FM_SEEK_PROCESS_UPDATE:
		case AM_SEEK_PROCESS_UPDATE:
			
    #ifdef 	OPTION__OPERATE_AS_SLAVE_NO_MMI
			seek_scan_process_dispatch();
    #else 
            if(work_mode == fmonly)
			{
                fm_freq = MetricsGetFMPtr()->FREQUENCY_10KHZ;
                rds_update_ready_item = 0;
			}    
		#ifdef OPTION__INCLUDE_MODE__AM
			else if(work_mode == am)
			{
				am_freq = MetricsGetAMPtr()->FREQUENCY_1KHZ;
			}
		#endif
		#ifdef OPTION__INCLUDE_MODE__FMHD 
			else if(work_mode == fmhd)
			{
                fmhd_freq = MetricsGetFMHDPtr()->FREQUENCY_10KHZ;
                rds_update_ready_item = 0;
			    sis_update_ready_item = 0;
                psd_update_ready_item = 0;
                alert_update_ready_item = 0;
			}
    	#endif //OPTION__INCLUDE_MODE__FMHD
		#ifdef OPTION__INCLUDE_MODE__AMHD 
			else if(work_mode == amhd)
			{
                amhd_freq = MetricsGetAMHDPtr()->FREQUENCY_1KHZ;
			    sis_update_ready_item = 0;
                psd_update_ready_item = 0;
                alert_update_ready_item = 0;
			}
    	#endif //OPTION__INCLUDE_MODE__FMHD
		    show_freq(0,0);
    #endif //OPTION__OPERATE_AS_SLAVE_NO_MMI

            break;
        
        case FM_SEEK_PROCESS_COMPLETE:
		case AM_SEEK_PROCESS_COMPLETE:
            if(work_mode == fmonly)
			{
				fm_freq = MetricsGetFMPtr()->FREQUENCY_10KHZ;
			}
    #ifdef OPTION__INCLUDE_MODE__FMHD
			else if(work_mode == fmhd)
			{
    
                fmhd_freq = MetricsGetFMHDPtr()->FREQUENCY_10KHZ;
            }
    #endif //OPTION__INCLUDE_MODE__FMHD
	#ifdef OPTION__INCLUDE_MODE__AM
			else if(work_mode == am)
			{
				am_freq = MetricsGetAMPtr()->FREQUENCY_1KHZ;
			}
	#endif
	#ifdef OPTION__INCLUDE_MODE__AMHD
			else if(work_mode == amhd)
			{
				amhd_freq = MetricsGetAMHDPtr()->FREQUENCY_1KHZ;
			}
	#endif
            seek_state = SEEK_NULL;
            display_refresh_flag = 1;
            break;
#endif // OPTION__INCLUDE_MODE__FM
        default:
        	break;
    }
}