Merge branch 'master' of github.com:g4klx/MMDVMHost

This commit is contained in:
Jonathan Naylor 2016-11-05 18:36:00 +00:00
commit ef4b03626b
10 changed files with 133 additions and 4 deletions

View file

@ -96,7 +96,9 @@ bool CDMRCSBK::put(const unsigned char* bytes)
default: default:
CUtils::dump("Unhandled CSBK type", m_data, 12U); CUtils::dump("Unhandled CSBK type", m_data, 12U);
return false; m_srcId = 0U;
m_dstId = 0U;
return true;
} }
return true; return true;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

115
Nextion/nextion.py Normal file
View file

@ -0,0 +1,115 @@
'''
* Copyright (C) 2016 Alex Koren
*
* 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.
'''
import serial
import time
import sys
import os
e = "\xff\xff\xff"
deviceName = '/dev/ttyUSB0' #MAKE SURE THIS IS THE CORRECT DEVICE
CHECK_MODEL = 'NX3224T024'
def getBaudrate(ser, fSize=None):
for baudrate in (2400, 4800, 9600, 19200, 38400, 57600, 115200):
ser.baudrate = baudrate
ser.timeout = 3000 / baudrate + .2
print 'Trying with baudrate: ' + str(baudrate) + '...'
ser.write("\xff\xff\xff")
ser.write('connect')
ser.write("\xff\xff\xff")
r = ser.read(128)
if 'comok' in r:
print 'Connected with baudrate: ' + str(baudrate) + '...'
noConnect = False
status, unknown1, model, unknown2, version, serial, flashSize = r.strip("\xff\x00").split(',')
print 'Status: ' + status
print 'Model: ' + model
print 'Version: ' + version
print 'Serial: ' + serial
print 'Flash size: ' + flashSize
if fSize and fSize > flashSize:
print 'File too big!'
return False
if not CHECK_MODEL in model:
print 'Wrong Display!'
return False
return True
return False
def setDownloadBaudrate(ser, fSize, baudrate):
ser.write("")
ser.write("whmi-wri " + str(fSize) + "," + str(baudrate) + ",0" + e)
time.sleep(.05)
ser.baudrate = baudrate
ser.timeout = .5
r = ser.read(1)
if "\x05" in r:
return True
return False
def transferFile(ser, filename, fSize):
with open(filename, 'rb') as hmif:
dcount = 0
while True:
data = hmif.read(4096)
if len(data) == 0:
break
dcount += len(data)
ser.timeout = 5
ser.write(data)
sys.stdout.write('\rDownloading, %3.1f%%...'% (dcount / float(fSize) * 100.0))
sys.stdout.flush()
ser.timeout = .5
time.sleep(.5)
r = ser.read(1)
if "\x05" in r:
continue
else:
break
print
return True
def upload(ser, filename):
if not getBaudrate(ser, os.path.getsize(filename)):
print 'could not find baudrate'
exit(1)
if not setDownloadBaudrate(ser, os.path.getsize(filename), 115200):
print 'could not set download baudrate'
exit(1)
if not transferFile(ser, filename, os.path.getsize(filename)):
print 'could not transfer file'
exit(1)
exit(0)
if __name__ == "__main__":
if len(sys.argv) != 2:
print 'usage:\npython nextion.py file_to_upload.tft'
exit(1)
ser = serial.Serial(deviceName, 9600, timeout=5)
if not ser:
print 'could not open device'
exit(1)
if not ser.is_open:
ser.open()
upload(ser, sys.argv[1])

2
OLED.h
View file

@ -37,7 +37,7 @@
class COLED : public CDisplay class COLED : public CDisplay
{ {
public: public:
COLED(unsigned char displayType, unsigned char displayBrighness, unsigned char displayInvert); COLED(unsigned char displayType, unsigned char displayBrighness, bool displayInvert);
virtual ~COLED(); virtual ~COLED();
virtual bool open(); virtual bool open();

11
UMP.cpp
View file

@ -41,6 +41,7 @@ const unsigned int BUFFER_LENGTH = 255U;
CUMP::CUMP(const std::string& port) : CUMP::CUMP(const std::string& port) :
m_serial(port, SERIAL_115200), m_serial(port, SERIAL_115200),
m_open(false),
m_buffer(NULL), m_buffer(NULL),
m_length(0U), m_length(0U),
m_offset(0U), m_offset(0U),
@ -58,6 +59,9 @@ CUMP::~CUMP()
bool CUMP::open() bool CUMP::open()
{ {
if (m_open)
return true;
bool ret = m_serial.open(); bool ret = m_serial.open();
if (!ret) if (!ret)
return false; return false;
@ -76,6 +80,8 @@ bool CUMP::open()
return false; return false;
} }
m_open = true;
return true; return true;
} }
@ -243,5 +249,10 @@ void CUMP::clock(unsigned int ms)
void CUMP::close() void CUMP::close()
{ {
if (!m_open)
return;
m_serial.close(); m_serial.close();
m_open = false;
} }

1
UMP.h
View file

@ -48,6 +48,7 @@ public:
private: private:
CSerialController m_serial; CSerialController m_serial;
bool m_open;
unsigned char* m_buffer; unsigned char* m_buffer;
unsigned int m_length; unsigned int m_length;
unsigned int m_offset; unsigned int m_offset;

View file

@ -144,13 +144,13 @@ void loop()
m_count++; m_count++;
if (m_started) { if (m_started) {
if (m_count > 32000U) { if (m_count > 3200U) {
digitalWrite(PIN_LED, m_led ? LOW : HIGH); digitalWrite(PIN_LED, m_led ? LOW : HIGH);
m_led = !m_led; m_led = !m_led;
m_count = 0U; m_count = 0U;
} }
} else { } else {
if (m_count > 320000U) { if (m_count > 32000U) {
digitalWrite(PIN_LED, m_led ? LOW : HIGH); digitalWrite(PIN_LED, m_led ? LOW : HIGH);
m_led = !m_led; m_led = !m_led;
m_count = 0U; m_count = 0U;