From 59dc47f72c2099553eeb55399db00ed6662056ac Mon Sep 17 00:00:00 2001 From: Martijn Braam Date: Fri, 18 Sep 2020 17:07:23 +0200 Subject: [PATCH] Use dtb auto detection for config file --- .../pine64,pinephone-1.0.ini | 0 config/pine64,pinephone-1.1.ini | 18 ++++++++ config/pine64,pinephone-1.2.ini | 18 ++++++++ main.c | 41 ++++++++++++++++--- uvc.ini | 7 ---- 5 files changed, 72 insertions(+), 12 deletions(-) rename pinephone.ini => config/pine64,pinephone-1.0.ini (100%) create mode 100644 config/pine64,pinephone-1.1.ini create mode 100644 config/pine64,pinephone-1.2.ini delete mode 100644 uvc.ini diff --git a/pinephone.ini b/config/pine64,pinephone-1.0.ini similarity index 100% rename from pinephone.ini rename to config/pine64,pinephone-1.0.ini diff --git a/config/pine64,pinephone-1.1.ini b/config/pine64,pinephone-1.1.ini new file mode 100644 index 0000000..fa95dae --- /dev/null +++ b/config/pine64,pinephone-1.1.ini @@ -0,0 +1,18 @@ +[device] +csi=sun6i-csi + +[rear] +driver=ov5640 +width=2592 +height=1944 +rate=15 +fmt=BGGR8 +rotate=270 + +[front] +driver=gc2145 +width=800 +height=600 +rate=30 +fmt=BGGR8 +rotate=90 diff --git a/config/pine64,pinephone-1.2.ini b/config/pine64,pinephone-1.2.ini new file mode 100644 index 0000000..fa95dae --- /dev/null +++ b/config/pine64,pinephone-1.2.ini @@ -0,0 +1,18 @@ +[device] +csi=sun6i-csi + +[rear] +driver=ov5640 +width=2592 +height=1944 +rate=15 +fmt=BGGR8 +rotate=270 + +[front] +driver=gc2145 +width=800 +height=600 +rate=30 +fmt=BGGR8 +rotate=90 diff --git a/main.c b/main.c index 836449d..20271dd 100644 --- a/main.c +++ b/main.c @@ -843,13 +843,44 @@ on_camera_switch_clicked(GtkWidget *widget, gpointer user_data) start_capturing(video_fd); } +int +find_config(char *conffile) +{ + char buf[512]; + FILE *fp; + + if(access("/proc/device-tree/compatible", F_OK) != -1) { + fp = fopen("/proc/device-tree/compatible", "r"); + fgets(buf, 512, fp); + fclose(fp); + sprintf(conffile, "/usr/share/megapixels/config/%s.ini", buf); + if(access(conffile, F_OK) != -1) { + printf("Found config file at %s\n", conffile); + return 0; + } + sprintf(conffile, "config/%s.ini", buf); + if(access(conffile, F_OK) != -1) { + printf("Found config file at %s\n", conffile); + return 0; + } + printf("%s not found\n", conffile); + } else { + printf("Could not read device name from device tree\n"); + } + conffile = "/etc/megapixels.ini"; + if(access(conffile, F_OK) != -1) { + printf("Found config file at %s\n", conffile); + return 0; + } + return -1; +} + int main(int argc, char *argv[]) { - if (argc != 2) { - g_printerr("Usage: camera configfile\n"); - return 1; - } + char conffile[512]; + + find_config(conffile); gtk_init(&argc, &argv); g_object_set(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", TRUE, NULL); @@ -886,7 +917,7 @@ main(int argc, char *argv[]) GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER); - int result = ini_parse(argv[1], config_ini_handler, NULL); + int result = ini_parse(conffile, config_ini_handler, NULL); if (result == -1) { g_printerr("Config file not found\n"); return 1; diff --git a/uvc.ini b/uvc.ini deleted file mode 100644 index 3ae2dea..0000000 --- a/uvc.ini +++ /dev/null @@ -1,7 +0,0 @@ -[device] -rear=/dev/video0 - -[preview] -width=640 -height=480 -fmt=YUYV \ No newline at end of file