From e81a3089b1b9673335e2a6983f0eda44ab27824c Mon Sep 17 00:00:00 2001
From: Luca Conterio <luca.conterio@skywarder.eu>
Date: Fri, 20 Aug 2021 17:51:04 +0200
Subject: [PATCH] [AirBrakes] Made scripts parametric wrt input filename

---
 scripts/airbrakes/coeffs.py       |  8 ++++++--
 scripts/airbrakes/trajectories.py | 22 ++++++++++++++++++----
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/scripts/airbrakes/coeffs.py b/scripts/airbrakes/coeffs.py
index fa2de47fa..e9a2dfb1c 100644
--- a/scripts/airbrakes/coeffs.py
+++ b/scripts/airbrakes/coeffs.py
@@ -5,7 +5,8 @@ import sys
 fieldname = "coeffs"
 
 if len(sys.argv) < 2:
-    print("\nError, missing path to file \nUsage : python3 coeffs.py <path_to_mat_file>\n")
+    print("\nError, missing path to file")
+    print("Usage : python3 coeffs.py <path_to_mat_file>\n")
     
 mat = sio.loadmat(sys.argv[1])
 
@@ -17,4 +18,7 @@ coeffs = {}
 for coeff, name in zip(data, names):
     coeffs[name] = coeff.item()
 
-print(coeffs)
+print("struct Coefficients\n{")
+for name in coeffs: # coeff name = dict key
+    print("\tfloat " + name + " = " + str(coeffs[name]) + ";")
+print("};")
diff --git a/scripts/airbrakes/trajectories.py b/scripts/airbrakes/trajectories.py
index 3202be92c..8f2b9e327 100644
--- a/scripts/airbrakes/trajectories.py
+++ b/scripts/airbrakes/trajectories.py
@@ -2,16 +2,28 @@ import scipy.io as sio
 import sys
 
 #filename = "Trajectories.mat"
+outfilename = "Trajectories_data.h"
 fieldname = "trajectories_saving"
 
 if len(sys.argv) < 2:
-    print("\nError, missing path to file \nUsage : python3 coeffs.py <path_to_mat_file>\n")
+    print("\nError, missing path to file")
+    print("Usage : python3 coeffs.py <path_to_mat_file>\n")
 
 mat = sio.loadmat(sys.argv[1])
 trajectories = mat[fieldname][0]
 
-with open("Trajectories_data.h", "w") as f:
-    f.write("{\n")
+with open(outfilename, "w") as f:
+    num_trajectories = len(trajectories)
+    max_trajectory_len = 0
+    for t in trajectories:
+        # check length of first column for each trajectory
+        if len(t[0]) > max_trajectory_len:
+            max_trajectory_len = len(t[0])
+
+    f.write("static const unsigned int TOT_TRAJECTORIES = " + str(num_trajectories) + ";\n")
+    f.write("static const unsigned int TRAJECTORY_MAX_LENGTH = " + str(max_trajectory_len) + ";\n\n")
+
+    f.write("const trajectory_t TRAJECTORIES_DATA[TOT_TRAJECTORIES] = {\n")
     for trajectory in trajectories:
         zs, vzs, xs, vxs, ys, vys, sbar = trajectory
         f.write("\t{\n")
@@ -19,4 +31,6 @@ with open("Trajectories_data.h", "w") as f:
         for z, vz in zip(zs, vzs):
             f.write("\t\t\t{%f, %f},\n" % (z, vz))
         f.write("\t\t}\n\t},\n")
-    f.write("}")
+    f.write("};")
+
+print("\nFile " + outfilename + " written")
-- 
GitLab