kopia lustrzana https://github.com/projecthorus/radiosonde_auto_rx
imet1ab: sonde_id auch 6 Zeichen
rodzic
fbfdee9d8e
commit
11ae9b1dd9
|
@ -60,47 +60,47 @@ int findstr(char *buff, char *str, int pos) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_wav_header(FILE *fp) {
|
int read_wav_header(FILE *fp) {
|
||||||
char txt[5] = "\0\0\0\0";
|
char txt[4+1] = "\0\0\0\0";
|
||||||
char buff[4];
|
unsigned char dat[4];
|
||||||
int byte, p=0;
|
int byte, p=0;
|
||||||
char fmt_[5] = "fmt ";
|
|
||||||
char data[5] = "data";
|
|
||||||
|
|
||||||
if (fread(txt, 1, 4, fp) < 4) return -1;
|
if (fread(txt, 1, 4, fp) < 4) return -1;
|
||||||
if (strncmp(txt, "RIFF", 4)) return -1;
|
if (strncmp(txt, "RIFF", 4)) return -1;
|
||||||
|
if (fread(txt, 1, 4, fp) < 4) return -1;
|
||||||
// pos_WAVE = 8L
|
// pos_WAVE = 8L
|
||||||
if (fread(txt, 1, 4, fp) < 4) return -1;
|
if (fread(txt, 1, 4, fp) < 4) return -1;
|
||||||
if (fread(txt, 1, 4, fp) < 4) return -1;
|
|
||||||
if (strncmp(txt, "WAVE", 4)) return -1;
|
if (strncmp(txt, "WAVE", 4)) return -1;
|
||||||
|
|
||||||
// pos_fmt = 12L
|
// pos_fmt = 12L
|
||||||
for ( ; ; ) {
|
for ( ; ; ) {
|
||||||
if ( (byte=fgetc(fp)) == EOF ) return -1;
|
if ( (byte=fgetc(fp)) == EOF ) return -1;
|
||||||
buff[p % 4] = byte;
|
txt[p % 4] = byte;
|
||||||
p++; if (p==4) p=0;
|
p++; if (p==4) p=0;
|
||||||
if (findstr(buff, fmt_, p) == 4) break;
|
if (findstr(txt, "fmt ", p) == 4) break;
|
||||||
}
|
}
|
||||||
|
if (fread(dat, 1, 4, fp) < 4) return -1;
|
||||||
if (fread(buff, 1, 4, fp) < 4) return -1;
|
if (fread(dat, 1, 2, fp) < 2) return -1;
|
||||||
if (fread(buff, 1, 2, fp) < 2) return -1;
|
|
||||||
if (fread(buff, 1, 2, fp) < 2) return -1;
|
|
||||||
channels = buff[0] + (buff[1] << 8);
|
|
||||||
if (fread(buff, 1, 4, fp) < 4) return -1;
|
|
||||||
memcpy(&sample_rate, buff, 4);
|
|
||||||
if (fread(buff, 1, 4, fp) < 4) return -1;
|
|
||||||
if (fread(buff, 1, 2, fp) < 2) return -1;
|
|
||||||
byte = buff[0] + (buff[1] << 8);
|
|
||||||
if (fread(buff, 1, 2, fp) < 2) return -1;
|
|
||||||
bits_sample = buff[0] + (buff[1] << 8);
|
|
||||||
|
|
||||||
|
if (fread(dat, 1, 2, fp) < 2) return -1;
|
||||||
|
channels = dat[0] + (dat[1] << 8);
|
||||||
|
|
||||||
|
if (fread(dat, 1, 4, fp) < 4) return -1;
|
||||||
|
memcpy(&sample_rate, dat, 4); //sample_rate = dat[0]|(dat[1]<<8)|(dat[2]<<16)|(dat[3]<<24);
|
||||||
|
|
||||||
|
if (fread(dat, 1, 4, fp) < 4) return -1;
|
||||||
|
if (fread(dat, 1, 2, fp) < 2) return -1;
|
||||||
|
//byte = dat[0] + (dat[1] << 8);
|
||||||
|
|
||||||
|
if (fread(dat, 1, 2, fp) < 2) return -1;
|
||||||
|
bits_sample = dat[0] + (dat[1] << 8);
|
||||||
|
|
||||||
|
// pos_dat = 36L + info
|
||||||
for ( ; ; ) {
|
for ( ; ; ) {
|
||||||
if ( (byte=fgetc(fp)) == EOF ) return -1;
|
if ( (byte=fgetc(fp)) == EOF ) return -1;
|
||||||
buff[p % 4] = byte;
|
txt[p % 4] = byte;
|
||||||
p++; if (p==4) p=0;
|
p++; if (p==4) p=0;
|
||||||
if (findstr(buff, data, p) == 4) break;
|
if (findstr(txt, "data", p) == 4) break;
|
||||||
}
|
}
|
||||||
if (fread(buff, 1, 4, fp) < 4) return -1;
|
if (fread(dat, 1, 4, fp) < 4) return -1;
|
||||||
|
|
||||||
|
|
||||||
fprintf(stderr, "sample_rate: %d\n", sample_rate);
|
fprintf(stderr, "sample_rate: %d\n", sample_rate);
|
||||||
|
@ -320,12 +320,14 @@ int get_RecordNo() {
|
||||||
int get_SondeID() {
|
int get_SondeID() {
|
||||||
int i;
|
int i;
|
||||||
unsigned byte;
|
unsigned byte;
|
||||||
ui8_t sondeid_bytes[8];
|
ui8_t sondeid_bytes[8]; // 5 bis 6 ascii + '\0'
|
||||||
int IDlen = 5; // < 9
|
int IDlen = 6+1; // < 9
|
||||||
|
|
||||||
for (i = 0; i < IDlen; i++) {
|
for (i = 0; i < IDlen; i++) {
|
||||||
byte = frame[pos_SondeID1 + i];
|
byte = frame[pos_SondeID1 + i];
|
||||||
if ((byte < 0x20) || (byte > 0x7E)) return -1;
|
if (byte == 0) IDlen = i+1;
|
||||||
|
else
|
||||||
|
if (byte < 0x20 || byte > 0x7E) return -1;
|
||||||
sondeid_bytes[i] = byte;
|
sondeid_bytes[i] = byte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue