Refactor & Cleanup

This commit is contained in:
bbond007
2020-07-15 22:03:45 -04:00
parent 7b7fd8dfa0
commit e5da0160ed
4 changed files with 70 additions and 81 deletions

62
main.c
View File

@@ -22,21 +22,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <unistd.h>
#include <pthread.h>
#include <signal.h>
#include <linux/soundcard.h>
#include <ctype.h>
#include <sys/time.h>
#include "serial.h"
#include "serial2.h"
#include "config.h"
#include "misc.h"
#include "udpsock.h"
#include "tcpsock.h"
#include "alsa.h"
#include "ini.h"
#include "modem.h"
#define DEFAULT_TCPFlow -1
#define DEFAULT_TCPDTR 1
#include "config.h"
enum MODE {ModeUSBMIDI, ModeTCP, ModeUDP, ModeUSBSER, ModeMUNT, ModeMUNTGM, ModeFSYNTH, ModeUDPMUNT, ModeUDPMUNTGM, ModeUDPFSYNTH};
@@ -46,18 +42,11 @@ static int fdMidi = -1;
static int fdMidiIN = -1;
int MIDI_DEBUG = TRUE;
int socket_lst = -1;
int socket_out = -1;
int fdSerial = -1;
int socket_in = -1;
int socket_out = -1;
int socket_lst = -1;
int fdSerial = -1;
int baudRate = -1;
char MT32LCDMsg[21] = "MiSTer MidiLink! BB7";
char fsynthSoundFont [150] = "/media/fat/linux/soundfonts/SC-55.sf2";
char MUNTRomPath[150] = "/media/fat/linux/mt32-rom-data";
char UDPServer [100] = "";
char mixerControl[20] = "Master";
char MUNTOptions[30] = "";
char USBSerModule[100] = "";
int muntVolume = -1;
int fsynthVolume = -1;
int midilinkPriority = 0;
@@ -67,8 +56,8 @@ int UDPBaudRate_alt = -1;
int TCPBaudRate_alt = -1;
int MIDIBaudRate = -1;
int USBSerBaudRate = -1;
int TCPFlow = DEFAULT_TCPFlow;
int TCPDTR = DEFAULT_TCPDTR;
int TCPFlow = -1;
int TCPDTR = 1;
int UDPFlow = -1;
int MUNTCPUMask = -1;
int FSYNTHCPUMask = -1;
@@ -76,6 +65,13 @@ unsigned int DELAYSYSEX = FALSE;
unsigned int UDPServerPort = 1999;
unsigned int TCPServerPort = 23;
unsigned int UDPServerFilterIP = FALSE;
char MT32LCDMsg[21] = "MiSTer MidiLink! BB7";
char fsynthSoundFont [150] = "/media/fat/linux/soundfonts/SC-55.sf2";
char MUNTRomPath[150] = "/media/fat/linux/mt32-rom-data";
char UDPServer [100] = "";
char mixerControl[20] = "Master";
char MUNTOptions[30] = "";
char USBSerModule[100] = "";
static pthread_t midiInThread;
static pthread_t midiINInThread;
@@ -246,7 +242,6 @@ void write_midi_packet(char * buf, int bufLen)
}
}
///////////////////////////////////////////////////////////////////////////////////////
//
// write_socket_packet()
@@ -269,7 +264,6 @@ void write_socket_packet(int sock, char * buf, int bufLen)
show_debug_buf("SOCK OUT ", buf, bufLen);
}
///////////////////////////////////////////////////////////////////////////////////////
//
// void * udpsock_thread_function(void * x)
@@ -305,7 +299,6 @@ void * udpsock_thread_function_ext (void * x)
if (rdLen > 0)
{
write_alsa_packet(buf, rdLen);
//show_debug_buf("USOCK2 IN", buf, rdLen);
}
} while (TRUE);
}
@@ -389,33 +382,6 @@ void * serial_thread_function (void * x)
} while (TRUE);
}
///////////////////////////////////////////////////////////////////////////////////////
//
// int get_softsynth_port(int softSynth)
//
//
int get_softsynth_port(int softSynth)
{
int midiPort = alsa_get_midi_port("MT-32");
if (midiPort == -1)
midiPort = alsa_get_midi_port("FLUID Synth");
if (midiPort == -1)
{
switch(softSynth)
{
case MUNT:
midiPort = start_munt();
break;
case FluidSynth:
midiPort = start_fsynth();
break;
case -1: //do nothing.
break;
}
}
return midiPort;
}
///////////////////////////////////////////////////////////////////////////////////////
//
// test_midi_device()
@@ -502,6 +468,7 @@ int main(int argc, char *argv[])
misc_print(0, "\e[2J\e[H");
misc_print(0, helloStr);
misc_print(0, "\n");
misc_get_core_name(coreName, sizeof(coreName));
misc_print(0, "CORE --> '%s'\n", coreName);
@@ -781,6 +748,7 @@ int main(int argc, char *argv[])
break;
case ModeTCP:
{
modem_set_defaults();
if(TCPFlow > 0)
serial_set_flow_control(fdSerial, TCPFlow);
//serial2_set_DCD(sericlDevice, fdSerial, FALSE);

BIN
midilink

Binary file not shown.

86
modem.c
View File

@@ -1,18 +1,3 @@
/*--------------------------------------------------------------------
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
---------------------------------------------------------------------*/
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
@@ -39,7 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DEFAULT_TCPDTR 1
#define DEFAULT_TCPQuiet 0
enum SOFTSYNTH TCPSoftSynth = FluidSynth;
enum ASCIITRANS TCPAsciiTrans = DEFAULT_TCPAsciiTrans;
char MP3Path[500] = "/media/fat/MP3";
@@ -56,13 +40,13 @@ int modemVolume = DEFAULT_modemVolume;
int TCPQuiet = DEFAULT_TCPQuiet;
int MODEMSOUND = DEFAULT_MODEMSOUND;
extern int MIDI_DEBUG;
extern int CPUMASK;
extern int MODEMSOUND;
extern int fdSerial;
extern int socket_in;
extern int socket_out;
extern int socket_lst;
extern int socket_in;
extern int MIDI_DEBUG;
extern int fdSerial;
extern int baudRate;
extern int TCPQuiet;
extern int modemVolume;
@@ -77,11 +61,12 @@ extern char * serialDevice;
extern char * helloStr;
extern char fsynthSoundFont[];
static pthread_t socketInThread;
static pthread_t socketInThread;
int start_munt();
int start_fsynth();
void show_debug_buf(char * descr, char * buf, int bufLen);
void killall_softsynth(int delay);
int get_softsynth_port(int softSynth);
void set_pcm_volume(int value);
///////////////////////////////////////////////////////////////////////////////////////
@@ -120,6 +105,33 @@ void modem_killall_aplay(int delay)
sleep(delay);
}
///////////////////////////////////////////////////////////////////////////////////////
//
// int modem_get_softsynth_port(int softSynth)
//
//
int modem_get_softsynth_port(int softSynth)
{
int midiPort = alsa_get_midi_port("MT-32");
if (midiPort == -1)
midiPort = alsa_get_midi_port("FLUID Synth");
if (midiPort == -1)
{
switch(softSynth)
{
case MUNT:
midiPort = start_munt();
break;
case FluidSynth:
midiPort = start_fsynth();
break;
case -1: //do nothing.
break;
}
}
return midiPort;
}
///////////////////////////////////////////////////////////////////////////////////////
//
// void modem_play_conenct_sound(char * tmp)
@@ -291,6 +303,21 @@ void * modem_tcplst_thread_function (void * x)
} while(TRUE);
}
///////////////////////////////////////////////////////////////////////////////////////
//
// void modem_set_defaults()
//
//
void modem_set_defaults()
{
MODEMSOUND = DEFAULT_MODEMSOUND;
modemVolume = DEFAULT_modemVolume;
TCPAsciiTrans = DEFAULT_TCPAsciiTrans;
TCPTermRows = DEFAULT_TCPTermRows;
TCPFlow = DEFAULT_TCPFlow;
TCPDTR = DEFAULT_TCPDTR;
TCPQuiet = DEFAULT_TCPQuiet;
}
///////////////////////////////////////////////////////////////////////////////////////
//
@@ -465,7 +492,6 @@ int do_file_picker(char * pathBuf, char * fileNameBuf)
return result;
}
///////////////////////////////////////////////////////////////////////////////////////
//
// BOOL modem_handle_at_command(char * lineBuf)
@@ -627,7 +653,7 @@ int modem_handle_at_command(char * lineBuf)
modem_killall_aplaymidi(0);
misc_swrite(fdSerial, "\r\nMIDI --> OFF");
sleep(2);
int midiPort = get_softsynth_port(-1);
int midiPort = modem_get_softsynth_port(-1);
if(midiPort != -1)
{
alsa_open_seq(midiPort, 0);
@@ -642,7 +668,7 @@ int modem_handle_at_command(char * lineBuf)
misc_swrite(fdSerial, "\r\nLoading --> FluidSynth");
killall_softsynth(3);
TCPSoftSynth = FluidSynth;
get_softsynth_port(TCPSoftSynth);
modem_get_softsynth_port(TCPSoftSynth);
}
else if(lineBuf[5] == '2')
{
@@ -651,7 +677,7 @@ int modem_handle_at_command(char * lineBuf)
misc_swrite(fdSerial, "\r\nLoading --> MUNT");
killall_softsynth(3);
TCPSoftSynth = MUNT;
get_softsynth_port(TCPSoftSynth);
modem_get_softsynth_port(TCPSoftSynth);
}
else if(lineBuf[5] == 'S' && lineBuf[6] == 'F')
{
@@ -677,7 +703,7 @@ int modem_handle_at_command(char * lineBuf)
{
KILL_MP3_SLEEP;
modem_killall_aplaymidi(0);
int midiPort = get_softsynth_port(TCPSoftSynth);
int midiPort = modem_get_softsynth_port(TCPSoftSynth);
chdir("/root");
sprintf(tmp, "taskset %d aplaymidi --port %d \"%s/%s\" 2> /tmp/aplaymidi & ", CPUMASK, midiPort, MIDIPath, fileName);;
misc_print(1, "Play MIDI --> %s\n", tmp);
@@ -864,13 +890,7 @@ int modem_handle_at_command(char * lineBuf)
else if (memcmp(lineBuf, "ATZ", 3) == 0)
{
misc_print(1, "Resetting TCP defaults...\n");
MODEMSOUND = DEFAULT_MODEMSOUND;
modemVolume = DEFAULT_modemVolume;
TCPAsciiTrans = DEFAULT_TCPAsciiTrans;
TCPTermRows = DEFAULT_TCPTermRows;
TCPFlow = DEFAULT_TCPFlow;
TCPDTR = DEFAULT_TCPDTR;
TCPQuiet = DEFAULT_TCPQuiet;
modem_set_defaults();
TELNET_NEGOTIATE = TRUE;
misc_print(1, "Reloading INI defaults...\n");
misc_get_core_name(tmp, sizeof(tmp));

View File

@@ -11,7 +11,8 @@ void modem_killall_aplaymidi(int delay);
void modem_killall_mpg123(int delay);
void * modem_tcplst_thread_function (void * x);
void * modem_tcpsock_thread_function (void * x);
int modem_get_softsynth_port(int softSynth);
void modem_set_defaults();