Update Setup Process

- Added audio device to setup form
- Implemented 'getDevices.py' into setup form
- Now shows the user their devices to select the correct ID
- Fixed bug in the op25 dir created by new setup
- Finalized the '.env' file creation
This commit is contained in:
Logan Cusano
2024-05-13 00:41:44 -04:00
parent 7fb67f6ddf
commit 3e7b387092
2 changed files with 19 additions and 5 deletions

View File

@@ -4,6 +4,7 @@ import express from 'express';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import { generateUniqueID } from '../../modules/baseUtils.mjs'; import { generateUniqueID } from '../../modules/baseUtils.mjs';
import { restartApplication } from '../../modules/selfUpdater.mjs' import { restartApplication } from '../../modules/selfUpdater.mjs'
import { launchProcess } from '../../modules/subprocessHandler.mjs'
const router = express.Router(); const router = express.Router();
const __dirname = path.dirname(fileURLToPath(import.meta.url)); // Define __dirname for ESM const __dirname = path.dirname(fileURLToPath(import.meta.url)); // Define __dirname for ESM
@@ -12,8 +13,10 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); // Define __dirn
let systemsData = []; let systemsData = [];
let nodeData = {}; let nodeData = {};
router.get('/', (req, res) => { router.get('/', async (req, res) => {
res.render('setup/setup'); const output = await launchProcess('python', ['./discordAudioBot/pdab/getDevices.py'], true, true)
console.log("Device List", output);
res.render('setup/setup', { deviceList: output });
}); });
// Route to serve the page for adding nearby systems // Route to serve the page for adding nearby systems
@@ -23,13 +26,14 @@ router.get('/add-system', (req, res) => {
router.post('/', (req, res) => { router.post('/', (req, res) => {
// Handle form submission here // Handle form submission here
const { clientName, clientLocation, clientCapabilities } = req.body; const { clientName, clientLocation, clientCapabilities, audioDeviceId } = req.body;
console.log(clientName, clientLocation, clientCapabilities); console.log(clientName, clientLocation, clientCapabilities, audioDeviceId);
nodeData.clientName = clientName; nodeData.clientName = clientName;
nodeData.clientLocation = clientLocation; nodeData.clientLocation = clientLocation;
nodeData.clientCapabilities = clientCapabilities; nodeData.clientCapabilities = clientCapabilities;
nodeData.audioDeviceId = audioDeviceId;
res.redirect('/setup/add-system'); res.redirect('/setup/add-system');
}); });
@@ -86,8 +90,11 @@ const exportCsv = (nodeData) => {
CLIENT_CAPABILITIES: nodeData.clientCapabilities, CLIENT_CAPABILITIES: nodeData.clientCapabilities,
SERVER_IP: "", SERVER_IP: "",
SERVER_PORT: 0, SERVER_PORT: 0,
OP25_FULL_PATH: `${__dirname}/op25/op25/gr-op25_repeater/apps`, OP25_FULL_PATH: path.resolve(__dirname, '../../op25/op25/gr-op25_repeater/apps'),
CONFIG_PATH: "./config/radioPresets.json", CONFIG_PATH: "./config/radioPresets.json",
AUDIO_DEVICE_ID: nodeData.audioDeviceId,
PDAB_PORT: 3110,
NODE_ENV: "production",
}; };
// Generate .env file content // Generate .env file content

View File

@@ -19,7 +19,14 @@
<label for="clientCapabilities">Client Capabilities (comma-separated):</label> <label for="clientCapabilities">Client Capabilities (comma-separated):</label>
<input type="text" id="clientCapabilities" name="clientCapabilities" required> <input type="text" id="clientCapabilities" name="clientCapabilities" required>
<br> <br>
<label for="audioDeviceId">Audio Device ID (typically 'default'):</label>
<input type="text" id="audioDeviceId" name="audioDeviceId" required>
<br>
<button type="submit">Next</button> <button type="submit">Next</button>
<div>
<h3>Audio Devices</h3>
<p><%- deviceList.replace(/\n/g, '<br>') %> </p>
</div>
</form> </form>
</body> </body>
</html> </html>