Example #1
0
/**
 *
 * main cycle of following algorithm
 *
 */
int MainCycle()
{
struct work_unit* w=algo.head;
do
  {
  if(w==NULL)
    {
    syslog(LOG_ERR, "NULL алгоритм\n");
    go_out();
    };
  fill_time();
  switch(w->type)
        {
        case 't': play_dtmf(time_buffer);
                  break;
        case 'v': play_voice(time_buffer);
                  break;
        case 's': play_wav(w->param);
                  break;
        case 'p': play_pause(w->param);
                  break;
        default:  syslog(LOG_ERR, "Ошибка в структуре алгоритма работы: %c\n", w->type);
                  go_out();
                  break;
        };
  w=w->next_unit;
  } while(w!=NULL);
return(0);
}
Example #2
0
//The interface function to the playing part of the program.
//Input:         
//      fp: file descriptor for the sound device
//      freqs, containing (int)frequency*1000 of the notes you want
//to play. 
//      duration, containing the duration of the note in ms.
//      num_els, total number of elements in freqs and duration arrays.
//Some integers in freqs are special codes for more advanced commands:
//-1: Play pause with the corresponding length in duration-array.
//
void play_sequence(int fp, int freqs[], double duration[], int num_els)
{
    int i;
    int duration_int;
    for (i=0; i<num_els; i++)
    {
        duration_int = (int)duration[i];
        if (freqs[i] == -1)
        {
            play_pause(duration_int);
        }
        else
        {
            play_note(fp, freqs[i], duration_int);
        }
    }
}
Example #3
0
void MainWindow::connectSignalsAndSlots()
{
    //if track info emit e_dane run update function
    connect(info, SIGNAL(dataReady()), this, SLOT(update()));
    //this function load actual track image to label
    connect(load, SIGNAL(image(QPixmap*)), this, SLOT(image(QPixmap*)));
    //this function load next track image to label
    connect(loadNext, SIGNAL(image(QPixmap*)), this, SLOT(imageNext(QPixmap*)));
    //proxy setup
    connect(proxyDial, SIGNAL(data_ok(QNetworkProxy)), this,
			SLOT(setProxy(QNetworkProxy)));
    connect(ui->play_pause, SIGNAL(clicked()), this, SLOT(play_pause()));
    connect(ui->actionO_programie, SIGNAL(triggered()), this, SLOT(about()));
    connect(&tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,
			SLOT(iconClicked(QSystemTrayIcon::ActivationReason)));
    //play on enter key push
    connect(ui->listWidget, SIGNAL(activated(QModelIndex)), this,
			SLOT(on_listWidget_doubleClicked(QModelIndex)));
    connect(ui->actionOpcje, SIGNAL(triggered()), this, SLOT(options()));
}
Example #4
0
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{	
		case WM_FOO_GET_ACTIVE_PLAYLIST_COUNT:
			if(plist_api) return activeplaylist_get_item_count(&plist_api);
			return P_ERROR;

		case WM_FOO_GET_PLAYLIST_ITEM:
		{
			char title[512];
			wchar_t w_title[512];
			if(!ptcomp_api || !plist_api || !pback_api) return P_ERROR;
			if(wParam == -1 && !is_playing(&pback_api)) return P_ERROR;
			int tracknumb = (wParam==-1)?(int)get_playing_item_location(&plist_api):wParam;
			PTITLEFORMAT_OBJECT *t_obj=0;	// Must be 0!!!
			if(!GetWindowText(p_hWnd, title, 512)) return P_ERROR;

			if(compile(&ptcomp_api, &t_obj, title))
			{
				string_free();
				playlist_item_format_title(&plist_api, get_active_playlist(&plist_api), tracknumb, 0, &str,
								&t_obj, 0, display_level_all);
				MultiByteToWideChar(CP_UTF8, 0, str.data, -1, w_title, 512);
				SetWindowTextW(p_hWnd, w_title);
				service_release((PSERVICE_BASE*)t_obj);
				return 0;
			}
			return P_ERROR;
		}

		case WM_FOO_GET_CURRENT_TRACK:
			if(plist_api) return get_playing_item_location(&plist_api);
			return P_ERROR;

		case WM_FOO_ORDER:
			if(plist_api) {playback_order_set_active(&plist_api, wParam); return 0;}
			return P_ERROR;

		case WM_FOO_OPEN:	return main_open(&g_api);
		case WM_FOO_ADD:	return main_add_files(&g_api);
		case WM_FOO_ADDDIR:	return main_add_directory(&g_api);

		case WM_FOO_PLAY:
			if(pback_api) {start_resume(&pback_api); return 0;}
			return P_ERROR;

		case WM_FOO_STOP:
			if(pback_api) {stop(&pback_api); return 0;}
			return P_ERROR;

		case WM_FOO_PLAY_NEXT:
			if(pback_api) {start(&pback_api, track_command_next); return 0;}
			return P_ERROR;

		case WM_FOO_PLAY_PREV:
			if(pback_api) {start(&pback_api, track_command_prev); return 0;}
			return P_ERROR;

		case WM_FOO_PLAY_RANDOM:
			if(pback_api) {start(&pback_api, track_command_rand); return 0;}
			return P_ERROR;

		case WM_FOO_PAUSE:
			if(pback_api) {pause(&pback_api, true); return 0;}
			return P_ERROR;

		case WM_FOO_PLAY_PAUSE:
			if(pback_api) {play_pause(&pback_api); return 0;}
			return P_ERROR;

		case WM_FOO_VOLUME_UP:
			if(pback_api) {volume_up(&pback_api); return 0;}
			return P_ERROR;

		case WM_FOO_VOLUME_DOWN:
			if(pback_api) {volume_down(&pback_api); return 0;}
			return P_ERROR;

		case WM_FOO_GET_VOLUME:
			if(pback_api) return get_volume(&pback_api);
			return P_ERROR;

		case WM_FOO_SET_VOLUME:
			if(pback_api) {set_volume(&pback_api, wParam); return 0;}
			return P_ERROR;

		case WM_FOO_MUTE:
			if(pback_api) {mute(&pback_api); return 0;}
			return P_ERROR;

		case WM_FOO_IS_PLAYING:
			if(pback_api) return (is_playing(&pback_api) && !is_paused(&pback_api));
			return P_ERROR;

		case WM_FOOL_IS_PAUSED:
			if(pback_api) return is_paused(&pback_api);
			return P_ERROR;

		case WM_FOO_GET_STOP_AFTER_CURRENT:
			if(pback_api) return get_stop_after_current(&pback_api);
			return P_ERROR;

		case WM_FOO_SET_STOP_AFTER_CURRENT:
			if(pback_api) {set_stop_after_current(&pback_api, wParam); return 0;}
			return P_ERROR;

		case WM_FOO_PLAYBACK_CAN_SEEK:
			if(pback_api) return playback_can_seek(&pback_api);
			return P_ERROR;

		case WM_FOO_PLAYBACK_SEEK:
			if(pback_api) {playback_seek(&pback_api, wParam); return 0;}
			return P_ERROR;

		case WM_FOO_PLAYBACK_SEEK_DELTA:
			if(pback_api) {playback_seek_delta(&pback_api, wParam); return 0;}
			return P_ERROR;

		case WM_FOO_GET_POSITION:
			if(pback_api) return playback_get_position(&pback_api);
			return P_ERROR;

		case WM_FOO_GET_LENGTH:
			if(pback_api) return playback_get_length(&pback_api);
			return P_ERROR;

		case WM_FOO_EXIT:	return main_exit(&g_api);
		case WM_FOO_ACTIVATE:	return main_activate(&g_api);
		case WM_FOO_HIDE:	return main_hide(&g_api);

		case WM_FOO_PLAY_TRACK:
			if(plist_api) {playlist_execute_default_action(&plist_api, get_active_playlist(&plist_api), wParam); return 0;}
			return P_ERROR;

		case WM_FOO_REGISTER_CALLBACK:
			if(wParam & PLAYBACK_START)			AddCallback((PFCALLBACK)&callbacks, CSTARTING, (HWND)lParam, 0);
			if(wParam & PLAYBACK_DYNAMIC_INFO) 		AddCallback((PFCALLBACK)&callbacks, CDYNAMIC_INFO, (HWND)lParam, 0);
			if(wParam & PLAYBACK_DYNAMIC_INFO_TRACK)	AddCallback((PFCALLBACK)&callbacks, CDYNAMIC_INFO_TRACK, (HWND)lParam, 0);
			if(wParam & PLAYBACK_TIME)			AddCallback((PFCALLBACK)&callbacks, CTIME, (HWND)lParam, 0);
			if(wParam & PLAYBACK_VOLUME_CHANGE)		AddCallback((PFCALLBACK)&callbacks, CVOLUME_CHANGE, (HWND)lParam, 0);
			if(wParam & PLAYBACK_STOP)			AddCallback((PFCALLBACK)&callbacks, CSTOP, (HWND)lParam, 0);
			if(wParam & PLAYBACK_SEEK)			AddCallback((PFCALLBACK)&callbacks, CSEEK, (HWND)lParam, 0);
			if(wParam & PLAYBACK_PAUSE)			AddCallback((PFCALLBACK)&callbacks, CPAUSE, (HWND)lParam, 0);
			if(wParam & PLAYBACK_NEW_TRACK)
			{
				char caption[512];
				if(GetWindowText(p_hWnd, caption, 512))	AddCallback((PFCALLBACK)&callbacks, CNEW_TRACK, (HWND)lParam, caption);
			}
			
			if(wParam & PLAYBACK_EDITED)
			{
				char caption[512];
				if(GetWindowText(p_hWnd, caption, 512))	AddCallback((PFCALLBACK)&callbacks, CEDITED, (HWND)lParam, caption);
			}
			return 0;

		case WM_FOO_UNREGISTER_CALLBACK:
			if(wParam & PLAYBACK_START)			RemoveCallback((PFCALLBACK)&callbacks, CSTARTING, (HWND)lParam);
			if(wParam & PLAYBACK_NEW_TRACK) 		RemoveCallback((PFCALLBACK)&callbacks, CNEW_TRACK, (HWND)lParam);
			if(wParam & PLAYBACK_STOP)			RemoveCallback((PFCALLBACK)&callbacks, CSTOP, (HWND)lParam);
			if(wParam & PLAYBACK_SEEK)			RemoveCallback((PFCALLBACK)&callbacks, CSEEK, (HWND)lParam);
			if(wParam & PLAYBACK_PAUSE)			RemoveCallback((PFCALLBACK)&callbacks, CPAUSE, (HWND)lParam);
			if(wParam & PLAYBACK_EDITED)			RemoveCallback((PFCALLBACK)&callbacks, CEDITED, (HWND)lParam);
			if(wParam & PLAYBACK_DYNAMIC_INFO) 		RemoveCallback((PFCALLBACK)&callbacks, CDYNAMIC_INFO, (HWND)lParam);
			if(wParam & PLAYBACK_DYNAMIC_INFO_TRACK)	RemoveCallback((PFCALLBACK)&callbacks, CDYNAMIC_INFO_TRACK, (HWND)lParam);
			if(wParam & PLAYBACK_TIME)			RemoveCallback((PFCALLBACK)&callbacks, CTIME, (HWND)lParam);
			if(wParam & PLAYBACK_VOLUME_CHANGE)		RemoveCallback((PFCALLBACK)&callbacks, CVOLUME_CHANGE, (HWND)lParam);
			return 0;

		default:		return DefWindowProc(hWnd, message, wParam, lParam);
	}
}
Example #5
0
void wakeUp_User(){
	mp3Player_onoff();
	if(snoozeCounter == 0){
		next_song();
	}
	play_pause();
	_delay_ms(1000);//warten bis mp3Player an ist
	boot_amp();

	bool user_awake = false;
	
	LCD_LED = 1;
	LED_AUSTRALIA = 1;
	LED_NORWAY = 1;
	int secondsStart = seconds;
	while((!btn_light_pushed) && (rotary == 0) && (!btn_drehenc_pushed)){//Könnte auch von Sekundenzähler aufgewacht sein
		goodNight();
		if(check_TimeUpdate());
			update_time();
		if(seconds == secondsStart + 30){
			LCD_LED = 0;
			LED_AUSTRALIA = 0;
			LED_NORWAY = 0;
		}
	}
	
	LCD_LED = 0;
	LED_AUSTRALIA = 0;
	LED_NORWAY = 0;
	
	if(snoozeCounter==0){
		if(btn_light_pushed){
			//while(!btn_light_pushed){_delay_ms(100);}
			start_btnPress();
			while((PINB & (1<<PINB1)) && (btn_press_duration<BTN_PRESS_LONG)){_delay_ms(50);}
			stop_btnPress();
			if(btn_press_duration>=BTN_PRESS_LONG){
				user_awake = true;
			} else {
				reset_alarmLogo();
				print_snoozeLogo();
				update_LCD();

				snooze_alarm();
				snoozeCounter = 1;
			}
		} else {
			reset_alarmLogo();
			print_snoozeLogo();
			update_LCD();
			snooze_alarm();
			snoozeCounter = 1;
		}
	} else {
		while(!user_awake){
			goodNight();
			if(check_TimeUpdate())
				update_time();
			start_btnPress();
			while((PINB & (1<<PINB1)) && (btn_press_duration<BTN_PRESS_LONG)){_delay_ms(50);}
			stop_btnPress();
			if(btn_press_duration>=BTN_PRESS_LONG){
				user_awake = true;
				alarm = OFF;
				reset_alarmLogo();
				reset_snoozeLogo();
				snoozeCounter = 0;
				alarm_hour = saved_alarm_h;
				alarm_minute = saved_alarm_m;
				
			}
		}
	}
	play_pause();//Pause
	shutdown_amp();
	mp3Player_onoff();
}
Example #6
0
void set_audio(){
	btn_drehenc_pushed = false;
	int item = 0;
	clear_pixelMatrix();
	clear_LCD();
	print_symbol(16,17, hakenSymb,108,46);
	int warte_ASCII [strlen("Bitte warten")];
	convertString("Bitte warten", warte_ASCII);
	print_ASCIIString(20,16, warte_ASCII, sizeof(warte_ASCII)/sizeof(warte_ASCII[0]));
	update_LCD();
	mp3Player_onoff();//On
	play_pause();
	_delay_ms(1000);
	boot_amp();
	//Speaker-Symbol aus EEPROM holen
	uint8_t speakerSymb[SPEAKER_WIDTH];
	for(int i=0; i<SPEAKER_WIDTH; i++){
		speakerSymb[i] = pgm_read_byte(&speaker[0][i]);
	}
	clear_pixelMatrix();
	clear_LCD();
	print_symbol(16,17, hakenSymb,108,46);
	print_symbol(24,31,speakerSymb,(128-31)/2,(64-24)/2);
	rotary = 0;
	while(item!=1){
		while(!btn_drehenc_pushed){
			
			item+=rotary;
			item=item%2;
			if(item<0)
			item+=2;
			rotary = 0;
			if(item == 0){
				//ggf. offenes Herz entfernen
				for(int x = 64-HERZ_KLEIN_WIDTH/2; x<64-HERZ_KLEIN_WIDTH/2+2; x++){
					for(int y = 2; y<11; y++)		
						reset_pixel(x,y);
				}
				print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb,64-4, 2);//kleines Herz über Speaker malen
				for(int x = 92; x<92+16; x++){//Großes Herz am Haken entfernen
					for(int y = 2+3*15; y<64; y++)
					reset_pixel(x,y);
				}
				} else {
				print_symbol(16,16, herzSymb, 92, 2+3*15);//Großes Herz am Haken malen
				for(int x = 64-8; x<64+8; x++){//kleines Herz über Speaker entfernen
					for(int y = 2; y<11; y++)
					reset_pixel(x,y);
				}
			}
			update_LCD();
			goodNight();
			check_light();
		}
		btn_drehenc_pushed = false;
		for(int x = 64-8; x<64+8; x++){
			for(int y = 2; y<11; y++)
			reset_pixel(x,y);
		}
		if(item==0){
			print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinOffenSymb,64-HERZ_KLEIN_WIDTH/2, 2);
			update_LCD();
			btn_drehenc_pushed = false;
			while(!btn_drehenc_pushed){
				goodNight();
				if(rotary>0){
					volume(UP);
					rotary = 0;
				} else {
					volume(DOWN);
					rotary = 0;
				}
				check_light();
			}
			btn_drehenc_pushed = false;
		}
	}
	clear_pixelMatrix();
	clear_LCD();
	print_ASCIIString(20,16, warte_ASCII, sizeof(warte_ASCII)/sizeof(warte_ASCII[0]));
	update_LCD();
	shutdown_amp();
	mp3Player_onoff();
}