Play dead actually works, fixed 7bit AFSK, AFSK repeat, started whistle mode

This commit is contained in:
furrtek 2015-09-10 20:36:39 +02:00
parent 07754727ed
commit 9a7657fb38
22 changed files with 447 additions and 128 deletions

View file

@ -678,6 +678,7 @@ static int32_t waveform_biphase[] = {
-157,-160,-163,-166,-167,-168,-168,-167
};
/*
class RDSProcessor : public BasebandProcessor {
public:
void execute(buffer_c8_t buffer) override {
@ -758,7 +759,7 @@ private:
uint32_t phase, sphase;
int32_t sig, frq, frq_im, rdsc;
int32_t k;
};
};*/
class LCRFSKProcessor : public BasebandProcessor {
public:
@ -779,22 +780,25 @@ public:
bit_pos = 0;
byte_pos = 0;
cur_byte = shared_memory.lcrdata[0];
if( message.is_free() ) {
message.n = shared_memory.afsk_repeat;
shared_memory.application_queue.push(&message);
}
} else {
shared_memory.afsk_transmit_done = true; // TODO: Remove, unused
//shared_memory.application_queue.push(&message);
if( message.is_free() ) {
message.n = 0;
shared_memory.afsk_transmit_done = true;
shared_memory.application_queue.push(&message);
}
cur_byte = 0;
}
}
//cur_byte = (0x55<<1); //DEBUG
//SdddddddpD
//0dddddddp1
gbyte = 0;
gbyte = cur_byte << 1;
gbyte |= 1;
cur_bit = gbyte >> (9-bit_pos) & 1;
cur_bit = (gbyte >> (9-bit_pos)) & 1;
if (bit_pos == 9) {
bit_pos = 0;
@ -822,7 +826,7 @@ public:
sample = sintab[(aphase & 0x03FF0000)>>16];
//FM
frq = sample * 850; //TODO: Put in config (channel bandwidth)
frq = sample * 500;
phase = (phase + frq);
sphase = phase + (256<<16);
@ -837,8 +841,8 @@ public:
private:
int8_t re, im;
uint8_t s;
uint8_t bit_pos, byte_pos;
uint8_t cur_byte = 0;
uint8_t bit_pos, byte_pos = 0;
char cur_byte = 0;
uint16_t gbyte;
uint8_t cur_bit = 0;
uint32_t sample_count;
@ -847,6 +851,44 @@ private:
TXDoneMessage message;
};
class ToneProcessor : public BasebandProcessor {
public:
void execute(buffer_c8_t buffer) override {
for (size_t i = 0; i<buffer.count; i++) {
//Sample generation 2.28M/10 = 228kHz
if (s >= 9) {
s = 0;
aphase += 353205; // DEBUG
sample = sintab[(aphase & 0x03FF0000)>>16];
} else {
s++;
}
sample = sintab[(aphase & 0x03FF0000)>>16];
//FM
frq = sample * 500; // DEBUG
phase = (phase + frq);
sphase = phase + (256<<16);
re = sintab[(sphase & 0x03FF0000)>>16];
im = sintab[(phase & 0x03FF0000)>>16];
buffer.p[i] = {(int8_t)re,(int8_t)im};
}
}
private:
int8_t re, im;
uint8_t s;
uint32_t sample_count;
uint32_t aphase, phase, sphase;
int32_t sample, sig, frq;
};
static BasebandProcessor* baseband_processor { nullptr };
static BasebandConfiguration baseband_configuration;
@ -1107,15 +1149,20 @@ int main(void) {
baseband_processor = new FSKProcessor(message_handlers);
break;
case 15:
/*case 15:
direction = baseband::Direction::Transmit;
baseband_processor = new RDSProcessor();
break;
break;*/
case 16:
direction = baseband::Direction::Transmit;
baseband_processor = new LCRFSKProcessor();
break;
case 17:
direction = baseband::Direction::Transmit;
baseband_processor = new ToneProcessor();
break;
default:
break;