From 4474e3f07861a8c001fc8164e5704d5ab96d8873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Phil=C3=A9mon=20Pr=C3=A9vot?= <philemon.prevot@gmail.com> Date: Mon, 28 Oct 2024 16:33:46 +0100 Subject: [PATCH] Clean main branch --- CLOCK.CFG | 2 - JConfig.CFG | 21 ----- Rapport2wavs.py | 43 --------- RapportIMU2txt | Bin 16280 -> 0 bytes RapportIMU2txt.c | 130 -------------------------- RapportInfo2txt | Bin 17136 -> 0 bytes RapportInfo2txt.c | 112 ---------------------- log2wav | Bin 17376 -> 0 bytes log2wav.c | 231 ---------------------------------------------- plot_mpu.py | 30 ------ stdc2txt.py | 26 ------ trame IMU.txt | 36 -------- 12 files changed, 631 deletions(-) delete mode 100755 CLOCK.CFG delete mode 100755 JConfig.CFG delete mode 100644 Rapport2wavs.py delete mode 100755 RapportIMU2txt delete mode 100755 RapportIMU2txt.c delete mode 100755 RapportInfo2txt delete mode 100755 RapportInfo2txt.c delete mode 100755 log2wav delete mode 100755 log2wav.c delete mode 100755 plot_mpu.py delete mode 100755 stdc2txt.py delete mode 100755 trame IMU.txt diff --git a/CLOCK.CFG b/CLOCK.CFG deleted file mode 100755 index c6ed75d..0000000 --- a/CLOCK.CFG +++ /dev/null @@ -1,2 +0,0 @@ -//System Configuration File -CLOCKTIME= 01/12/2020 14:30:00; \ No newline at end of file diff --git a/JConfig.CFG b/JConfig.CFG deleted file mode 100755 index 8c49eb4..0000000 --- a/JConfig.CFG +++ /dev/null @@ -1,21 +0,0 @@ -//System Configuration File - -Sampling_Resolution=16; // 16 = Resolution in bits (8 or 16) -Sampling_Freq=256000; // 256000 = Sampling frequency(in sample //per sec). Possibles values are //512000,256000, 128000,64000 With WidBand //Filters, or 512000, //128000,32000,8000 With Low Latency //filter -Filter_Selection=1; // = 1 ; filter selection. Possibles //values are: - //0->Wideband1 (0.45 to0.55)�fDATA - //1->Wideband2 (0.40 to0.50)�fDATA - //2->LowLatency - -AutoStart=true; // = true = Auto record at boot -FILE_Size_Limit=150000000;//File Size limitation (in bytes) = //150000000 for 5 minutes -Record_Use_TimeInterval=true; //Set or unset the discrete recording -Shutdown_Duration=5; //Time period of wait time between each record (in seconds) -Preparing_Duration=5; //Time to boot and prepare Pic 32 (SD Card or HDD is not the same) -Recording_Duration=5; //Time period of record (in seconds) -Stopping_Duration=5; //Time to stop Pic 32 (SD Card or HDD is not the same) -Channel_Count=2; //Number of channels to record -Storage_Target=SD; //Storage target (SD for SD card, HDD for hard disk drive or USB for Device mode) -CNN_Detection_Timeout_Duration=30; -GSM_Data_Send_Timeout_Duration=3; -Nb_Remontes_Par_Jour=10; diff --git a/Rapport2wavs.py b/Rapport2wavs.py deleted file mode 100644 index 6239431..0000000 --- a/Rapport2wavs.py +++ /dev/null @@ -1,43 +0,0 @@ -import numpy as np -import soundfile as sf -import argparse - -parser = argparse.ArgumentParser() -parser.add_argument('filename') -args = parser.parse_args() - -RORQUAL_HOPSIZE, RORQUAL_WINSIZE, RORQUAL_FE, RORQUAL_SAMPLEPERSAMPLE, RORQUAL_LENSIG = 256, 4096, 4000, 25600, 60 -CACHA_HOPSIZE, CACHA_WINSIZE, CACHA_FE, CACHA_SAMPLEPERSAMPLE, CACHA_LENSIG = 256, 512, 64000, 12800, 60 -CACHA_RAPPORT_FE, RORQUAL_RAPPORT_FE, RAPPORT_N_CHANNELS = 128_000, 128_00, 5 -CACHA_NUM_DETEC, RORQUAL_NUM_DETEC = 10, 3 -rorqual_predPos = lambda p: int(((p * RORQUAL_HOPSIZE + (RORQUAL_WINSIZE/2 + RORQUAL_HOPSIZE * 13) / 2) / RORQUAL_FE - 1) * RORQUAL_RAPPORT_FE) -cacha_predPos = lambda p: int(((p * CACHA_HOPSIZE * 8 + (CACHA_WINSIZE + CACHA_HOPSIZE * 7 * 6) / 4 ) / CACHA_FE - 0.05) * CACHA_RAPPORT_FE) - -file = open(args.filename, 'r') -lines = iter(file.readlines()) - -for l in lines: - if l == ' rorqual predPeaks\n': - l = next(lines) - if ',' in l: - sig = np.zeros((RORQUAL_LENSIG * RORQUAL_RAPPORT_FE, RAPPORT_N_CHANNELS), dtype='int16') - peaks = np.array(l[:-2].split(',')).astype(int) - l = next(lines) - for p in peaks[:RORQUAL_NUM_DETEC]: - l = next(lines) - samples = np.array(l[:-2].split(',')).astype('int16').reshape(-1, RAPPORT_N_CHANNELS) - sig[rorqual_predPos(p):rorqual_predPos(p)+RORQUAL_SAMPLEPERSAMPLE] = samples[:min(rorqual_predPos(p)+RORQUAL_SAMPLEPERSAMPLE, len(sig))-rorqual_predPos(p)] - sf.write(f'{args.filename[:-8]}_rorqual.wav', sig, RORQUAL_RAPPORT_FE) - if l == ' cacha predPeaks\n': - l = next(lines) - if ',' in l: - sig = np.zeros((CACHA_LENSIG * CACHA_RAPPORT_FE, RAPPORT_N_CHANNELS), dtype='int16') - peaks = np.array(l[:-2].split(',')).astype(int) - l = next(lines) - for p in peaks[:CACHA_NUM_DETEC]: - l = next(lines) - samples = np.array(l[:-2].split(',')).astype('int16').reshape(-1, RAPPORT_N_CHANNELS) - sig[cacha_predPos(p):cacha_predPos(p)+CACHA_SAMPLEPERSAMPLE] = samples - sf.write(f'{args.filename[:-8]}_cacha.wav', sig, CACHA_RAPPORT_FE) - -file.close() diff --git a/RapportIMU2txt b/RapportIMU2txt deleted file mode 100755 index 8247fd7cd7a3fa4b67b80eb790c6d10c7cbb191e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16280 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 VJ4_5j?*mnA3=9lXXd2MC3;_Ge#%TZm diff --git a/RapportIMU2txt.c b/RapportIMU2txt.c deleted file mode 100755 index bed0582..0000000 --- a/RapportIMU2txt.c +++ /dev/null @@ -1,130 +0,0 @@ -// 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 deleted file mode 100755 index 5c219b675b4d844bca1774f3c33385fe0afaf5ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17136 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 diff --git a/RapportInfo2txt.c b/RapportInfo2txt.c deleted file mode 100755 index 39d7c5d..0000000 --- a/RapportInfo2txt.c +++ /dev/null @@ -1,112 +0,0 @@ -// 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 - -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[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[]){ -// 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; - } - strcpy(argv[1] + strlen(argv[1])-4, "txt\0"); - FILE* outfile = fopen(argv[1], "w+"); - if(outfile==NULL){ - printf("Failed to open output file\n"); - return 0; - } - static RAPPORT rapport; - fread(&rapport, sizeof(RAPPORT), 1, infile); - printf("Writing into %s with %d fin whale pulses and %d sperm whale clicks \n", argv[1], rapport.numDetectionsRorqual, rapport.numDetectionsCachalot); - int i, j, k; - fprintf(outfile, "Filename : %s \n", rapport.fileName); - fprintf(outfile, "\n rorqual preds\n"); - for(i=0; i<RORQUAL_LENPRED; i++){ - fprintf(outfile, "%f,", rapport.predsR[i]); - } - fprintf(outfile, "\n rorqual predPeaks\n"); - for(i=0; i<rapport.numDetectionsRorqual; i++){ - fprintf(outfile, "%hd,", rapport.predPeaksR[i]); - printf("%f ", rapport.predsR[rapport.predPeaksR[i]]); - } - if(rapport.numDetectionsRorqual > 0){ - printf("\n"); - } - fprintf(outfile, "\n rorqual samples\n"); - for(i=0; i<rapport.numDetectionsRorqual; i++){ - for(j=0; j<RORQUAL_RAPPORT_SAMPLESPERSAMPLE; j++){ - for(k=0; k<RAPPORT_CHANNELS; k++){ - fprintf(outfile, "%hd,", rapport.samplesR[i][j][k]); - } - } - fprintf(outfile, "\n"); - } - fprintf(outfile, "cacha preds\n"); - for(i=0; i<CACHA_LENPRED; i++){ - fprintf(outfile, "%f,", rapport.predsC[i]); - } - fprintf(outfile, "\n cacha predPeaks\n"); - for(i=0; i<rapport.numDetectionsCachalot; i++){ - fprintf(outfile, "%hd,", rapport.predPeaksC[i]); - printf("%f ", rapport.predsC[rapport.predPeaksC[i]]); - } - if(rapport.numDetectionsCachalot > 0){ - printf("\n"); - } - fprintf(outfile, "\n cacha samples\n"); - for(i=0; i < fmin(rapport.numDetectionsCachalot, CACHA_RAPPORT_NSAMPLESTOSEND); i++){ - for(j=0; j<CACHA_RAPPORT_SAMPLESPERSAMPLE; j++){ - for(k=0; k<RAPPORT_CHANNELS; k++){ - fprintf(outfile, "%hd,", rapport.samplesC[i][j][k]); - } - } - fprintf(outfile, "\n"); - } - fclose(infile); - fclose(outfile); - return 0; -} diff --git a/log2wav b/log2wav deleted file mode 100755 index 948f72d1c49145a50b4ea4fef4e846c1afee5eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17376 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 E0NP{y0RR91 diff --git a/log2wav.c b/log2wav.c deleted file mode 100755 index 0e1363f..0000000 --- a/log2wav.c +++ /dev/null @@ -1,231 +0,0 @@ -// Jan. 2021 -// by paul, inspired / recycled from microchip code by SMIOT -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <stdbool.h> -#include <math.h> - -#define MAX_PERIPHERAL 5 //Nombre max de peripheriques externes - -typedef struct{ - char Type; //type du peripherique (0x01 accel, 0x02 gyro, 0x03 magneto, 0x04 temperature, 0x05 pressure, 0x06 light,...) - char ID; //ID du peripherique - char Range; //Range de la mesure (ex: 2G, 4G, 6G, 8G, 16G pour un accel) - char Resolution; //Resolution de mesure du peripherique - short Frequency; //Frequence d'echantillonage du peripherique -}PERIPHERAL_CONFIGURATION; - -typedef struct{ - int headerSize; //Taille du header ce champ exclu - int versionNumber; - char numberOfChan; - char resolutionBits; - int samplingFrequency; - int dmaBlockSize; - int sizeOfAdditionnalDataBuffer; - char numberOfExternalPeripheral; - int timeStampOfStart; - PERIPHERAL_CONFIGURATION periphConfig[MAX_PERIPHERAL]; -}HighBlueHeader; - -struct WaveHeader_s { - char chunkId[4]; // Riff Wave Header - int chunkSize; - char format[4]; - char subChunk1Id[4]; // Format Subchunk - int subChunk1Size; - short int audioFormat; - short int numChannels; - int sampleRate; - int byteRate; - short int blockAlign; - short int bitsPerSample; - //short int extraParamSize; - char subChunk2Id[4]; // Data Subchunk - int subChunk2Size; -} WaveHeader_default = {{'R','I','F','F'}, 36, {'W','A','V','E'}, {'f','m','t',' '}, 16, 1, 0, 0, 0, 0, 0, {'d','a','t','a'}, 0}; -typedef struct WaveHeader_s WaveHeader; - - -void parseLogFileHeader(FILE* logfile, HighBlueHeader* hdr, int verbose){ - // header parse - fread(&hdr->headerSize, 4, 1, logfile); - fread(&hdr->versionNumber, 2, 1, logfile); - fread(&hdr->numberOfChan, 1, 1, logfile); - fread(&hdr->resolutionBits, 1, 1, logfile); - fread(&hdr->samplingFrequency, 4, 1, logfile); - fread(&hdr->dmaBlockSize, 4, 1, logfile); - fread(&hdr->sizeOfAdditionnalDataBuffer, 4, 1, logfile); - fread(&hdr->numberOfExternalPeripheral, 1, 1, logfile); - fread(&hdr->timeStampOfStart, 4, 1, logfile); - if(verbose){ - printf("header size : %d\n", hdr->headerSize); - printf("version number : %d\n", hdr->versionNumber); - printf("number of chans : %d\n", hdr->numberOfChan); - printf("resolutionBits : %d\n", hdr->resolutionBits); - printf("samplingFrequency : %d\n", hdr->samplingFrequency); - printf("dmaBlockSize : %d\n", hdr->dmaBlockSize); - printf("sizeOfAdditionnalDataBuffer : %d\n", hdr->sizeOfAdditionnalDataBuffer); - printf("numberOfExternalPeripheral : %d\n", hdr->numberOfExternalPeripheral); - printf("timeStampOfStart : %d\n", hdr->timeStampOfStart); - } - // load external periph config - for(int i=0; i<hdr->numberOfExternalPeripheral; i++){ - fread(&hdr->periphConfig[i].Type, 1, 1, logfile); - fread(&hdr->periphConfig[i].ID, 1, 1, logfile); - fread(&hdr->periphConfig[i].Range, 1, 1, logfile); - fread(&hdr->periphConfig[i].Resolution, 1, 1, logfile); - fread(&hdr->periphConfig[i].Frequency, 2, 1, logfile); - } - return; -} - -short int toLittleEndian(short int val){ - return val = ((val & 0x00FF)<<8) | ((val & 0xFF00)>>8); -} - -void parseMPU(unsigned char* additionnalDataBlock, int size, bool verbose, FILE* mpuFile){ - static int maxtimeStamp = 0; - int i, timestamp; - short int trameSize = 31, val; // fixed for now - unsigned char* curData = additionnalDataBlock + 6; // first 6 bytes are for usb device - if(verbose){ - printf("MPU Range : %hdG\n", *(curData + 5 + 3)); - printf("MPU Resolution : %hd\n", *(curData + 5 + 3 + 1)); - printf("MPU Sampling Frequency : %hd\n", *(curData + 5 + 3 + 3)); - } - while(curData + trameSize + 6 < additionnalDataBlock + 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); - if(timestamp > maxtimeStamp){ - fprintf(mpuFile, "%d,", timestamp); - //printf("%d\n", timestamp); - // treat payload - for(i=13; i<31; i+=2){ - val = *((short int*) (curData + i)); - val = ((val & 0x00FF)<<8) | ((val & 0xFF00)>>8); - //printf("curData %x %x %hd", *(curData+i), *(curData + i +1), val); - if(i<29){ - fprintf(mpuFile, "%hd,", val); - }else{ - fprintf(mpuFile, "%hd\n", val); - } - } - maxtimeStamp = timestamp; - } - curData += trameSize + 1; // shift of trame size + 1 byte of checksum - } -} - -int main(int argc, char* argv[]){ - if(argc < 2){ - printf("Script needs to be called with at least 1 arguments :\n\t input file name (.log file)\n\t(optionnal) output filename (.wav file)\n\t(optionnal) mpu filename (.csv file)\n\t(optionnal) verbose (1 / void)\n"); - return 0; - } - HighBlueHeader hdr; - FILE* logfile = fopen(argv[1], "rb"); - if(logfile==NULL){ - printf("Failed to open input file\n"); - return 0; - } - // get file size - fseek(logfile, 0, SEEK_END); - long filesize = ftell(logfile); - if(filesize == 0){ - printf("skipped empty file : %s\n", argv[1]); - return 0; - } - fseek(logfile, 0, SEEK_SET); - int verbose = 0; - if(argc==5){ - verbose = *argv[4]=='1'; - } - // file opened successfully, we read the header - parseLogFileHeader(logfile, &hdr, verbose); - int resolutionBytes = hdr.resolutionBits/8; - long dataBlockSampleSize = hdr.dmaBlockSize / ( hdr.numberOfChan * resolutionBytes); - if(verbose){ - printf("file size (bytes) %ld \n", filesize); - printf("dataBlockSampleSize %ld\n", dataBlockSampleSize); - } - if(hdr.resolutionBits!=16 && hdr.resolutionBits!=24 && hdr.resolutionBits!=32){ - printf("resolution %d not supported yet sorry\n", hdr.resolutionBits); - return 0; - } - // move to start of the data - fseek(logfile, hdr.headerSize + 4, SEEK_SET); - - FILE* wavfile;// open wav file - if(argc>2){ - wavfile = fopen(argv[2], "wb"); - }else{ - strcpy(argv[1] + strlen(argv[1])-3, "wav\0"); - wavfile = fopen(argv[1], "wb"); - } - if(wavfile==NULL){ - printf("Failed to open wav output file\n"); - return 0; - } - WaveHeader whdr = WaveHeader_default; - whdr.numChannels = hdr.numberOfChan; - whdr.sampleRate = hdr.samplingFrequency; - whdr.bitsPerSample = hdr.resolutionBits; - whdr.byteRate = whdr.sampleRate * whdr.numChannels * resolutionBytes; - whdr.blockAlign = whdr.numChannels * resolutionBytes; - whdr.chunkSize = 36 + (filesize - hdr.headerSize - 4) / (hdr.dmaBlockSize + hdr.sizeOfAdditionnalDataBuffer) * hdr.numberOfChan * dataBlockSampleSize * resolutionBytes; - whdr.subChunk2Size = whdr.chunkSize-36; - fwrite(&whdr, sizeof(WaveHeader), 1, wavfile); - - FILE* mpuFile = NULL; // open mpu file - if(argc>3){ - mpuFile = fopen(argv[3], "w+"); - if(mpuFile==NULL){ - printf("Failed to open mpu output file\n"); - return 0; - } - } - // }else{ - // strcpy(argv[1] + strlen(argv[1])-4, "_mpu.csv\0"); - // mpuFile = fopen(argv[1], "w+"); - // argv[1][strlen(argv[1])-8] = '\0'; - // } - - char* dmaBlock = (char*) malloc(hdr.dmaBlockSize); - char* additionnalDataBlock = (char*) malloc(hdr.sizeOfAdditionnalDataBuffer); - char* samples = (char*) malloc(hdr.numberOfChan * resolutionBytes); - int ichan, isample; - long pos = 0; - bool isFirst = true; - // read each dataBlock - do{ - fread(additionnalDataBlock, hdr.sizeOfAdditionnalDataBuffer, 1, logfile); - if(mpuFile != NULL){ - parseMPU(additionnalDataBlock, hdr.sizeOfAdditionnalDataBuffer, isFirst && verbose, mpuFile); - isFirst = false; - } - fread(dmaBlock, hdr.dmaBlockSize, 1, logfile); - for(isample=0; isample<dataBlockSampleSize; isample++){ - for(ichan=0; ichan<hdr.numberOfChan; ichan++){ - memcpy(samples + ichan * resolutionBytes, dmaBlock + (ichan * dataBlockSampleSize + isample) * resolutionBytes, resolutionBytes); - } - fwrite(samples, resolutionBytes, hdr.numberOfChan, wavfile); - } - printf("\r %s : ", argv[1]); - pos = ftell(logfile); - printf(" %ld%%", pos*100/filesize); - }while(pos < filesize - 1); - printf("\r\n"); - fclose(wavfile); - fclose(logfile); - if(mpuFile!=NULL){ - fclose(mpuFile); - } - return 0; -} diff --git a/plot_mpu.py b/plot_mpu.py deleted file mode 100755 index de164d6..0000000 --- a/plot_mpu.py +++ /dev/null @@ -1,30 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -import os - - -time, accelX, accelY, accelZ, gyroX, gyroY, gyroZ, magX, magY, magZ = [], [], [], [], [], [], [], [], [], [] - -for f in os.listdir('./'): - if not f.endswith('mpu.csv'): - continue - print(f) - plt.figure() - plt.title(f) - a = np.loadtxt('./'+f, delimiter=',') - time.extend(a[:,0]) - accelX.extend(a[:,1]) - accelY.extend(a[:,2]) - accelZ.extend(a[:,3]) - gyroX.extend(a[:,4]) - gyroY.extend(a[:,5]) - gyroZ.extend(a[:,6]) - magX.extend(a[:,7]) - magY.extend(a[:,8]) - magZ.extend(a[:,9]) - -plt.scatter(time, magX, label='x') -plt.scatter(time, magY, label='y') -plt.scatter(time, magZ, label='z') -plt.legend() -plt.show() diff --git a/stdc2txt.py b/stdc2txt.py deleted file mode 100755 index bb54fe4..0000000 --- a/stdc2txt.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import argparse -import torch -import numpy as np - -parser = argparse.ArgumentParser() -parser.add_argument("stdc") -args = parser.parse_args() - -os.system('rm output_stdc.txt') - -f = open('output_stdc.txt', 'a') -m = torch.load(args.stdc) - -for k in m.keys(): - m[k] = m[k].squeeze().cpu() - f.write(k+'\n') - if len(m[k].shape) == 0: - f.write(str(m[k].item())+'\n') - elif len(m[k].shape) == 1: - f.write(",".join(m[k].numpy().astype(str))+'\n') - else : - for l in m[k].squeeze(): - f.write(",".join(l.numpy().astype(str))+'\n') - f.write('\n') - diff --git a/trame IMU.txt b/trame IMU.txt deleted file mode 100755 index 6cf00b8..0000000 --- a/trame IMU.txt +++ /dev/null @@ -1,36 +0,0 @@ - commandSPISentUART = HS_DATA_PACKET_FULL_TIMESTAMP; - indexpayloadSPISentUART = 0; -// uint16_t payloadLength = SET_RTCC_DU_RECORDER_AUDIO_LENGHT; -// uint8_t payload[payloadLength]; - uint32_t timstampNow = GetFullTimestamp(); - payloadSPISentUART[indexpayloadSPISentUART++] = 0x08;//Type IMU - payloadSPISentUART[indexpayloadSPISentUART++] = 0x01;//Sensor ID - payloadSPISentUART[indexpayloadSPISentUART++] = 9;//Sensor ID - payloadSPISentUART[indexpayloadSPISentUART++] = 4;//Range 4G - payloadSPISentUART[indexpayloadSPISentUART++] = 16;//16 bits resolution - payloadSPISentUART[indexpayloadSPISentUART++] = 0;//Sampling freq 100 Hz - payloadSPISentUART[indexpayloadSPISentUART++] = 100;//Sampling freq 100 Hz - payloadSPISentUART[indexpayloadSPISentUART++] = 0;//Nb samples - payloadSPISentUART[indexpayloadSPISentUART++] = 1;//Nb samples - payloadSPISentUART[indexpayloadSPISentUART++] = BREAK_UINT32(timstampNow, 3);//supervisorState.localTime.year; - payloadSPISentUART[indexpayloadSPISentUART++] = BREAK_UINT32(timstampNow, 2);//supervisorState.localTime.month; - payloadSPISentUART[indexpayloadSPISentUART++] = BREAK_UINT32(timstampNow, 1);//supervisorState.localTime.day; - payloadSPISentUART[indexpayloadSPISentUART++] = BREAK_UINT32(timstampNow, 0);//supervisorState.localTime.hour; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subAccel.Accel_X_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subAccel.Accel_X_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subAccel.Accel_Y_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subAccel.Accel_Y_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subAccel.Accel_Z_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subAccel.Accel_Z_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subGyro.Gyro_X_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subGyro.Gyro_X_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subGyro.Gyro_Y_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subGyro.Gyro_Y_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subGyro.Gyro_Z_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subGyro.Gyro_Z_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subMag.Mag_X_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subMag.Mag_X_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subMag.Mag_Y_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subMag.Mag_Y_Low; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subMag.Mag_Z_High; - payloadSPISentUART[indexpayloadSPISentUART++] = ICM20948_subMag.Mag_Z_Low; -- GitLab