mirror of https://github.com/stella-emu/stella.git
And so it begins again; bump version number to 6.5_pre
Move some serial port code directly into portNames(); meant to do this for 6.4, oh well.
This commit is contained in:
parent
bc4e4586f7
commit
270d29000e
|
@ -18,7 +18,7 @@
|
||||||
#ifndef VERSION_HXX
|
#ifndef VERSION_HXX
|
||||||
#define VERSION_HXX
|
#define VERSION_HXX
|
||||||
|
|
||||||
#define STELLA_VERSION "6.4"
|
#define STELLA_VERSION "6.5_pre"
|
||||||
#define STELLA_BUILD "6238"
|
#define STELLA_BUILD "6238"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -99,32 +99,28 @@ StringList SerialPortMACOS::portNames()
|
||||||
{
|
{
|
||||||
StringList ports;
|
StringList ports;
|
||||||
|
|
||||||
|
// Check if port is valid; for now that means if it can be opened
|
||||||
|
// Eventually we may extend this to do more intensive checks
|
||||||
|
auto isPortValid = [](const string& port) {
|
||||||
|
int handle = open(port.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
|
||||||
|
if(handle > 0) close(handle);
|
||||||
|
return handle > 0;
|
||||||
|
};
|
||||||
|
|
||||||
// Get all possible devices in the '/dev' directory
|
// Get all possible devices in the '/dev' directory
|
||||||
FilesystemNode::NameFilter filter = [](const FilesystemNode& node) {
|
FilesystemNode::NameFilter filter = [](const FilesystemNode& node) {
|
||||||
return BSPF::startsWithIgnoreCase(node.getPath(), "/dev/cu.usb");
|
return BSPF::startsWithIgnoreCase(node.getPath(), "/dev/cu.usb");
|
||||||
};
|
};
|
||||||
FSList portList;
|
FSList portList;
|
||||||
portList.reserve(16);
|
portList.reserve(5);
|
||||||
|
|
||||||
FilesystemNode dev("/dev/");
|
FilesystemNode dev("/dev/");
|
||||||
dev.getChildren(portList, FilesystemNode::ListMode::All, filter, false);
|
dev.getChildren(portList, FilesystemNode::ListMode::All, filter, false);
|
||||||
|
|
||||||
// Add only those that can be opened
|
// Add only those that can be opened
|
||||||
for(const auto& port: portList)
|
for(const auto& port: portList)
|
||||||
if(isValid(port.getPath()))
|
if(isPortValid(port.getPath()))
|
||||||
ports.emplace_back(port.getPath());
|
ports.emplace_back(port.getPath());
|
||||||
|
|
||||||
return ports;
|
return ports;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
bool SerialPortMACOS::isValid(const string& port) const
|
|
||||||
{
|
|
||||||
// For now, we can only detect whether the port could be opened
|
|
||||||
// Eventually we may extend this to do more intensive checks
|
|
||||||
int handle = open(port.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
|
|
||||||
if(handle > 0)
|
|
||||||
close(handle);
|
|
||||||
|
|
||||||
return handle > 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -69,15 +69,6 @@ class SerialPortMACOS : public SerialPort
|
||||||
*/
|
*/
|
||||||
StringList portNames() override;
|
StringList portNames() override;
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
|
||||||
Tests whether this port can be opened, and is a valid
|
|
||||||
serial port.
|
|
||||||
|
|
||||||
@return True if valid, else false
|
|
||||||
*/
|
|
||||||
bool isValid(const string& port) const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// File descriptor for serial connection
|
// File descriptor for serial connection
|
||||||
int myHandle{0};
|
int myHandle{0};
|
||||||
|
|
|
@ -102,33 +102,29 @@ StringList SerialPortUNIX::portNames()
|
||||||
{
|
{
|
||||||
StringList ports;
|
StringList ports;
|
||||||
|
|
||||||
|
// Check if port is valid; for now that means if it can be opened
|
||||||
|
// Eventually we may extend this to do more intensive checks
|
||||||
|
auto isPortValid = [](const string& port) {
|
||||||
|
int handle = open(port.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
|
||||||
|
if(handle > 0) close(handle);
|
||||||
|
return handle > 0;
|
||||||
|
};
|
||||||
|
|
||||||
// Get all possible devices in the '/dev' directory
|
// Get all possible devices in the '/dev' directory
|
||||||
FilesystemNode::NameFilter filter = [](const FilesystemNode& node) {
|
FilesystemNode::NameFilter filter = [](const FilesystemNode& node) {
|
||||||
return BSPF::startsWithIgnoreCase(node.getPath(), "/dev/ttyACM") ||
|
return BSPF::startsWithIgnoreCase(node.getPath(), "/dev/ttyACM") ||
|
||||||
BSPF::startsWithIgnoreCase(node.getPath(), "/dev/ttyUSB");
|
BSPF::startsWithIgnoreCase(node.getPath(), "/dev/ttyUSB");
|
||||||
};
|
};
|
||||||
FSList portList;
|
FSList portList;
|
||||||
portList.reserve(16);
|
portList.reserve(5);
|
||||||
|
|
||||||
FilesystemNode dev("/dev/");
|
FilesystemNode dev("/dev/");
|
||||||
dev.getChildren(portList, FilesystemNode::ListMode::All, filter, false);
|
dev.getChildren(portList, FilesystemNode::ListMode::All, filter, false);
|
||||||
|
|
||||||
// Add only those that can be opened
|
// Add only those that can be opened
|
||||||
for(const auto& port: portList)
|
for(const auto& port: portList)
|
||||||
if(isValid(port.getPath()))
|
if(isPortValid(port.getPath()))
|
||||||
ports.emplace_back(port.getPath());
|
ports.emplace_back(port.getPath());
|
||||||
|
|
||||||
return ports;
|
return ports;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
bool SerialPortUNIX::isValid(const string& port) const
|
|
||||||
{
|
|
||||||
// For now, we can only detect whether the port could be opened
|
|
||||||
// Eventually we may extend this to do more intensive checks
|
|
||||||
int handle = open(port.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
|
|
||||||
if(handle > 0)
|
|
||||||
close(handle);
|
|
||||||
|
|
||||||
return handle > 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -70,15 +70,6 @@ class SerialPortUNIX : public SerialPort
|
||||||
*/
|
*/
|
||||||
StringList portNames() override;
|
StringList portNames() override;
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
|
||||||
Tests whether this port can be opened, and is a valid
|
|
||||||
serial port.
|
|
||||||
|
|
||||||
@return True if valid, else false
|
|
||||||
*/
|
|
||||||
bool isValid(const string& port) const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// File descriptor for serial connection
|
// File descriptor for serial connection
|
||||||
int myHandle{0};
|
int myHandle{0};
|
||||||
|
|
Loading…
Reference in New Issue