mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-08-07 22:22:21 -04:00
More AFSK options, scan lists,
This commit is contained in:
parent
72f3c08e9b
commit
e2218a0f32
20 changed files with 445 additions and 275 deletions
111
firmware/application/afsk.cpp
Normal file
111
firmware/application/afsk.cpp
Normal file
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc.
|
||||
* Copyright (C) 2016 Furrtek
|
||||
*
|
||||
* This file is part of PortaPack.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "afsk.hpp"
|
||||
|
||||
#include "portapack_persistent_memory.hpp"
|
||||
|
||||
namespace afsk {
|
||||
|
||||
void generate_data(const char * in_message, char * out_data) {
|
||||
const afsk_formats_t * format_def;
|
||||
uint8_t pm, pp, bit, cp, cur_byte, new_byte;
|
||||
uint16_t dp;
|
||||
|
||||
format_def = &afsk_formats[portapack::persistent_memory::afsk_format()];
|
||||
|
||||
if (format_def->parity == ODD)
|
||||
pm = 1; // Odd parity
|
||||
else
|
||||
pm = 0; // Even parity
|
||||
|
||||
if (format_def->data_bits == 7) {
|
||||
if (!format_def->use_LUT) {
|
||||
for (dp = 0; dp < strlen(in_message); dp++) {
|
||||
pp = pm;
|
||||
new_byte = 0;
|
||||
cur_byte = in_message[dp];
|
||||
for (cp = 0; cp < 7; cp++) {
|
||||
bit = (cur_byte >> cp) & 1;
|
||||
pp += bit;
|
||||
new_byte |= (bit << (7 - cp));
|
||||
}
|
||||
if (format_def->parity != NONE) new_byte |= (pp & 1);
|
||||
out_data[dp] = new_byte;
|
||||
}
|
||||
out_data[dp++] = 0;
|
||||
out_data[dp] = 0;
|
||||
} else {
|
||||
for (dp = 0; dp < strlen(in_message); dp++) {
|
||||
pp = pm;
|
||||
|
||||
// Do not apply LUT on checksum (last byte) ?
|
||||
if (dp != strlen(in_message) - 1)
|
||||
cur_byte = alt_lookup[(uint8_t)in_message[dp] & 0x7F];
|
||||
else
|
||||
cur_byte = in_message[dp];
|
||||
|
||||
for (cp = 0; cp < 8; cp++)
|
||||
if ((cur_byte >> cp) & 1) pp++;
|
||||
|
||||
out_data[dp * 2] = cur_byte;
|
||||
out_data[(dp * 2) + 1] = 0xFE;
|
||||
if (format_def->parity != NONE) out_data[(dp * 2) + 1] |= (pp & 1);
|
||||
}
|
||||
out_data[dp * 2] = 0;
|
||||
out_data[(dp * 2) + 1] = 0;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
for (dp = 0; dp < strlen(in_message); dp++) {
|
||||
pp = pm;
|
||||
|
||||
// Do not apply LUT on checksum (last byte) ?
|
||||
if (dp != strlen(in_message) - 1)
|
||||
cur_byte = alt_lookup[(uint8_t)in_message[dp] & 0x7F];
|
||||
else
|
||||
cur_byte = in_message[dp];
|
||||
|
||||
for (cp = 0; cp < 8; cp++)
|
||||
if ((cur_byte >> cp) & 1) pp++;
|
||||
|
||||
out_data[dp * 2] = cur_byte;
|
||||
out_data[(dp * 2) + 1] = 0xFE | (pp & 1);
|
||||
}
|
||||
out_data[dp * 2] = 0;
|
||||
out_data[(dp * 2) + 1] = 0;
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
// MSB first
|
||||
for (dp = 0; dp < strlen(lcr_message); dp++) {
|
||||
pp = pm;
|
||||
cur_byte = lcr_message[dp];
|
||||
for (cp = 0; cp < 7; cp++)
|
||||
if ((cur_byte >> cp) & 1) pp++;
|
||||
lcr_message_data[dp] = (cur_byte << 1) | (pp & 1);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
} /* namespace afsk */
|
Loading…
Add table
Add a link
Reference in a new issue