Git Product home page Git Product logo

mattjlewis / diozero Goto Github PK

View Code? Open in Web Editor NEW
248.0 28.0 59.0 94.79 MB

Java Device I/O library that is portable across Single Board Computers and microcontrollers. Tested with Raspberry Pi, Odroid C2, BeagleBone Black, Next Thing CHIP, Asus Tinker Board and Arduinos / Pico. Supports GPIO, I2C, SPI as well as Serial communication. Also known to work with Udoo Quad.

Home Page: https://www.diozero.com

License: MIT License

Java 95.47% Shell 0.18% Makefile 0.13% C 3.80% FreeMarker 0.01% Python 0.14% Dockerfile 0.28%
raspberry-pi gpio beaglebone-black java spi-device i2c analog-devices asus-tinker-board arduino odroid-c2

diozero's Introduction

author
Matthew Lewis

diozero - a Java Device I/O wrapper for GPIO / I2C / SPI control

Maven CI Build Maven Central Status License: MIT Javadoc

A Device I/O library written in Java that provides an object-orientated interface for a range of GPIO / I2C / SPI devices (LEDs, buttons, sensors, motors, displays, etc) connected to Single Board Computers like the Raspberry Pi. Actual GPIO / I2C / SPI device communication is delegated to pluggable service providers for maximum compatibility across different boards. This library is known to work on the following boards: all models of the Raspberry Pi, Odroid C2, BeagleBone (Green and Black), C.H.I.P and ASUS Tinker Board. It should be portable to any Single Board computer that runs Linux and Java 11+.

This library makes use of modern Java features such as automatic resource management, Lambda Expressions and Method References where they simplify development and improve code readability.

Created by Matt Lewis (email [email protected]) (blog), inspired by GPIO Zero and Johnny Five. If you have any issues please use the GitHub issues page. For any other comments or suggestions, please use the GitHub discussions page.

Please refer to the GitHub Pages site for further documentation.

diozero's People

Contributors

afloarea avatar bartoszkaszewczuk avatar btajuddin avatar bwaldvogel avatar eagrahamjr avatar jozala avatar kyngs avatar mattjlewis avatar mattlewismule avatar seggan avatar viliam-durina avatar webcrawls avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diozero's Issues

MFRC522 on Raspberry Pi 3B+: Timed out waiting for interrupt

Hello!

I am trying to use an RFID MFRC522 module on a Raspberry PI 3B+. Once having enabled the SPI interface on the board, I am trying to use the following code in order to read the UID of a card (it is almost as the example one):

private void listen() {
    log("Started listening for RFID cards...");
    try (MFRC522 mfrc522 = new MFRC522(0, 1, 22)) {
        while (listen) {
            rfidLoop(mfrc522);
            SleepUtil.sleepSeconds(1);
        }
    }
}

private void rfidLoop(MFRC522 rfid) {
    if (!rfid.isNewCardPresent()) {
        log("No card found.");
        return;
    }
    log("Card found!");
    UID uid = rfid.readCardSerial();
    if (uid == null) {
        log("Failed to read UID");
        return;
    } else {
    log("Read UID: " + ConversionTools.bytesToHex(uid.getUidBytes()) + "of type " + uid.getType().getName());
    }
    rfid.haltA();
    rfid.stopCrypto1();
}

static void log(String message) {
    MainClass.log(MainClass.ANSI_YELLOW + "RFID Sensor >> " + MainClass.ANSI_RESET + message);
}

The thing is that a UID is never read and the only output I get is: Timed out waiting for interrupt. Here you have an extract of the console:

20:21:58.766 [main] DEBUG com.diozero.devices.MFRC522.init - reset pin was off
20:21:59.039 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Timed out waiting for interrupt
[19.428] RFID Sensor >> No card found.
20:22:00.255 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Timed out waiting for interrupt
[20.631] RFID Sensor >> No card found.
20:22:01.458 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Timed out waiting for interrupt
[21.833] RFID Sensor >> No card found.
20:22:02.661 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Timed out waiting for interrupt
...

I have already checked the following:

  • The SPI interface is enabled on /boot/config.txt

  • Have checked the wiring:
    (https://es.pinout.xyz/#):

    • Pin 22 (GPIO 25): Reset
    • Pin 1: 3v3
    • Pin 9: Ground
    • Pin 21 (GPIO9): MISO
    • Pin 19 (GPIO 10): MOSI
    • Pin 23 (GPIO11): SCK
    • Pin 24 (GPIO 8): SDA
  • Tried using chip select 0 instead of 1.

  • Tried passing 25 instead of 22 for the reset pin parameter. (Tried this for both chip selects).

Here you also have the output of some related commands for reference:

$ ls -lah /dev/spi*
crw-rw---- 1 root spi 153, 0 May 17 21:17 /dev/spidev0.0
crw-rw---- 1 root spi 153, 1 May 17 21:17 /dev/spidev0.1
$ uname -a
Linux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux
$ cat /boot/config.txt
dtparam=spi=on

The version I am using for diozero is: 0.11 and for Pi4J is: 1.1.
I can't find where is the problem. Is even my program being able to communicate with the sensor?

Any help is really appreciated.

Add support for CHIP Pro

Hey,
We've added support for CHIP from Next Thing Co. few months ago and now they've released their Pro platform (CHIP Pro docs) that's smaller and less powerful (less RAM and Storage) but is more suited for SMT installations in embedded projects (a bit similar to Pi Zero) and runs the same Allwinner R8 ARMv7 Cortex-A8 SoC as the original CHIP.
Perhaps it would be worth adding support for it considering how similar it is to a platform we already support?

proc/cpuinfo dump:

processor       : 0
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 1002.70
Features        : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : Allwinner sun4i/sun5i Families
Revision        : 0000
Serial          : XXXXXXXXXXXX

I'll be happy to compile libdiozero-system-utils on CHIP Pro should we need to but I think that shouldn't be necessary since original CHIP runs the same SoC.

JVM crash on exit when using WS2812 on RPi Zero W

I've just started writing an application for the RPi Zero W that uses a WS2812 strip. When creating my rudimentary service, I noticed that the JVM reproducibly crashes when the WS281x is closed.

I have attached the error log created by the JVM: hs_err_pid909.log

The code that caused this crash on exit can be found here: https://github.com/Zappes/Henkinson/blob/master/src/main/java/net/bluephod/henkinson/Henkinson.java (commit 2f46b54)

Great library BTW - I really like it a lot!

DeviceFactoryHelper

Why Maven could not find the package com.diozero.util.DeviceFactoryHelper in SystemInfoTest.java
example? When i have put sources diozero/util/*.java to my local project directory - the error disappear.

Trivial "copy-pasted" bug in DigitalMotor

Constructor of DigitalMotor looks as:

	public DigitalMotor(GpioDeviceFactoryInterface deviceFactory, int forwardGpio, int backwardGpio) throws RuntimeIOException {
		forward = new DigitalOutputDevice(deviceFactory, forwardGpio, true, false);
		backward = new DigitalOutputDevice(deviceFactory, forwardGpio, true, false);
	}

backward should be initialized with backwardGpio

Releasing 0.11 version

Hi Matt,

Thanks for the great library! I'd love to use the latest version of the library in a project I'm working on. I see the most recent release on Maven Central is 0.10, and I've seen in the README that the 0.11-SNAPSHOT jars are available via Google Drive.

I was just curious when you're planning to release 0.11 to Maven so it can be used in a project more easily.

Thanks again!

Change mode of a pin

Hi,
in my use case I need to have a list of the pin and the to be able to make them an input or an output at runtime...is that possible? Now when I try to create a new Button or a new Led on an existing pin I get an error like Device Native-GPIO-XXX is already in use.

What is the corret way to achieve this?

Thanks in advance,
Flavio

Forked repo, can't build because of missing dependencies

I just forked the repo as I consider contributing to the code base. When I try to build with mvn clean install, the build fails because jdk.dio:device-io:jar:1.0 can't be found. A log of the build is attached:
build.log

Do I have to do something specific prior to building the project? If that should be the case, it would be extremely helpful if a little help was provided in the README.

I2C read limit

Am i doing something wrong or is there a 32 byte limit to the amount of bytes that can be read in a single transfer? Or is this hardware related (running on beaglebone black) because there's no limit mentioned in the docs. I know it's not the chip that stops sending because a logic analyser schows a stop after 32 bytes.

HCSR04 on BeagleBone doesn't work

Hello, I was trying to use the HCSR04 sensor on the beaglebone black (Debian wheezy kernel 3.8.13-bone80) but I keep getting the same error.

20:40:01.741 [main] ERROR com.diozero.HCSR04.getDistanceCm - Timeout exceeded waiting for echo to go high

A quick look on my scope showed the issue to be that the trigger pin isn't creating a 10us pulse, instead, the pulse seems to be much larger ranging from 50-100us long.

This is strange since I tried the same sensor on the rpi3 and had no issues.

Any clues as to where the problem is coming from?

Can't disable Log on MRFC522.isNewCardPresent()

Logger prints to console : "Timed out waiting for interrupt"
after calling MFRC522.isNewCardPresent(), even after setting MFRC522.setLogReadsAndWrites(false);

How do I disable it, or remove all Loggers completely?

Using: diozero-core 0.11-SNAPSHOT

readAndWrite function in MFRC522

I'm getting a MIFARE_Write() failed with different cards on different sectors but when i use the default library in a python program it works i think the problem comes from your API could you check please

Problem with version 1.1.1 Error looking up methodID for com/diozero/internal/provider/builtin/gpio/GpioLineEventListener.event(IIJ)V

I tested the BME280 with version1.1.1, but I run into following error - with 1.1.0 my code works

Error looking up methodID for com/diozero/internal/provider/builtin/gpio/GpioLineEventListener.event(IIJ)V 18:20:16.521 [main] WARN com.diozero.util.LibraryLoader.loadLibrary - Error loading library 'diozero-system-utils' from classpath, trying System.loadLibrary: event Error looking up methodID for com/diozero/internal/provider/builtin/gpio/GpioLineEventListener.event(IIJ)V 18:20:16.548 [main] ERROR com.diozero.util.LibraryLoader.loadLibrary - Error loading library 'diozero-system-utils' from system library path: java.lang.NoSuchMethodError: event Exception in thread "main" java.lang.UnsatisfiedLinkError: 'com.diozero.internal.provider.builtin.gpio.GpioChip com.diozero.internal.provider.builtin.gpio.NativeGpioDevice.openChip(java.lang.String)' at com.diozero.internal.provider.builtin.gpio.NativeGpioDevice.openChip(Native Method) at com.diozero.internal.provider.builtin.gpio.GpioChip.lambda$openAllChips$1(GpioChip.java:67) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at com.diozero.internal.provider.builtin.gpio.GpioChip.openAllChips(GpioChip.java:68) at com.diozero.internal.provider.builtin.DefaultDeviceFactory.start(DefaultDeviceFactory.java:100) at com.diozero.sbc.DeviceFactoryHelper.initialise(DeviceFactoryHelper.java:85) at com.diozero.sbc.DeviceFactoryHelper.getNativeDeviceFactory(DeviceFactoryHelper.java:108) at com.diozero.api.I2CDevice$Builder.build(I2CDevice.java:145) at com.diozero.devices.BME280.<init>(BME280.java:281) at com.diozero.devices.BME280.<init>(BME280.java:266

UnsatisfiedLinkError using bbbio provider

I unzip the file diozero-distribution-0.11-SNAPSHOT-bin.zip downloaded from the google drive link on a BBB running the latest version of debian. I move to the folder and execute the command:

java -classpath tinylog-1.2.jar:diozero-core-0.11-SNAPSHOT.jar:diozero-sampleapps-0.11-SNAPSHOT.jar:diozero-provider-bbbiolib-0.11-SNAPSHOT.jar com.diozero.sampleapps.ButtonTest 66

I get the error below. My understanding is that BBBio is included in the corresponding jar file and there is no need to do anything else to get this to work (the source seems to indicate this). I get this error running 0.11 or 0.10
I can get the sysfs version working without issue.
Any help is appreciated

java -classpath tinylog-1.2.jar:diozero-core-0.11-SNAPSHOT.jar:diozero-sampleapps-0.11-SNAPSHOT.jar:diozero-provider-bbbiolib-0.11-20171009.203154-13.jar com.diozero.sampleapps.ButtonTest 66

Exception in thread "main" java.util.ServiceConfigurationError: com.diozero.internal.provider.NativeDeviceFactoryInterface: Provider com.diozero.internal.provider.bbbiolib.BbbIoLibDeviceFactory could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1812)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at com.diozero.util.DeviceFactoryHelper.init(DeviceFactoryHelper.java:69)
at com.diozero.util.DeviceFactoryHelper.getNativeDeviceFactory(DeviceFactoryHelper.java:88)
at com.diozero.api.DigitalInputDevice.(DigitalInputDevice.java:71)
at com.diozero.devices.Button.(Button.java:80)
at com.diozero.sampleapps.ButtonTest.test(ButtonTest.java:68)
at com.diozero.sampleapps.ButtonTest.main(ButtonTest.java:64)
Caused by: java.util.ServiceConfigurationError: com.diozero.internal.provider.NativeDeviceFactoryInterface: Provider com.diozero.internal.provider.bbbiolib.BbbIoLibDeviceFactory could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1812)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at com.diozero.util.DeviceFactoryHelper.init(DeviceFactoryHelper.java:69)
at com.diozero.util.DeviceFactoryHelper.getNativeDeviceFactory(DeviceFactoryHelper.java:88)
at com.diozero.util.LibraryLoader.loadLibrary(LibraryLoader.java:53)
at com.diozero.internal.provider.bbbiolib.BbbIoLibNative.(BbbIoLibNative.java:39)
at com.diozero.internal.provider.bbbiolib.BbbIoLibDeviceFactory.(BbbIoLibDeviceFactory.java:48)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
... 16 more
Caused by: java.lang.UnsatisfiedLinkError: com.diozero.internal.provider.bbbiolib.BbbIoLibNative.init()I
at com.diozero.internal.provider.bbbiolib.BbbIoLibNative.init(Native Method)
at com.diozero.internal.provider.bbbiolib.BbbIoLibDeviceFactory.(BbbIoLibDeviceFactory.java:48)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
... 37 more

Native jvm crash in libws281xj.so on exit on 3 B+

Hi, I'm on the Pi 3 B+. I'm using the 0.12 snapshot, with the exception that i pulled your master branch and recompiled the diozero-ws281x-java project to get the native dependency fix you checked in.

At this point, everything works, i can light up the strip however i want, but when my code exits the jvm crashes in the native library. I've attached the jvm dump.

hs_err_pid1668.log

Let me know what other info you need to debug.

Thanks,
Joe

Add support for x86 Linux

Java dio for x86 support
I want to use Java and Groovy script for development, debugging, investigating my home automation.
But existing libraries work only for embedded boards like rpi.
I investigate and found some solutions like enhance i2c and GPIO on my laptop or stationary pc over USB adapter
https://github.com/harbaum/I2C-Tiny-USB
https://github.com/harbaum/I2C-Tiny-USB/tree/master/digispark

https://youtu.be/rriKd9jkdJQ

Digispark Attiny85 I2C-Tiny-USB
FT311D USB To I2C IIC SPI UART GPIO PWM Converter Adapter 3.3V/5V
FT232H Multifunction High-Speed USB to JTAG UART/ FIFO SPI/ I2C

https://github.com/dvlopt/linux-i2c.java
https://github.com/dvlopt/linux-gpio.java

BME280.java - humidity value is too high

This code shows 76 % for humidity in my test run.

3 other Tests

1.) https://raw.githubusercontent.com/ControlEverythingCommunity/BME280/master/Java/BME280.java
shows 40%
2.) python BME280 40%
3.) python SHT31 sensor 38%

And very strange - after calling the python BME280 code once - the BME280 sensor has reached an internal state that the blamed code works correct. I spend some hours to nail down the problem. But I am an average pyhton programmer.

I will try to fix this problem.

CHIP BoardInfoProvider could not be instantiated

I've got the LED output working great. I attempted a api.DigitalInputDevice (or a Button) and got the following error on the constructor call. It seems that it's trying to find some Raspberry Pi board information, while I'm running a CHIP. Please advise...

Exception in thread "main" java.util.ServiceConfigurationError: com.diozero.util.BoardInfoProvider: Provider com.diozero.internal.board.raspberrypi.RaspberryPiBoardInfoProvider could not be instantiated
	at java.util.ServiceLoader.fail(ServiceLoader.java:232)
	at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
	at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
	at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
	at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
	at com.diozero.util.SystemInfo.lookupBoardInfo(SystemInfo.java:78)
	at com.diozero.util.SystemInfo.initialise(SystemInfo.java:71)
	at com.diozero.util.SystemInfo.getBoardInfo(SystemInfo.java:112)
	at com.diozero.util.SystemInfo.getLibraryPath(SystemInfo.java:118)
	at com.diozero.util.LibraryLoader.loadLibrary(LibraryLoader.java:44)
	at com.diozero.util.PollNative.(PollNative.java:32)
	at com.diozero.internal.provider.sysfs.SysFsDigitalInputDevice.(SysFsDigitalInputDevice.java:67)
	at com.diozero.internal.provider.sysfs.SysFsDeviceFactory.createDigitalInputPin(SysFsDeviceFactory.java:97)
	at com.diozero.internal.spi.BaseNativeDeviceFactory.provisionDigitalInputPin(BaseNativeDeviceFactory.java:108)
	at com.diozero.api.DigitalInputDevice.(DigitalInputDevice.java:90)
	at com.diozero.api.DigitalInputDevice.(DigitalInputDevice.java:70)
	at com.diozero.Button.(Button.java:66)
	at (my code)
Caused by: java.lang.ExceptionInInitializerError
	at com.diozero.internal.board.raspberrypi.RaspberryPiBoardInfoProvider.(RaspberryPiBoardInfoProvider.java:150)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
	... 19 more
Caused by: java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at com.diozero.internal.board.raspberrypi.RaspberryPiBoardInfoProvider$PiBRev1BoardInfo.(RaspberryPiBoardInfoProvider.java:281)
	... 26 more

Rpi 3 - Unable to determine hardware version (BCM2835)

How solve this?

Unable to determine hardware version. I see: Hardware	: BCM2835
,
 - expecting BCM2708 or BCM2709.
If this is a genuine Raspberry Pi then please report this
to [email protected]. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.

Kernel:
Linux raspberrypi 4.14.22-v7+ #1096 SMP Mon Feb 26 19:14:22 GMT 2018 armv7l GNU/Linux

DigitalInputDevice that doesn't check if a listener is already associated to a pin in the setInputListener()

Running this with DIO 1.1

try (Button button = new Button(buttonPin, GpioPullUpDown.PULL_UP); LED led = new LED(ledPin)) {
    button.whenPressed(led::on);
    button.whenReleased(led::off);
    SleepUtil.sleepSeconds(10);
}

I've received the following exception, caused by DigitalInputDevice that doesn't check if a listener is already associated to a pin in the setInputListener():

Exception in thread "main" java.lang.IllegalStateException: The listener is already assigned
    at com.oracle.dio.gpio.impl.GPIOPinImpl.setInputListener(GPIOPinImpl.java:200)
    at com.diozero.internal.provider.jdkdio11.JdkDeviceIoGpioInputDevice.enableListener(JdkDeviceIoGpioInputDevice.java:152)
    at com.diozero.internal.spi.AbstractInputDevice.setListener(AbstractInputDevice.java:48)
    at com.diozero.api.DigitalInputDevice.enableListener(DigitalInputDevice.java:92)
    at com.diozero.api.DigitalInputDevice.whenDeactivated(DigitalInputDevice.java:134)
    at com.diozero.Button.whenReleased(Button.java:62)

Best,
Flavio

How to disable log DEBUG messages

Does this library support disabling debug messages? I have a finished project but I want to keep my logs clean. If debug messages are shown then my console gets filled with 7 messages or more every second.

Is there any parameter that allows to do this?

Support for Java 1.7

Hey - I noticed that you don't support Java 1.7 - I have a project that for, a specific reason of which I'll blame a nameless Fortune 100 company for not also moving to 1.8, I'm still running 1.7. I pulled your latest release and gave it a quick try - seems that you're using some 1.8 language features.

Current libws281xj.so library not compatible with 8GB Raspberry Pi 4 & Pi 400

To get diozero-ws281x-java running on my 8GB Raspberry Pi 4 Model B Rev 1.4 (d03114) I had to recompile the libws281xj.so native library against the latest version of rpi_ws281x. Before recompiling I was getting a Hardware revision is not supported error.

Could you please recompile & update the libws281xj.so library to ensure that diozero-ws281x-java is compatible with the new hardware revisions that have been released (e.g. 8GB Pi4, Raspberry Pi 400) since the diozero-ws281x-java/src/main/resources/lib/libws281xj.so was last updated.

GPIO input debouncing

Do you have any strategy to fix this annoying problem?
If yes just tell me where to start and I'll try to issue a PR for it if it's not too complicated

mfrc522: ReadAndWrite Example

Hi there,

i'm using your mfrc522 sampleapps to learn a bit about the Reader/Writer.
I can successfully read data from secotr's/blocks but i'm not able to write data.
I want to change the access bits of the sector trailer in sector 1 so that i 'm able to increment the block 0 of sector 1

My changes:

Changed boolean from false to true.
readAndWrite(rfid, uid, auth_key, true);

I choosed sector 1

                byte blocks_per_sector = 4;
		byte sector = 6;
		byte blockAddr = (byte) (sector * blocks_per_sector + 3);  //Sector Trailer Addr
		byte trailerBlock = (byte) (blockAddr + (blocks_per_sector - 1));

and my datablock is

//Default settings: KeyA&B = FFFF FFFF FFFF h ----- Access Bits = FF0780 h
//Structure Sector Trailer: KEYA(6Byte) ------- ACCESSBITS(3Byte)+USerData(1Byte)-----KEYB(6Byte)
//My Data Block: Key A ------ AccessBits: EE178100 h ------- Key B
byte[] dataBlock = {											
	(byte )0xff, (byte )0xff,(byte )0xff, (byte )0xff,		
	(byte )0xff,(byte )0xff, (byte)0xee, 0x17,				
	(byte)0x81, 0x00, (byte) 0xff, (byte )0xff,
	(byte )0xff, (byte )0xff, (byte )0xff, (byte )0xff
};

This is the error message:

sudo java -cp tinylog-1.3.6.jar:diozero-core-0.12-SNAPSHOT.jar:RFID.jar:diozero-provider-pigpio-0.12-SNAPSHOT.jar:pigpioj-java-2.2.jar:httpcore-4.4.11.jar:httpclient-4.5.8.jar:commons-logging-1.2.jar:commons-codec-1.11.jar:org.eclipse.paho.client.mqttv3-1.0.2.jar com.diozero.sampleapps.mfrc522.ReadAndWrite 8 0 25 FFFFFFFFFFFF
15:37:44.116 [main] DEBUG com.diozero.util.DeviceFactoryHelper.init - Using native device factory class PigpioJDeviceFactory
15:37:44.156 [main] INFO com.diozero.internal.provider.pigpioj.PigpioJDeviceFactory.initialiseBoardInfo - Hardware revision: 10494163 (0xa020d3)
15:37:44.251 [main] DEBUG com.diozero.internal.provider.pigpioj.PigpioJSpiDevice. - SPI device (8-0) opened, handle=0
15:37:44.254 [main] DEBUG com.diozero.devices.MFRC522.init - reset pin was off
15:37:44.278 [main] DEBUG com.diozero.util.LibraryLoader.loadLibrary - Loaded library 'diozero-system-utils' from classpath
15:37:44.337 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.main - Scanning for RFID tags...
15:37:45.378 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - timer interrupt, n: 0x45
15:37:45.379 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Timed out waiting for interrupt
15:37:46.388 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 2
15:37:46.389 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.390 [main] DEBUG com.diozero.devices.MFRC522.select - uid_complete: false, cascade_level: 1
15:37:46.391 [main] DEBUG com.diozero.devices.MFRC522.select - select_done: false
15:37:46.392 [main] DEBUG com.diozero.devices.MFRC522.select - ANTICOLLISION: current_level_known_bits=0
15:37:46.393 [main] DEBUG com.diozero.devices.MFRC522.select - tx_last_bits: 0
15:37:46.420 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 5
15:37:46.421 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.422 [main] DEBUG com.diozero.devices.MFRC522.select - select_done: false
15:37:46.423 [main] DEBUG com.diozero.devices.MFRC522.select - SELECT: current_level_known_bits=32
15:37:46.424 [main] DEBUG com.diozero.devices.MFRC522.select - tx_last_bits: 0
15:37:46.427 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 3
15:37:46.427 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.433 [main] DEBUG com.diozero.devices.MFRC522.select - End of while (!uidComplete) loop, uid: UID [uidBytes=6B2A4C0B, sak=8]
15:37:46.438 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.main - Found card with UID 0x6B2A4C0B, type: MIFARE_1K
15:37:46.439 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - Authenticating using key A...
15:37:46.440 [main] DEBUG com.diozero.devices.MFRC522.authenticate - blockAddr: 27
15:37:46.443 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.444 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - Current data in sector:
6 27 15:37:46.446 [main] DEBUG com.diozero.devices.MFRC522.authenticate - blockAddr: 24
15:37:46.449 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.449 [main] DEBUG com.diozero.devices.MFRC522.mifareRead - blockAddr: 27
15:37:46.452 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 18
15:37:46.453 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Checking CRC
15:37:46.454 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff [ 0 0 1 ]
26 15:37:46.458 [main] DEBUG com.diozero.devices.MFRC522.mifareRead - blockAddr: 26
15:37:46.461 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 18
15:37:46.462 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Checking CRC
15:37:46.463 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
25 15:37:46.467 [main] DEBUG com.diozero.devices.MFRC522.mifareRead - blockAddr: 25
15:37:46.470 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 18
15:37:46.471 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Checking CRC
15:37:46.472 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
24 15:37:46.476 [main] DEBUG com.diozero.devices.MFRC522.mifareRead - blockAddr: 24
15:37:46.479 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 18
15:37:46.480 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Checking CRC
15:37:46.481 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
15:37:46.485 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - Reading data from block 0x1b ...
15:37:46.486 [main] DEBUG com.diozero.devices.MFRC522.mifareRead - blockAddr: 27
15:37:46.489 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 18
15:37:46.490 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - Checking CRC
15:37:46.490 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.491 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - Data in block 0x1b : 0x00000000 0000FF07 8069FFFF FFFFFFFF D455
15:37:46.492 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - Authenticating again using key B...
15:37:46.492 [main] DEBUG com.diozero.devices.MFRC522.authenticate - blockAddr: 27
15:37:46.495 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.496 [main] INFO com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - Writing data into block 0x1b : 0xFFFFFFFF FFFFEE17 8100FFFF FFFFFFFF ...
15:37:46.497 [main] ERROR com.diozero.sampleapps.mfrc522.ReadAndWrite.readAndWrite - MIFARE_Write() failed: INVALID
15:37:46.499 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - FIFO Level: 1
15:37:46.500 [main] DEBUG com.diozero.devices.MFRC522.communicateWithPICC - ok
15:37:46.501 [main] DEBUG com.diozero.api.SpiDevice.close - close()
15:37:46.502 [main] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-SPI-8-0
15:37:46.503 [main] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-SPI-8-0)
15:37:46.510 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler running
15:37:46.515 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
15:37:46.516 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
15:37:46.525 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-GPIO-25
15:37:46.526 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.provider.pigpioj.PigpioJDigitalOutputDevice.closeDevice - closeDevice()
15:37:46.527 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-GPIO-25)
15:37:46.543 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler finished

I tried to figure out on my own. So i looked up the implementation of the method:

status = rfid.mifareWrite(blockAddr, dataBlock);

public StatusCode mifareWrite(byte blockAddr, byte[] buffer) {
		// Sanity check
		if (buffer == null || buffer.length != 16) {
			return StatusCode.INVALID;
		}
		
		// Mifare Classic protocol requires two communications to perform a write.
		// Step 1: Tell the PICC we want to write to block blockAddr.
		byte[] cmdBuffer = { PiccCommand.MF_WRITE.getValue(), blockAddr };
		StatusCode result = mifareTransceive(cmdBuffer); // Adds CRC_A and checks that the response is MF_ACK.
		if (result != StatusCode.OK) {
			return result;
		}
		
		// Step 2: Transfer the data
		return mifareTransceive(buffer); // Adds CRC_A and checks that the response is MF_ACK.
	} // End MIFARE_Write()

I think this method throws SatusCode Invalid when the byte Array is Null or whether its length is not equal 16. But thats not the case.

thank you in advance

Problem with WS281x Library and Pi 3b

I initialize the driverinterface this way:

int ledCount = 10;
ledDriver = new WS281x(800000, 5, 18, 255, ledCount, StripType.WS2812, 0);

Then i try to fill my ledstrip with a color this way:

public void fillPixel(Color color) {
		for (int i = 0; i < ledCount; i++)
			ledDriver.setPixelColourRGB(i, color.getRed(), color.getGreen(), color.getBlue());
		ledDriver.render();
}

The problem is now, that all led's get a random color. Sometimes the first led is in the right color.
Finally a hs_err_pid.log is created with this inside:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x6521d508, pid=1451, tid=1591800944
#
# JRE version: Java(TM) SE Runtime Environment (8.0_65-b17) (build 1.8.0_65-b17)
# Java VM: Java HotSpot(TM) Client VM (25.65-b01 mixed mode linux-arm )
# Problematic frame:
# C  [libws281xj1615881025588421543.so+0x2508]  ws2811_wait+0x38
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x5f9be000):  JavaThread "Thread-17" daemon [_thread_in_native, id=1632, stack(0x5edc0000,0x5ee10000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x76200500

Registers:
  r0  = 0x00000000
  r1  = 0x00000002
  r2  = 0x00000000
  r3  = 0x00000000
  r4  = 0x76200500
  r5  = 0x6522ec1c
  r6  = 0x00000004
  r7  = 0x00000000
  r8  = 0x5ee0e942
  r9  = 0x6522ed58
  r10 = 0x00000001
  fp  = 0x00000001
  r12 = 0x5ee0f4f4
  sp  = 0x5ee0e910
  lr  = 0x76e9eedc
  pc  = 0x6521d508
  cpsr = 0x00000010

Top of Stack: (sp=0x5ee0e910)
0x5ee0e910:   00000001 6522ed18 00000004 6521d82c
0x5ee0e920:   5ee0e942 0000000a 6522ed18 5ee0e940
0x5ee0e930:   00000001 00000001 0000012c 6522ec1c
0x5ee0e940:   00000000 64c56348 00000000 5ee0e958
0x5ee0e950:   5ee0eabc 7436e70c 00000000 00000000
0x5ee0e960:   67513b88 7413e6b4 6521c524 00000000
0x5ee0e970:   00000000 5ee0ea14 5fc92c50 5f9be000
0x5ee0e980:   5ee0e994 6521c540 5ee0ea14 5f9be13c 

Instructions: (pc=0x6521d508)
0x6521d4e8:   e5934008 1a000005 ea00000a e5943000
0x6521d4f8:   e3130c01 1a000004 e3a0000a ebfffae2
0x6521d508:   e5943000 e3130001 1afffff7 e5943000
0x6521d518:   e3130c01 1a000001 e3a00000 e8bd8038 

Register to memory mapping:

  r0  = 0x00000000
0x00000000 is an unknown value

  r1  = 0x00000002
0x00000002 is an unknown value

  r2  = 0x00000000
0x00000000 is an unknown value

  r3  = 0x00000000
0x00000000 is an unknown value

  r4  = 0x76200500
0x76200500 is an unknown value

  r5  = 0x6522ec1c
0x6522ec1c: <offset 0x13c1c> in /tmp/libws281xj1615881025588421543.so at 0x6521b000

  r6  = 0x00000004
0x00000004 is an unknown value

  r7  = 0x00000000
0x00000000 is an unknown value

  r8  = 0x5ee0e942
0x5ee0e942 is pointing into the stack for thread: 0x5f9be000

  r9  = 0x6522ed58
0x6522ed58: led_string+0x40 in /tmp/libws281xj1615881025588421543.so at 0x6521b000

  r10 = 0x00000001
0x00000001 is an unknown value

  fp  = 0x00000001
0x00000001 is an unknown value

  r12 = 0x5ee0f4f4
0x5ee0f4f4 is pointing into the stack for thread: 0x5f9be000

  sp  = 0x5ee0e910
0x5ee0e910 is pointing into the stack for thread: 0x5f9be000

  lr  = 0x76e9eedc
0x76e9eedc: usleep+0x40 in /lib/arm-linux-gnueabihf/libc.so.6 at 0x76dd4000

  pc  = 0x6521d508
0x6521d508: ws2811_wait+0x38 in /tmp/libws281xj1615881025588421543.so at 0x6521b000



Stack: [0x5edc0000,0x5ee10000],  sp=0x5ee0e910,  free space=314k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libws281xj1615881025588421543.so+0x2508]  ws2811_wait+0x38

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.diozero.ws281xj.rpiws281x.WS281xNative.render()I+0
j  com.diozero.ws281xj.rpiws281x.WS281x.render()V+0
J 3795 C1 de.r6community.DrinkMixer.service.LEDService.fillPixel(Ljava/awt/Color;)V (53 bytes) @ 0x743adb3c [0x743ada80+0xbc]
j  de.r6community.DrinkMixer.led.LEDEffectUtil.colorEffect(Lde/r6community/DrinkMixer/service/LEDService;ILjava/awt/Color;)V+2
j  de.r6community.DrinkMixer.led.LEDEffectUtil.readStep(Lde/r6community/DrinkMixer/service/LEDService;Lde/r6community/DrinkMixer/led/LEDEffect;Ljava/lang/String;)V+271
j  de.r6community.DrinkMixer.led.LEDEffectRunnable.run()V+63
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x6550a400 JavaThread "Thread-5" [_thread_in_Java, id=1650, stack(0x5fb00000,0x5fb50000)]
  0x65509000 JavaThread "WS281x Shutdown Handler" [_thread_in_native, id=1648, stack(0x5ee60000,0x5eeb0000)]
  0x65508800 JavaThread "SIGINT handler" daemon [_thread_blocked, id=1647, stack(0x5ee10000,0x5ee60000)]
=>0x5f9be000 JavaThread "Thread-17" daemon [_thread_in_native, id=1632, stack(0x5edc0000,0x5ee10000)]
  0x76107400 JavaThread "DestroyJavaVM" [_thread_blocked, id=1452, stack(0x762fe000,0x7634e000)]
  0x60c92800 JavaThread "http-nio-8080-Acceptor-0" daemon [_thread_in_native, id=1484, stack(0x5ff40000,0x5ff90000)]
  0x60c8ec00 JavaThread "http-nio-8080-ClientPoller-1" daemon [_thread_in_native, id=1483, stack(0x5ff90000,0x5ffe0000)]
  0x606b5800 JavaThread "http-nio-8080-ClientPoller-0" daemon [_thread_in_native, id=1482, stack(0x5ffe0000,0x60030000)]
  0x606b2000 JavaThread "http-nio-8080-exec-10" daemon [_thread_blocked, id=1481, stack(0x60030000,0x60080000)]
  0x606b0800 JavaThread "http-nio-8080-exec-9" daemon [_thread_blocked, id=1480, stack(0x60080000,0x600d0000)]
  0x60673000 JavaThread "http-nio-8080-exec-8" daemon [_thread_blocked, id=1479, stack(0x600d0000,0x60120000)]
  0x60671800 JavaThread "http-nio-8080-exec-7" daemon [_thread_blocked, id=1478, stack(0x60120000,0x60170000)]
  0x60670000 JavaThread "http-nio-8080-exec-6" daemon [_thread_blocked, id=1477, stack(0x60170000,0x601c0000)]
  0x6066e800 JavaThread "http-nio-8080-exec-5" daemon [_thread_blocked, id=1476, stack(0x601c0000,0x60210000)]
  0x6066d400 JavaThread "http-nio-8080-exec-4" daemon [_thread_blocked, id=1475, stack(0x60210000,0x60260000)]
  0x60648800 JavaThread "http-nio-8080-exec-3" daemon [_thread_blocked, id=1474, stack(0x60260000,0x602b0000)]
  0x60647800 JavaThread "http-nio-8080-exec-2" daemon [_thread_blocked, id=1473, stack(0x602b0000,0x60300000)]
  0x60669c00 JavaThread "http-nio-8080-exec-1" daemon [_thread_blocked, id=1472, stack(0x61303000,0x61353000)]
  0x606bb400 JavaThread "NioBlockingSelector.BlockPoller-1" daemon [_thread_in_native, id=1471, stack(0x613b0000,0x61400000)]
  0x6153ac00 JavaThread "HikariPool-1 housekeeper" daemon [_thread_blocked, id=1466, stack(0x62e0f000,0x62e5f000)]
  0x61902000 JavaThread "mysql-cj-abandoned-connection-cleanup" daemon [_thread_blocked, id=1465, stack(0x62e5f000,0x62eaf000)]
  0x61b83000 JavaThread "container-0" [_thread_blocked, id=1464, stack(0x62eaf000,0x62eff000)]
  0x65502800 JavaThread "Catalina-utility-2" [_thread_blocked, id=1463, stack(0x6522f000,0x6527f000)]
  0x61b81c00 JavaThread "Catalina-utility-1" [_thread_blocked, id=1462, stack(0x6542f000,0x6547f000)]
  0x76183c00 JavaThread "Service Thread" daemon [_thread_blocked, id=1458, stack(0x65a10000,0x65a60000)]
  0x76180800 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=1457, stack(0x65480000,0x65500000)]
  0x7617f000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1456, stack(0x65a60000,0x65ab0000)]
  0x76162000 JavaThread "Finalizer" daemon [_thread_blocked, id=1455, stack(0x65ab0000,0x65b00000)]
  0x76160800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1454, stack(0x65c17000,0x65c67000)]

Other Threads:
  0x7615d800 VMThread [stack: 0x65c68000,0x65ce8000] [id=1453]
  0x76185c00 WatcherThread [stack: 0x65280000,0x65300000] [id=1459]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap:
 def new generation   total 21504K, used 20070K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K,  98% used [0x66400000, 0x67664ca8, 0x676c0000)
  from space 2304K,  53% used [0x676c0000, 0x677f4bb8, 0x67900000)
  to   space 2304K,   0% used [0x67900000, 0x67900000, 0x67b40000)
 tenured generation   total 47468K, used 31969K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  67% used [0x6ad40000, 0x6cc784b8, 0x6cc78600, 0x6db9b000)
 Metaspace       used 42533K, capacity 43995K, committed 44032K, reserved 44336K

Card table byte_map: [0x74011000,0x74080000] byte_map_base: 0x73cdf000

Polling page: 0x76fc2000

CodeCache: size=32768Kb used=4170Kb max_used=4490Kb free=28597Kb
 bounds [0x74100000, 0x74570000, 0x76100000]
 total_blobs=2557 nmethods=2331 adapters=155
 compilation: enabled

Compilation events (10 events):
Event: 290,526 Thread 0x76180800 3913             java.lang.Thread::interrupted (8 bytes)
Event: 290,527 Thread 0x76180800 nmethod 3913 0x7420f208 code [0x7420f2f0, 0x7420f384]
Event: 293,521 Thread 0x76180800 3914             java.util.concurrent.locks.ReentrantLock$Sync::tryRelease (45 bytes)
Event: 293,523 Thread 0x76180800 nmethod 3914 0x7420ba08 code [0x7420baf0, 0x7420bc44]
Event: 320,436 Thread 0x76180800 3915             org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory::predictBeanType (126 bytes)
Event: 320,439 Thread 0x76180800 nmethod 3915 0x741ef588 code [0x741ef6d0, 0x741ef9b0]
Event: 320,444 Thread 0x76180800 3916             java.util.concurrent.CopyOnWriteArrayList$COWIterator::next (32 bytes)
Event: 320,446 Thread 0x76180800 nmethod 3916 0x741ba248 code [0x741ba340, 0x741ba484]
Event: 320,490 Thread 0x76180800 3917             jdk.internal.org.objectweb.asm.Type::getArgumentsAndReturnSizes (151 bytes)
Event: 320,493 Thread 0x76180800 nmethod 3917 0x741ba948 code [0x741baa80, 0x741baee8]

GC Heap History (10 events):
Event: 135,540 GC heap before
{Heap before GC invocations=282 (full 6):
 def new generation   total 21504K, used 20452K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K, 100% used [0x66400000, 0x676c0000, 0x676c0000)
  from space 2304K,  54% used [0x67900000, 0x67a39218, 0x67b40000)
  to   space 2304K,   0% used [0x676c0000, 0x676c0000, 0x67900000)
 tenured generation   total 47468K, used 31358K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cbdf8a8, 0x6cbdfa00, 0x6db9b000)
 Metaspace       used 41665K, capacity 43092K, committed 43136K, reserved 43312K
Event: 135,561 GC heap after
Heap after GC invocations=283 (full 6):
 def new generation   total 21504K, used 959K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K,   0% used [0x66400000, 0x66400000, 0x676c0000)
  from space 2304K,  41% used [0x676c0000, 0x677afe68, 0x67900000)
  to   space 2304K,   0% used [0x67900000, 0x67900000, 0x67b40000)
 tenured generation   total 47468K, used 31586K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cc188a0, 0x6cc18a00, 0x6db9b000)
 Metaspace       used 41665K, capacity 43092K, committed 43136K, reserved 43312K
}
Event: 135,880 GC heap before
{Heap before GC invocations=283 (full 6):
 def new generation   total 21504K, used 20159K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K, 100% used [0x66400000, 0x676c0000, 0x676c0000)
  from space 2304K,  41% used [0x676c0000, 0x677afe68, 0x67900000)
  to   space 2304K,   0% used [0x67900000, 0x67900000, 0x67b40000)
 tenured generation   total 47468K, used 31586K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cc188a0, 0x6cc18a00, 0x6db9b000)
 Metaspace       used 41708K, capacity 43130K, committed 43264K, reserved 43312K
Event: 135,895 GC heap after
Heap after GC invocations=284 (full 6):
 def new generation   total 21504K, used 796K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K,   0% used [0x66400000, 0x66400000, 0x676c0000)
  from space 2304K,  34% used [0x67900000, 0x679c7398, 0x67b40000)
  to   space 2304K,   0% used [0x676c0000, 0x676c0000, 0x67900000)
 tenured generation   total 47468K, used 31586K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cc188a0, 0x6cc18a00, 0x6db9b000)
 Metaspace       used 41708K, capacity 43130K, committed 43264K, reserved 43312K
}
Event: 136,236 GC heap before
{Heap before GC invocations=284 (full 6):
 def new generation   total 21504K, used 19996K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K, 100% used [0x66400000, 0x676c0000, 0x676c0000)
  from space 2304K,  34% used [0x67900000, 0x679c7398, 0x67b40000)
  to   space 2304K,   0% used [0x676c0000, 0x676c0000, 0x67900000)
 tenured generation   total 47468K, used 31586K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cc188a0, 0x6cc18a00, 0x6db9b000)
 Metaspace       used 41746K, capacity 43165K, committed 43264K, reserved 43312K
Event: 136,257 GC heap after
Heap after GC invocations=285 (full 6):
 def new generation   total 21504K, used 1304K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K,   0% used [0x66400000, 0x66400000, 0x676c0000)
  from space 2304K,  56% used [0x676c0000, 0x678062c0, 0x67900000)
  to   space 2304K,   0% used [0x67900000, 0x67900000, 0x67b40000)
 tenured generation   total 47468K, used 31586K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cc188a0, 0x6cc18a00, 0x6db9b000)
 Metaspace       used 41746K, capacity 43165K, committed 43264K, reserved 43312K
}
Event: 136,872 GC heap before
{Heap before GC invocations=285 (full 6):
 def new generation   total 21504K, used 20504K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K, 100% used [0x66400000, 0x676c0000, 0x676c0000)
  from space 2304K,  56% used [0x676c0000, 0x678062c0, 0x67900000)
  to   space 2304K,   0% used [0x67900000, 0x67900000, 0x67b40000)
 tenured generation   total 47468K, used 31586K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  66% used [0x6ad40000, 0x6cc188a0, 0x6cc18a00, 0x6db9b000)
 Metaspace       used 42029K, capacity 43428K, committed 43520K, reserved 44336K
Event: 136,894 GC heap after
Heap after GC invocations=286 (full 6):
 def new generation   total 21504K, used 1022K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K,   0% used [0x66400000, 0x66400000, 0x676c0000)
  from space 2304K,  44% used [0x67900000, 0x679ff928, 0x67b40000)
  to   space 2304K,   0% used [0x676c0000, 0x676c0000, 0x67900000)
 tenured generation   total 47468K, used 31969K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  67% used [0x6ad40000, 0x6cc784b8, 0x6cc78600, 0x6db9b000)
 Metaspace       used 42029K, capacity 43428K, committed 43520K, reserved 44336K
}
Event: 139,654 GC heap before
{Heap before GC invocations=286 (full 6):
 def new generation   total 21504K, used 20222K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K, 100% used [0x66400000, 0x676c0000, 0x676c0000)
  from space 2304K,  44% used [0x67900000, 0x679ff928, 0x67b40000)
  to   space 2304K,   0% used [0x676c0000, 0x676c0000, 0x67900000)
 tenured generation   total 47468K, used 31969K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  67% used [0x6ad40000, 0x6cc784b8, 0x6cc78600, 0x6db9b000)
 Metaspace       used 42432K, capacity 43876K, committed 43904K, reserved 44336K
Event: 139,674 GC heap after
Heap after GC invocations=287 (full 6):
 def new generation   total 21504K, used 1234K [0x66400000, 0x67b40000, 0x6ad40000)
  eden space 19200K,   0% used [0x66400000, 0x66400000, 0x676c0000)
  from space 2304K,  53% used [0x676c0000, 0x677f4bb8, 0x67900000)
  to   space 2304K,   0% used [0x67900000, 0x67900000, 0x67b40000)
 tenured generation   total 47468K, used 31969K [0x6ad40000, 0x6db9b000, 0x74000000)
   the space 47468K,  67% used [0x6ad40000, 0x6cc784b8, 0x6cc78600, 0x6db9b000)
 Metaspace       used 42432K, capacity 43876K, committed 43904K, reserved 44336K
}

Deoptimization events (0 events):
No events

Internal exceptions (10 events):
Event: 191,479 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 1> (0x674962d8) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 191,479 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 1> (0x67496820) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 191,479 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 2> (0x67496a68) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 191,981 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 1> (0x67496e58) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 191,981 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 1> (0x674973a0) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 191,981 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 2> (0x674975e8) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 192,163 Thread 0x65906c00 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x67497990) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/prims/jvm.cpp, line 3215]
Event: 192,164 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 1> (0x67497c18) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 192,164 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 1> (0x67498160) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
Event: 192,164 Thread 0x65906c00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 2> (0x674983a8) thrown at [/HUDSON/workspace/8-2-build-glinux-arm-vfp-hflt/jdk8u65/4987/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]

Events (10 events):
Event: 320,449 loading class java/util/concurrent/SynchronousQueue$TransferStack$SNode done
Event: 320,455 Thread 0x6550ac00 Thread exited: 0x6550ac00
Event: 320,470 loading class org/springframework/context/support/DefaultLifecycleProcessor
Event: 320,470 loading class org/springframework/context/support/DefaultLifecycleProcessor done
Event: 320,487 loading class org/springframework/jmx/export/NotificationListenerBean
Event: 320,487 loading class org/springframework/jmx/export/NotificationListenerBean done
Event: 320,488 loading class org/springframework/jmx/export/NotificationListenerBean
Event: 320,488 loading class org/springframework/jmx/export/NotificationListenerBean done
Event: 320,488 loading class org/springframework/jmx/export/MBeanExporter
Event: 320,488 loading class org/springframework/jmx/export/MBeanExporter done


Dynamic libraries:
00008000-00009000 r-xp 00000000 b3:02 12057      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java
00010000-00011000 rw-p 00000000 b3:02 12057      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java
00337000-00358000 rw-p 00000000 00:00 0          [heap]
5ed70000-5ed73000 ---p 00000000 00:00 0 
5ed73000-5edc0000 rw-p 00000000 00:00 0 
5edc0000-5edc3000 ---p 00000000 00:00 0 
5edc3000-5ee10000 rw-p 00000000 00:00 0 
5ee10000-5ee13000 ---p 00000000 00:00 0 
5ee13000-5ee60000 rw-p 00000000 00:00 0 
5ee60000-5ee63000 ---p 00000000 00:00 0 
5ee63000-5eeb0000 rw-p 00000000 00:00 0 
5eeb0000-5eeb3000 ---p 00000000 00:00 0 
5eeb3000-5efc0000 rw-p 00000000 00:00 0 
5efc0000-5f000000 ---p 00000000 00:00 0 
5f000000-5f0ff000 rw-p 00000000 00:00 0 
5f0ff000-5f100000 ---p 00000000 00:00 0 
5f100000-5f151000 rw-p 00000000 00:00 0 
5f151000-5f200000 ---p 00000000 00:00 0 
5f200000-5f2fb000 rw-p 00000000 00:00 0 
5f2fb000-5f300000 ---p 00000000 00:00 0 
5f300000-5f400000 rw-p 00000000 00:00 0 
5f400000-5f4fd000 rw-p 00000000 00:00 0 
5f4fd000-5f500000 ---p 00000000 00:00 0 
5f500000-5f600000 rw-p 00000000 00:00 0 
5f600000-5f700000 rw-p 00000000 00:00 0 
5f700000-5f7e1000 rw-p 00000000 00:00 0 
5f7e1000-5f800000 ---p 00000000 00:00 0 
5f800000-5f900000 rw-p 00000000 00:00 0 
5f900000-5f9ce000 rw-p 00000000 00:00 0 
5f9ce000-5fa00000 ---p 00000000 00:00 0 
5fa00000-5fb00000 rw-p 00000000 00:00 0 
5fb00000-5fb03000 ---p 00000000 00:00 0 
5fb03000-5fb50000 rw-p 00000000 00:00 0 
5fb50000-5fbcd000 r-xp 00000000 b3:02 12104      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libawt.so
5fbcd000-5fbd5000 ---p 0007d000 b3:02 12104      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libawt.so
5fbd5000-5fbdc000 rw-p 0007d000 b3:02 12104      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libawt.so
5fbdc000-5fd00000 rw-p 00000000 00:00 0 
5fd00000-5fdb3000 rw-p 00000000 00:00 0 
5fdb3000-5fe00000 ---p 00000000 00:00 0 
5fe2e000-5fe40000 r--s 00345000 b3:02 12098      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/resources.jar
5fe40000-5ff40000 rw-p 00000000 00:00 0 
5ff40000-5ff43000 ---p 00000000 00:00 0 
5ff43000-5ff90000 rw-p 00000000 00:00 0 
5ff90000-5ff93000 ---p 00000000 00:00 0 
5ff93000-5ffe0000 rw-p 00000000 00:00 0 
5ffe0000-5ffe3000 ---p 00000000 00:00 0 
5ffe3000-60030000 rw-p 00000000 00:00 0 
60030000-60033000 ---p 00000000 00:00 0 
60033000-60080000 rw-p 00000000 00:00 0 
60080000-60083000 ---p 00000000 00:00 0 
60083000-600d0000 rw-p 00000000 00:00 0 
600d0000-600d3000 ---p 00000000 00:00 0 
600d3000-60120000 rw-p 00000000 00:00 0 
60120000-60123000 ---p 00000000 00:00 0 
60123000-60170000 rw-p 00000000 00:00 0 
60170000-60173000 ---p 00000000 00:00 0 
60173000-601c0000 rw-p 00000000 00:00 0 
601c0000-601c3000 ---p 00000000 00:00 0 
601c3000-60210000 rw-p 00000000 00:00 0 
60210000-60213000 ---p 00000000 00:00 0 
60213000-60260000 rw-p 00000000 00:00 0 
60260000-60263000 ---p 00000000 00:00 0 
60263000-602b0000 rw-p 00000000 00:00 0 
602b0000-602b3000 ---p 00000000 00:00 0 
602b3000-60400000 rw-p 00000000 00:00 0 
60400000-60500000 rw-p 00000000 00:00 0 
60500000-60600000 rw-p 00000000 00:00 0 
60600000-606f9000 rw-p 00000000 00:00 0 
606f9000-60700000 ---p 00000000 00:00 0 
60700000-60800000 rw-p 00000000 00:00 0 
60800000-60900000 rw-p 00000000 00:00 0 
60900000-609ff000 rw-p 00000000 00:00 0 
609ff000-60a00000 ---p 00000000 00:00 0 
60a00000-60b00000 rw-p 00000000 00:00 0 
60b00000-60c00000 rw-p 00000000 00:00 0 
60c00000-60cef000 rw-p 00000000 00:00 0 
60cef000-60d00000 ---p 00000000 00:00 0 
60d00000-60e00000 rw-p 00000000 00:00 0 
60e00000-60efc000 rw-p 00000000 00:00 0 
60efc000-60f00000 ---p 00000000 00:00 0 
60f00000-61000000 rw-p 00000000 00:00 0 
61000000-61100000 rw-p 00000000 00:00 0 
61100000-61200000 rw-p 00000000 00:00 0 
61200000-612ff000 rw-p 00000000 00:00 0 
612ff000-61300000 ---p 00000000 00:00 0 
61303000-61306000 ---p 00000000 00:00 0 
61306000-61353000 rw-p 00000000 00:00 0 
61353000-6135a000 r-xp 00000000 b3:02 8372       /lib/arm-linux-gnueabihf/libcrypt-2.24.so
6135a000-61369000 ---p 00007000 b3:02 8372       /lib/arm-linux-gnueabihf/libcrypt-2.24.so
61369000-6136a000 r--p 00006000 b3:02 8372       /lib/arm-linux-gnueabihf/libcrypt-2.24.so
6136a000-6136b000 rw-p 00007000 b3:02 8372       /lib/arm-linux-gnueabihf/libcrypt-2.24.so
6136b000-61392000 rw-p 00000000 00:00 0 
61392000-6139e000 r-xp 00000000 b3:02 4218       /usr/lib/libwiringPi.so.2.50
6139e000-613ae000 ---p 0000c000 b3:02 4218       /usr/lib/libwiringPi.so.2.50
613ae000-613af000 rw-p 0000c000 b3:02 4218       /usr/lib/libwiringPi.so.2.50
613af000-613b0000 rw-p 00000000 00:00 0 
613b0000-613b3000 ---p 00000000 00:00 0 
613b3000-61500000 rw-p 00000000 00:00 0 
61500000-615f8000 rw-p 00000000 00:00 0 
615f8000-61600000 ---p 00000000 00:00 0 
61600000-61700000 rw-p 00000000 00:00 0 
61700000-61800000 rw-p 00000000 00:00 0 
61800000-61900000 rw-p 00000000 00:00 0 
61900000-619ff000 rw-p 00000000 00:00 0 
619ff000-61a00000 ---p 00000000 00:00 0 
61a00000-61b00000 rw-p 00000000 00:00 0 
61b00000-61bfa000 rw-p 00000000 00:00 0 
61bfa000-61c00000 ---p 00000000 00:00 0 
61c00000-61d00000 rw-p 00000000 00:00 0 
61d00000-61e00000 rw-p 00000000 00:00 0 
61e00000-61f00000 rw-p 00000000 00:00 0 
61f00000-62000000 rw-p 00000000 00:00 0 
62000000-62100000 rw-p 00000000 00:00 0 
62100000-62200000 rw-p 00000000 00:00 0 
62200000-622ff000 rw-p 00000000 00:00 0 
622ff000-62300000 ---p 00000000 00:00 0 
62300000-62400000 rw-p 00000000 00:00 0 
62400000-62500000 rw-p 00000000 00:00 0 
62500000-625b0000 rw-p 00000000 00:00 0 
625b0000-62600000 ---p 00000000 00:00 0 
62600000-62700000 rw-p 00000000 00:00 0 
62700000-627fa000 rw-p 00000000 00:00 0 
627fa000-62800000 ---p 00000000 00:00 0 
62800000-62900000 rw-p 00000000 00:00 0 
62900000-62a00000 rw-p 00000000 00:00 0 
62a00000-62b00000 rw-p 00000000 00:00 0 
62b00000-62bff000 rw-p 00000000 00:00 0 
62bff000-62c00000 ---p 00000000 00:00 0 
62c00000-62d00000 rw-p 00000000 00:00 0 
62d00000-62dfc000 rw-p 00000000 00:00 0 
62dfc000-62e00000 ---p 00000000 00:00 0 
62e02000-62e07000 r-xp 00000000 b3:02 12106      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libawt_headless.so
62e07000-62e0e000 ---p 00005000 b3:02 12106      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libawt_headless.so
62e0e000-62e0f000 rw-p 00004000 b3:02 12106      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libawt_headless.so
62e0f000-62e12000 ---p 00000000 00:00 0 
62e12000-62e5f000 rw-p 00000000 00:00 0 
62e5f000-62e62000 ---p 00000000 00:00 0 
62e62000-62eaf000 rw-p 00000000 00:00 0 
62eaf000-62eb2000 ---p 00000000 00:00 0 
62eb2000-64c00000 rw-p 00000000 00:00 0 
64c00000-64d00000 rw-p 00000000 00:00 0 
64d00000-64dff000 rw-p 00000000 00:00 0 
64dff000-64e00000 ---p 00000000 00:00 0 
64e00000-64f00000 rw-p 00000000 00:00 0 
64f00000-65000000 rw-p 00000000 00:00 0 
65000000-650fe000 rw-p 00000000 00:00 0 
650fe000-65100000 ---p 00000000 00:00 0 
65100000-65200000 rw-p 00000000 00:00 0 
65203000-65207000 r-xp 00000000 b3:02 4217       /usr/lib/libwiringPiDev.so.2.50
65207000-65217000 ---p 00004000 b3:02 4217       /usr/lib/libwiringPiDev.so.2.50
65217000-65218000 rw-p 00004000 b3:02 4217       /usr/lib/libwiringPiDev.so.2.50
65218000-6521a000 rw-p 00000000 00:00 0 
6521b000-6521f000 r-xp 00000000 b3:02 2483       /tmp/libws281xj1615881025588421543.so
6521f000-6522e000 ---p 00004000 b3:02 2483       /tmp/libws281xj1615881025588421543.so
6522e000-6522f000 rw-p 00003000 b3:02 2483       /tmp/libws281xj1615881025588421543.so
6522f000-65232000 ---p 00000000 00:00 0 
65232000-6527f000 rw-p 00000000 00:00 0 
6527f000-65280000 ---p 00000000 00:00 0 
65280000-65300000 rw-p 00000000 00:00 0 
65300000-65400000 rw-p 00000000 00:00 0 
65403000-6540f000 r-xp 00000000 b3:02 2481       /tmp/libpi4j391408959528731237.so
6540f000-6541e000 ---p 0000c000 b3:02 2481       /tmp/libpi4j391408959528731237.so
6541e000-6541f000 rw-p 0000b000 b3:02 2481       /tmp/libpi4j391408959528731237.so
6541f000-65420000 rw-p 00000000 00:00 0 
65420000-6542f000 r--s 000b5000 b3:02 2477       /tmp/jar_cache2853934703059605608.tmp (deleted)
6542f000-65432000 ---p 00000000 00:00 0 
65432000-6547f000 rw-p 00000000 00:00 0 
6547f000-65483000 ---p 00000000 00:00 0 
65483000-65500000 rw-p 00000000 00:00 0 
65500000-65521000 rw-p 00000000 00:00 0 
65521000-65600000 ---p 00000000 00:00 0 
65607000-6561a000 r-xp 00000000 b3:02 12132      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libnet.so
6561a000-65622000 ---p 00013000 b3:02 12132      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libnet.so
65622000-65623000 rw-p 00013000 b3:02 12132      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libnet.so
65623000-6563f000 r--s 00393000 b3:02 12154      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/cldrdata.jar
6563f000-65665000 r--p 00000000 b3:02 3216       /usr/share/locale/de/LC_MESSAGES/libc.mo
65665000-65800000 r--p 00000000 b3:02 651        /usr/lib/locale/locale-archive
65800000-65821000 rw-p 00000000 00:00 0 
65821000-65900000 ---p 00000000 00:00 0 
65900000-65921000 rw-p 00000000 00:00 0 
65921000-65a00000 ---p 00000000 00:00 0 
65a05000-65a06000 rw-s 3f101000 00:06 1027       /dev/mem
65a06000-65a10000 r--s 0005c000 b3:02 2368       /tmp/jar_cache6940630782002856069.tmp (deleted)
65a10000-65a13000 ---p 00000000 00:00 0 
65a13000-65a60000 rw-p 00000000 00:00 0 
65a60000-65a63000 ---p 00000000 00:00 0 
65a63000-65ab0000 rw-p 00000000 00:00 0 
65ab0000-65ab3000 ---p 00000000 00:00 0 
65ab3000-65b00000 rw-p 00000000 00:00 0 
65b00000-65c00000 rw-p 00000000 00:00 0 
65c00000-65c01000 rw-s 3f200000 00:06 1027       /dev/mem
65c01000-65c0f000 r-xp 00000000 b3:02 12133      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libnio.so
65c0f000-65c16000 ---p 0000e000 b3:02 12133      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libnio.so
65c16000-65c17000 rw-p 0000d000 b3:02 12133      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libnio.so
65c17000-65c1a000 ---p 00000000 00:00 0 
65c1a000-65c67000 rw-p 00000000 00:00 0 
65c67000-65c68000 ---p 00000000 00:00 0 
65c68000-65d37000 rw-p 00000000 00:00 0 
65d37000-65f0f000 r--s 03d20000 b3:02 12099      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/rt.jar
65f0f000-663b0000 rw-p 00000000 00:00 0 
663b0000-663b6000 ---p 00000000 00:00 0 
663b6000-663ce000 rw-p 00000000 00:00 0 
663ce000-66400000 ---p 00000000 00:00 0 
66400000-67b40000 rw-p 00000000 00:00 0 
67b40000-6ad40000 ---p 00000000 00:00 0 
6ad40000-6db9b000 rw-p 00000000 00:00 0 
6db9b000-74000000 ---p 00000000 00:00 0 
74000000-74001000 rw-s 3f20c000 00:06 1027       /dev/mem
74001000-74009000 r-xp 00000000 b3:02 12130      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libmanagement.so
74009000-74010000 ---p 00008000 b3:02 12130      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libmanagement.so
74010000-74011000 rw-p 00007000 b3:02 12130      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libmanagement.so
74011000-7401d000 rw-p 00000000 00:00 0 
7401d000-74035000 ---p 00000000 00:00 0 
74035000-7404d000 rw-p 00000000 00:00 0 
7404d000-7407f000 ---p 00000000 00:00 0 
7407f000-74092000 rw-p 00000000 00:00 0 
74092000-74100000 ---p 00000000 00:00 0 
74100000-74570000 rwxp 00000000 00:00 0 
74570000-76100000 ---p 00000000 00:00 0 
76100000-76200000 rw-p 00000000 00:00 0 
76201000-76207000 r--s 002f8000 b3:02 12069      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/charsets.jar
76207000-76211000 r--s 00116000 b3:02 12157      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/localedata.jar
76211000-76228000 r-xp 00000000 b3:02 12143      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libzip.so
76228000-7622f000 ---p 00017000 b3:02 12143      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libzip.so
7622f000-76230000 rw-p 00016000 b3:02 12143      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libzip.so
76230000-76239000 r-xp 00000000 b3:02 8381       /lib/arm-linux-gnueabihf/libnss_files-2.24.so
76239000-76248000 ---p 00009000 b3:02 8381       /lib/arm-linux-gnueabihf/libnss_files-2.24.so
76248000-76249000 r--p 00008000 b3:02 8381       /lib/arm-linux-gnueabihf/libnss_files-2.24.so
76249000-7624a000 rw-p 00009000 b3:02 8381       /lib/arm-linux-gnueabihf/libnss_files-2.24.so
7624a000-76250000 rw-p 00000000 00:00 0 
76250000-76259000 r-xp 00000000 b3:02 8383       /lib/arm-linux-gnueabihf/libnss_nis-2.24.so
76259000-76268000 ---p 00009000 b3:02 8383       /lib/arm-linux-gnueabihf/libnss_nis-2.24.so
76268000-76269000 r--p 00008000 b3:02 8383       /lib/arm-linux-gnueabihf/libnss_nis-2.24.so
76269000-7626a000 rw-p 00009000 b3:02 8383       /lib/arm-linux-gnueabihf/libnss_nis-2.24.so
7626a000-7627b000 r-xp 00000000 b3:02 8378       /lib/arm-linux-gnueabihf/libnsl-2.24.so
7627b000-7628a000 ---p 00011000 b3:02 8378       /lib/arm-linux-gnueabihf/libnsl-2.24.so
7628a000-7628b000 r--p 00010000 b3:02 8378       /lib/arm-linux-gnueabihf/libnsl-2.24.so
7628b000-7628c000 rw-p 00011000 b3:02 8378       /lib/arm-linux-gnueabihf/libnsl-2.24.so
7628c000-7628e000 rw-p 00000000 00:00 0 
7628e000-76294000 r-xp 00000000 b3:02 8379       /lib/arm-linux-gnueabihf/libnss_compat-2.24.so
76294000-762a3000 ---p 00006000 b3:02 8379       /lib/arm-linux-gnueabihf/libnss_compat-2.24.so
762a3000-762a4000 r--p 00005000 b3:02 8379       /lib/arm-linux-gnueabihf/libnss_compat-2.24.so
762a4000-762a5000 rw-p 00006000 b3:02 8379       /lib/arm-linux-gnueabihf/libnss_compat-2.24.so
762a5000-762a6000 rw-s 3ea81000 00:06 1027       /dev/mem
762a6000-762ab000 r--s 00096000 b3:02 12090      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/jsse.jar
762ab000-762b2000 r--s 00000000 b3:02 11738      /usr/lib/arm-linux-gnueabihf/gconv/gconv-modules.cache
762b2000-762ba000 r--s 02cc3000 b3:02 264024     /home/pi/DrinkMixer/Dremix-0.0.1-SNAPSHOT.war
762ba000-762dd000 r-xp 00000000 b3:02 12118      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libjava.so
762dd000-762e5000 ---p 00023000 b3:02 12118      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libjava.so
762e5000-762e6000 rw-p 00023000 b3:02 12118      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libjava.so
762e6000-762ec000 r-xp 00000000 b3:02 8390       /lib/arm-linux-gnueabihf/librt-2.24.so
762ec000-762fb000 ---p 00006000 b3:02 8390       /lib/arm-linux-gnueabihf/librt-2.24.so
762fb000-762fc000 r--p 00005000 b3:02 8390       /lib/arm-linux-gnueabihf/librt-2.24.so
762fc000-762fd000 rw-p 00006000 b3:02 8390       /lib/arm-linux-gnueabihf/librt-2.24.so
762fd000-76301000 ---p 00000000 00:00 0 
76301000-7634e000 rw-p 00000000 00:00 0 
7634e000-763bb000 r-xp 00000000 b3:02 8376       /lib/arm-linux-gnueabihf/libm-2.24.so
763bb000-763cb000 ---p 0006d000 b3:02 8376       /lib/arm-linux-gnueabihf/libm-2.24.so
763cb000-763cc000 r--p 0006d000 b3:02 8376       /lib/arm-linux-gnueabihf/libm-2.24.so
763cc000-763cd000 rw-p 0006e000 b3:02 8376       /lib/arm-linux-gnueabihf/libm-2.24.so
763cd000-76950000 r-xp 00000000 b3:02 12145      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/client/libjvm.so
76950000-76958000 ---p 00583000 b3:02 12145      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/client/libjvm.so
76958000-76984000 rw-p 00583000 b3:02 12145      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/client/libjvm.so
76984000-76da7000 rw-p 00000000 00:00 0 
76da7000-76dc3000 r-xp 00000000 b3:02 2541       /lib/arm-linux-gnueabihf/libgcc_s.so.1
76dc3000-76dd2000 ---p 0001c000 b3:02 2541       /lib/arm-linux-gnueabihf/libgcc_s.so.1
76dd2000-76dd3000 r--p 0001b000 b3:02 2541       /lib/arm-linux-gnueabihf/libgcc_s.so.1
76dd3000-76dd4000 rw-p 0001c000 b3:02 2541       /lib/arm-linux-gnueabihf/libgcc_s.so.1
76dd4000-76efe000 r-xp 00000000 b3:02 8370       /lib/arm-linux-gnueabihf/libc-2.24.so
76efe000-76f0d000 ---p 0012a000 b3:02 8370       /lib/arm-linux-gnueabihf/libc-2.24.so
76f0d000-76f0f000 r--p 00129000 b3:02 8370       /lib/arm-linux-gnueabihf/libc-2.24.so
76f0f000-76f10000 rw-p 0012b000 b3:02 8370       /lib/arm-linux-gnueabihf/libc-2.24.so
76f10000-76f13000 rw-p 00000000 00:00 0 
76f13000-76f15000 r-xp 00000000 b3:02 8373       /lib/arm-linux-gnueabihf/libdl-2.24.so
76f15000-76f24000 ---p 00002000 b3:02 8373       /lib/arm-linux-gnueabihf/libdl-2.24.so
76f24000-76f25000 r--p 00001000 b3:02 8373       /lib/arm-linux-gnueabihf/libdl-2.24.so
76f25000-76f26000 rw-p 00002000 b3:02 8373       /lib/arm-linux-gnueabihf/libdl-2.24.so
76f26000-76f3a000 r-xp 00000000 b3:02 12146      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/jli/libjli.so
76f3a000-76f42000 ---p 00014000 b3:02 12146      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/jli/libjli.so
76f42000-76f43000 rw-p 00014000 b3:02 12146      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/jli/libjli.so
76f43000-76f59000 r-xp 00000000 b3:02 8387       /lib/arm-linux-gnueabihf/libpthread-2.24.so
76f59000-76f68000 ---p 00016000 b3:02 8387       /lib/arm-linux-gnueabihf/libpthread-2.24.so
76f68000-76f69000 r--p 00015000 b3:02 8387       /lib/arm-linux-gnueabihf/libpthread-2.24.so
76f69000-76f6a000 rw-p 00016000 b3:02 8387       /lib/arm-linux-gnueabihf/libpthread-2.24.so
76f6a000-76f6c000 rw-p 00000000 00:00 0 
76f6c000-76f6d000 rw-s 3f00b000 00:06 1027       /dev/mem
76f6d000-76f6e000 rw-s 3f100000 00:06 1027       /dev/mem
76f6e000-76f6f000 rw-s 3f101000 00:06 1027       /dev/mem
76f6f000-76f78000 r-xp 00000000 b3:02 12142      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libverify.so
76f78000-76f80000 ---p 00009000 b3:02 12142      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libverify.so
76f80000-76f81000 rw-p 00009000 b3:02 12142      /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libverify.so
76f81000-76f86000 r-xp 00000000 b3:02 4150       /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f86000-76f95000 ---p 00005000 b3:02 4150       /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f95000-76f96000 r--p 00004000 b3:02 4150       /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f96000-76f97000 rw-p 00005000 b3:02 4150       /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f97000-76fb8000 r-xp 00000000 b3:02 8362       /lib/arm-linux-gnueabihf/ld-2.24.so
76fb8000-76fb9000 rw-s 3f20c000 00:06 1027       /dev/mem
76fb9000-76fba000 rw-s 3f200000 00:06 1027       /dev/mem
76fba000-76fc2000 rw-s 00000000 b3:02 264017     /tmp/hsperfdata_root/1451
76fc2000-76fc3000 r--p 00000000 00:00 0 
76fc3000-76fc7000 rw-p 00000000 00:00 0 
76fc7000-76fc8000 r--p 00020000 b3:02 8362       /lib/arm-linux-gnueabihf/ld-2.24.so
76fc8000-76fc9000 rw-p 00021000 b3:02 8362       /lib/arm-linux-gnueabihf/ld-2.24.so
7ef22000-7ef43000 rw-p 00000000 00:00 0          [stack]
7ef5f000-7ef60000 r-xp 00000000 00:00 0          [sigpage]
7ef60000-7ef61000 r--p 00000000 00:00 0          [vvar]
7ef61000-7ef62000 r-xp 00000000 00:00 0          [vdso]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

VM Arguments:
jvm_args: -Dpi4j.linking=dynamic 
java_command: Dremix-0.0.1-SNAPSHOT.war --spring.jpa.hibernate.ddl-auto=none
java_class_path (initial): Dremix-0.0.1-SNAPSHOT.war
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
USERNAME=root
SHELL=/bin/bash

Signal Handlers:
SIGSEGV: [libjvm.so+0x506638], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGBUS: [libjvm.so+0x506638], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGFPE: [libjvm.so+0x3fd4ec], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGPIPE: [libjvm.so+0x3fd4ec], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGXFSZ: [libjvm.so+0x3fd4ec], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: [libjvm.so+0x3fd4ec], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR2: [libjvm.so+0x3fd650], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: [libjvm.so+0x3fda84], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGINT: [libjvm.so+0x3fda84], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGTERM: [libjvm.so+0x3fda84], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGQUIT: [libjvm.so+0x3fda84], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO


---------------  S Y S T E M  ---------------

OS:PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

uname:Linux 4.19.37-v7+ #1216 SMP Thu May 2 13:32:40 BST 2019 armv7l
libc:glibc 2.24 NPTL 2.24 
rlimit: STACK 8192k, CORE 0k, NPROC 6924, NOFILE 1048576, AS infinity
load average:0,35 0,55 0,34

/proc/meminfo:
MemTotal:         895524 kB
MemFree:          256252 kB
MemAvailable:     496076 kB
Buffers:           25660 kB
Cached:           277484 kB
SwapCached:            0 kB
Active:           441492 kB
Inactive:         147800 kB
Active(anon):     286832 kB
Inactive(anon):    24364 kB
Active(file):     154660 kB
Inactive(file):   123436 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        102396 kB
SwapFree:         102396 kB
Dirty:                12 kB
Writeback:             0 kB
AnonPages:        286340 kB
Mapped:           112476 kB
Shmem:             25012 kB
Slab:              28200 kB
SReclaimable:      13480 kB
SUnreclaim:        14720 kB
KernelStack:        2480 kB
PageTables:         5604 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      550156 kB
Committed_AS:    1680776 kB
VmallocTotal:    1163264 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:              464 kB
CmaTotal:           8192 kB
CmaFree:            6920 kB


CPU:total 4 (ARMv7), vfp

/proc/cpuinfo:
processor	: 0
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 76.80
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 1
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 76.80
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 2
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 76.80
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 3
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 76.80
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

Hardware	: BCM2835
Revision	: a02082
Serial		: 00000000a5562403


Memory: 4k page, physical 895524k(256148k free), swap 102396k(102396k free)

vm_info: Java HotSpot(TM) Client VM (25.65-b01) for linux-arm-vfp-hflt JRE (1.8.0_65-b17), built on Oct  6 2015 16:19:04 by "java_re" with gcc 4.7.2 20120910 (prerelease)

time: Sun Jul  7 18:18:29 2019
elapsed time: 320 seconds (0d 0h 5m 20s)

So, what is wrong? What can i do to fix this?

WS281x on raspberry PI 4 hardware revision.

Hi, I'm trying to use the WS281x library on raspberry pi 4 but get the error below, works fine on rasberry pi 3.

JDK Server VM warning: You have loaded library /tmp/libws281xj10313733273385733761.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'.
Error loading library from classpath, trying from system library path
Loaded library 'ws281xj' from system library path
ws2811_init failed: Hardware revision is not supported
Exception in thread "main" java.lang.RuntimeException: Error initialising the WS281x strip
at com.diozero.ws281xj.WS281x.(WS281x.java:165)
at com.diozero.ws281xj.WS281x.(WS281x.java:132)

A fatal error has been detected by the Java Runtime Environment:

SIGSEGV (0xb) at pc=0x9351e664, pid=1036, tid=1058

JRE version: OpenJDK Runtime Environment (11.0.3+7) (build 11.0.3+7-post-Raspbian-5)
Java VM: OpenJDK Server VM (11.0.3+7-post-Raspbian-5, mixed mode, g1 gc, linux-)
Problematic frame:
C [libws281xj.so+0x2664] ws2811_fini+0xc

No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

An error report file with more information is saved as:
/home/pi/Desktop/hs_err_pid1036.log

If you would like to submit a bug report, please visit:
Unknown
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

LCD set Text

Hi,
I created an I2C LCD like that: new I2CLcd(16, 2)

When I set text
lcd.setText(0, "Hello World);
it always throw this error:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16
        at java.lang.String.substring(String.java:1950)
        at com.diozero.I2CLcd.setText(I2CLcd.java:348)

What am I doing wrong?
Thanks.

I2C bit banging

Hi,

First of all thanks for the great library. I use the pigpio Python library, and i find the I2C bit banging functions very useful. They don't seem to be included in the current release (?) Are there any plans to bring them into diozero?

Thanks
Tiago

Add support for I2C via sysfs provider

DIO-Zero has a potential of becoming a universal library for interacting with GPIO / I2C / PWM of Linux embedded devices via Java.

Extending capabilities of sysfs provider with support for I2C and PWM would make DIO-Zero compatible with exotic and/or new linux boards that otherwise lack Java support. It's not uncommon however to see them expose their GPIO, I2C and PWM interfaces through sysfs so having a universal layer for interacting with them would fill the gap perfectly.
There are already many libraries with great support for rPi but with any less popular device you're often stuck with very little options. Especially when it comes to Java.

It would be great to see support for I2C through sysfs (even if only as Master). I'd love to incorporate DIO-Zero into my project.

on raspberry Pi Zero W performance of read/write 15-30x slower after running application 2nd time.

Hello,

update: seems issue exists on R PI Zero W, but not exists on R Pi 3B and R Pi 3B+

Having test code (see below), which flips OUT pin and then in loop reads IN put until value of OUT pin is read. Pins are inconnected by cable.

I'm testing on Pi Zero W. After boot, i have e.g. 12M flips in 10s. But subsequent run of same ends up in about 400k flips only.

See log:

Init test, inPin=3, outPin=2
20:50:56.816 [main] INFO com.diozero.internal.provider.wiringpi.WiringPiDeviceFactory.setHardwarePwmFrequency - setHardwarePwmFrequency(100) - range=1024, divisor=187
20:50:56.920 [main] DEBUG com.diozero.util.DeviceFactoryHelper.init - Using native device factory class WiringPiDeviceFactory
Warming up test
Starting measurement
There were 11695600 flips in 10001ms
20:51:07.560 [main] DEBUG com.diozero.api.DigitalInputDevice.close - close()
20:51:07.563 [main] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-GPIO-3
20:51:07.566 [main] DEBUG com.diozero.internal.provider.wiringpi.WiringPiDigitalInputDevice.closeDevice - closeDevice()
20:51:07.626 [main] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-GPIO-3)
20:51:07.632 [main] DEBUG com.diozero.api.DigitalOutputDevice.close - close()
20:51:07.644 [main] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-GPIO-2
20:51:07.647 [main] DEBUG com.diozero.internal.provider.wiringpi.WiringPiDigitalOutputDevice.closeDevice - closeDevice()
20:51:07.652 [main] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-GPIO-2)
20:51:07.675 [main] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
20:51:07.684 [main] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
20:51:07.745 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler running
20:51:07.758 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
20:51:07.928 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
20:51:07.935 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler finished
pi@raspberrypi:~/1 $ sudo java  -Dpi4j.linking=dynamic -cp .:diozero-core-0.11.jar:tinylog-1.3.4.jar:diozero-provider-wiringpi-0.11.jar sk.jamicom.smart.garaz.trials.GpioSwitchSpeed_DioZeroTest
Init test, inPin=3, outPin=2
20:51:15.162 [main] INFO com.diozero.internal.provider.wiringpi.WiringPiDeviceFactory.setHardwarePwmFrequency - setHardwarePwmFrequency(100) - range=1024, divisor=187
20:51:15.257 [main] DEBUG com.diozero.util.DeviceFactoryHelper.init - Using native device factory class WiringPiDeviceFactory
Warming up test
Starting measurement
There were 420100 flips in 10002ms
20:51:26.239 [main] DEBUG com.diozero.api.DigitalInputDevice.close - close()
20:51:26.242 [main] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-GPIO-3
20:51:26.247 [main] DEBUG com.diozero.internal.provider.wiringpi.WiringPiDigitalInputDevice.closeDevice - closeDevice()
20:51:26.291 [main] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-GPIO-3)
20:51:26.294 [main] DEBUG com.diozero.api.DigitalOutputDevice.close - close()
20:51:26.297 [main] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-GPIO-2
20:51:26.301 [main] DEBUG com.diozero.internal.provider.wiringpi.WiringPiDigitalOutputDevice.closeDevice - closeDevice()
20:51:26.314 [main] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-GPIO-2)
20:51:26.328 [main] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
20:51:26.343 [main] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
20:51:26.403 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler running
20:51:26.406 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
20:51:26.548 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
20:51:26.551 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler finished

Here is test code:


import com.diozero.api.GpioPullUpDown;
import com.diozero.devices.Button;
import com.diozero.devices.LED;
import com.diozero.util.DeviceFactoryHelper;

import java.io.File;
import java.io.RandomAccessFile;

public class GpioSwitchSpeed_DioZeroTest {

    int inPin = 3;
    int outPin = 2;

    public void testFor10s() throws Exception {
        System.out.println("Init test, inPin="+inPin+", outPin="+outPin);
        try (LED outPin = new LED(this.outPin);
            Button inPin = new Button(this.inPin, GpioPullUpDown.NONE); ) {
            long flips = -10000; // warm up
            boolean expectedValue = false;
            outPin.setOn(expectedValue);

            System.out.println("Warming up test");
            long start = System.currentTimeMillis();

            while (true) {
                long now = System.currentTimeMillis();
                if (flips == 0) {
                    System.out.println("Starting measurement");
                    start = System.currentTimeMillis();
                }
                if (now > start + 10000) {
                    System.out.println("There were "+flips+" flips in "+(now-start)+"ms");
                    break;
                }
                for (int i=0; i<1000; i++) { // loop 1000 times to avoid calling System.currentTimeMillis too often
                    if (inPin.getValue() == expectedValue) {
                        flips++;
                        expectedValue = !expectedValue;
                        outPin.setOn(expectedValue);
                    }
                }
            }
        } finally {
//            DeviceFactoryHelper.getNativeDeviceFactory().close();
        }

    }

    public static void main(String[] args) throws Exception {
        GpioSwitchSpeed_DioZeroTest test = new GpioSwitchSpeed_DioZeroTest();
        test.testFor10s();
    }
}

What could be a reason of this behavior?

Thank you

Serial bit banging?

Hello, would it be possible to add pigpio's serial bit-banging to this library?

PCF8591 freezes RPi

Hi,
I am using the following board: http://www.joy-it.net/en/explorer-700/
The example code of the board: http://anleitung.joy-it.net/wp-content/uploads/2016/12/Explorer700.zip

I have connected a photoresistor to analog A0 and can read the changes with the example code:

#include <wiringPi.h>
#include <pcf8591.h>
#include <stdio.h>

#define Address 0x48
#define BASE 64
#define A0 BASE+0
#define A1 BASE+1
#define A2 BASE+2
#define A3 BASE+3

int main()
{
	if (wiringPiSetup() < 0)return 1;
	pcf8591Setup(BASE,Address);

	while(1)
	{
  		printf("AD: %4dmv \n",analogRead(A0)*3300/255);
		delay(1000);
  	}
}

Since that worked I wanted to do the same in java. I encountered the problem that just calling:
PCF8591 pcf8591 = new PCF8591(); freezes the RPi loosing ssh and http access to the wildfly swarm server. As dependencies I have diozero-core and diozero-provider-pi4j.

Does this problem sound familiar? I might be using the library in a wrong way.

I have tried debugging it, but have limited hardware experience (more a higher level dev).

Problem switching to version 1.0.0

Hi Matt, hi others,

thanks for this great library! I am using it for quite a long time and setup a Java based RFID kid's radio with it.
Unfortunately, switching to 1.0.0 broke my code. I started digging into it, but failed.

I am using the MFRC522 Reader on a Raspberry PI Model B Rev 2, with the RST line connected to GPIO25.
With version 0.14 everything works fine.

With version 1.0.0, I get the following error:

2021-01-09 04:52:29,596 INFO  main net.scinotes.Rfid - Creating RFID reader instance...
Exception in thread "main" java.lang.IllegalArgumentException: Chip not defined for pin PinInfo [keyPrefix=GPIO, header=DEFAULT, deviceNumber=25, physicalPin=22, name=GPIO25, chip=-1, lineOffset=-1, modes=[DIGITAL_INPUT, DIGITAL_OUTPUT]]
	at com.diozero.internal.provider.builtin.DefaultDeviceFactory.createDigitalOutputDevice(DefaultDeviceFactory.java:247)
	at com.diozero.internal.spi.GpioDeviceFactoryInterface.provisionDigitalOutputDevice(GpioDeviceFactoryInterface.java:75)
	at com.diozero.api.DigitalOutputDevice.<init>(DigitalOutputDevice.java:101)
	at com.diozero.api.DigitalOutputDevice.<init>(DigitalOutputDevice.java:85)
	at com.diozero.api.DigitalOutputDevice.<init>(DigitalOutputDevice.java:72)
	at com.diozero.devices.MFRC522.<init>(MFRC522.java:263)
	at net.scinotes.hbox.rfid.RfidReader.<init>(RfidReader.java:37)
	at net.scinotes.Rfid.run(Rfid.java:34)
	at net.scinotes.Main.run(Main.java:89)
	at net.scinotes.Main.main(Main.java:93)

I am actually not sure, I everything should continue running as with version 0.14 or if some defaults have changed, which I would need to adjust.

Any idea?

Best regards,
Christian

DeviceFactoryHelper error

Tinker board have the error: DeviceFactoryHelper.init - Using native factory class SysFsDeviceFactory after adding Java Device I/O JAR to my local Maven repository, the error changes to another: DeviceFactoryHelper.init - Using native factory class JdkDeviceIoDeviceFactory. Also there is LibraryLoader.loadlibrary - Loaded library 'diozero-system-utils' from classpath exception. GPIO_C_Library installed, and directly from the shell GPIO is working excellent.

Can't find repository for artifact

I'm trying to build the project on a Raspberry Pi 3B+ running Fedora 32. In trying to build from source, I have a problem in diozero-imu-visualiser:

[ERROR] Failed to execute goal on project diozero-imu-visualiser: Could not resolve dependencies for project com.diozero:diozero-imu-visualiser:jar:0.14-SNAPSHOT: Failure to find interactivemesh.org:3dsModelImporterJFX:jar:0.7 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

I cannot find a repository for 3dsModelImporterJFX

System-utils-native pollutes stdin

system-utils-native contains C files that log diagnostic info to console using printf() statements. It obviously helps when debugging the application but at the same time it happens to pollute stdin use of which isn't uncommon when it comes to simple IO in embedded applications hence forcing user to implement additional stdin filtering to account for that.

A simple example where this could observed:

Button button = new Button(0, GpioPullUpDown.PULL_UP);
LED led = new LED(2);
button.whenPressed(led::toggle);

Outputs following to console (In this case stop()... clauses seem to originate from com_diozero_util_PollNative.c):

system-utils-native JNI_OnLoad
stop(): closing fd 0
stop(): closing fd 0

If we extend that code example to accept stdin from Scanner like so:

Button button = new Button(0, GpioPullUpDown.PULL_UP);
LED led = new LED(2);
button.whenPressed(led::toggle);

Scanner in = new Scanner(System.in);
in.nextLine();

Then we end up with a case where system-utils-native's pollution causes java.util.NoSuchElementException unless user explicitly filters stdin or handles it some other way.

system-utils-native JNI_OnLoad
stop(): closing fd 0
Exception in thread "main" java.util.NoSuchElementException: No line found
	at java.util.Scanner.nextLine(Scanner.java:1540)
	at com.Test.Main.main(Main.java:20)

Handling logging from system-utils-native using some logging lib would probably be the best solution however perhaps some of those statements are redundant?

BBB, error closing device

Running on BBB, testing GPIO 67 getting the following after main part executes

java -cp lib/tinylog-1.2.jar:lib/diozero-core-0.11-SNAPSHOT.jar:lib/diozero-sampleapps-0.11-SNAPSHOT.jar:lib/diozero-provider-jdkdio11-0.11-SNAPSHOT.jar:lib/dio-1.1-dev-linux-armv6hf.jar com.diozero.sampleapps.LEDTest 67
03:41:10.993 [main] DEBUG com.diozero.util.DeviceFactoryHelper.init - Using native device factory class SysFsDeviceFactory
03:41:11.309 [main] DEBUG com.diozero.internal.provider.sysfs.SysFsDeviceFactory.export - export(67, DIGITAL_OUTPUT)
03:41:11.370 [main] INFO com.diozero.sampleapps.LEDTest.test - On
03:41:11.589 [main] DEBUG com.diozero.util.LibraryLoader.loadLibrary - Loaded library 'diozero-system-utils' from classpath
03:41:12.617 [main] INFO com.diozero.sampleapps.LEDTest.test - Off
03:41:13.626 [main] INFO com.diozero.sampleapps.LEDTest.test - Toggle
03:41:14.634 [main] INFO com.diozero.sampleapps.LEDTest.test - Toggle
03:41:15.641 [main] INFO com.diozero.sampleapps.LEDTest.test - Blink 10 times
03:41:25.657 [main] INFO com.diozero.sampleapps.LEDTest.test - Done
03:41:25.665 [main] DEBUG com.diozero.api.DigitalOutputDevice.close - close()
03:41:25.669 [main] DEBUG com.diozero.internal.provider.AbstractDevice.close - close(), key=Native-GPIO-67
03:41:25.676 [main] DEBUG com.diozero.internal.provider.sysfs.SysFsDigitalOutputDevice.closeDevice - closeDevice()
03:41:25.689 [main] ERROR com.diozero.internal.provider.AbstractDevice.close - Error closing device Native-GPIO-67: com.diozero.util.RuntimeIOException: java.io.IOException: Invalid argument: com.diozero.util.RuntimeIOException: java.io.IOException: Invalid argument
at com.diozero.internal.provider.sysfs.SysFsDeviceFactory.unexport(SysFsDeviceFactory.java:225)
at com.diozero.internal.provider.sysfs.SysFsDigitalOutputDevice.closeDevice(SysFsDigitalOutputDevice.java:111)
at com.diozero.internal.provider.AbstractDevice.close(AbstractDevice.java:66)
at com.diozero.api.DigitalOutputDevice.close(DigitalOutputDevice.java:102)
at com.diozero.sampleapps.LEDTest.test(LEDTest.java:90)
at com.diozero.sampleapps.LEDTest.main(LEDTest.java:68)
Caused by: java.io.IOException: Invalid argument
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:316)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:149)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:233)
at com.diozero.internal.provider.sysfs.SysFsDeviceFactory.unexport(SysFsDeviceFactory.java:224)
at com.diozero.internal.provider.sysfs.SysFsDigitalOutputDevice.closeDevice(SysFsDigitalOutputDevice.java:111)
at com.diozero.internal.provider.AbstractDevice.close(AbstractDevice.java:66)
at com.diozero.api.DigitalOutputDevice.close(DigitalOutputDevice.java:102)
at com.diozero.sampleapps.LEDTest.test(LEDTest.java:90)
at com.diozero.sampleapps.LEDTest.main(LEDTest.java:68)
03:41:25.712 [main] DEBUG com.diozero.internal.DeviceStates.closed - closed(Native-GPIO-67)
03:41:25.812 [main] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
03:41:25.821 [main] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
03:41:25.879 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler running
03:41:25.888 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.provider.AbstractDeviceFactory.close - close()
03:41:25.893 [DIO-Zero Shutdown Handler] DEBUG com.diozero.internal.DeviceStates.closeAll - closeAll()
03:41:25.895 [DIO-Zero Shutdown Handler] DEBUG com.diozero.util.ShutdownHandlerThread.run - Shutdown handler finished

Using GPIO pin 10 (SPI) with WS281x java wrapper

First of really awesome lib you've made here!

I'm trying to use SPI instead of PCM and PWM on a RPI 3 model B(need analog and digital audio). But when I change the pin number to 10 (after SPI is enabled) I get the following error:

`java.lang.NullPointerException
at com.diozero.ws281xj.WS281x.(WS281x.java:104)
at com.diozero.ws281xj.WS281x.(WS281x.java:88)
at com.Example.Ws281xExample.main(Ws281xExample.java:18)

A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x632cca54, pid=937, tid=1663870064

JRE version: Java(TM) SE Runtime Environment (8.0_65-b17) (build 1.8.0_65-b17)
Java VM: Java HotSpot(TM) Client VM (25.65-b01 mixed mode linux-arm )
Problematic frame:
C [libws281xj7159970522658493473.so+0x1a54] ws2811_wait+0xc

JNI_OnLoad()
W281xj_initialise()

bash: line 1: 933 Aborted sudo java -cp classes:lib/'*' Example.Ws281xExample
`

From the stacktrace it seems to go wrong here:
public WS281x(int var1, int var2, int var3, int var4, int var5) { init(); this.numPixels = var5; this.ch0LedBuffer = WS281xNative.initialise(var1, var2, var3, var4, var5); System.out.println("order=" + this.ch0LedBuffer.order()); // ch0LedBuffer is NULL this.ch0LedBuffer.order(ByteOrder.LITTLE_ENDIAN); }

SpiDevice constructor

import com.diozero.api.SPIConstants;
import com.diozero.api.SpiClockMode;
import com.diozero.api.SpiDevice;
import com.diozero.api.PinInfo;
import com.diozero.util.BoardInfo;
import com.diozero.util.DeviceFactoryHelper;
import com.diozero.util.SystemInfo;

In attempts to create SpiDevice with particular CLOCK_FREQUENCY and MODE

  1. foo = new SpiDevice(2,0, DEFAULT_SPI_CLOCK_FREQUENCY, DEFAULT_SPI_CLOCK_MODE, DEFAULT_LSB_FIRST);
  2. foo = new SpiDevice(2, 0, 1000000, SpiClockMode.MODE_0, DEFAULT_LSB_FIRST);
  3. foo = new SpiDevice(2,0);
    works only 3th way
    [ERROR] /src/main/java/App.java:[72,30] error: cannot find symbol
    [ERROR] symbol: variable DEFAULT_SPI_CLOCK_FREQUENCY
    [ERROR] location: class App
    [ERROR] /src/main/java/App.java:[72,59] error: cannot find symbol
    [ERROR] symbol: variable DEFAULT_SPI_CLOCK_MODE
    [ERROR] location: class App
    [ERROR] /src/main/java/App.java:[72,83] error: cannot find symbol

DigitalOutputDevice.setValueUnsafe()

In the class DigitalOutputDevice there's the following method. Is it safe to rely on it?
Can you explain better that Javadoc?

Thanks in advance,
Flavio

/**
 * Unsafe operation that has no synchronisation checks and doesn't factor in active low logic.
 * Included primarily for performance tests
 * @param value the new value
 * @throws RuntimeIOException if an I/O error occurs
 */
public void setValueUnsafe(boolean value) throws RuntimeIOException {
    device.setValue(value);
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.