Started wspr coding
This commit is contained in:
parent
2bc9b77ac4
commit
30a1e67b5a
|
@ -0,0 +1,66 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
uint8_t wspr_call_char(char c) {
|
||||||
|
c = toupper(c);
|
||||||
|
if(c >= '0' && c <= '9') {
|
||||||
|
return c - '0';
|
||||||
|
}
|
||||||
|
else if(c >= 'A' && c <= 'Z') {
|
||||||
|
return 10 + (c - 'A');
|
||||||
|
}
|
||||||
|
// Turn everything else to space
|
||||||
|
else {
|
||||||
|
return 36;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t wspr_loc_char(char c) {
|
||||||
|
c = toupper(c);
|
||||||
|
if(c >= '0' && c <= '9') {
|
||||||
|
return c - '0';
|
||||||
|
}
|
||||||
|
else if(c >= 'A' && c <= 'R') {
|
||||||
|
return c - 'A';
|
||||||
|
}
|
||||||
|
// Everthing else becomes 9/I
|
||||||
|
else {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t wspr_power(uint8_t power) {
|
||||||
|
if(power > 60) {
|
||||||
|
return 60;
|
||||||
|
}
|
||||||
|
return power;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t wspr_message(char *call, char* loc, uint8_t power) {
|
||||||
|
uint32_t m, n;
|
||||||
|
|
||||||
|
n = wspr_loc_char(call[0]);
|
||||||
|
n = n * 36 + wspr_loc_char(call[1]);
|
||||||
|
n = n * 10 + wspr_loc_char(call[2]);
|
||||||
|
n = n * 27 + wspr_loc_char(call[3]) - 10;
|
||||||
|
n = n * 27 + wspr_loc_char(call[4]) - 10;
|
||||||
|
n = n * 27 + wspr_loc_char(call[5]) - 10;
|
||||||
|
|
||||||
|
m = 179 - 10 * wspr_loc_char(loc[0]) - wspr_loc_char(loc[2]);
|
||||||
|
m = m * 180 + 10 * wspr_loc_char(loc[1]) + wspr_loc_char(loc[3]);
|
||||||
|
m = m * 128 + wspr_power(power) + 64;
|
||||||
|
|
||||||
|
return n << 21 | m;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char const *argv[]) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue