📄 fm_search.c
字号:
/************************************************************************ * File Name : fm_search.c * Description : * Test program of fm driver * History : * 15-Sep-04 Aaron Shen New ************************************************************************ */#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <sys/ioctl.h>#include <fcntl.h>#define TEA5767HN_IOC_TEST_I2CRW 12#define TEA5767HN_IOC_TEST_HILO 13#define TEA5767HN_IOC_SET_BAND 14#define TEA5767HN_IOC_AUTO_SEARCH 15#define TEA5767HN_IOC_STEP_SEARCH_UP 16#define TEA5767HN_IOC_STANDBY 17#define TEA5767HN_IOC_STEP_SEARCH_DOWN 18#define SOUND_MIXER_GARY_BYPASS 80417 //I define it to support bypass mode selectstatic unsigned int presets[20];static unsigned char station_num = 0;static unsigned char check_freq(unsigned int freq) //don't store existing frequency{ unsigned char i; unsigned char flag = 0; for (i=0; i < station_num ; i++) { if(freq != presets[i]) flag = 0; else { flag = 1; return 0; } } return 1;}int main(int argc, char *argv[]){ unsigned int freq = 87500;//104800; //KHz int audio_fd, mixer_fd, fm_fd;//, analog_fd; int choose = 0, next = 0; int i; printf("FM radio playing\n"); audio_fd = open("/dev/dsp", O_WRONLY ); if (audio_fd == -1) { printf ("dev/dsp"); exit (-1); } mixer_fd = open("/dev/mixer", O_RDONLY); ioctl(mixer_fd, SOUND_MIXER_GARY_BYPASS, 0); fm_fd = open("/dev/misc/tea5767hn", O_RDWR); if(fm_fd < 0) { printf("Device FM radio /dev/misc/tea5767hn open error !\n"); exit(-1); } while (station_num < 20) { freq = ioctl(fm_fd, TEA5767HN_IOC_STEP_SEARCH_UP, freq); if ((freq > 87499) && (freq < 107999)) { if (check_freq(freq)) { presets[station_num] = freq; //printf("FM Radio station %d: %d.%d MHz \n",station_num+1, (presets[station_num]/1000), (presets[station_num]%1000)); station_num++; freq = freq - 50; } } } for (i=0; i<20; i++) printf("FM Radio station %d: %d.%d MHz \n",i+1, (presets[i]/1000), (presets[i]%1000));playback: printf("Please input station number(1-20) and press Enter:"); scanf("%d", &choose); if ((choose > 0) && (choose < 21)) { printf("Now playing station %d: %d.%d MHz \n",choose, (presets[choose-1]/1000), (presets[choose-1]%1000)); ioctl(fm_fd, TEA5767HN_IOC_SET_BAND, presets[choose-1]); } else printf("input wrong number, please input again! \n"); printf("Please input '1 + Enter' to play another FM Radio station, or if you want to exit press '0 + Enter':"); scanf("%d", &next); if (next == 1) goto playback; else return 1; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -