// #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define _CRT_SECURE_NO_DEPRECATE #include #include #include #include #pragma comment(lib, "winmm.lib") WAVEFORMATEX wfx = { WAVE_FORMAT_PCM, 1, 12000, 24000, 2, 16, 0 }; WAVEOUTCAPS pwoc; WAVEINCAPS pwic; char * CaptureDevices = NULL; char * PlaybackDevices = NULL; int CaptureCount = 0; int PlaybackCount = 0; int IndexA = -1; // Card number int IndexB = -1; // Card number int IndexC = -1; // Card number int IndexD = -1; // Card number int SPEAKERS = -1; // Card number int Device = 0; HWAVEOUT hWaveOut = 0; HWAVEIN hWaveIn = 0; char CaptureNames[16][MAXPNAMELEN + 2] = { "" }; char PlaybackNames[16][MAXPNAMELEN + 2] = { "" }; char * strlop(char * buf, char delim) { // Terminate buf at delim, and return rest of string char * ptr; if (buf == NULL) return NULL; // Protect ptr = strchr(buf, delim); if (ptr == NULL) return NULL; *(ptr)++ = 0; return ptr; } void main(int argc, char * argv[]) { int i; FILE *infile; FILE *file; char line[1024] = ""; char index[64]; char * ptr; PlaybackCount = waveOutGetNumDevs(); PlaybackDevices = malloc((MAXPNAMELEN + 2) * PlaybackCount); PlaybackDevices[0] = 0; printf("Playback Devices\r\n"); for (i = 0; i < PlaybackCount; i++) { waveOutOpen(&hWaveOut, i, &wfx, 0, 0, CALLBACK_NULL); //WAVE_MAPPER waveOutGetDevCaps((UINT_PTR)hWaveOut, &pwoc, sizeof(WAVEOUTCAPS)); if (PlaybackDevices[0]) strcat(PlaybackDevices, ","); strcat(PlaybackDevices, pwoc.szPname); printf("%i %s\r\n", i, pwoc.szPname); memcpy(&PlaybackNames[i][0], pwoc.szPname, MAXPNAMELEN); _strupr(&PlaybackNames[i][0]); waveOutClose(hWaveOut); } printf("\r\n"); for (i = 0; i < PlaybackCount; i++) { if (strstr(&PlaybackNames[i][0], "CABLE-A")) IndexA = i; else if(strstr(&PlaybackNames[i][0], "CABLE-B")) IndexB = i; else if (strstr(&PlaybackNames[i][0], "CABLE-C")) IndexC = i; else if (strstr(&PlaybackNames[i][0], "CABLE-D")) IndexD = i; else if (strstr(&PlaybackNames[i][0], "SPEAKERS")) SPEAKERS = i; } if ((infile = fopen("C:\\Users\\johnw\\AppData\\Roaming\\SDRplay\\SDRuno.ini", "rb")) == NULL) return; if ((file = fopen("C:\\Users\\johnw\\AppData\\Roaming\\SDRplay\\SDRuno.in.new", "wb")) == NULL) return; while ((fgets(line, 1023, infile))) { if (ptr = strstr(line, "iOutputAudioDeviceID")) { char * ptr2 = strchr(ptr, '='); *ptr2 = 0; Device = atoi(ptr2 + 1); sprintf(index, "=%s", &PlaybackNames[Device][0]); strlop(index, ' '); strcat(index, "\r\n"); strcat(line, index); } fprintf(file, line); } fclose(file); fclose(infile); if ((infile = fopen("C:\\Users\\johnw\\AppData\\Roaming\\SDRplay\\SDRuno.in", "rb")) == NULL) return; if ((file = fopen("C:\\Users\\johnw\\AppData\\Roaming\\SDRplay\\SDRuno.ini", "wb")) == NULL) return; while ((fgets(line, 1023, infile))) { if (ptr = strstr(line, "CABLE-A")) { printf(line); *ptr = 0; sprintf(index, "%d\r\n", IndexA); strcat(line, index); printf(line); } if (ptr = strstr(line, "CABLE-B")) { printf(line); *ptr = 0; sprintf(index, "%d\r\n", IndexB); strcat(line, index); printf(line); } if (ptr = strstr(line, "CABLE-C")) { printf(line); *ptr = 0; sprintf(index, "%d\r\n", IndexC); strcat(line, index); printf(line); } if (ptr = strstr(line, "CABLE-D")) { printf(line); *ptr = 0; sprintf(index, "%d\r\n", IndexD); strcat(line, index); printf(line); } if (ptr = strstr(line, "SPEAKERS")) { printf(line); *ptr = 0; sprintf(index, "%d\r\n", SPEAKERS); strcat(line, index); printf(line); } fprintf(file, line); } fclose(file); fclose(infile); printf("File updated"); }