Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ SAM.pro.user
*.user

Makefile

build/

builddir/
17 changes: 17 additions & 0 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"configurations": [
{
"name": "RPI3",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/opt/sam-sdk/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-none-linux-gnueabihf-g++",
"cStandard": "c17",
"cppStandard": "c++20",
"intelliSenseMode": "linux-gcc-arm",
"compileCommands": "${workspaceFolder}/builddir/compile_commands.json"
}
],
"version": 4
}
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"recommendations": [
"asabil.meson",
"ms-vscode.cpptools",
"webfreak.debug"
]
}
24 changes: 24 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "remote gdb",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/builddir/sam",
"cwd": "${workspaceFolder}",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"miDebuggerArgs": "",
"miDebuggerServerAddress": "10.0.0.1:4444",
"logging": {
"engineLogging": true
},
"externalConsole": true,
"preLaunchTask": "Launch remote gdbserver"
}
]
}
65 changes: 65 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"files.associations": {
"exception": "cpp",
"stdexcept": "cpp",
"*.tcc": "cpp",
"unordered_map": "cpp",
"numeric": "cpp",
"ostream": "cpp",
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"cctype": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"codecvt": "cpp",
"compare": "cpp",
"concepts": "cpp",
"condition_variable": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"vector": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"ranges": "cpp",
"sstream": "cpp",
"stop_token": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp",
"complex": "cpp",
"cstring": "cpp",
"map": "cpp",
"fstream": "cpp"
},
"mesonbuild.configureOnOpen": true
}
92 changes: 92 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Clear build dir",
"type": "shell",
"command": "rm -r builddir",
"group": "build",
"problemMatcher": [],
"options": {
"cwd": "${workspaceFolder}"
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
}
},
{
"label": "Setup meson",
"type": "shell",
"command": "meson . builddir --cross-file meson/cross_file.ini",
"group": "build",
"problemMatcher": [],
"options": {
"cwd": "${workspaceFolder}"
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
},
"dependsOn": "Clear build dir"
},
{
"label": "Build",
"type": "shell",
"command": "ninja",
"group": "build",
"problemMatcher": [],
"options": {
"cwd": "${workspaceFolder}/builddir"
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
}
},
{
"label": "Deploy",
"type": "shell",
"command": "scp sam root@10.0.0.1:/opt/sam",
"group": "build",
"problemMatcher": [],
"options": {
"cwd": "${workspaceFolder}/builddir"
},
"dependsOn": "Build"
},
{
"label": "Kill remote gdbserver",
"type": "shell",
"command": "ssh root@10.0.0.1 \"killall -q gdbserver; exit 0;\"",
"group": "test"
},
{
"label": "Launch remote gdbserver",
"type": "shell",
"command": "gnome-terminal -- ssh -t root@10.0.0.1 gdbserver localhost:4444 /opt/sam/sam",
"group": "test",
"dependsOn": "Kill remote gdbserver",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "dedicated",
"showReuseMessage": true,
"clear": true
}
}
]
}
17 changes: 0 additions & 17 deletions CMakeLists.txt

This file was deleted.

121 changes: 121 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
project(
'sam',
['c','cpp'],
version : '1.0.0',
default_options : ['cpp_std=c++17']
)

sam_public_headers = include_directories(['src'])

sam_src = [
'src/main.cpp',
'src/components/external/myoband/myoLinux/gattclient.cpp',
'src/components/external/myoband/myoLinux/myoclient.cpp',
'src/components/external/myoband/myoLinux/serial.cpp',
'src/components/external/myoband/myoband.cpp',
'src/components/external/ngimu/Osc99/OscAddress.c',
'src/components/external/ngimu/Osc99/OscBundle.cpp',
'src/components/external/ngimu/Osc99/OscCommon.c',
'src/components/external/ngimu/Osc99/OscError.c',
'src/components/external/ngimu/Osc99/OscMessage.cpp',
'src/components/external/ngimu/Osc99/OscPacket.cpp',
'src/components/external/ngimu/Osc99/OscSlip.cpp',
'src/components/external/ngimu/ngimu.cpp',
'src/components/external/optitrack/optitrack_listener.cpp',
'src/components/external/ximu/ximu.cpp',
'src/components/internal/actuators/epos/epos.cpp',
'src/components/internal/actuators/roboclaw/answer.cpp',
'src/components/internal/actuators/roboclaw/factory.cpp',
'src/components/internal/actuators/roboclaw/message.cpp',
'src/components/internal/actuators/roboclaw/roboclaw.cpp',
'src/components/internal/actuators/actuator.cpp',
'src/components/internal/actuators/custom_elbow.cpp',
'src/components/internal/actuators/elbow_cybathlon.cpp',
'src/components/internal/actuators/osmer_elbow.cpp',
'src/components/internal/actuators/pronosupination.cpp',
'src/components/internal/actuators/shoulder_rotator.cpp',
'src/components/internal/actuators/wrist_flexor.cpp',
'src/components/internal/actuators/wrist_rotator.cpp',
'src/components/internal/actuators/wrist_cybathlon.cpp',
'src/components/internal/adc/adafruit_ads1115.cpp',
'src/components/internal/dac/mcp4728.cpp',
'src/components/internal/gpio/gpio.cpp',
'src/components/internal/hand/quantum_hand.cpp',
'src/components/internal/hand/touch_bionics_hand.cpp',
'src/control/algo/lawimu_we.cpp',
'src/control/algo/lawimu_wrist.cpp',
'src/control/algo/lawjacobian.cpp',
'src/control/algo/lawopti.cpp',
'src/control/algo/myocontrol.cpp',
'src/control/compensation_imu.cpp',
'src/control/compensation_optitrack.cpp',
'src/control/controle_bretelles.cpp',
'src/control/cybathlon.cpp',
'src/control/demo.cpp',
'src/control/demo_imu.cpp',
'src/control/jf_opti.cpp',
'src/control/jfimu_sk.cpp',
'src/control/jfimu_v3.cpp',
'src/control/jfimu_v4.cpp',
'src/control/jfoptiorientation.cpp',
'src/control/matlab_receiver.cpp',
'src/control/myo_2electrodes.cpp',
'src/control/pushbuttons.cpp',
'src/control/read_adc.cpp',
'src/control/recorddata.cpp',
'src/control/remote_computer_control.cpp',
'src/control/test_imu.cpp',
'src/control/voluntary_control.cpp',
'src/sam/sam.cpp',
'src/sam/samanager.cpp',
'src/sam/system_monitor.cpp',
'src/ui/menu/menu_console.cpp',
'src/ui/menu/menu_frontend.cpp',
'src/ui/menu/menu_mqtt.cpp',
'src/ui/sound/buzzer.cpp',
'src/ui/visual/ledstrip.cpp',
'src/utils/interfaces/menu_user.cpp',
'src/utils/interfaces/mqtt_user.cpp',
'src/utils/log/logger.cpp',
'src/utils/log/safe_stream.cpp',
'src/utils/monitoring/abstract_monitor.cpp',
'src/utils/monitoring/cpu_freq_monitor.cpp',
'src/utils/monitoring/cpu_load_monitor.cpp',
'src/utils/monitoring/cpu_temp_monitor.cpp',
'src/utils/monitoring/vc_based_monitor.cpp',
'src/utils/named_object.cpp',
'src/utils/param.cpp',
'src/utils/serial_port.cpp',
'src/utils/socket.cpp',
'src/utils/threaded_loop.cpp',
'src/utils/watchdog.cpp',
'src/utils/worker.cpp',
'src/ux/menu/menu_backend.cpp',
'src/ux/menu/menu_broker.cpp',
'src/ux/menu/menu_item.cpp',
'src/ux/mosquittopp/client.cpp',
'src/ux/mosquittopp/connect_factory.cpp',
'src/ux/mosquittopp/connect_helper.cpp',
'src/ux/mosquittopp/message.cpp',
'src/ux/mosquittopp/subscription_factory.cpp',
'src/ux/mosquittopp/subscription.cpp',
]

i2c_dep = declare_dependency(link_args : ['-li2c'])
eposcmd_dep = declare_dependency(link_args : ['-lEposCmd'])
mosquitto_dep = declare_dependency(link_args : ['-lmosquitto'])
bcm2835_dep = declare_dependency(link_args : ['-lbcm2835'])
vc_dep = declare_dependency(link_args : ['-lvcos', '-lvchiq_arm', '-lvchostif'])
cppfs_dep = declare_dependency(link_args: ['-lstdc++fs'])
thread_dep = dependency('threads')

add_project_arguments('-DMOSQUITTO_SERVER_IP="127.0.0.1"', language : 'cpp')
add_project_arguments('-DMOSQUITTO_SERVER_PORT=1883', language : 'cpp')
add_project_arguments('-DDEFAULT_CPU_CORE=2', language : 'cpp')
add_project_arguments('-DDEFAULT_THREAD_PRIO=20', language : 'cpp')

sam_target = executable('sam',
sam_src,
include_directories : sam_public_headers,
dependencies : [bcm2835_dep, cppfs_dep, eposcmd_dep, i2c_dep, mosquitto_dep, thread_dep, vc_dep],
)
21 changes: 21 additions & 0 deletions meson/cross_file.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv7'
endian = 'little'

[constants]
arch = '/opt/sam-sdk/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-none-linux-gnueabihf-'
sysroot = '/opt/sam-sdk/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/'
cpp_flags = ['--sysroot=' + sysroot, '-isystem' + sysroot + '/opt/vc/include', '-isystem' + sysroot + '/usr/local/include', '-isystem' + sysroot + '/usr/include/arm-linux-gnueabihf']
link_flags = ['-L' + sysroot + '/usr/lib/arm-linux-gnueabihf', '-L' + sysroot + '/opt/vc/lib','-L' + sysroot + '/usr/local/lib']

[properties]
cpp_args = cpp_flags
cpp_link_args = link_flags

[binaries]
c = arch + 'gcc'
cpp = arch + 'g++'
ar = arch + 'ar'
strip = arch + 'strip'
8 changes: 8 additions & 0 deletions meson/native.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[constants]
cpp_flags = ['-isystem/opt/vc/include', '-isystem/usr/local/include']
link_flags = ['-L/opt/vc/lib','-L/usr/local/lib']

[properties]
cpp_args = cpp_flags
cpp_link_args = link_flags

Loading