Beispiel #1
0
static void *
t3d_init (Display *dpy, Window window)
{
  struct state *st = (struct state *) calloc (1, sizeof(*st));
  st->dpy = dpy;
  st->window = window;
  st->dpy = dpy;
  st->window = window;
  initialize(st);
  
  initColor(st,st->r,st->g,st->b);
  init_3d(st);
  st->zeit=(struct tm *)malloc(sizeof(struct tm));
  init_kugel(st);
  
  st->startx=st->scrnWidth/2;
  st->starty=st->scrnHeight/2;
  st->scrnH2=st->startx;
  st->scrnW2=st->starty;
  st->vspeed=0;
  
  
  vektorprodukt(st->x,st->y,st->v);
  viewpoint(st/*m,v*/);
  
  setink (BlackPixelOfScreen(st->xgwa.screen));
  XFillRectangle (st->dpy, st->window, st->gc, 0, 0, st->scrnWidth, st->scrnHeight);
  XQueryPointer (st->dpy, st->window, &st->junk_win, &st->junk_win, &st->junk, &st->junk,
		 &st->px, &st->py, &st->kb);
  
  return st;
}
Beispiel #2
0
int main(int argc, char **argv)
{
    glutInitWindowSize(600, 600);

    glutInit(&argc, argv);

    parse_args(argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("Lorenz Attractors");

    init_3d();
    init_graphics();

    /* draw the first POINTMASK points in each color */
    while(rp < POINTMASK) {
	next_line(rv, &rp);
	next_line(bv, &bp);
	next_line(gv, &gp);
	next_line(yv, &yp);
	next_line(mv, &mp);
    }

    eyex[0] = eyex[1] = eyex[2] = 0.;
    eyel[0] = rv[rp][0];
    eyel[1] = rv[rp][1];
    eyel[2] = rv[rp][2];
	
    glPushMatrix();
    move_eye();
    redraw();
    glPopMatrix();

    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Key);
    glutIdleFunc(Draw);
    glutDisplayFunc(Draw);
    glutMainLoop();
    return 0;             /* ANSI C requires main to return int. */
}
Beispiel #3
0
void ENTRYPOINT three_d_init()
{
    tr_mem_open( hInstDLL, "THREE_D" );
    init_3d( &Three_d );
}
Beispiel #4
0
bool UsbAudioControl(void)
{
	uint16_t Msg = 0;
    
#ifndef FUNC_MIXER_SRC_EN
	AudioSampleRateSet(44100);
#endif
    
#ifdef FUNC_USB_AUDIO_EN
	if(gSys.CurModuleID == MODULE_ID_USB_AUDIO)
	{
		APP_DBG("Enter usb-audio\n");
	}
#endif

#ifdef FUNC_USB_READER_EN
	if(gSys.CurModuleID == MODULE_ID_USB_READER)
	{
		APP_DBG("Enter sd reader\n");
	}
#endif

#ifdef FUNC_USB_AUDIO_READER_EN
	if(gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER)
	{
		APP_DBG("Enter usb-audio-reader\n");
	}
#endif

	if(!IsPcLink())
	{
		APP_DBG("device not ready!\n");
		return FALSE;
	}

	TimeOutSet(&UsbAudioFreqAdjustTimer, 1000);    
	NVIC_EnableIRQ(USB_IRQn);
	UsbSetCurrentPort(PC_PORT_NUM);		// 选择USB端口

	APP_DBG("IsPcLink() OK!\n");

#ifdef FUNC_USB_AUDIO_EN
	if(gSys.CurModuleID == MODULE_ID_USB_AUDIO)
	{
		// 单独USB声卡模式,PC识别出USB声卡
		APP_DBG("MODULE_ID_USB_AUDIO\n");
		DeviceAudioSetMode(USB_DEVICE_AUDIO);
		gDeviceVID = 0x0000;
		gDevicePID = 0x0201;
		gDeviceString_Manu = "MVSILICON";					//max length: 32bytes
		gDeviceString_Product = "MV USB AUDIO";				//max length: 32bytes
		gDeviceString_SerialNumber = "20130617A002";		//max length: 32bytes
	}
#endif

#ifdef FUNC_USB_READER_EN
	if(gSys.CurModuleID == MODULE_ID_USB_READER)
	{
		// 单独USB读卡器模式,PC识别出USB读卡器
		APP_DBG("MODULE_ID_USB_READER\n");
		DeviceAudioSetMode(USB_DEVICE_READER);
		DeviceStorInit();
		gDeviceVID = 0x0000;
		gDevicePID = 0x1000;
		gDeviceString_Manu = "MVSILICON";				// max length: 32bytes
		gDeviceString_Product = "USB CARD READER";		// max length: 32bytes
		gDeviceString_SerialNumber = "20130617B002";	// max length: 32bytes
	}
#endif

#ifdef FUNC_USB_AUDIO_READER_EN
	if(gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER)
	{
		// 一线通模式,PC同时识别出USB声卡和USB读卡器
		APP_DBG("MODULE_ID_USB_AUDIO_READER\n");
		DeviceAudioSetMode(USB_DEVICE_AUDIO_READER);
		DeviceStorInit();
		gDeviceVID = 0x0000;
		gDevicePID = 0x0201;
		gDeviceString_Manu = "MVSILICON";				// max length: 32bytes
		gDeviceString_Product = "MV USB AUDIO";			// max length: 32bytes
		gDeviceString_SerialNumber = "20130617C002";    // max length: 32bytes
	}
#endif


	//USB读卡器模式下,设备管理器中显示的磁盘驱动器名称
	gDeviceString_MassStor_Vendor = "MVSI";				// max length: 8bytes
	gDeviceString_MassStor_Product = "USB CARD READER";	// max length: 16bytes
	gDeviceString_MassStor_Ver = "V2.0";				// max length: 4bytes

	//USB声卡模式下,回调函数指针初始化
	gFpDeviceAudioMuteEn = DeviceAudioMuteEn;			// PC端执行MUTE命令时,回调此函数
	gFpDeviceAudioMuteDis = DeviceAudioMuteDis;			// PC端执行UNMUTE命令时,回调此函数
	gFpDeviceAudioSetVolume = DeviceAudioSetVolume;		// PC端改变音量时,回调此函数


	UsbDeviceEnableInt(DEVICE_CONTROL_EP, DeviceAudioOnCmd);
	UsbDeviceEnableInt(DEVICE_BULK_OUT_EP, DeviceAudioOnCmd);

//	CodecDacChannelSel(DAC_CH_DECD_L | DAC_CH_DECD_R); // select dac channel
	UsbDeviceInit();

//	NVIC_EnableIRQ(DECODER_IRQn);


	AudioAnaSetChannel(gSys.MicEnable ? AUDIO_CH_MIC : AUDIO_CH_NONE);	
	MixerConfigFormat(MIXER_SOURCE_USB, USB_DAC_FREQ, MIXER_FORMAT_STERO);
	mixer_pcm_format = MIXER_FORMAT_STERO;
	MixerConfigVolume(MIXER_SOURCE_USB, 4000, 4000);
	MixerUnmute(MIXER_SOURCE_USB);
	MixerEnable(MIXER_SOURCE_USB);

    AudioLeftVolume  = (AUDIO_MAX_VOLUME*3)/4;
    AudioRightVolume = (AUDIO_MAX_VOLUME*3)/4;
    APP_DBG("AudioLeftVolume = %d\n", AudioLeftVolume);
#ifdef FUNC_AUDIO_DRC_EFFECT_EN
	if(gSys.AudioDRCEffectFlag)
	{
		if(DRC_ERROR_OK != init_drc(&gSys.AudioDRCEffectHandle, MIXER_FORMAT_STERO, USB_DAC_FREQ, AUDIO_EFFECT_PARAM_DRC_THRESHHOLD,
							0, AUDIO_EFFECT_PARAM_DRC_RATIO, AUDIO_EFFECT_PARAM_DRC_ATTACK_TIME, 
							AUDIO_EFFECT_PARAM_DRC_RELEASE_TIME, AUDIO_EFFECT_PARAM_DRC_CROSSOVER_FREQ))
        {
            APP_DBG("Init DRC Effect fail,close\n");
            gDRCEffectInited = FALSE;
        }
        else
        {
        	gDRCEffectInited = TRUE;
        }
	}
#endif	
#ifdef FUNC_AUDIO_3D_EFFECT_EN
	if(gSys.Audio3dEffectFlag)
	{
		if(THREE_D_ERROR_OK != init_3d(&gSys.Audio3dEffectHandle, MIXER_FORMAT_STERO, USB_DAC_FREQ, AUDIO_EFFECT_PARAM_3D_BASS, AUDIO_EFFECT_PARAM_3D_MID_BOOST))
        {
            //gSys.Audio3dEffectFlag = 0;
            APP_DBG("Init 3D Effect fail,close\n");
            g3dEffectInited = FALSE;
        }
        else
        {
        	g3dEffectInited = TRUE;
        }
	}
#endif
#ifdef FUNC_AUDIO_VB_EFFECT_EN
    if(gSys.AudioVbEffectFlag)
    {
        if(VB_ERROR_OK != init_vb(&gSys.AudioVbEffectHandle, MIXER_FORMAT_STERO, USB_DAC_FREQ, AUDIO_EFFECT_PARAM_VB_CUTOFF_FREQ, AUDIO_EFFECT_PARAM_VB_LIMITER_EN))
        {
            gVbEffectInited = FALSE;
        }
        else
        {
            gVbEffectInited = TRUE;
        }
    }
#endif 
    SetModeSwitchState(MODE_SWITCH_STATE_DONE);
	while(Msg != MSG_COMMON_CLOSE)
	{
		//UsbDeviceDisableInt(DEVICE_BULK_OUT_EP);
		DeviceStorProcess();
		//UsbDeviceEnableInt(DEVICE_BULK_OUT_EP, DeviceAudioOnCmd);

		DeviceAudioProcess();
        
#if (!defined (OUTPUT_CHANNEL_CLASSD)) && (!defined (OUTPUT_CHANNEL_DAC_CLASSD))      //classd模式下,采用的clk mode = normal mode,禁止使用硬件微调
   #ifndef FUNC_SOFT_ADJUST_EN
        UsbAudioFreqAdjust();
   #endif
#endif        
		Msg = MsgRecv(10);// 消息接收,无消息阻塞20ms,有消息立即返回

		if(Msg == MSG_USB_DEVICE_INTERRUPT_CB)
		{
			UsbIntFlag = FALSE;
		}
                
		switch(Msg)
		{		
			case MSG_POWER:
				gSys.NextModuleID = MODULE_ID_STANDBY;
			case MSG_MODE: // mode change,end of this mode
				APP_DBG("CHANGE_MODE\n");
				// mode change,end of this mode
				Msg = MSG_COMMON_CLOSE;                    
				break;

			case MSG_PLAY_PAUSE:
				APP_DBG("PLAY_PAUSE\n");
				DeviceAudioSendPcCmd(PC_CMD_PLAY_PAUSE);
				break;

			case MSG_PRE:
				APP_DBG("PRE\n");
				DeviceAudioSendPcCmd(PC_CMD_PRE);
				SoundRemind(SOUND_PREV_TRACK);
				break;

			case MSG_NEXT:
				APP_DBG("NEXT\n");
				DeviceAudioSendPcCmd(PC_CMD_NEXT);				
                SoundRemind(SOUND_NEXT_TRACK);
				break;

			case MSG_STOP:
				APP_DBG("STOP\n");
				DeviceAudioSendPcCmd(PC_CMD_STOP);
				break;

			case MSG_MUTE:
				APP_DBG("MUTE\n");
				DeviceAudioSendPcCmd(PC_CMD_MUTE);
				break;
			
#ifdef FUNC_RECORD_EN
			case MSG_REC:  //录音
				gSys.ModuleIDBackUp = gSys.CurModuleID;
				gSys.NextModuleID = MODULE_ID_RECORDER;
				gSys.RecordState = RECORD_STATE_REC;
				gSys.RecordSource = RECORD_SOURCE_LINEIN;
				Msg = MSG_COMMON_CLOSE;
				break;
#endif
           
#ifdef FUNC_REC_PLAYBACK_EN
			case MSG_REC_PLAYBACK:
				EnterRecBackPlay(gSys.CurModuleID, IsUDiskLink() ? DEV_ID_USB : DEV_ID_SD, TRUE, 0, 0);
				break;
#endif
			default:
				CommonMsgProccess(Msg);
				break;
		}
	}

#ifdef FUNC_USB_AUDIO_EN
	if(gSys.CurModuleID == MODULE_ID_USB_AUDIO)
	{
		APP_DBG("Leave usb-audio\n");
	}
#endif

#ifdef FUNC_USB_READER_EN
	if(gSys.CurModuleID == MODULE_ID_USB_READER)
	{
		APP_DBG("Leave sd reader\n");
	}
#endif

#ifdef FUNC_USB_AUDIO_READER_EN
	if(gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER)
	{
		APP_DBG("Leave usb-audio-reader\n");
	}
#endif

	MixerMute(MIXER_SOURCE_USB);
	MixerDisable(MIXER_SOURCE_USB);

	UsbDeviceDisConnect(); // 退出前断开usb device,停止接收数据,以免与SD/U盘播放产生冲突
#ifdef FUNC_USB_EN
	UsbSetCurrentPort(UDISK_PORT_NUM); // set usb host port
#endif
	return TRUE;//OK
}