/* ***************************************************************************** * * Copyright (c) 2009 - 2024 Teunis van Beelen * All rights reserved. * * Email: teuniz@protonmail.com * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY Teunis van Beelen ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Teunis van Beelen BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ***************************************************************************** */ #include #include #include "edflib.h" #define SAMPLES_READ (200) int main(int argc, char *argv[]) { int i, hdl, channel, n; double *buf; edflib_hdr_t hdr; if(argc!=3) { printf("\nusage: test_edflib \n\n"); return(1); } channel = atoi(argv[2]); if(channel<1) { printf("\nsignalnumber must be > 0\n\n"); return(1); } if(edfopen_file_readonly(argv[1], &hdr, EDFLIB_READ_ALL_ANNOTATIONS)) { switch(hdr.filetype) { case EDFLIB_MALLOC_ERROR : printf("\nmalloc error\n\n"); break; case EDFLIB_NO_SUCH_FILE_OR_DIRECTORY : printf("\ncannot open file, no such file or directory\n\n"); break; case EDFLIB_FILE_CONTAINS_FORMAT_ERRORS : printf("\nthe file is not EDF(+) or BDF(+) compliant\n" "(it contains format errors)\n\n"); break; case EDFLIB_MAXFILES_REACHED : printf("\nto many files opened\n\n"); break; case EDFLIB_FILE_READ_ERROR : printf("\na read error occurred\n\n"); break; case EDFLIB_FILE_ALREADY_OPENED : printf("\nfile has already been opened\n\n"); break; default : printf("\nunknown error\n\n"); break; } return(1); } hdl = hdr.handle; if(channel>(hdr.edfsignals)) { printf("\nerror: file has %i signals and you selected signal %i\n\n", hdr.edfsignals, channel); edfclose_file(hdl); return(1); } channel--; printf("\nlibrary version: %i.%02i\n", edflib_version() / 100, edflib_version() % 100); printf("\ngeneral header:\n\n"); printf("filetype: %i\n", hdr.filetype); printf("edfsignals: %i\n", hdr.edfsignals); #ifdef WIN32 printf("file duration: %I64d seconds\n", hdr.file_duration / EDFLIB_TIME_DIMENSION); #else printf("file duration: %lli seconds\n", hdr.file_duration / EDFLIB_TIME_DIMENSION); #endif printf("startdate: %i-%i-%i\n", hdr.startdate_day, hdr.startdate_month, hdr.startdate_year); #ifdef WIN32 printf("starttime: %i:%02i:%02i.%07I64d\n", hdr.starttime_hour, hdr.starttime_minute, hdr.starttime_second, hdr.starttime_subsecond); #else printf("starttime: %i:%02i:%02i.%07lli\n", hdr.starttime_hour, hdr.starttime_minute, hdr.starttime_second, hdr.starttime_subsecond); #endif printf("patient: %s\n", hdr.patient); printf("recording: %s\n", hdr.recording); printf("patientcode: %s\n", hdr.patientcode); printf("sex: %s\n", hdr.sex); printf("birthdate: %s\n", hdr.birthdate); printf("patient_name: %s\n", hdr.patient_name); printf("patient_additional: %s\n", hdr.patient_additional); printf("admincode: %s\n", hdr.admincode); printf("technician: %s\n", hdr.technician); printf("equipment: %s\n", hdr.equipment); printf("recording_additional: %s\n", hdr.recording_additional); printf("datarecord duration: %f seconds\n", ((double)hdr.datarecord_duration) / EDFLIB_TIME_DIMENSION); #ifdef WIN32 printf("number of datarecords in the file: %I64d\n", hdr.datarecords_in_file); printf("number of annotations in the file: %I64d\n", hdr.annotations_in_file); #else printf("number of datarecords in the file: %lli\n", hdr.datarecords_in_file); printf("number of annotations in the file: %lli\n", hdr.annotations_in_file); #endif printf("\nsignal parameters:\n\n"); printf("label: %s\n", hdr.signalparam[channel].label); #ifdef WIN32 printf("samples in file: %I64d\n", hdr.signalparam[channel].smp_in_file); #else printf("samples in file: %lli\n", hdr.signalparam[channel].smp_in_file); #endif printf("samples in datarecord: %i\n", hdr.signalparam[channel].smp_in_datarecord); printf("physical maximum: %f\n", hdr.signalparam[channel].phys_max); printf("physical minimum: %f\n", hdr.signalparam[channel].phys_min); printf("digital maximum: %i\n", hdr.signalparam[channel].dig_max); printf("digital minimum: %i\n", hdr.signalparam[channel].dig_min); printf("physical dimension: %s\n", hdr.signalparam[channel].physdimension); printf("prefilter: %s\n", hdr.signalparam[channel].prefilter); printf("transducer: %s\n", hdr.signalparam[channel].transducer); printf("samplefrequency: %f\n", ((double)hdr.signalparam[channel].smp_in_datarecord / (double)hdr.datarecord_duration) * EDFLIB_TIME_DIMENSION); edflib_annotation_t annot; printf("\n"); for(i=0; i