int main(int argc,char* argv[]) { struct dspserver_config config; memset(&config, 0, sizeof(config)); // Register signal and signal handler signal(SIGINT, signal_shutdown); char directory[MAXPATHLEN]; strcpy(config.soundCardName,"HPSDR"); strcpy(config.server_address,"127.0.0.1"); // localhost strcpy(config.share_config_file, getenv("HOME")); strcat(config.share_config_file, "/dspserver.conf"); processCommands(argc,argv,&config); fprintf(stderr, "Reading conf file %s\n", config.share_config_file); init_register(config.share_config_file); // we now read our conf always // start web registration if set if (toShareOrNotToShare) { fprintf(stderr, "Activating Web register\n"); } fprintf(stderr,"gHPSDR rx %d (Version %s)\n",receiver,VERSION); printversion(); setSoundcard(getSoundcardId(config.soundCardName)); // initialize DttSP if(getcwd(directory, sizeof(directory))==NULL) { fprintf(stderr,"current working directory path is > MAXPATHLEN"); exit(1); } Setup_SDR(directory); Release_Update(); SetTRX(0,0); // thread 0 is for receive SetTRX(1,1); // thread 1 is for transmit SetRingBufferOffset(0,config.offset); SetThreadProcessingMode(0,RUN_PLAY); SetThreadProcessingMode(1,RUN_PLAY); SetSubRXSt(0,1,1); SetRXOutputGain(0,0,0.20); SetRXOsc(0,0, -LO_offset); SetRXOsc(0,1, -LO_offset); reset_for_buflen(0,1024); reset_for_buflen(1,1024); client_init(receiver); audio_stream_init(receiver); audio_stream_reset(); codec2 = codec2_create(); G711A_init(); ozy_init(config.server_address); SetMode(1, 0, USB); SetTXFilter(1, 150, 2850); SetTXOsc(1, LO_offset); SetTXAMCarrierLevel(1, 0.5); tx_init(); // starts the tx_thread while(1) { sleep(10000); } // codec2_destroy(codec2); return 0; }
int main(int argc,char* argv[]) { memset(&config, 0, sizeof(config)); // Register signal and signal handler signal(SIGINT, signal_shutdown); char directory[MAXPATHLEN]; strcpy(config.soundCardName,"HPSDR"); strcpy(config.server_address,"127.0.0.1"); // localhost strcpy(config.share_config_file, getenv("HOME")); strcat(config.share_config_file, "/dspserver.conf"); processCommands(argc,argv,&config); #ifdef THREAD_DEBUG sdr_threads_init(); #endif /* THREAD_DEBUG */ fprintf(stderr, "Reading conf file %s\n", config.share_config_file); init_register(config.share_config_file); // we now read our conf always // start web registration if set if (toShareOrNotToShare) { fprintf(stderr, "Activating Web register\n"); } fprintf(stderr,"gHPSDR rx %d (Version %s)\n",receiver,VERSION); printversion(); setSoundcard(getSoundcardId(config.soundCardName)); // initialize DttSP if(getcwd(directory, sizeof(directory))==NULL) { fprintf(stderr,"current working directory path is > MAXPATHLEN"); exit(1); } Setup_SDR(directory); Release_Update(); SetTRX(0,0); // thread 0 is for receive SetTRX(1,1); // thread 1 is for transmit SetRingBufferOffset(0,config.offset); SetThreadProcessingMode(0,RUN_PLAY); SetThreadProcessingMode(1,RUN_PLAY); SetSubRXSt(0,1,1); SetRXOutputGain(0,0,0.20); SetRXOsc(0,0, -LO_offset); SetRXOsc(0,1, -LO_offset); reset_for_buflen(0,1024); reset_for_buflen(1,1024); client_init(receiver); // create the main thread responsible for listen TCP socket // on the read callback: // accept and interpret the commands from remote GUI // parse mic data from remote and enque them into Mic_audio_stream queue // see client.c // // on the write callback: // read the audio_stream_queue and send into the TCP socket // audio_stream_init(receiver); audio_stream_reset(); codec2 = codec2_create(CODEC2_MODE_3200); G711A_init(); ozy_init(config.server_address); // create and starts iq_thread in ozy.c in order to // receive iq stream from hardware server // process it in DttSP // makes the sample rate adaption for resulting audio // puts audio stream in a queue (via calls to audio_stream_queue_add // in audio_stream_put_samples() in audiostream.c) // // in case of HPSDR hardware (that is provided with a local D/A converter // sends via ozy_send() the audio back to the hardware server SetMode(1, 0, USB); SetTXFilter(1, 150, 2850); SetTXOsc(1, LO_offset); SetTXAMCarrierLevel(1, 0.5); tx_init(); // create and starts the tx_thread (see client.c) // the tx_thread reads the Mic_audio_stream queue, makes the sample rate adaption // process the data into DttSP in order to get the modulation process done, // and sends back to the hardware server process (via ozy_send() ) #ifdef THREAD_DEBUG /* Note that some thread interactions will be lost at startup due to * the fact that the subsystem threads are all started. We can't * init this until late, though, or we'll catch initializations * performed at boot time as errors. */ if (config.thread_debug) { sdr_threads_debug(TRUE); } #endif /* THREAD_DEBUG */ while(1) { sleep(10000); } // codec2_destroy(codec2); return 0; }