diff --git a/CMakeLists.txt b/CMakeLists.txt
index c31133d..cc623d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,10 +1,10 @@
cmake_minimum_required(VERSION 3.16.0)
project(pipedal
- VERSION 0.9.10
+ VERSION 0.9.11
DESCRIPTION "PiPedal Guitar Effect Pedal For Raspberry Pi"
HOMEPAGE_URL "https://rerdavies.github.io/pipedal"
)
-set (DISPLAY_VERSION "v0.9.10-rc-1")
+set (DISPLAY_VERSION "v0.9.11-rc-2")
set (CMAKE_INSTALL_PREFIX "/usr/")
diff --git a/README.md b/README.md
index 5667402..028e6cd 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
-Download: v0.9.10-rc-1 Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal).
+Download: v0.9.11-rc-2 Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal).
Use your Raspberry Pi as a guitar effects pedal. Configure and control PiPedal with your phone or tablet.
diff --git a/debian/control b/debian/control
index ce587f0..7ce47cf 100644
--- a/debian/control
+++ b/debian/control
@@ -3,12 +3,12 @@ Depends: libstdc++6 (>= 9), libasound2 (>= 1.0.16), libc6 (>= 2.34), libgcc-s1 (
Description: IoT guitar effect for Raspberry Pi
IoT guitar effect pedal for Raspberry Pi, with phone-friendly web interface.
Homepage: https://github.com/rerdavies/pipedal
-Maintainer: Robin Davies
Source: pipedal
Package: pipedal
Pre-Depends: hostapd;authbind
Priority: optional
Section: sound
-Version: 0.1.4
+Version: 0.9.11
Installed-Size: 15147
diff --git a/debian/postinst b/debian/postinst
index 2c01f69..5b6d830 100755
--- a/debian/postinst
+++ b/debian/postinst
@@ -1,2 +1,2 @@
#!/usr/bin/bash
-/usr/local/pipedalconfig --install
+/usr/bin/pipedalconfig --install
diff --git a/debian/prerm b/debian/prerm
index 47f515a..12ec940 100755
--- a/debian/prerm
+++ b/debian/prerm
@@ -1,2 +1,2 @@
#!/usr/bin/bash
-/usr/local/pipedalconfig --uninstall
+/usr/bin/pipedalconfig --uninstall
diff --git a/docs/Installing.md b/docs/Installing.md
index b21c45a..d61f3ea 100644
--- a/docs/Installing.md
+++ b/docs/Installing.md
@@ -4,14 +4,14 @@
Download the most recent Debian (.deb) package for your platform:
-- [Raspberry Pi OS (64-bit) v0.9.10-rc-1](https://github.com/rerdavies/pipedal/releases/download/v0.9.10-rc-1/pipedal_0.9.10_arm64.deb)
+- [Raspberry Pi OS (64-bit) v0.9.11-rc-2](https://github.com/rerdavies/pipedal/releases/download/v0.9.11-rc-2/pipedal_0.9.11_arm64.deb)
Install the package by running
```
sudo apt update
cd ~/Downloads
- sudo apt-get install ./pipedal_0.9.10_arm64.deb
+ sudo apt-get install ./pipedal_0.9.11_arm64.deb
```
After installing, follow the instructions in [Configuring PiPedal after Installation](Configuring.md).
diff --git a/docs/download.md b/docs/download.md
index f7053d0..cbab4ab 100644
--- a/docs/download.md
+++ b/docs/download.md
@@ -4,14 +4,14 @@
Download the most recent Debian (.deb) package for your platform:
-- [Ubuntu or Raspberry Pi OS (64-bit)](https://github.com/rerdavies/pipedal/releases/download/v0.9.10-rc-1/pipedal_0.9.10_arm64.deb) v0.9.10-rc-1
+- [Ubuntu or Raspberry Pi OS (64-bit)](https://github.com/rerdavies/pipedal/releases/download/v0.9.11-rc-2/pipedal_0.9.11_arm64.deb) v0.9.11-rc-2
Install the package by running
```
sudo apt update
cd ~/Downloads
- sudo apt-get install ./pipedal_0.9.10_arm64.deb
+ sudo apt-get install ./pipedal_0.9.11_arm64.deb
```
Follow the instructions in [_Configuring PiPedal After Installation_](https://rerdavies.github.io/pipedal/Configuring.html) to complete the installation.
diff --git a/docs/index.md b/docs/index.md
index 180c834..67be215 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,7 +1,7 @@
-v0.9.10-rc-1
+v0.9.11-rc-2
Use your Raspberry Pi as a guitar effects pedal. Configure and control PiPedal with your phone or tablet.
diff --git a/src/AdminClient.cpp b/src/AdminClient.cpp
index 9d7dbd6..4f77e59 100644
--- a/src/AdminClient.cpp
+++ b/src/AdminClient.cpp
@@ -64,7 +64,8 @@ bool AdminClient::WriteMessage(const char *message)
}
catch (const std::exception &e)
{
- Lv2Log::error(SS("Failed to connect to PiPedal Admin service."));
+ // Socket permissions require membership in pipedal_d group.
+ Lv2Log::error(SS("Failed to connect to PiPedal Admin service. " << e.what()));
return false;
}
}
@@ -168,7 +169,7 @@ void AdminClient::MonitorGovernor(const std::string &governor)
bool result = WriteMessage(cmd.str().c_str());
if (!result)
{ // unexpected. Should throw exception on failure.
- throw PiPedalException("Operation failed.");
+ Lv2Log::warning("Not monitoring CPU governor status.");
}
}
void AdminClient::UnmonitorGovernor()
@@ -180,9 +181,5 @@ void AdminClient::UnmonitorGovernor()
std::stringstream cmd;
cmd << "UnmonitorGovernor";
cmd << '\n';
- bool result = WriteMessage(cmd.str().c_str());
- if (!result)
- { // unexpected. Should throw exception on failure.
- throw PiPedalException("Operation failed.");
- }
+ bool ignored = WriteMessage(cmd.str().c_str());
}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3eb5259..1a82cd3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -8,14 +8,6 @@ set (USE_PCH 1)
include(FindPkgConfig)
-# apt install libsdbus-c++-dev
-# apt install libsdbus-c++-bin
-find_package(sdbus-c++ REQUIRED)
-
-
-
-
-
# Can't get the pkg_check to work.
# pkg_check_modules(LIBNL3 "nl-genl-3")
diff --git a/src/ConfigMain.cpp b/src/ConfigMain.cpp
index ebaa2cf..256c86e 100644
--- a/src/ConfigMain.cpp
+++ b/src/ConfigMain.cpp
@@ -64,7 +64,7 @@ using namespace pipedal;
#define PIPEDAL_P2PD_SERVICE "pipedal_p2pd"
#define JACK_SERVICE "jack"
-#define REMOVE_OLD_SERVICE 1 // Grandfathering: whether to remove the old shutdown service (now pipedaladmind)
+#define REMOVE_OLD_SERVICE 0 // Grandfathering: whether to remove the old shutdown service (now pipedaladmind)
#define OLD_SHUTDOWN_SERVICE "pipedalshutdownd"
std::filesystem::path GetServiceFileName(const std::string &serviceName)
@@ -101,27 +101,27 @@ void EnableService()
{
if (sysExec(SYSTEMCTL_BIN " enable " NATIVE_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to enable the " NATIVE_SERVICE " service.";
+ cout << "Error: Failed to enable the " NATIVE_SERVICE " service.\n";
}
if (sysExec(SYSTEMCTL_BIN " enable " ADMIN_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to enable the " ADMIN_SERVICE " service.";
+ cout << "Error: Failed to enable the " ADMIN_SERVICE " service.\n";
}
}
void DisableService()
{
if (sysExec(SYSTEMCTL_BIN " disable " NATIVE_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to disable the " NATIVE_SERVICE " service.";
+ cout << "Error: Failed to disable the " NATIVE_SERVICE " service.\n";
}
if (sysExec(SYSTEMCTL_BIN " disable " ADMIN_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to disable the " ADMIN_SERVICE " service.";
+ cout << "Error: Failed to disable the " ADMIN_SERVICE " service.\n";
}
#if REMOVE_OLD_SERVICE
if (sysExec(SYSTEMCTL_BIN " disable " OLD_SHUTDOWN_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to disable the " OLD_SHUTDOWN_SERVICE " service.";
+ cout << "Error: Failed to disable the " OLD_SHUTDOWN_SERVICE " service.\n";
}
#endif
}
@@ -130,24 +130,24 @@ void StopService(bool excludeShutdownService = false)
{
if (sysExec(SYSTEMCTL_BIN " stop " NATIVE_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to stop the " NATIVE_SERVICE " service.";
+ cout << "Error: Failed to stop the " NATIVE_SERVICE " service.\n";
}
if (!excludeShutdownService)
{
if (sysExec(SYSTEMCTL_BIN " stop " ADMIN_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to stop the " ADMIN_SERVICE " service.";
+ cout << "Error: Failed to stop the " ADMIN_SERVICE " service.\n";
}
#if REMOVE_OLD_SERVICE
if (sysExec(SYSTEMCTL_BIN " stop " OLD_SHUTDOWN_SERVICE ".service") != EXIT_SUCCESS)
{
- cout << "Error: Failed to stop the " OLD_SHUTDOWN_SERVICE " service.";
+ cout << "Error: Failed to stop the " OLD_SHUTDOWN_SERVICE " service.\n";
}
#endif
}
if (sysExec(SYSTEMCTL_BIN " stop " JACK_SERVICE ".service") != EXIT_SUCCESS)
{
- throw PiPedalException("Failed to stop the " JACK_SERVICE " service.");
+ cout << "Error: Failed to stop the " JACK_SERVICE " service.\n";
}
}
@@ -527,9 +527,24 @@ static void PrepareDeviceidFile()
{
DeviceIdFile deviceIdFile;
- deviceIdFile.deviceName = "PiPedal-" + RandomChars(2);
+ deviceIdFile.deviceName = "PiPedal";
deviceIdFile.uuid = MakeUuid();
deviceIdFile.Save();
+ } else {
+ DeviceIdFile deviceIdFile;
+ if (deviceIdFile.deviceName == "" || deviceIdFile.uuid == "")
+ {
+ if (deviceIdFile.deviceName == "")
+ {
+ deviceIdFile.deviceName = "PiPedal";
+ }
+ if (deviceIdFile.uuid == "")
+ {
+ deviceIdFile.uuid = MakeUuid();
+ }
+ deviceIdFile.Save();
+ }
+
}
}
@@ -539,6 +554,10 @@ void Install(const std::filesystem::path &programPrefix, const std::string endpo
{
throw PiPedalException("Failed to create audio service group.");
}
+ if (sysExec(GROUPADD_BIN " -f " SERVICE_GROUP_NAME) != EXIT_SUCCESS)
+ {
+ throw PiPedalException("Failed to create pipedald service group.");
+ }
PrepareDeviceidFile();
InstallJackService();
diff --git a/src/DeviceIdFile.cpp b/src/DeviceIdFile.cpp
index ecccddb..027f0cc 100644
--- a/src/DeviceIdFile.cpp
+++ b/src/DeviceIdFile.cpp
@@ -39,16 +39,16 @@ const char DeviceIdFile::DEVICEID_FILE_NAME[] = "/etc/pipedal/config/device_uuid
void DeviceIdFile::Load()
{
- ifstream f;
-
- f.open(DEVICEID_FILE_NAME);
- if (!f.is_open())
{
- throw invalid_argument("Can't open file " + std::string(DEVICEID_FILE_NAME));
- }
+ ifstream f;
- std::getline(f, uuid);
- std::getline(f, deviceName);
+ f.open(DEVICEID_FILE_NAME);
+ if (f.is_open())
+ {
+ std::getline(f, uuid);
+ std::getline(f, deviceName);
+ }
+ }
}
void DeviceIdFile::Save()
{
@@ -67,10 +67,9 @@ void DeviceIdFile::Save()
{
throw logic_error("Group not found: pipedal_d");
}
- std::ignore = chown(path.c_str(),-1,group_->gr_gid);
+ std::ignore = chown(path.c_str(), -1, group_->gr_gid);
std::ignore = chmod(path.c_str(), S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH);
-
f << uuid << endl;
f << deviceName << endl;
}
diff --git a/src/JackConfiguration.cpp b/src/JackConfiguration.cpp
index b211ac7..2d8565f 100644
--- a/src/JackConfiguration.cpp
+++ b/src/JackConfiguration.cpp
@@ -163,7 +163,7 @@ void JackConfiguration::Initialize()
AddPorts(client, &this->outputAudioPorts_, "system", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput);
AddPorts(client, &this->inputMidiPorts_, "system", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput);
AddPorts(client, &this->outputMidiPorts_, "system", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput);
- isValid_ = true;
+ isValid_ = (this->inputAudioPorts_.size() > 0 && this->outputAudioPorts_.size() > 0);
this->errorStatus_ = "";
jack_client_close(client);
}
diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp
index 0c375c1..5e7d1f7 100644
--- a/src/PiPedalModel.cpp
+++ b/src/PiPedalModel.cpp
@@ -688,7 +688,15 @@ void PiPedalModel::UpdateDnsSd()
DeviceIdFile deviceIdFile;
deviceIdFile.Load();
- avahiService.Announce(webPort,deviceIdFile.deviceName,deviceIdFile.uuid,"pipedal");
+ if (deviceIdFile.deviceName != "" && deviceIdFile.uuid != "")
+ {
+ avahiService.Announce(webPort,deviceIdFile.deviceName,deviceIdFile.uuid,"pipedal");
+ } else {
+ // device_uuid file is written at install time. This warning is harmless if you're debugging.
+ // Without it, we can't pulblish the website via dnsDS.
+ // Run "pipedalconfig --install" to create the file.
+ Lv2Log::warning("Cant read device_uuid file. dnsSD announcement skipped.");
+ }
}
void PiPedalModel::SetWifiDirectConfigSettings(const WifiDirectConfigSettings &wifiDirectConfigSettings)