Recently StanfordRoboticsClub shared on Github a collection of methods using a DualShock 4 PS4 Controller with UDPComms, which is a Python library to enable communication between different processes over a network using UDP (User Datagram Protocol) for developers. 
Download: JoystickUDP-master.zip / GIT
According to the README.md it currently works in Python, but should be relatively simple to extend to C to run on embedded devices like Arduino.
Rover
The library also comes with the rover command that can be used to interact with the messages manually.
There are more commands used for starting and stopping services described in THIS repo.
Known issues:
Macs have issues sending large messages. They are fine receiving them. I think it is related to THIS issue. I wonder does it work on Linux by chance (as the packets happen to be in order) but so far we didn't have issues.
Download: JoystickUDP-master.zip / GIT
According to the README.md it currently works in Python, but should be relatively simple to extend to C to run on embedded devices like Arduino.
Rover
The library also comes with the rover command that can be used to interact with the messages manually.
Command | Description |
rover peek port | print messages sent on port port |
rover poke port rate | send messages to port once every rate milliseconds. Type message in json format and press return |
Known issues:
Macs have issues sending large messages. They are fine receiving them. I think it is related to THIS issue. I wonder does it work on Linux by chance (as the packets happen to be in order) but so far we didn't have issues.