Merge branch 'wellenvogel:master' into master
This commit is contained in:
commit
e7a7d2962a
|
@ -166,6 +166,9 @@ For details refer to the [example description](lib/exampletask/Readme.md).
|
||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
---------
|
---------
|
||||||
|
[20240428](../../releases/tag/20240428)
|
||||||
|
**********
|
||||||
|
* fix build error with M5 gps kit
|
||||||
[20240324](../../releases/tag/20240324)
|
[20240324](../../releases/tag/20240324)
|
||||||
**********
|
**********
|
||||||
* add [SSI rotary encoders](doc/Sensors.md)
|
* add [SSI rotary encoders](doc/Sensors.md)
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 448 KiB |
Binary file not shown.
After Width: | Height: | Size: 510 KiB |
|
@ -79,13 +79,15 @@ Can be used e.g. as an NMEA2000 Adapter for a laptop running e.g. OpenCPN with t
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
M5 Stack AtomS3Lite Canunit (experimental since dev20230826)
|
M5 Stack AtomS3Lite Canunit
|
||||||
---------------------
|
---------------------
|
||||||
* Hardware: [M5_ATOMS3 Lite](http://docs.m5stack.com/en/core/AtomS3%20Lite) + [CAN Unit](http://docs.m5stack.com/en/unit/can)
|
* Hardware: [M5_ATOMS3 Lite](http://docs.m5stack.com/en/core/AtomS3%20Lite) + [CAN Unit](http://docs.m5stack.com/en/unit/can)
|
||||||
* Prebuild Binary: m5stack-atoms3-canunit-all.bin
|
* Prebuild Binary: m5stack-atoms3-canunit-all.bin
|
||||||
* Build Define: BOARD_M5ATOMS3_CANUNIT
|
* Build Define: BOARD_M5ATOMS3_CANUNIT
|
||||||
* Power: Via USB
|
* Power: Via USB
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
M5 Stick C Canunit
|
M5 Stick C Canunit
|
||||||
------------------
|
------------------
|
||||||
* Hardware: [M5_StickC+](http://docs.m5stack.com/en/core/m5stickc_plus) + [CAN Unit](http://docs.m5stack.com/en/unit/can)
|
* Hardware: [M5_StickC+](http://docs.m5stack.com/en/core/m5stickc_plus) + [CAN Unit](http://docs.m5stack.com/en/unit/can)
|
||||||
|
@ -98,6 +100,14 @@ M5 Stick C Canunit
|
||||||
|
|
||||||
Can be used e.g. as an NMEA2000 Adapter for a laptop running e.g. OpenCPN with the NMEA2000 Data converted to NMEA0183.
|
Can be used e.g. as an NMEA2000 Adapter for a laptop running e.g. OpenCPN with the NMEA2000 Data converted to NMEA0183.
|
||||||
|
|
||||||
|
M5 Stack AtomS3Lite PortABC+CAN+ENV3
|
||||||
|
------------------
|
||||||
|
* Hardware: [M5_ATOMS3 Lite](http://docs.m5stack.com/en/core/AtomS3%20Lite) + [M5_PORTABC](https://docs.m5stack.com/en/unit/AtomPortABC) + [CAN Unit](http://docs.m5stack.com/en/unit/can) + [M5 ENV3](https://docs.m5stack.com/en/unit/envIII)
|
||||||
|
* Build: [Online service](BuildService.md)
|
||||||
|
* Power: Via USB
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
Node MCU32s - [Homberger Board](https://github.com/AK-Homberger/NMEA2000WifiGateway-with-ESP32)
|
Node MCU32s - [Homberger Board](https://github.com/AK-Homberger/NMEA2000WifiGateway-with-ESP32)
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
* Hardware: see link in heading
|
* Hardware: see link in heading
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#ifdef M5_GPS_KIT
|
#ifdef M5_GPS_KIT
|
||||||
GWRESOURCE_USE(BASE,M5_GPS_KIT)
|
GWRESOURCE_USE(BASE,M5_GPS_KIT)
|
||||||
GWRESOURCE_USE(SERIAL1,M5_GPS_KIT)
|
GWRESOURCE_USE(SERIAL1,M5_GPS_KIT)
|
||||||
#define _GWI_SERIAL1 BOARD_LEFT1,-1,GWSERIAL_TYPE_UNI,"9600"
|
#define _GWI_SERIAL1 BOARD_LEFT1,-1,GWSERIAL_TYPE_UNI,9600
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//M5 ProtoHub
|
//M5 ProtoHub
|
||||||
|
|
|
@ -55,7 +55,7 @@ PLATFORMS = {
|
||||||
"ESP32S3": "esp32s3"
|
"ESP32S3": "esp32s3"
|
||||||
}
|
}
|
||||||
|
|
||||||
BACKTRACE_REGEX = re.compile(r"(?:\s+(0x40[0-2](?:\d|[a-f]|[A-F]){5}):0x(?:\d|[a-f]|[A-F]){8})\b")
|
BACKTRACE_REGEX = re.compile(r"(?:\s+(0x4[0-9a-fA-F][0-9a-fA-F](?:\d|[a-f]|[A-F]){5}):0x(?:\d|[a-f]|[A-F]){8})\b")
|
||||||
EXCEPTION_REGEX = re.compile("^Exception \\((?P<exc>[0-9]*)\\):$")
|
EXCEPTION_REGEX = re.compile("^Exception \\((?P<exc>[0-9]*)\\):$")
|
||||||
COUNTER_REGEX = re.compile('^epc1=(?P<epc1>0x[0-9a-f]+) epc2=(?P<epc2>0x[0-9a-f]+) epc3=(?P<epc3>0x[0-9a-f]+) '
|
COUNTER_REGEX = re.compile('^epc1=(?P<epc1>0x[0-9a-f]+) epc2=(?P<epc2>0x[0-9a-f]+) epc3=(?P<epc3>0x[0-9a-f]+) '
|
||||||
'excvaddr=(?P<excvaddr>0x[0-9a-f]+) depc=(?P<depc>0x[0-9a-f]+)$')
|
'excvaddr=(?P<excvaddr>0x[0-9a-f]+) depc=(?P<depc>0x[0-9a-f]+)$')
|
||||||
|
@ -65,6 +65,7 @@ STACK_BEGIN = '>>>stack>>>'
|
||||||
STACK_END = '<<<stack<<<'
|
STACK_END = '<<<stack<<<'
|
||||||
STACK_REGEX = re.compile(
|
STACK_REGEX = re.compile(
|
||||||
'^(?P<off>[0-9a-f]+):\W+(?P<c1>[0-9a-f]+) (?P<c2>[0-9a-f]+) (?P<c3>[0-9a-f]+) (?P<c4>[0-9a-f]+)(\W.*)?$')
|
'^(?P<off>[0-9a-f]+):\W+(?P<c1>[0-9a-f]+) (?P<c2>[0-9a-f]+) (?P<c3>[0-9a-f]+) (?P<c4>[0-9a-f]+)(\W.*)?$')
|
||||||
|
CORE_REGEXP=re.compile('^Core')
|
||||||
|
|
||||||
StackLine = namedtuple("StackLine", ["offset", "content"])
|
StackLine = namedtuple("StackLine", ["offset", "content"])
|
||||||
|
|
||||||
|
@ -84,7 +85,8 @@ class ExceptionDataParser(object):
|
||||||
self.sp = None
|
self.sp = None
|
||||||
self.end = None
|
self.end = None
|
||||||
self.offset = None
|
self.offset = None
|
||||||
|
self.line = 0
|
||||||
|
self.core = None
|
||||||
self.stack = []
|
self.stack = []
|
||||||
|
|
||||||
def _parse_backtrace(self, line):
|
def _parse_backtrace(self, line):
|
||||||
|
@ -143,19 +145,27 @@ class ExceptionDataParser(object):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def parse_file(self, file, platform, stack_only=False):
|
def parse_file(self, file, platform, stack_only=False):
|
||||||
|
lc=0
|
||||||
if platform == 'ESP32' or platform == 'ESP32S3':
|
if platform == 'ESP32' or platform == 'ESP32S3':
|
||||||
func = self._parse_backtrace
|
func = self._parse_backtrace
|
||||||
else:
|
else:
|
||||||
func = self._parse_exception
|
func = self._parse_exception
|
||||||
if stack_only:
|
if stack_only:
|
||||||
func = self._parse_stack_begin
|
func = self._parse_stack_begin
|
||||||
|
hasresult=False
|
||||||
for line in file:
|
for line in file:
|
||||||
func = func(line.strip())
|
if CORE_REGEXP.match(line):
|
||||||
if func is None:
|
self.core=re.sub("(Core\s+[0-9]+).*",r"\1",line.strip())
|
||||||
break
|
lc+=1
|
||||||
|
nextfunc = func(line.strip())
|
||||||
|
if nextfunc is None:
|
||||||
|
hasresult=True
|
||||||
|
self.line=lc
|
||||||
|
yield(self)
|
||||||
|
self.__init__()
|
||||||
|
|
||||||
if func is not None:
|
|
||||||
|
if not hasresult:
|
||||||
print("ERROR: Parser not complete!")
|
print("ERROR: Parser not complete!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
@ -249,6 +259,9 @@ def print_stack(lines, resolver):
|
||||||
|
|
||||||
|
|
||||||
def print_result(parser, resolver, platform, full=True, stack_only=False):
|
def print_result(parser, resolver, platform, full=True, stack_only=False):
|
||||||
|
print("##line %d"%parser.line)
|
||||||
|
if parser.core is not None:
|
||||||
|
print("##",parser.core)
|
||||||
if platform == 'ESP8266' and not stack_only:
|
if platform == 'ESP8266' and not stack_only:
|
||||||
print('Exception: {} ({})'.format(parser.exception, EXCEPTIONS[parser.exception]))
|
print('Exception: {} ({})'.format(parser.exception, EXCEPTIONS[parser.exception]))
|
||||||
|
|
||||||
|
@ -314,7 +327,6 @@ if __name__ == "__main__":
|
||||||
parser = ExceptionDataParser()
|
parser = ExceptionDataParser()
|
||||||
resolver = AddressResolver(addr2line, elf_file)
|
resolver = AddressResolver(addr2line, elf_file)
|
||||||
|
|
||||||
parser.parse_file(file, args.platform, args.stack_only)
|
for result in parser.parse_file(file, args.platform, args.stack_only):
|
||||||
resolver.fill(parser)
|
resolver.fill(result)
|
||||||
|
print_result(result, resolver, args.platform, args.full, args.stack_only)
|
||||||
print_result(parser, resolver, args.platform, args.full, args.stack_only)
|
|
||||||
|
|
|
@ -147,6 +147,10 @@ types:
|
||||||
description: "M5 Gps Unit"
|
description: "M5 Gps Unit"
|
||||||
url: "https://docs.m5stack.com/en/unit/gps"
|
url: "https://docs.m5stack.com/en/unit/gps"
|
||||||
resource: serial
|
resource: serial
|
||||||
|
- label: "RS232/RS422"
|
||||||
|
value: SERIAL_GROOVE_232#grv#
|
||||||
|
description: "Generic RS232/RS422 Unit (bidirectional)"
|
||||||
|
resource: serial
|
||||||
|
|
||||||
- &m5groove
|
- &m5groove
|
||||||
type: select
|
type: select
|
||||||
|
|
Loading…
Reference in New Issue