Skip to content

Commit d61f80e

Browse files
Analyze config files created on flashed device (#23)
* Analyze config files created on flashed device Identified .txt files created on the target device during the flashing/configuration process. The primary logic is in `src/downloadthread.cpp`. Files identified: `config.txt`, `openhd/camera1.txt`, `openhd/air.txt`, `openhd/ground.txt`, `openhd/debug.txt`, and `openhd/{sbcValue}.txt`. * Refactor OpenHD config generation to use a single JSON file Replaced the creation of multiple .txt configuration files (camera1.txt, air.txt, ground.txt, debug.txt, {sbc}.txt) with a single `openhd/settings.json` file. The JSON file contains keys: "camera", "sbc", "role", and "debug". Preserved logic for `config.txt` modification and `QOpenHD.conf` copying. --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1 parent 77df823 commit d61f80e

1 file changed

Lines changed: 146 additions & 200 deletions

File tree

src/downloadthread.cpp

Lines changed: 146 additions & 200 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include <QDebug>
2020
#include <QProcess>
2121
#include <QSettings>
22+
#include <QJsonObject>
23+
#include <QJsonDocument>
2224
#include <QtConcurrent/QtConcurrent>
2325
#include <QtNetwork/QNetworkProxy>
2426

@@ -1133,227 +1135,181 @@ bool DownloadThread::_customizeImage()
11331135
qDebug() << "Writing OpenHD-Settings";
11341136
QSettings settings_;
11351137

1136-
11371138
QString cameraName = settings_.value("camera").toString();
11381139
QString sbcValue = settings_.value("sbc").toString();
11391140
QString modeValue = settings_.value("mode").toString();
11401141
QString hotspot = settings_.value("hotspot").toString();
11411142
QString bootType = settings_.value("bootType").toString();
11421143
QString qopenhdConfPath = settings_.value("qopenhdConfPath").toString();
11431144

1145+
QJsonObject openhdSettings;
1146+
11441147
if (!cameraName.isEmpty()){
11451148
QString cameraValue;
11461149
qDebug() << "Camera found" << cameraName;
1147-
QFile cam(folder+"/openhd/camera1.txt");
1148-
//Encode camera name to Cam-int
1149-
if (cam.open(QIODevice::WriteOnly))
1150-
{
1151-
if (sbcValue == "rpi"){
1152-
//RaspberryPi
1153-
if (cameraName == "OV5647"){
1154-
cameraValue="30";
1155-
}
1156-
else if (cameraName == "IMX219"){
1157-
cameraValue="31";
1158-
}
1159-
else if (cameraName == "IMX708"){
1160-
cameraValue="32";
1161-
}
1162-
else if (cameraName == "IMX477"){
1163-
cameraValue="33";
1164-
}
1165-
else if (cameraName == "HDMI"){
1166-
cameraValue="20";
1167-
}
1168-
//Arducam
1169-
else if (cameraName == "SkyMasterHDR708"){
1170-
cameraValue="40";
1171-
}
1172-
else if (cameraName == "SkyVisionPro519"){
1173-
cameraValue="41";
1174-
}
1175-
else if (cameraName == "IMX477m"){
1176-
cameraValue="42";
1177-
}
1178-
else if (cameraName == "IMX462"){
1179-
cameraValue="43";
1180-
}
1181-
else if (cameraName == "IMX327"){
1182-
cameraValue="44";
1183-
}
1184-
else if (cameraName == "IMX290"){
1185-
cameraValue="45";
1186-
}
1187-
else if (cameraName == "IMX462MINI"){
1188-
cameraValue="46";
1189-
}
1190-
else if (cameraName == "IMX662"){
1191-
cameraValue="47";
1192-
}
1193-
//Veye
1194-
else if (cameraName == "2MPCAMERAS"){
1195-
cameraValue="60";
1196-
}
1197-
else if (cameraName == "CSIMX307"){
1198-
cameraValue="61";
1199-
}
1200-
else if (cameraName == "CSSC137"){
1201-
cameraValue="62";
1202-
}
1203-
else if (cameraName == "MVCAM"){
1204-
cameraValue="63";
1205-
}
1150+
1151+
if (sbcValue == "rpi"){
1152+
//RaspberryPi
1153+
if (cameraName == "OV5647"){
1154+
cameraValue="30";
12061155
}
1207-
else if (sbcValue == "zero3w"){
1208-
if (cameraName == "HDMI"){
1209-
cameraValue="90";
1210-
}
1211-
if (cameraName == "IMX462"){
1212-
cameraValue="94";
1213-
}
1214-
if (cameraName == "IMX519"){
1215-
cameraValue="95";
1216-
}
1217-
if (cameraName == "IMX219"){
1218-
cameraValue="92";
1219-
}
1220-
else if (cameraName == "OV5647"){
1221-
cameraValue="91";
1222-
}
1223-
else if (cameraName == "IMX708"){
1224-
cameraValue="93";
1225-
}
1226-
else if (cameraName == "VEYE"){
1227-
cameraValue="97";
1228-
}
1229-
else if (cameraName == "OHD-JAGUAR"){
1230-
cameraValue="96";
1231-
}
1156+
else if (cameraName == "IMX219"){
1157+
cameraValue="31";
12321158
}
1233-
else if ((sbcValue == "rock-5b") || (sbcValue == "rock-5a")) {
1234-
if (cameraName == "HDMI"){
1235-
cameraValue="80";
1236-
}
1237-
if (cameraName == "IMX219"){
1238-
cameraValue="82";
1239-
}
1240-
else if (cameraName == "OV5647"){
1241-
cameraValue="81";
1242-
}
1243-
else if (cameraName == "IMX708"){
1244-
cameraValue="83";
1245-
}
1246-
else if (cameraName == "IMX462"){
1247-
cameraValue="84";
1248-
}
1249-
else if (cameraName == "IMX415"){
1250-
cameraValue="85";
1251-
}
1252-
else if (cameraName == "IMX477"){
1253-
cameraValue="86";
1254-
}
1255-
else if (cameraName == "IMX519"){
1256-
cameraValue="87";
1257-
}
1258-
else if (cameraName == "OHD-JAGUAR"){
1259-
cameraValue="88";
1260-
}
1159+
else if (cameraName == "IMX708"){
1160+
cameraValue="32";
12611161
}
1262-
1263-
if (cameraName == "FILESRC"){
1264-
cameraValue="4";
1162+
else if (cameraName == "IMX477"){
1163+
cameraValue="33";
12651164
}
1266-
else if (cameraName == "IP-CAMERA"){
1267-
cameraValue="3";
1165+
else if (cameraName == "HDMI"){
1166+
cameraValue="20";
12681167
}
1269-
else if (cameraName == "EXTERNAL"){
1270-
cameraValue="2";
1168+
//Arducam
1169+
else if (cameraName == "SkyMasterHDR708"){
1170+
cameraValue="40";
12711171
}
1272-
else if (cameraName == "USB"){
1273-
cameraValue="1";
1172+
else if (cameraName == "SkyVisionPro519"){
1173+
cameraValue="41";
12741174
}
1275-
else if (cameraName == "TESTPATTERN"){
1276-
cameraValue="0";
1175+
else if (cameraName == "IMX477m"){
1176+
cameraValue="42";
12771177
}
1278-
1279-
QByteArray camBytes = cameraValue.toUtf8();
1280-
qint64 bytesWritten = cam.write(camBytes);
1281-
cam.close();
1282-
1283-
1284-
if (bytesWritten == camBytes.length())
1285-
{
1286-
// Successfully wrote the camera to the file
1178+
else if (cameraName == "IMX462"){
1179+
cameraValue="43";
12871180
}
1288-
else
1289-
{
1290-
emit error(tr("Error writing camera to camera1.txt on FAT partition"));
1291-
return false;
1181+
else if (cameraName == "IMX327"){
1182+
cameraValue="44";
1183+
}
1184+
else if (cameraName == "IMX290"){
1185+
cameraValue="45";
1186+
}
1187+
else if (cameraName == "IMX462MINI"){
1188+
cameraValue="46";
1189+
}
1190+
else if (cameraName == "IMX662"){
1191+
cameraValue="47";
1192+
}
1193+
//Veye
1194+
else if (cameraName == "2MPCAMERAS"){
1195+
cameraValue="60";
1196+
}
1197+
else if (cameraName == "CSIMX307"){
1198+
cameraValue="61";
1199+
}
1200+
else if (cameraName == "CSSC137"){
1201+
cameraValue="62";
1202+
}
1203+
else if (cameraName == "MVCAM"){
1204+
cameraValue="63";
12921205
}
12931206
}
1294-
else
1295-
{
1296-
emit error(tr("Error creating camera1.txt on FAT partition"));
1297-
return false;
1207+
else if (sbcValue == "zero3w"){
1208+
if (cameraName == "HDMI"){
1209+
cameraValue="90";
1210+
}
1211+
if (cameraName == "IMX462"){
1212+
cameraValue="94";
1213+
}
1214+
if (cameraName == "IMX519"){
1215+
cameraValue="95";
1216+
}
1217+
if (cameraName == "IMX219"){
1218+
cameraValue="92";
1219+
}
1220+
else if (cameraName == "OV5647"){
1221+
cameraValue="91";
1222+
}
1223+
else if (cameraName == "IMX708"){
1224+
cameraValue="93";
1225+
}
1226+
else if (cameraName == "VEYE"){
1227+
cameraValue="97";
1228+
}
1229+
else if (cameraName == "OHD-JAGUAR"){
1230+
cameraValue="96";
1231+
}
1232+
}
1233+
else if ((sbcValue == "rock-5b") || (sbcValue == "rock-5a")) {
1234+
if (cameraName == "HDMI"){
1235+
cameraValue="80";
1236+
}
1237+
if (cameraName == "IMX219"){
1238+
cameraValue="82";
1239+
}
1240+
else if (cameraName == "OV5647"){
1241+
cameraValue="81";
1242+
}
1243+
else if (cameraName == "IMX708"){
1244+
cameraValue="83";
1245+
}
1246+
else if (cameraName == "IMX462"){
1247+
cameraValue="84";
1248+
}
1249+
else if (cameraName == "IMX415"){
1250+
cameraValue="85";
1251+
}
1252+
else if (cameraName == "IMX477"){
1253+
cameraValue="86";
1254+
}
1255+
else if (cameraName == "IMX519"){
1256+
cameraValue="87";
1257+
}
1258+
else if (cameraName == "OHD-JAGUAR"){
1259+
cameraValue="88";
1260+
}
1261+
}
1262+
1263+
if (cameraName == "FILESRC"){
1264+
cameraValue="4";
1265+
}
1266+
else if (cameraName == "IP-CAMERA"){
1267+
cameraValue="3";
1268+
}
1269+
else if (cameraName == "EXTERNAL"){
1270+
cameraValue="2";
1271+
}
1272+
else if (cameraName == "USB"){
1273+
cameraValue="1";
1274+
}
1275+
else if (cameraName == "TESTPATTERN"){
1276+
cameraValue="0";
1277+
}
1278+
1279+
if (!cameraValue.isEmpty()) {
1280+
openhdSettings.insert("camera", cameraValue);
12981281
}
12991282
}
1283+
13001284
if (!sbcValue.isEmpty()){
1301-
QFile sbc(folder + "/openhd" + "/" + sbcValue + ".txt");
1302-
if (sbc.open(QIODevice::WriteOnly)) {
1303-
QTextStream stream(&sbc);
1304-
sbc.close();
1305-
} else {
1306-
emit error(tr("This Image does not support settings, yet !"));
1307-
return false;
1308-
}
1285+
openhdSettings.insert("sbc", sbcValue);
13091286
}
1310-
// if (!hotspot.isEmpty()){
1311-
// QFile Hs(folder+"/openhd"+"/wifi_hotspot.txt");
1312-
// if (Hs.open(QIODevice::WriteOnly)) {
1313-
// QTextStream stream(&Hs);
1314-
// Hs.close();
1315-
// } else {
1316-
// emit error(tr("Error creating hotspot.txt file on FAT partition"));
1317-
// return false;
1318-
// }
1319-
// }
1287+
13201288
if (modeValue == "debug"){
1321-
QFile Db(folder+"/openhd"+"/debug.txt");
1322-
if (Db.open(QIODevice::WriteOnly)) {
1323-
QTextStream stream(&Db);
1324-
Db.close();
1325-
} else {
1326-
emit error(tr("Error creating debug.txt file on FAT partition"));
1327-
return false;
1328-
}
1329-
}
1330-
if (!sbcValue.isEmpty()) {
1331-
QFile sbc(folder+"/openhd"+"/"+sbcValue+".txt");
1332-
if (sbc.open(QIODevice::WriteOnly)) {
1333-
QTextStream stream(&sbc);
1334-
sbc.close();
1335-
} else {
1336-
emit error(tr("This Image does not support settings, yet !"));
1337-
return false;
1338-
}
1289+
openhdSettings.insert("debug", true);
13391290
}
1291+
13401292
if (bootType == "Air"){
1341-
QFile air(folder+"/openhd"+"/air.txt");
1342-
if (air.open(QIODevice::WriteOnly)) {
1343-
QTextStream stream(&air);
1344-
air.close();
1345-
} else {
1346-
emit error(tr("Error creating air.txt file on FAT partition"));
1347-
return false;
1348-
}
1293+
openhdSettings.insert("role", "air");
13491294
}
13501295
else if(bootType == "Ground"){
1351-
QFile ground(folder+"/openhd"+"/ground.txt");
1352-
if (ground.open(QIODevice::WriteOnly)) {
1353-
QTextStream stream(&ground);
1354-
ground.close();
1296+
openhdSettings.insert("role", "ground");
1297+
}
1298+
1299+
if (!openhdSettings.isEmpty()) {
1300+
QDir openhdDir(folder + "/openhd");
1301+
if (!openhdDir.exists() && !openhdDir.mkpath(".")) {
1302+
emit error(tr("Error creating openhd folder on FAT partition"));
1303+
return false;
1304+
}
1305+
1306+
QFile settingsFile(openhdDir.filePath("settings.json"));
1307+
if (settingsFile.open(QIODevice::WriteOnly)) {
1308+
QJsonDocument doc(openhdSettings);
1309+
settingsFile.write(doc.toJson());
1310+
settingsFile.close();
13551311
} else {
1356-
emit error(tr("Error creating air.txt file on FAT partition"));
1312+
emit error(tr("Error writing settings.json on FAT partition"));
13571313
return false;
13581314
}
13591315
}
@@ -1382,16 +1338,6 @@ bool DownloadThread::_customizeImage()
13821338
return false;
13831339
}
13841340
}
1385-
// if (!cameraName.isEmpty()) {
1386-
// QFile cam(folder+"/openhd"+"/+camera1+.txt");
1387-
// if (cam.open(QIODevice::WriteOnly)) {
1388-
// QTextStream stream(&cam);
1389-
// cam.close();
1390-
// } else {
1391-
// emit error(tr("Error creating Camera file on FAT partition"));
1392-
// return false;
1393-
// }
1394-
// }
13951341
}
13961342

13971343
emit finalizing();

0 commit comments

Comments
 (0)