void *AudioFunction(void * p) { fd_set fds2; //open the device for the appropriate action if ((g_audio_fd = AudioInitialize()) < 0) exit(1); while (g_au_thread_running) { FD_ZERO(&fds2); FD_SET(g_audio_fd, &fds2); FD_SET(oSocRTP.m_socket, &fds2); int max_fd = oSocRTP.m_socket; if (g_audio_fd > max_fd) max_fd = g_audio_fd; if (select(max_fd+1, &fds2, NULL, NULL, NULL) < 0) { printf("Error on on select\n"); exit(1); } if (FD_ISSET(oSocRTP.m_socket, &fds2)) { if (ReceiveRTPBufferAndPlay()<0) continue; } if (FD_ISSET(g_audio_fd, &fds2)) { if (CaptureAudioAndSend()<0) continue; } } close(g_audio_fd); g_audio_fd = -1; }
int main(void) { u32 *vgaPtr[DISPLAY_NUM_FRAMES]; u32 *hdmiPtr[DISPLAY_NUM_FRAMES]; int i; char userInput = 0; for (i = 0; i < DISPLAY_NUM_FRAMES; i++) { vgaPtr[i] = vgaBuf[i]; hdmiPtr[i] = hdmiBuf[i]; } DisplayDemoInitialize(&vgaCtrl, VGA_VDMA_ID, SCU_TIMER_ID, VGA_BASEADDR, DISPLAY_NOT_HDMI, vgaPtr); DisplayDemoInitialize(&hdmiCtrl, HDMI_VDMA_ID, SCU_TIMER_ID, HDMI_BASEADDR, DISPLAY_HDMI, hdmiPtr); AudioInitialize(SCU_TIMER_ID, AUDIO_IIC_ID, AUDIO_CTRL_BASEADDR); TimerInitialize(SCU_TIMER_ID); /* Flush UART FIFO */ while (XUartPs_IsReceiveData(UART_BASEADDR)) { XUartPs_ReadReg(UART_BASEADDR, XUARTPS_FIFO_OFFSET); } while (userInput != 'q') { MainDemoPrintMenu(); /* Wait for data on UART */ while (!XUartPs_IsReceiveData(UART_BASEADDR)) {} /* Store the first character in the UART recieve FIFO and echo it */ userInput = XUartPs_ReadReg(UART_BASEADDR, XUARTPS_FIFO_OFFSET); xil_printf("%c", userInput); switch (userInput) { case '1': AudioRunDemo(AUDIO_CTRL_BASEADDR, UART_BASEADDR, SW_BASEADDR, BTN_BASEADDR); break; case '2': DisplayDemoRun(&vgaCtrl, UART_BASEADDR); break; case '3': DisplayDemoRun(&hdmiCtrl, UART_BASEADDR); break; case 'q': break; default : xil_printf("\n\rInvalid Selection"); TimerDelay(500000); } } return 0; }