From 92b01b9aa07dc58275021a5249aa59c74be7c2de Mon Sep 17 00:00:00 2001
From: lamipaul <paulobest25@gmail.com>
Date: Thu, 16 Mar 2023 17:31:34 +0100
Subject: [PATCH] add MPU in rapport

---
 RapportIMU2txt    | Bin 0 -> 16280 bytes
 RapportIMU2txt.c  | 130 ++++++++++++++++++++++++++++++++++++++++++++++
 RapportInfo2txt   | Bin 16416 -> 16416 bytes
 RapportInfo2txt.c |  11 ++--
 4 files changed, 137 insertions(+), 4 deletions(-)
 create mode 100755 RapportIMU2txt
 create mode 100755 RapportIMU2txt.c

diff --git a/RapportIMU2txt b/RapportIMU2txt
new file mode 100755
index 0000000000000000000000000000000000000000..8247fd7cd7a3fa4b67b80eb790c6d10c7cbb191e
GIT binary patch
literal 16280
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
VJ4_5j?*mnA3=9lXXd2MC3;_Ge#%TZm

literal 0
HcmV?d00001

diff --git a/RapportIMU2txt.c b/RapportIMU2txt.c
new file mode 100755
index 0000000..bed0582
--- /dev/null
+++ b/RapportIMU2txt.c
@@ -0,0 +1,130 @@
+// by paul
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+#include <math.h>
+
+#define NTOAS_MAX 200
+
+#define RORQUAL_SAMPLE_RATE 4000
+#define RORQUAL_LENSIG RORQUAL_SAMPLE_RATE*60 // load 60sec
+#define RORQUAL_WINSIZE 4096
+#define RORQUAL_LENSPEC (RORQUAL_LENSIG - RORQUAL_WINSIZE)/RORQUAL_HOPSIZE
+#define RORQUAL_HOPSIZE 256
+#define RORQUAL_LENPRED RORQUAL_LENSPEC - (5-1)*3 //3 layers of kernel size 5
+#define RORQUAL_RAPPORT_NSAMPLESTOSEND 3 // see cacha
+#define RORQUAL_RAPPORT_SAMPLE_RATE 12800
+#define RORQUAL_RAPPORT_SAMPLESPERSAMPLE 25600 // see cacha
+
+#define CACHA_SAMPLE_RATE 64000
+#define CACHA_LENSIG CACHA_SAMPLE_RATE*60 // load 10sec
+#define CACHA_WINSIZE 512
+#define CACHA_LENSPEC (CACHA_LENSIG - CACHA_WINSIZE)/CACHA_HOPSIZE
+#define CACHA_HOPSIZE 256
+#define CACHA_LENPRED (((CACHA_LENSPEC - 6)/2 - 6)/2 -6)/2 // 3 layers hopsize 2 kernel 7
+#define CACHA_RAPPORT_NSAMPLESTOSEND 10 // a sample is positionned at a high pred from the cnn, we extract the audio signal arround to send back via network
+#define CACHA_RAPPORT_SAMPLE_RATE 128000
+#define CACHA_RAPPORT_SAMPLESPERSAMPLE 12800// number of audio samples per high pred sample to send back
+
+#define RAPPORT_CHANNELS 5 // number of channels recorded to include in the report
+#define ADDITIONNAL_DATA_SIZE 736
+#define trameSize 31
+
+typedef struct{
+    float predsC[CACHA_LENPRED]; //len of preds for 10sec signal
+    short numDetectionsCachalot;
+    float predsR[RORQUAL_LENPRED]; //len of preds for 60sec signal
+    short numDetectionsRorqual;
+    char fileName[50];      //Nom du fichier concerne
+    // int ToAs_cacha[NTOAS_MAX];
+    // unsigned char hydros_ToAs_cacha[NTOAS_MAX];
+    short predPeaksR[RORQUAL_RAPPORT_NSAMPLESTOSEND]; //indices of predPeaks for rorqual
+    short predPeaksC[CACHA_RAPPORT_NSAMPLESTOSEND]; //indices of predPeaks for cachalot
+    unsigned char imuR[RORQUAL_RAPPORT_NSAMPLESTOSEND][ADDITIONNAL_DATA_SIZE];
+    unsigned char imuC[RORQUAL_RAPPORT_NSAMPLESTOSEND][ADDITIONNAL_DATA_SIZE];
+    int16_t samplesR[RORQUAL_RAPPORT_NSAMPLESTOSEND][RORQUAL_RAPPORT_SAMPLESPERSAMPLE][RAPPORT_CHANNELS]; // samples to send back for rorqual
+    int16_t samplesC[CACHA_RAPPORT_NSAMPLESTOSEND][CACHA_RAPPORT_SAMPLESPERSAMPLE][RAPPORT_CHANNELS]; // samples to send back for cachalot
+}RAPPORT;
+int main(int argc, char* argv[]){
+//  printf("Have you checked rorqual and cacha lensigs and config ?? (needs to match with pic32\'s)");
+  FILE* infile = fopen(argv[1], "rb");
+  if(infile==NULL){
+    printf("Failed to open input file\n");
+    return 0;
+  }
+  static RAPPORT rapport;
+  int i, j, timestamp;
+  unsigned char* curData;
+  short int val;
+  fread(&rapport, sizeof(RAPPORT), 1, infile);
+  printf("%d cacha and %d rorqual", rapport.numDetectionsCachalot, rapport.numDetectionsRorqual);
+    
+  strcpy(argv[1] + strlen(argv[1])-5, "_imuC.txt\0");
+  FILE* outfile = fopen(argv[1], "w+");
+  if(outfile==NULL){
+    printf("Failed to open output file\n");
+    return 0;
+  }
+  for(j=0; j<rapport.numDetectionsCachalot; j++){
+    curData = rapport.imuC[j] + 6;
+    while(curData + trameSize + 6 < rapport.imuC[j] + ADDITIONNAL_DATA_SIZE){
+      if(!(curData[0]==0xFE && curData[1]==0x0A && curData[2]==0x0A && curData[5]==0x08)){
+        // skip trame if header is incorrect
+        curData += trameSize + 6;
+        continue;
+      }
+      curData += 3 + 2; // skip trame header, trame length
+      timestamp = *((int*) (curData + 9));
+      timestamp = ((timestamp & 0xFF000000)>>24) | ((timestamp & 0x00FF0000)>>8) | ((timestamp & 0x0000FF00)<<8) | ((timestamp & 0x000000FF)<<24);
+      fprintf(outfile, "%d,", timestamp);
+      for(i=13; i<31; i+=2){
+        val = *((short int*) (curData + i));
+        val = ((val & 0x00FF)<<8) | ((val & 0xFF00)>>8);
+        if(i<29){
+          fprintf(outfile, "%hd,", val);
+        }else{
+          fprintf(outfile, "%hd\n", val);
+        }
+      }
+      curData += trameSize + 1;
+    }
+    fprintf(outfile, "\n");
+  }
+  fclose(outfile);
+
+  strcpy(argv[1] + strlen(argv[1])-5, "R.txt\0");
+  outfile = fopen(argv[1], "w+");
+  if(outfile==NULL){
+    printf("Failed to open output file\n");
+    return 0;
+  }
+  for(j=0; j<rapport.numDetectionsRorqual; j++){
+    curData = rapport.imuR[j] + 6;
+    while(curData + trameSize + 6 < rapport.imuR[j] + ADDITIONNAL_DATA_SIZE){
+      if(!(curData[0]==0xFE && curData[1]==0x0A && curData[2]==0x0A && curData[5]==0x08)){
+        // skip trame if header is incorrect
+        curData += trameSize + 6;
+        continue;
+      }
+      curData += 3 + 2; // skip trame header, trame length
+      timestamp = *((int*) (curData + 9));
+      timestamp = ((timestamp & 0xFF000000)>>24) | ((timestamp & 0x00FF0000)>>8) | ((timestamp & 0x0000FF00)<<8) | ((timestamp & 0x000000FF)<<24);
+      fprintf(outfile, "%d,", timestamp);
+      for(i=13; i<31; i+=2){
+        val = *((short int*) (curData + i));
+        val = ((val & 0x00FF)<<8) | ((val & 0xFF00)>>8);
+        if(i<29){
+          fprintf(outfile, "%hd,", val);
+        }else{
+          fprintf(outfile, "%hd\n", val);
+        }
+      }
+      curData += trameSize + 1;
+    }
+    fprintf(outfile, "\n");
+  }
+  fclose(outfile);
+  fclose(infile);
+  return 0;
+}
diff --git a/RapportInfo2txt b/RapportInfo2txt
index d6ca689381f8ffd4d8e2842834a8330df8c9e0f9..6dedff8be10d2efd906fc65ca267ad6867424f8d 100755
GIT binary patch
delta 193
zcmZ3`z__4+aYF+m6UUUzO^n|dMgC5DKiR<in;hd!=65rfPjb7~FpXt%5A$h$CYgzw
zBZcJ{c`k@DFnIKeFnIK`?wZ^zqJu2ZG<mnkU7ijNxQfM_mxv0Y=xLgKPz*(n*W{mK
v*LgZv*kGn+Z@wcwMG|CRk)a<GQ^Li~hm7sGc^xLoGr+-QMHb=33igZu^3Xdv

delta 193
zcmZ3`z__4+aYF+m(}beUO^n|dMUFYMt(_yyc>1HH_xXv(PwGwj%9Fdfhxs%=(~|tn
zk-~C}JO{)X7(9AK7(9Ae4^3_s(LomIn!H=&F3$yoirJf&hzg?U>6&~{3`I}S<ey^K
vc`kfrg_)YX`HuJ$NsxU-hJH*;FV=59WNgRHdm>++0S+cBvIs9$uxA7SXfQp{

diff --git a/RapportInfo2txt.c b/RapportInfo2txt.c
index 97e58f7..39d7c5d 100755
--- a/RapportInfo2txt.c
+++ b/RapportInfo2txt.c
@@ -28,6 +28,7 @@
 #define CACHA_RAPPORT_SAMPLESPERSAMPLE 12800// number of audio samples per high pred sample to send back
 
 #define RAPPORT_CHANNELS 5 // number of channels recorded to include in the report
+#define ADDITIONNAL_DATA_SIZE 736
 
 typedef struct{
     float predsC[CACHA_LENPRED]; //len of preds for 10sec signal
@@ -35,12 +36,14 @@ typedef struct{
     float predsR[RORQUAL_LENPRED]; //len of preds for 60sec signal
     short numDetectionsRorqual;
     char fileName[50];      //Nom du fichier concerne
-    int ToAs_cacha[NTOAS_MAX];
-    unsigned char hydros_ToAs_cacha[NTOAS_MAX];
+    // int ToAs_cacha[NTOAS_MAX];
+    // unsigned char hydros_ToAs_cacha[NTOAS_MAX];
     short predPeaksR[RORQUAL_RAPPORT_NSAMPLESTOSEND]; //indices of predPeaks for rorqual
     short predPeaksC[CACHA_RAPPORT_NSAMPLESTOSEND]; //indices of predPeaks for cachalot
-    short int samplesR[RORQUAL_RAPPORT_NSAMPLESTOSEND][RORQUAL_RAPPORT_SAMPLESPERSAMPLE][RAPPORT_CHANNELS]; // samples to send back for rorqual
-    short int samplesC[CACHA_RAPPORT_NSAMPLESTOSEND][CACHA_RAPPORT_SAMPLESPERSAMPLE][RAPPORT_CHANNELS]; // samples to send back for cachalot
+    unsigned char imuR[RORQUAL_RAPPORT_NSAMPLESTOSEND][ADDITIONNAL_DATA_SIZE];
+    unsigned char imuC[CACHA_RAPPORT_NSAMPLESTOSEND][ADDITIONNAL_DATA_SIZE];
+    int16_t samplesR[RORQUAL_RAPPORT_NSAMPLESTOSEND][RORQUAL_RAPPORT_SAMPLESPERSAMPLE][RAPPORT_CHANNELS]; // samples to send back for rorqual
+    int16_t samplesC[CACHA_RAPPORT_NSAMPLESTOSEND][CACHA_RAPPORT_SAMPLESPERSAMPLE][RAPPORT_CHANNELS]; // samples to send back for cachalot
 }RAPPORT;
 
 int main(int argc, char* argv[]){
-- 
GitLab