mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-05-05 00:05:01 -04:00
Whistle now works
Moved BW widget in txview String-ized LCR and AFSK message generator
This commit is contained in:
parent
fbc054ca75
commit
d59ee08f41
30 changed files with 312 additions and 215 deletions
73
firmware/application/protocols/lcr.cpp
Normal file
73
firmware/application/protocols/lcr.cpp
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* 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 "lcr.hpp"
|
||||
#include "string_format.hpp"
|
||||
|
||||
//#include "portapack_persistent_memory.hpp"
|
||||
|
||||
namespace lcr {
|
||||
|
||||
std::string generate_message(std::string rgsb, std::vector<std::string> litterals, size_t option_ec) {
|
||||
const std::string ec_lut[4] = { "A", "J", "N", "S" }; // Eclairage (Auto, Jour, Nuit)
|
||||
char eom[3] = { 3, 0, 0 }; // EOM and space for checksum
|
||||
uint8_t i;
|
||||
std::string lcr_message { 127, 127, 127, 127, 127, 127, 127, 15 }; // Modem sync and SOM
|
||||
char checksum = 0;
|
||||
|
||||
// Pad litterals to 7 chars (not required ?)
|
||||
for (auto & litteral : litterals)
|
||||
while (litteral.length() < 7)
|
||||
litteral += ' ';
|
||||
|
||||
// Compose LCR message
|
||||
lcr_message += rgsb;
|
||||
lcr_message += "PA ";
|
||||
|
||||
i = 1;
|
||||
for (auto & litteral : litterals) {
|
||||
lcr_message += "AM=";
|
||||
lcr_message += to_string_dec_uint(i, 1);
|
||||
lcr_message += " AF=\"";
|
||||
lcr_message += litteral;
|
||||
lcr_message += "\" CL=0 ";
|
||||
i++;
|
||||
}
|
||||
|
||||
lcr_message += "EC=";
|
||||
lcr_message += ec_lut[option_ec];
|
||||
lcr_message += " SAB=0";
|
||||
|
||||
// Checksum
|
||||
i = 7; // Skip modem sync
|
||||
while (lcr_message[i])
|
||||
checksum ^= lcr_message[i++];
|
||||
checksum ^= eom[0]; // EOM char
|
||||
checksum &= 0x7F; // Trim
|
||||
eom[1] = checksum;
|
||||
|
||||
lcr_message += eom;
|
||||
|
||||
return lcr_message;
|
||||
}
|
||||
|
||||
} /* namespace lcr */
|
Loading…
Add table
Add a link
Reference in a new issue