diff --git a/TBF/BenchControl/Network/Camera/CLP1611/Camera.cs b/TBF/BenchControl/Network/Camera/CLP1611/Camera.cs index 311b9122a..feee1d2c2 100644 --- a/TBF/BenchControl/Network/Camera/CLP1611/Camera.cs +++ b/TBF/BenchControl/Network/Camera/CLP1611/Camera.cs @@ -38,10 +38,9 @@ namespace TBF.BenchControl.Network.Camera.CLP1611 } - const string ClpUserName = "tbf"; + string ClpUserName = string.Empty; /// Either "tbf" or "pi" after a successful detection const string ClpPassword = "C1ern4V0d4"; - private static Object fileUploadLock = new Object(); @@ -184,6 +183,8 @@ namespace TBF.BenchControl.Network.Camera.CLP1611 { UiBridge.Bridge.OnCameraInfo(this.cameraIdx, string.Format("{0} ver.{1} {2} s/n {3}", Name, sdCardVer, ipAddress, CameraCfg.HardwareAddress)); + ClpUserName = (sdCardVer.Length > 0 && sdCardVer[0] == '1') ? "tbf" : "pi"; + rtpUdpLocalPort = UdpPortBase + 4 * cameraIdx; rtcpUdpLocalPort = UdpPortBase + 4 * cameraIdx + 1; msrmntUdpLocalPort = UdpPortBase + 4 * cameraIdx + 2; @@ -436,49 +437,66 @@ namespace TBF.BenchControl.Network.Camera.CLP1611 { scpClient.Connect(); - /// - /// Synchronize files in camera /home/tbf/clp directory with the files in "TBF/CameraBinaryFiles" project folder - /// - using (var sshClient = new SshClient(connectionInfo)) + DirectoryInfo dirInfo = null; + if (sdCardVer.Length > 0) { - sshClient.Connect(); - - DirectoryInfo dirInfo = new DirectoryInfo(Path.Combine(System.Windows.Forms.Application.StartupPath, "CameraBinaryFiles")); - SHA1 sha1calculator = SHA1.Create(); - StringBuilder sha1str = new StringBuilder(); - - foreach (FileInfo fi in dirInfo.GetFiles()) + switch (sdCardVer[0]) { - lock (fileUploadLock) + case '1': + dirInfo = new DirectoryInfo(Path.Combine(System.Windows.Forms.Application.StartupPath, "CameraBinaryFiles")); + break; + case '2': + dirInfo = new DirectoryInfo(Path.Combine(System.Windows.Forms.Application.StartupPath, "CameraBinaryFiles2")); + break; + } + } + + if (dirInfo != null) + { + /// + /// Synchronize files in camera /home/tbf/clp directory with the files in "TBF/CameraBinaryFiles" project folder + /// + using (var sshClient = new SshClient(connectionInfo)) + { + sshClient.Connect(); + + SHA1 sha1calculator = SHA1.Create(); + StringBuilder sha1str = new StringBuilder(); + + FileInfo[] fileInfos = dirInfo.GetFiles(); + foreach (FileInfo fi in fileInfos) { - FileStream fs = fi.Open(FileMode.Open); - fs.Position = 0; - byte[] sha1 = sha1calculator.ComputeHash(fs); - fs.Close(); - - sha1str.Clear(); - foreach (var b in sha1) sha1str.Append(b.ToString("x2")); - - if (!sha1sumResponse.Contains(string.Format("{0} clp/{1}", sha1str, fi.Name))) + lock (fileUploadLock) { - /// Copy a file to the camera if SHA1 sum is different of the file is missing - log.InfoFormat("{0}, IP={1}, Uploading file {2}", Name, IPAddress, fi.Name); - scpClient.Upload(fi, string.Format("clp/{0}", fi.Name)); + FileStream fs = fi.Open(FileMode.Open); + fs.Position = 0; + byte[] sha1 = sha1calculator.ComputeHash(fs); + fs.Close(); + + sha1str.Clear(); + foreach (var b in sha1) sha1str.Append(b.ToString("x2")); + + if (!sha1sumResponse.Contains(string.Format("{0} clp/{1}", sha1str, fi.Name))) + { + /// Copy a file to the camera if SHA1 sum is different of the file is missing + log.InfoFormat("{0}, IP={1}, Uploading file {2}", Name, IPAddress, fi.Name); + scpClient.Upload(fi, string.Format("~/clp/{0}", fi.Name)); + } } - } - if (!sha1sumResponse.Contains(fi.Name)) - { - /// Change file properties if it was a new file - string command = string.Format("chmod 755 clp/{0}", fi.Name); - log.InfoFormat("{0}, IP={1}, Executing command '{2}'", Name, IPAddress, command); - sshClient.CreateCommand(command).Execute(); + if (!sha1sumResponse.Contains(fi.Name)) + { + /// Change file properties if it was a new file + string command = string.Format("chmod 755 ~/clp/{0}", fi.Name); + log.InfoFormat("{0}, IP={1}, Executing command '{2}'", Name, IPAddress, command); + sshClient.CreateCommand(command).Execute(); - //if (fi.Name.Equals("runmeonce")) - //{ - // log.InfoFormat("{0}, IP={1}, Executing command 'sudo clp/runmeonce'", Name, IPAddress); - // sshClient.CreateCommand("sudo clp/runmeonce").Execute(); - //} + //if (fi.Name.Equals("runmeonce")) + //{ + // log.InfoFormat("{0}, IP={1}, Executing command 'sudo clp/runmeonce'", Name, IPAddress); + // sshClient.CreateCommand("sudo clp/runmeonce").Execute(); + //} + } } } } @@ -718,8 +736,10 @@ namespace TBF.BenchControl.Network.Camera.CLP1611 { int wid = hiRes ? 1280 : 640; int hgh = hiRes ? 960 : 480; - string command = string.Format("/opt/vc/bin/raspivid -t 0 -cd MJPEG -w {0} -h {1} -fps 30 -b 8000000 -o - | gst-launch-1.0 fdsrc ! \"image/jpeg,framerate=30/1\" ! jpegparse ! rtpjpegpay ! udpsink host={2} port={3}", - wid, hgh, NetAdapter.IPAddress, rtpUdpLocalPort); + string command = string.Format("/opt/vc/bin/raspivid -t 0 -cd MJPEG -w {0} -h {1} -fps 30 -b 8000000 -o - | gst-launch-1.0 fdsrc ! \"image/jpeg,framerate=30/1\" ! jpegparse ! rtpjpegpay ! udpsink host={2} port={3}", + wid, hgh, NetAdapter.IPAddress, rtpUdpLocalPort); + //string command = string.Format("~/userland/build/bin/raspivid -t 0 -cd MJPEG -w {0} -h {1} -fps 30 -b 8000000 -o - | gst-launch-1.0 fdsrc ! \"image/jpeg,framerate=30/1\" ! jpegparse ! rtpjpegpay ! udpsink host={2} port={3}", + // wid, hgh, NetAdapter.IPAddress, rtpUdpLocalPort); return new LiveStreamOp(this, Telnet, command); } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 05c3b3ee4..d44c27e76 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -3663,7 +3663,9 @@ Users - + + +