Browse Source

Merge branch 'feature-remote'

master
Krisjanis Rijnieks 7 years ago
parent
commit
a0a1d1f440
  1. 1
      .gitattributes
  2. 13
      example_remote-client/Makefile
  3. 17
      example_remote-client/Project.xcconfig
  4. 5
      example_remote-client/addons.make
  5. 4
      example_remote-client/bin/data/config.json
  6. 36
      example_remote-client/bin/data/ofxpimapper.xml
  7. 3
      example_remote-client/bin/data/sources/videos/gene-nsynthesis-loop-b.mp4
  8. 142
      example_remote-client/config.make
  9. 1298
      example_remote-client/example_remote-client.xcodeproj/project.pbxproj
  10. 93
      example_remote-client/example_remote-client.xcodeproj/xcshareddata/xcschemes/example_remote-client Debug.xcscheme
  11. 93
      example_remote-client/example_remote-client.xcodeproj/xcshareddata/xcschemes/example_remote-client Release.xcscheme
  12. 22
      example_remote-client/openFrameworks-Info.plist
  13. 46
      example_remote-client/src/TCPClient.cpp
  14. 22
      example_remote-client/src/TCPClient.h
  15. 7
      example_remote-client/src/main.cpp
  16. 109
      example_remote-client/src/ofApp.cpp
  17. 24
      example_remote-client/src/ofApp.h
  18. 13
      example_remote-server/Makefile
  19. 17
      example_remote-server/Project.xcconfig
  20. 6
      example_remote-server/addons.make
  21. 36
      example_remote-server/bin/data/ofxpimapper.xml
  22. 3
      example_remote-server/bin/data/sources/videos/gene-nsynthesis-loop-b.mp4
  23. 142
      example_remote-server/config.make
  24. 2036
      example_remote-server/example_remote-server.xcodeproj/project.pbxproj
  25. 93
      example_remote-server/example_remote-server.xcodeproj/xcshareddata/xcschemes/example_remote-server Debug.xcscheme
  26. 93
      example_remote-server/example_remote-server.xcodeproj/xcshareddata/xcschemes/example_remote-server Release.xcscheme
  27. 22
      example_remote-server/openFrameworks-Info.plist
  28. 93
      example_remote-server/src/TCPServer.cpp
  29. 23
      example_remote-server/src/TCPServer.h
  30. 7
      example_remote-server/src/main.cpp
  31. 84
      example_remote-server/src/ofApp.cpp
  32. 23
      example_remote-server/src/ofApp.h

1
.gitattributes

@ -0,0 +1 @@
*.mp4 filter=lfs diff=lfs merge=lfs -text

13
example_remote-client/Makefile

@ -0,0 +1,13 @@
# Attempt to load a config.make file.
# If none is found, project defaults in config.project.make will be used.
ifneq ($(wildcard config.make),)
include config.make
endif
# make sure the the OF_ROOT location is defined
ifndef OF_ROOT
OF_ROOT=$(realpath ../../..)
endif
# call the project makefile!
include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk

17
example_remote-client/Project.xcconfig

@ -0,0 +1,17 @@
//THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT.
//THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED
OF_PATH = ../../..
//THIS HAS ALL THE HEADER AND LIBS FOR OF CORE
#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig"
//ICONS - NEW IN 0072
ICON_NAME_DEBUG = icon-debug.icns
ICON_NAME_RELEASE = icon.icns
ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/
//IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to:
//ICON_FILE_PATH = bin/data/
OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS)
HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS)

5
example_remote-client/addons.make

@ -0,0 +1,5 @@
ofxGui
ofxJSON
ofxNetwork
ofxPiMapper
ofxXmlSettings

4
example_remote-client/bin/data/config.json

@ -0,0 +1,4 @@
{
"ip":"127.0.0.1",
"port":9999
}

36
example_remote-client/bin/data/ofxpimapper.xml

@ -0,0 +1,36 @@
<surfaces>
<surface type="0">
<vertices>
<vertex>
<x>640.000000000</x>
<y>50.000000000</y>
</vertex>
<vertex>
<x>1230.000000000</x>
<y>750.000000000</y>
</vertex>
<vertex>
<x>50.000000000</x>
<y>750.000000000</y>
</vertex>
</vertices>
<texCoords>
<texCoord>
<x>0.500000000</x>
<y>0.000000000</y>
</texCoord>
<texCoord>
<x>1.000000000</x>
<y>1.000000000</y>
</texCoord>
<texCoord>
<x>0.000000000</x>
<y>1.000000000</y>
</texCoord>
</texCoords>
<source>
<source-type>video</source-type>
<source-name>gene-nsynthesis-loop-b.mp4</source-name>
</source>
</surface>
</surfaces>

3
example_remote-client/bin/data/sources/videos/gene-nsynthesis-loop-b.mp4

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2da7b85225116bee7e1ae5275f58cca7684c2a5d013b97bdd46955c2c418a812
size 2045077

142
example_remote-client/config.make

@ -0,0 +1,142 @@
################################################################################
# CONFIGURE PROJECT MAKEFILE (optional)
# This file is where we make project specific configurations.
################################################################################
################################################################################
# OF ROOT
# The location of your root openFrameworks installation
# (default) OF_ROOT = ../../..
################################################################################
# OF_ROOT = ../../..
################################################################################
# PROJECT ROOT
# The location of the project - a starting place for searching for files
# (default) PROJECT_ROOT = . (this directory)
#
################################################################################
# PROJECT_ROOT = .
################################################################################
# PROJECT SPECIFIC CHECKS
# This is a project defined section to create internal makefile flags to
# conditionally enable or disable the addition of various features within
# this makefile. For instance, if you want to make changes based on whether
# GTK is installed, one might test that here and create a variable to check.
################################################################################
# None
################################################################################
# PROJECT EXTERNAL SOURCE PATHS
# These are fully qualified paths that are not within the PROJECT_ROOT folder.
# Like source folders in the PROJECT_ROOT, these paths are subject to
# exlclusion via the PROJECT_EXLCUSIONS list.
#
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_EXTERNAL_SOURCE_PATHS =
################################################################################
# PROJECT EXCLUSIONS
# These makefiles assume that all folders in your current project directory
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
# to look for source code. The any folders or files that match any of the
# items in the PROJECT_EXCLUSIONS list below will be ignored.
#
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
# string unless teh user adds a wildcard (%) operator to match subdirectories.
# GNU make only allows one wildcard for matching. The second wildcard (%) is
# treated literally.
#
# (default) PROJECT_EXCLUSIONS = (blank)
#
# Will automatically exclude the following:
#
# $(PROJECT_ROOT)/bin%
# $(PROJECT_ROOT)/obj%
# $(PROJECT_ROOT)/%.xcodeproj
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_EXCLUSIONS =
################################################################################
# PROJECT LINKER FLAGS
# These flags will be sent to the linker when compiling the executable.
#
# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# Currently, shared libraries that are needed are copied to the
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
# add a runtime path to search for those shared libraries, since they aren't
# incorporated directly into the final executable application binary.
# TODO: should this be a default setting?
# PROJECT_LDFLAGS=-Wl,-rpath=./libs
################################################################################
# PROJECT DEFINES
# Create a space-delimited list of DEFINES. The list will be converted into
# CFLAGS with the "-D" flag later in the makefile.
#
# (default) PROJECT_DEFINES = (blank)
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_DEFINES =
################################################################################
# PROJECT CFLAGS
# This is a list of fully qualified CFLAGS required when compiling for this
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
# defined in your platform specific core configuration files. These flags are
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
#
# (default) PROJECT_CFLAGS = (blank)
#
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
# your platform specific configuration file will be applied by default and
# further flags here may not be needed.
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_CFLAGS =
################################################################################
# PROJECT OPTIMIZATION CFLAGS
# These are lists of CFLAGS that are target-specific. While any flags could
# be conditionally added, they are usually limited to optimization flags.
# These flags are added BEFORE the PROJECT_CFLAGS.
#
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
#
# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
#
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
#
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
#
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
# file will be applied by default and further optimization flags here may not
# be needed.
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
################################################################################
# PROJECT COMPILERS
# Custom compilers can be set for CC and CXX
# (default) PROJECT_CXX = (blank)
# (default) PROJECT_CC = (blank)
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_CXX =
# PROJECT_CC =

1298
example_remote-client/example_remote-client.xcodeproj/project.pbxproj

File diff suppressed because it is too large

93
example_remote-client/example_remote-client.xcodeproj/xcshareddata/xcschemes/example_remote-client Debug.xcscheme

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Debug"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Debug"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

93
example_remote-client/example_remote-client.xcodeproj/xcshareddata/xcschemes/example_remote-client Release.xcscheme

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-client.app"
BlueprintName = "example_remote-client"
ReferencedContainer = "container:example_remote-client.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Release">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

22
example_remote-client/openFrameworks-Info.plist

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>cc.openFrameworks.ofapp</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string>${ICON}</string>
</dict>
</plist>

46
example_remote-client/src/TCPClient.cpp

@ -0,0 +1,46 @@
#include "TCPClient.h"
shared_ptr<TCPClient> TCPClient::_instance = 0;
shared_ptr<TCPClient> TCPClient::instance(){
if(_instance == 0){
_instance = shared_ptr<TCPClient>(new TCPClient);
}
return _instance;
}
TCPClient::TCPClient(){
}
void TCPClient::setup(string ip, int port){
_tcpClient.setup(ip, port);
}
void TCPClient::update(){
if(_tcpClient.isConnected()){
string rx = _tcpClient.receive();
if(rx.length() > 0){
ofxJSONElement json;
json["event"] = "received";
json["data"] = rx;
ofMessage m(json.getRawString());
ofSendMessage(m);
}
}
}
void TCPClient::draw(){
if(_tcpClient.isConnected()){
ofSetColor(0, 255, 0);
ofPushMatrix();
ofTranslate(10, 10);
ofDrawRectangle(0, 0, 10, 10);
ofPopMatrix();
}
}
void TCPClient::send(string message){
_tcpClient.send(message);
}

22
example_remote-client/src/TCPClient.h

@ -0,0 +1,22 @@
#pragma once
#include "ofMain.h"
#include "ofxNetwork.h"
#include "ofxJSONElement.h"
class TCPClient{
public:
static shared_ptr<TCPClient> instance();
void setup(string ip, int port);
void update();
void draw();
void send(string message);
private:
TCPClient();
static shared_ptr<TCPClient> _instance;
ofxTCPClient _tcpClient;
};

7
example_remote-client/src/main.cpp

@ -0,0 +1,7 @@
#include "ofMain.h"
#include "ofApp.h"
int main(){
ofSetupOpenGL(1280, 800, OF_WINDOW);
ofRunApp(new ofApp());
}

109
example_remote-client/src/ofApp.cpp

@ -0,0 +1,109 @@
#include "ofApp.h"
void ofApp::setup(){
ofBackground(0);
isMapperSetup = false;
// Set IP address of your RasPi in data/config.json
ofxJSONElement json;
json.open("config.json");
TCPClient::instance()->setup(json["ip"].asString(), json["port"].asInt());
}
void ofApp::update(){
TCPClient::instance()->update();
if(isMapperSetup){
mapper.update();
}
}
void ofApp::draw(){
TCPClient::instance()->draw();
if(isMapperSetup){
mapper.draw();
}
}
// This is where we get configuration from the server part of this.
void ofApp::gotMessage(ofMessage m){
ofxJSONElement json;
bool ok = json.parse(m.message);
if(ok){
if(json["event"] == "received"){
std::string buffer = json["data"].asString();
ofxXmlSettings xml;
xml.loadFromBuffer(buffer);
xml.save("ofxpimapper.xml");
mapper.setup();
isMapperSetup = true;
}
}
}
void ofApp::keyPressed(int key){
if(isMapperSetup){
mapper.keyPressed(key);
ofxJSONElement json;
json["event"] = "keyPressed";
json["key"] = key;
TCPClient::instance()->send(json.getRawString());
}
}
void ofApp::keyReleased(int key){
if(isMapperSetup){
mapper.keyReleased(key);
ofxJSONElement json;
json["event"] = "keyReleased";
json["key"] = key;
TCPClient::instance()->send(json.getRawString());
}
}
void ofApp::mousePressed(int x, int y, int button){
if(isMapperSetup){
mapper.mousePressed(x, y, button);
ofxJSONElement json;
json["event"] = "mousePressed";
json["x"] = x;
json["y"] = y;
json["button"] = button;
TCPClient::instance()->send(json.getRawString());
}
}
void ofApp::mouseReleased(int x, int y, int button){
if(isMapperSetup){
mapper.mouseReleased(x, y, button);
ofxJSONElement json;
json["event"] = "mouseReleased";
json["x"] = x;
json["y"] = y;
json["button"] = button;
TCPClient::instance()->send(json.getRawString());
}
}
void ofApp::mouseDragged(int x, int y, int button){
if(isMapperSetup){
mapper.mouseDragged(x, y, button);
ofxJSONElement json;
json["event"] = "mouseDragged";
json["x"] = x;
json["y"] = y;
json["button"] = button;
TCPClient::instance()->send(json.getRawString());
}
}

24
example_remote-client/src/ofApp.h

@ -0,0 +1,24 @@
#pragma once
#include "ofMain.h"
#include "TCPClient.h"
#include "ofxPiMapper.h"
#include "ofxJSONElement.h"
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void gotMessage(ofMessage m);
void keyPressed(int key);
void keyReleased(int key);
void mousePressed(int x, int y, int button);
void mouseReleased(int x, int y, int button);
void mouseDragged(int x, int y, int button);
ofxPiMapper mapper;
bool isMapperSetup;
};

13
example_remote-server/Makefile

@ -0,0 +1,13 @@
# Attempt to load a config.make file.
# If none is found, project defaults in config.project.make will be used.
ifneq ($(wildcard config.make),)
include config.make
endif
# make sure the the OF_ROOT location is defined
ifndef OF_ROOT
OF_ROOT=$(realpath ../../..)
endif
# call the project makefile!
include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk

17
example_remote-server/Project.xcconfig

@ -0,0 +1,17 @@
//THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT.
//THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED
OF_PATH = ../../..
//THIS HAS ALL THE HEADER AND LIBS FOR OF CORE
#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig"
//ICONS - NEW IN 0072
ICON_NAME_DEBUG = icon-debug.icns
ICON_NAME_RELEASE = icon.icns
ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/
//IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to:
//ICON_FILE_PATH = bin/data/
OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS)
HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS)

6
example_remote-server/addons.make

@ -0,0 +1,6 @@
ofxGui
ofxJSON
ofxNetwork
ofxOpenCv
ofxPiMapper
ofxXmlSettings

36
example_remote-server/bin/data/ofxpimapper.xml

@ -0,0 +1,36 @@
<surfaces>
<surface type="0">
<vertices>
<vertex>
<x>640.000000000</x>
<y>50.000000000</y>
</vertex>
<vertex>
<x>1230.000000000</x>
<y>750.000000000</y>
</vertex>
<vertex>
<x>50.000000000</x>
<y>750.000000000</y>
</vertex>
</vertices>
<texCoords>
<texCoord>
<x>0.500000000</x>
<y>0.000000000</y>
</texCoord>
<texCoord>
<x>1.000000000</x>
<y>1.000000000</y>
</texCoord>
<texCoord>
<x>0.000000000</x>
<y>1.000000000</y>
</texCoord>
</texCoords>
<source>
<source-type>video</source-type>
<source-name>gene-nsynthesis-loop-b.mp4</source-name>
</source>
</surface>
</surfaces>

3
example_remote-server/bin/data/sources/videos/gene-nsynthesis-loop-b.mp4

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2da7b85225116bee7e1ae5275f58cca7684c2a5d013b97bdd46955c2c418a812
size 2045077

142
example_remote-server/config.make

@ -0,0 +1,142 @@
################################################################################
# CONFIGURE PROJECT MAKEFILE (optional)
# This file is where we make project specific configurations.
################################################################################
################################################################################
# OF ROOT
# The location of your root openFrameworks installation
# (default) OF_ROOT = ../../..
################################################################################
# OF_ROOT = ../../..
################################################################################
# PROJECT ROOT
# The location of the project - a starting place for searching for files
# (default) PROJECT_ROOT = . (this directory)
#
################################################################################
# PROJECT_ROOT = .
################################################################################
# PROJECT SPECIFIC CHECKS
# This is a project defined section to create internal makefile flags to
# conditionally enable or disable the addition of various features within
# this makefile. For instance, if you want to make changes based on whether
# GTK is installed, one might test that here and create a variable to check.
################################################################################
# None
################################################################################
# PROJECT EXTERNAL SOURCE PATHS
# These are fully qualified paths that are not within the PROJECT_ROOT folder.
# Like source folders in the PROJECT_ROOT, these paths are subject to
# exlclusion via the PROJECT_EXLCUSIONS list.
#
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_EXTERNAL_SOURCE_PATHS =
################################################################################
# PROJECT EXCLUSIONS
# These makefiles assume that all folders in your current project directory
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
# to look for source code. The any folders or files that match any of the
# items in the PROJECT_EXCLUSIONS list below will be ignored.
#
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
# string unless teh user adds a wildcard (%) operator to match subdirectories.
# GNU make only allows one wildcard for matching. The second wildcard (%) is
# treated literally.
#
# (default) PROJECT_EXCLUSIONS = (blank)
#
# Will automatically exclude the following:
#
# $(PROJECT_ROOT)/bin%
# $(PROJECT_ROOT)/obj%
# $(PROJECT_ROOT)/%.xcodeproj
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_EXCLUSIONS =
################################################################################
# PROJECT LINKER FLAGS
# These flags will be sent to the linker when compiling the executable.
#
# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# Currently, shared libraries that are needed are copied to the
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
# add a runtime path to search for those shared libraries, since they aren't
# incorporated directly into the final executable application binary.
# TODO: should this be a default setting?
# PROJECT_LDFLAGS=-Wl,-rpath=./libs
################################################################################
# PROJECT DEFINES
# Create a space-delimited list of DEFINES. The list will be converted into
# CFLAGS with the "-D" flag later in the makefile.
#
# (default) PROJECT_DEFINES = (blank)
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_DEFINES =
################################################################################
# PROJECT CFLAGS
# This is a list of fully qualified CFLAGS required when compiling for this
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
# defined in your platform specific core configuration files. These flags are
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
#
# (default) PROJECT_CFLAGS = (blank)
#
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
# your platform specific configuration file will be applied by default and
# further flags here may not be needed.
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_CFLAGS =
################################################################################
# PROJECT OPTIMIZATION CFLAGS
# These are lists of CFLAGS that are target-specific. While any flags could
# be conditionally added, they are usually limited to optimization flags.
# These flags are added BEFORE the PROJECT_CFLAGS.
#
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
#
# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
#
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
#
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
#
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
# file will be applied by default and further optimization flags here may not
# be needed.
#
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
################################################################################
# PROJECT COMPILERS
# Custom compilers can be set for CC and CXX
# (default) PROJECT_CXX = (blank)
# (default) PROJECT_CC = (blank)
# Note: Leave a leading space when adding list items with the += operator
################################################################################
# PROJECT_CXX =
# PROJECT_CC =

2036
example_remote-server/example_remote-server.xcodeproj/project.pbxproj

File diff suppressed because it is too large

93
example_remote-server/example_remote-server.xcodeproj/xcshareddata/xcschemes/example_remote-server Debug.xcscheme

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Debug"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Debug"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

93
example_remote-server/example_remote-server.xcodeproj/xcshareddata/xcschemes/example_remote-server Release.xcscheme

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2"
BuildableName = "example_remote-server.app"
BlueprintName = "example_remote-server"
ReferencedContainer = "container:example_remote-server.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Release">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

22
example_remote-server/openFrameworks-Info.plist

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>cc.openFrameworks.ofapp</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string>${ICON}</string>
</dict>
</plist>

93
example_remote-server/src/TCPServer.cpp

@ -0,0 +1,93 @@
#include "TCPServer.h"
shared_ptr<TCPServer> TCPServer::_instance = 0;
shared_ptr<TCPServer> TCPServer::instance(){
if(_instance == 0){
_instance = shared_ptr<TCPServer>(new TCPServer);
}
return _instance;
}
TCPServer::TCPServer(){
std::cout << "TCPServer initialized" << std::endl;
}
void TCPServer::setup(int port){
_tcpServer.setup(port);
}
void TCPServer::update(){
int numClients = _tcpServer.getLastID();
for(auto i = 0; i < numClients; ++i){
if(_tcpServer.isClientConnected(i)){
// Notify application when new client connects
if(!_tcpConnections[i]){
ofxJSONElement json;
json["ip"] = _tcpServer.getClientIP(i);
json["port"] = _tcpServer.getClientPort(i);
json["id"] = i;
json["event"] = "connected";
ofMessage message(json.getRawString());
ofSendMessage(message);
_tcpConnections[i] = true;
}
// Receive messages
string rx = _tcpServer.receive(i);
if(rx.length() > 0){
ofxJSONElement json;
bool ok = json.parse(rx);
if(!ok){
json["ip"] = _tcpServer.getClientIP(i);
json["port"] = _tcpServer.getClientPort(i);
json["id"] = i;
json["event"] = "received";
json["data"] = rx;
}
ofMessage message(json.getRawString());
ofSendMessage(message);
}
}else{
// Notify application when client disconnects
if(_tcpConnections[i]){
ofxJSONElement json;
json["ip"] = _tcpServer.getClientIP(i);
json["port"] = _tcpServer.getClientPort(i);
json["id"] = i;
json["event"] = "disconnected";
ofMessage message(json.getRawString());
ofSendMessage(message);
_tcpConnections[i] = false;
}
}
}
}
void TCPServer::draw(){
int numClients = _tcpServer.getLastID();
int clientsConnected = 0;
for(auto i = 0; i < numClients; ++i){
if(_tcpServer.isClientConnected(i)){
ofSetColor(0, 255, 0);
ofPushMatrix();
ofTranslate(10, 10);
ofDrawRectangle(clientsConnected * 20, 0, 10, 10);
ofPopMatrix();
clientsConnected++;
}
}
}
void TCPServer::send(int clientID, std::string message){
_tcpServer.send(clientID, message);
}

23
example_remote-server/src/TCPServer.h

@ -0,0 +1,23 @@
#pragma once
#include "ofMain.h"
#include "ofxNetwork.h"
#include "ofxJSONElement.h"
class TCPServer {
public:
static shared_ptr<TCPServer> instance();
void setup(int port);
void update();
void draw();
void send(int clientID, std::string message);
private:
TCPServer();
static shared_ptr<TCPServer> _instance;
ofxTCPServer _tcpServer;
std::map<int, bool> _tcpConnections;
};

7
example_remote-server/src/main.cpp

@ -0,0 +1,7 @@
#include "ofMain.h"
#include "ofApp.h"
int main(){
ofSetupOpenGL(1280, 800, OF_WINDOW);
ofRunApp(new ofApp());
}

84
example_remote-server/src/ofApp.cpp

@ -0,0 +1,84 @@
#include "ofApp.h"
void ofApp::setup(){
ofBackground(0);
mapper.setup();
TCPServer::instance()->setup(9999);
#ifdef TARGET_RASPBERRY_PI
ofSetFullscreen(true);
#endif
}
void ofApp::update(){
mapper.update();
TCPServer::instance()->update();
}
void ofApp::draw(){
mapper.draw();
TCPServer::instance()->draw();
}
// Here is where we process messages received from TCPServer instance
void ofApp::gotMessage(ofMessage m){
std::cout << m.message << std::endl;
ofxJSONElement json;
bool ok = json.parse(m.message);
if(ok){
if(json["event"].asString() == "connected"){
// Save Mapper composition and get config as string
std::cout << "Sending mapper config" << std::endl;
mapper.saveProject();
ofFile file;
file.open(ofToDataPath("ofxpimapper.xml"), ofFile::ReadOnly, false);
ofBuffer buff = file.readToBuffer();
string text = buff.getText();
TCPServer::instance()->send(json["id"].asInt(), text);
}
if(json["event"].asString() == "keyPressed"){
mapper.keyPressed(json["key"].asInt());
}
if(json["event"].asString() == "keyReleased"){
mapper.keyReleased(json["key"].asInt());
}
if(json["event"].asString() == "mousePressed"){
mapper.mousePressed(json["x"].asInt(), json["y"].asInt(), json["button"].asInt());
}
if(json["event"].asString() == "mouseReleased"){
mapper.mouseReleased(json["x"].asInt(), json["y"].asInt(), json["button"].asInt());
}
if(json["event"].asString() == "mouseDragged"){
mapper.mouseDragged(json["x"].asInt(), json["y"].asInt(), json["button"].asInt());
}
}
}
void ofApp::keyPressed(int key){
mapper.keyPressed(key);
}
void ofApp::keyReleased(int key){
mapper.keyReleased(key);
}
void ofApp::mousePressed(int x, int y, int button){
mapper.mousePressed(x, y, button);
}
void ofApp::mouseReleased(int x, int y, int button){
mapper.mouseReleased(x, y, button);
}
void ofApp::mouseDragged(int x, int y, int button){
mapper.mouseDragged(x, y, button);
}

23
example_remote-server/src/ofApp.h

@ -0,0 +1,23 @@
#pragma once
#include "ofMain.h"
#include "TCPServer.h"
#include "ofxPiMapper.h"
#include "ofxJSONElement.h"
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void gotMessage(ofMessage m);
void keyPressed(int key);
void keyReleased(int key);
void mousePressed(int x, int y, int button);
void mouseReleased(int x, int y, int button);
void mouseDragged(int x, int y, int button);
ofxPiMapper mapper;
};
Loading…
Cancel
Save