MMDVM_HS/SerialPort.h
Garry Kraemer 88455a50dd Summary: Add USART2 serial message processing
Description: 
1.  Update configs subdir files with high speed USART2 serial baud rate.  Update Makefile with high speed USART1 baud rate
2.  Implement Nextion serial message processing from USART2.  This allows the Nextion display to be connected to the Nextion port on the hotspot PCB (Modem board).  SerialPort.cpp and SerialPort.h updated.
Tested on Simplex ZumSpot-RPi using 3.4" Nextion display and PD0DIB's "Model 8 - 3.5inch_GLOBE-SIMPLEX_v1.2" screens, with two touch areas ('REBOOT' and 'POWEROFF').
3.  Update README.md.

Test:  RPi 3B+ running Pi-Star:4.0.0-RC3, with ZumSpot-Rpi running 1.4.16 (updated with these changes) and using ON7LDS Nextion driver.

Feel free to improve these changes for use with PD0DIB's Nextion display pages.
2019-04-22 13:29:25 -07:00

96 lines
2.9 KiB
C++

/*
* Copyright (C) 2015,2016,2018 by Jonathan Naylor G4KLX
* Copyright (C) 2018 by Andy Uribe CA6JAU
*
* 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 of the License, 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; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#if !defined(SERIALPORT_H)
#define SERIALPORT_H
#include "Globals.h"
class CSerialPort {
public:
CSerialPort();
void start();
void process();
#if defined(SERIAL_REPEATER) || defined(SERIAL_REPEATER_USART1)
void writeSerialRpt(const uint8_t* data, uint8_t length);
#endif
void writeDStarHeader(const uint8_t* header, uint8_t length);
void writeDStarData(const uint8_t* data, uint8_t length);
void writeDStarLost();
void writeDStarEOT();
void writeDMRData(bool slot, const uint8_t* data, uint8_t length);
void writeDMRLost(bool slot);
void writeYSFData(const uint8_t* data, uint8_t length);
void writeYSFLost();
void writeP25Hdr(const uint8_t* data, uint8_t length);
void writeP25Ldu(const uint8_t* data, uint8_t length);
void writeP25Lost();
void writeNXDNData(const uint8_t* data, uint8_t length);
void writeNXDNLost();
#if defined(SEND_RSSI_DATA)
void writeRSSIData(const uint8_t* data, uint8_t length);
#endif
#if defined(ENABLE_DEBUG)
void writeDebug(const char* text);
void writeDebug(const char* text, int16_t n1);
void writeDebugI(const char* text, int32_t n1);
void writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n3);
void writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n3, int16_t n4);
#endif
void writeDebug(const char* text, int16_t n1, int16_t n2);
private:
uint8_t m_buffer[256U];
uint8_t m_ptr;
uint8_t m_len;
uint8_t m_serial_buffer[128U];
uint8_t m_serial_ptr;
uint8_t m_serial_len;
bool m_debug;
bool m_firstCal;
void sendACK();
void sendNAK(uint8_t err);
void getStatus();
void getVersion();
uint8_t setConfig(const uint8_t* data, uint8_t length);
uint8_t setMode(const uint8_t* data, uint8_t length);
void setMode(MMDVM_STATE modemState);
uint8_t setFreq(const uint8_t* data, uint8_t length);
// Hardware versions
void beginInt(uint8_t n, int speed);
int availableInt(uint8_t n);
uint8_t readInt(uint8_t n);
void writeInt(uint8_t n, const uint8_t* data, uint16_t length, bool flush = false);
};
#endif