small changes to pifmrds

This commit is contained in:
KubaPro010 2023-09-07 17:59:15 +02:00
parent c1a3409af3
commit fc54e410c0
1 changed files with 10 additions and 6 deletions

View File

@ -49,7 +49,6 @@ static volatile uint32_t *pad_reg;
#define SUBSIZE 512 #define SUBSIZE 512
#define DATA_SIZE 5000 #define DATA_SIZE 5000
#define PAD_LEN (0x40/4) //0x64 #define PAD_LEN (0x40/4) //0x64
#define PAD_BASE_OFFSET 0x00100000 #define PAD_BASE_OFFSET 0x00100000
#define PAD_VIRT_BASE (PERIPH_VIRT_BASE + PAD_BASE_OFFSET) #define PAD_VIRT_BASE (PERIPH_VIRT_BASE + PAD_BASE_OFFSET)
@ -87,6 +86,7 @@ static volatile void *map_peripheral(uint32_t base, uint32_t len)
close(fd); close(fd);
return vaddr; return vaddr;
} }
int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt, float ppm, char *control_pipe, int pty, int *af_array, int raw, int drds, double preemp, int power, int rawSampleRate, int rawChannels, int deviation) { int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt, float ppm, char *control_pipe, int pty, int *af_array, int raw, int drds, double preemp, int power, int rawSampleRate, int rawChannels, int deviation) {
// Catch all signals possible - it is vital we kill the DMA engine // Catch all signals possible - it is vital we kill the DMA engine
// on process exit! // on process exit!
@ -98,7 +98,7 @@ int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt,
sigaction(i, &sa, NULL); sigaction(i, &sa, NULL);
} }
//Set the Power //Set the power
pad_reg = (volatile uint32_t *)map_peripheral(PAD_VIRT_BASE, PAD_LEN); pad_reg = (volatile uint32_t *)map_peripheral(PAD_VIRT_BASE, PAD_LEN);
pad_reg[GPIO_PAD_0_27] = 0x5a000018 + power; pad_reg[GPIO_PAD_0_27] = 0x5a000018 + power;
pad_reg[GPIO_PAD_28_45] = 0x5a000018 + power; pad_reg[GPIO_PAD_28_45] = 0x5a000018 + power;
@ -221,7 +221,7 @@ int main(int argc, char **argv) {
int power = 7; int power = 7;
int rawSampleRate = 44100; int rawSampleRate = 44100;
int rawChannels = 2; int rawChannels = 2;
double preemp = 50e-6; double preemp = 50e-6; //eu
int deviation = 75000; int deviation = 75000;
int alternative_freq[100] = {}; int alternative_freq[100] = {};
@ -267,6 +267,8 @@ int main(int argc, char **argv) {
deviation = 65000; //i don't know the original bandwidht, but when testing on an UNITRA LIZA R-203, the sound doesn't sound out of order, correct this if im wrong deviation = 65000; //i don't know the original bandwidht, but when testing on an UNITRA LIZA R-203, the sound doesn't sound out of order, correct this if im wrong
} else if(strcmp("nfm", param)==0) { } else if(strcmp("nfm", param)==0) {
deviation = 2500; deviation = 2500;
drds = 1;
custom_deviation = 2;
} }
else { else {
deviation = atoi(param); deviation = atoi(param);
@ -294,14 +296,14 @@ int main(int argc, char **argv) {
} else if(strcmp("-preemphasis", arg)==0 && param != NULL) { } else if(strcmp("-preemphasis", arg)==0 && param != NULL) {
i++; i++;
if(strcmp("us", param)==0) { if(strcmp("us", param)==0) {
preemp = 75e-6; preemp = 75e-6; //usa
} }
} else if(strcmp("-af", arg)==0 && param != NULL) { } else if(strcmp("-af", arg)==0 && param != NULL) {
i++; i++;
af_size++; af_size++;
alternative_freq[af_size] = (int)(10*atof(optarg))-875; alternative_freq[af_size] = (int)(10*atof(optarg))-875;
if(alternative_freq[af_size] < 1 || alternative_freq[af_size] > 204) if(alternative_freq[af_size] < 1 || alternative_freq[af_size] > 204)
fatal("Alternative Frequency has to be set in range of 87.6 Mhz - 107.9 Mhz\n"); fatal("Alternative Frequency has to be set in range of 87.6 Mhz - 107.9 Mhz\n"); //honestly i have no idea why 87.5 and 108 isn't in here, i copied this code, okay?
break; break;
} }
else { else {
@ -310,8 +312,10 @@ int main(int argc, char **argv) {
" [-ps ps_text] [-rt rt_text] [-ctl control_pipe] [-pty program_type] [-raw play raw audio from stdin] [-disablerds] [-af alt freq] [-preemphasis us] [-rawchannels when using the raw option you can change this] [-rawsamplerate same business] [-deviation the deviation, default is 75000, there are 2 predefined other cases: ukf (for old radios such as the UNITRA Jowita), nfm]\n", arg); " [-ps ps_text] [-rt rt_text] [-ctl control_pipe] [-pty program_type] [-raw play raw audio from stdin] [-disablerds] [-af alt freq] [-preemphasis us] [-rawchannels when using the raw option you can change this] [-rawsamplerate same business] [-deviation the deviation, default is 75000, there are 2 predefined other cases: ukf (for old radios such as the UNITRA Jowita), nfm]\n", arg);
} }
} }
if(custom_deviation == 1) { //dont hurt me, ik this may be not important, but im a python dev, not a c or c++, forgive (notice how i said "may") if(custom_deviation == 1) {
printf("You've set a custom deviation (like not the default one), the RDS may be broken, just a warning"); printf("You've set a custom deviation (like not the default one), the RDS may be broken, just a warning");
} else if(custom_deviation == 2) { //there came the reason, if you dont know why this is here, dont ask
printf("RDS is gonna be disabled for NFM, because you know, nothing will decode the rds from a nfm signal anyway");
} }
int FifoSize=DATA_SIZE*2; int FifoSize=DATA_SIZE*2;
fmmod=new ngfmdmasync(carrier_freq,228000,14,FifoSize); fmmod=new ngfmdmasync(carrier_freq,228000,14,FifoSize);