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