summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Iooss2016-08-15 09:25:13 +0200
committerAlexandre Iooss2016-08-15 09:25:13 +0200
commit5e4eb6da9318a98f99c575853be3583acfc6705c (patch)
tree53aed9ff37ce3f867ba91a5b1cd49b2f0418987c
downloadaur-5e4eb6da9318a98f99c575853be3583acfc6705c.tar.gz
First version, libARController not working
-rw-r--r--.SRCINFO34
-rw-r--r--.gitignore2
-rw-r--r--0001-arsdk_manifests-Remove-libs_and_samples.patch20
-rw-r--r--0002-Use-local-json-and-curl.patch31
-rw-r--r--0003-Fix-json-c.patch324
-rw-r--r--0004-libARController-Fix-uthash-path.patch77
-rw-r--r--0005-libARDiscovery-Fix-some-warnings.patch31
-rw-r--r--LICENSE28
-rw-r--r--PKGBUILD80
-rw-r--r--local-dependencies-atom.mk15
10 files changed, 642 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..276adc7ed551
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,34 @@
+pkgbase = libarsdk3-git
+ pkgdesc = ARSDK3 C librairies to control Parrot devices
+ pkgver = r22.305521e
+ pkgrel = 1
+ url = http://developer.parrot.com/
+ arch = x86_64
+ license = custom
+ makedepends = git
+ makedepends = repo
+ makedepends = python2-virtualenv
+ depends = curl
+ depends = json-c
+ depends = avahi
+ depends = ffmpeg
+ depends = uthash
+ source = arsdk_manifests::git+https://github.com/Parrot-Developers/arsdk_manifests
+ source = 0001-arsdk_manifests-Remove-libs_and_samples.patch
+ source = 0002-Use-local-json-and-curl.patch
+ source = 0003-Fix-json-c.patch
+ source = 0004-libARController-Fix-uthash-path.patch
+ source = 0005-libARDiscovery-Fix-some-warnings.patch
+ source = local-dependencies-atom.mk
+ source = LICENSE
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
+ md5sums = SKIP
+
+pkgname = libarsdk3-git
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..fb82a8b034d1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+arsdk_manifests/
+*.pkg.tar.xz
diff --git a/0001-arsdk_manifests-Remove-libs_and_samples.patch b/0001-arsdk_manifests-Remove-libs_and_samples.patch
new file mode 100644
index 000000000000..213f45b1209e
--- /dev/null
+++ b/0001-arsdk_manifests-Remove-libs_and_samples.patch
@@ -0,0 +1,20 @@
+--- a/.repo/manifests/default.xml
++++ b/.repo/manifests/default.xml
+@@ -14,9 +14,6 @@
+ <!-- products -->
+ <project name="arsdk_products" path="products/arsdk"/>
+
+- <!-- External -->
+- <project name="ARSDKTools" path="packages/ARSDKTools"/>
+-
+ <!-- ARSDK -->
+ <project name="ARSDKBuildUtils" path="packages/ARSDKBuildUtils"/>
+ <project name="ARSDK3" path="packages/ARSDK3"/>
+@@ -37,7 +34,4 @@
+
+ <project name="mavlink.git" path="packages/mavlink"/>
+
+- <!-- Samples -->
+- <project name="Samples" path="packages/Samples"/>
+-
+ </manifest>
diff --git a/0002-Use-local-json-and-curl.patch b/0002-Use-local-json-and-curl.patch
new file mode 100644
index 000000000000..a16067c4dc48
--- /dev/null
+++ b/0002-Use-local-json-and-curl.patch
@@ -0,0 +1,31 @@
+--- a/products/arsdk/native/config/global.config
++++ b/products/arsdk/native/config/global.config
+@@ -11,8 +11,8 @@ CONFIG_ALCHEMY_BUILD_ARSDKBUILDUTILS=y
+ # CONFIG_ALCHEMY_BUILD_JUMPINGSUMOPILOTINGNEWAPI is not set
+ # CONFIG_ALCHEMY_BUILD_JUMPINGSUMORECEIVESTREAM is not set
+ # CONFIG_ALCHEMY_BUILD_AUTOCONF_MERGE is not set
+-CONFIG_ALCHEMY_BUILD_CURL=y
+-CONFIG_ALCHEMY_BUILD_JSON=y
++# CONFIG_ALCHEMY_BUILD_CURL is not set
++# CONFIG_ALCHEMY_BUILD_JSON is not set
+ CONFIG_ALCHEMY_BUILD_LIBARCOMMANDS=y
+ CONFIG_ALCHEMY_BUILD_LIBARCONTROLLER=y
+ CONFIG_ALCHEMY_BUILD_LIBARDATATRANSFER=y
+@@ -26,5 +26,5 @@ CONFIG_ALCHEMY_BUILD_LIBARSTREAM=y
+ CONFIG_ALCHEMY_BUILD_LIBARSTREAM2=y
+ CONFIG_ALCHEMY_BUILD_LIBARUPDATER=y
+ CONFIG_ALCHEMY_BUILD_LIBARUTILS=y
+-CONFIG_ALCHEMY_BUILD_LIBRESSL=y
++# CONFIG_ALCHEMY_BUILD_LIBRESSL is not set
+-CONFIG_ALCHEMY_BUILD_UTHASH=y
++# CONFIG_ALCHEMY_BUILD_UTHASH is not set
+--- a/products/arsdk/native/config/product.mk
++++ b/products/arsdk/native/config/product.mk
+@@ -5,5 +5,5 @@ ARSDK_NATIVE_CONFIG_DIR := $(call my-dir)
+ include $(ARSDK_NATIVE_CONFIG_DIR)/../../common/config/product.mk
+
+ # Use our own json, ncurses version
+-prebuilt.json.override := 1
+-prebuilt.ncurses.override := 1
++prebuilt.json.override := 0
++prebuilt.ncurses.override := 0
diff --git a/0003-Fix-json-c.patch b/0003-Fix-json-c.patch
new file mode 100644
index 000000000000..db5fa26801ba
--- /dev/null
+++ b/0003-Fix-json-c.patch
@@ -0,0 +1,324 @@
+--- a/packages/libARController/Includes/libARController/ARCONTROLLER_Stream.h
++++ b/packages/libARController/Includes/libARController/ARCONTROLLER_Stream.h
+@@ -38,7 +38,7 @@
+ #ifndef _ARCONTROLLER_STREAM_H_
+ #define _ARCONTROLLER_STREAM_H_
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Thread.h>
+ #include <libARNetwork/ARNETWORK_Manager.h>
+ #include <libARController/ARCONTROLLER_Error.h>
+--- a/packages/libARController/Includes/libARController/ARCONTROLLER_Stream1.h
++++ b/packages/libARController/Includes/libARController/ARCONTROLLER_Stream1.h
+@@ -38,7 +38,7 @@
+ #ifndef _ARCONTROLLER_STREAM1_H_
+ #define _ARCONTROLLER_STREAM1_H_
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Thread.h>
+ #include <libARNetwork/ARNETWORK_Manager.h>
+ #include <libARController/ARCONTROLLER_Error.h>
+--- a/packages/libARController/Python/generateDeviceControllers.py
++++ b/packages/libARController/Python/generateDeviceControllers.py
+@@ -836,7 +836,7 @@ def generateDeviceControllers (ctx, SRC_DIR, INC_DIR):
+
+ cFile.write ('#include <stdio.h>\n')
+ cFile.write ('#include <time.h>\n')
+- cFile.write ('#include <json/json.h>\n')
++ cFile.write ('#include <json-c/json.h>\n')
+ cFile.write ('\n')
+
+ cFile.write ('#include <libARSAL/ARSAL_Mutex.h>\n')
+--- a/packages/libARController/Sources/ARCONTROLLER_Stream.c
++++ b/packages/libARController/Sources/ARCONTROLLER_Stream.c
+@@ -38,7 +38,7 @@
+
+ #include <stdlib.h>
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Print.h>
+ #include <libARSAL/ARSAL_Socket.h>
+ #include <libARStream/ARStream.h>
+--- a/packages/libARController/Sources/ARCONTROLLER_Stream1.c
++++ b/packages/libARController/Sources/ARCONTROLLER_Stream1.c
+@@ -38,7 +38,7 @@
+
+ #include <stdlib.h>
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Print.h>
+ #include <libARSAL/ARSAL_Socket.h>
+ #include <libARStream/ARStream.h>
+--- a/packages/libARController/Sources/ARCONTROLLER_Stream2.c
++++ b/packages/libARController/Sources/ARCONTROLLER_Stream2.c
+@@ -38,7 +38,7 @@
+
+ #include <stdlib.h>
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Print.h>
+ #include <libARSAL/ARSAL_Socket.h>
+ #include <libARSAL/ARSAL_Thread.h>
+--- a/packages/libARController/Sources/ARCONTROLLER_Stream2.h
++++ b/packages/libARController/Sources/ARCONTROLLER_Stream2.h
+@@ -39,7 +39,7 @@
+ #ifndef _ARCONTROLLER_STREAM2_PRIVATE_H_
+ #define _ARCONTROLLER_STREAM2_PRIVATE_H_
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Socket.h>
+ #include <libARSAL/ARSAL_Thread.h>
+ #include <libARController/ARCONTROLLER_Error.h>
+--- a/packages/libARDiscovery/Includes/libARDiscovery/ARDISCOVERY_Device.h
++++ b/packages/libARDiscovery/Includes/libARDiscovery/ARDISCOVERY_Device.h
+@@ -38,7 +38,7 @@
+ #ifndef _ARDISCOVERY_DEVICE_H_
+ #define _ARDISCOVERY_DEVICE_H_
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARNetworkAL/ARNETWORKAL_Manager.h>
+ #include <libARNetworkAL/ARNETWORKAL_Error.h>
+ #include <libARNetwork/ARNETWORK_IOBufferParam.h>
+--- a/packages/libARDiscovery/Sources/BLE/ARDISCOVERY_DEVICE_Ble.c
++++ b/packages/libARDiscovery/Sources/BLE/ARDISCOVERY_DEVICE_Ble.c
+@@ -37,7 +37,7 @@
+ */
+
+ #include <stdlib.h>
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Print.h>
+ #include <libARNetworkAL/ARNETWORKAL_Manager.h>
+ #include <libARNetworkAL/ARNETWORKAL_Error.h>
+--- a/packages/libARDiscovery/Sources/BLE/ARDISCOVERY_DEVICE_Ble.h
++++ b/packages/libARDiscovery/Sources/BLE/ARDISCOVERY_DEVICE_Ble.h
+@@ -38,7 +38,7 @@
+ #ifndef _ARDISCOVERY_DEVICE_BLE_H_
+ #define _ARDISCOVERY_DEVICE_BLE_H_
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARNetworkAL/ARNETWORKAL_Manager.h>
+ #include <libARNetworkAL/ARNETWORKAL_Error.h>
+ #include <libARNetwork/ARNETWORK_IOBufferParam.h>
+--- a/packages/libARDiscovery/Sources/Wifi/ARDISCOVERY_DEVICE_Wifi.c
++++ b/packages/libARDiscovery/Sources/Wifi/ARDISCOVERY_DEVICE_Wifi.c
+@@ -37,7 +37,7 @@
+ */
+
+ #include <stdlib.h>
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARSAL/ARSAL_Print.h>
+ #include <libARNetworkAL/ARNETWORKAL_Manager.h>
+ #include <libARNetworkAL/ARNETWORKAL_Error.h>
+--- a/packages/libARDiscovery/Sources/Wifi/ARDISCOVERY_DEVICE_Wifi.h
++++ b/packages/libARDiscovery/Sources/Wifi/ARDISCOVERY_DEVICE_Wifi.h
+@@ -38,7 +38,7 @@
+ #ifndef _ARDISCOVERY_DEVICE_WIFI_H_
+ #define _ARDISCOVERY_DEVICE_WIFI_H_
+
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARNetworkAL/ARNETWORKAL_Manager.h>
+ #include <libARNetworkAL/ARNETWORKAL_Error.h>
+ #include <libARNetwork/ARNETWORK_IOBufferParam.h>
+--- a/packages/libARMedia/Sources/ARMEDIA_VideoAtoms.c
++++ b/packages/libARMedia/Sources/ARMEDIA_VideoAtoms.c
+@@ -40,7 +40,7 @@
+ #include <libARMedia/ARMedia.h>
+ #include <libARMedia/ARMEDIA_VideoEncapsuler.h>
+ #include <libARSAL/ARSAL_Print.h>
+-#include <json/json.h>
++#include <json-c/json.h>
+
+ #include <string.h>
+ #include <arpa/inet.h>
+--- a/packages/libARMedia/Sources/ARMEDIA_VideoEncapsuler.c
++++ b/packages/libARMedia/Sources/ARMEDIA_VideoEncapsuler.c
+@@ -45,7 +45,7 @@
+ #include <stdbool.h>
+ #include <string.h>
+ #include <arpa/inet.h>
+-#include <json/json.h>
++#include <json-c/json.h>
+ #include <libARDiscovery/ARDiscovery.h>
+ #include <libARMedia/ARMedia.h>
+ #include <libARSAL/ARSAL_Print.h>
+--- a/packages/libARUpdater/Sources/ARUPDATER_Downloader.c
++++ b/packages/libARUpdater/Sources/ARUPDATER_Downloader.c
+@@ -46,7 +46,7 @@
+ #include "ARUPDATER_Manager.h"
+ #include "ARUPDATER_Downloader.h"
+ #include "ARUPDATER_Utils.h"
+-#include <json/json.h>
++#include <json-c/json.h>
+
+ /* ***************************************
+ *
+--- a/packages/libARDiscovery/Sources/Wifi/ARDISCOVERY_DEVICE_Wifi.c
++++ b/packages/libARDiscovery/Sources/Wifi/ARDISCOVERY_DEVICE_Wifi.c
+@@ -1189,7 +1189,7 @@ eARDISCOVERY_ERROR ARDISCOVERY_DEVICE_Wifi_ReceiveJsonCallback (uint8_t *dataRx,
+ if (error == ARDISCOVERY_OK)
+ {
+ // get ARDISCOVERY_CONNECTION_JSON_C2DPORT_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_C2DPORT_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_C2DPORT_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ specificWifiParam->controllerToDevicePort = json_object_get_int(valueJsonObj);
+@@ -1197,7 +1197,7 @@ eARDISCOVERY_ERROR ARDISCOVERY_DEVICE_Wifi_ReceiveJsonCallback (uint8_t *dataRx,
+
+ // get ARDISCOVERY_CONNECTION_JSON_STATUS_KEY
+
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_STATUS_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_STATUS_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ specificWifiParam->connectionStatus = json_object_get_int(valueJsonObj);
+--- a/packages/libARController/Sources/ARCONTROLLER_Stream1.c
++++ b/packages/libARController/Sources/ARCONTROLLER_Stream1.c
+@@ -503,21 +503,21 @@ eARDISCOVERY_ERROR ARCONTROLLER_Stream1_OnReceiveJson (ARCONTROLLER_Stream1_t *s
+ if (error == ARDISCOVERY_OK)
+ {
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_SIZE_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_SIZE_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_SIZE_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream1Controller->fragmentSize = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_MAXIMUM_NUMBER_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_MAXIMUM_NUMBER_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_MAXIMUM_NUMBER_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream1Controller->maxNumberOfFragment = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM_MAX_ACK_INTERVAL_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_MAX_ACK_INTERVAL_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_MAX_ACK_INTERVAL_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream1Controller->maxAckInterval = json_object_get_int(valueJsonObj);
+--- a/packages/libARController/Sources/ARCONTROLLER_Stream2.c
++++ b/packages/libARController/Sources/ARCONTROLLER_Stream2.c
+@@ -345,48 +345,48 @@ eARDISCOVERY_ERROR ARCONTROLLER_Stream2_OnReceiveJson (ARCONTROLLER_Stream2_t *s
+ if (error == ARDISCOVERY_OK)
+ {
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_STREAM_PORT_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_STREAM_PORT_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_STREAM_PORT_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream2Controller->serverStreamPort = json_object_get_int(valueJsonObj);
+ }
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_CONTROL_PORT_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_CONTROL_PORT_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_CONTROL_PORT_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream2Controller->serverControlPort = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_PACKET_SIZE_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_PACKET_SIZE_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_PACKET_SIZE_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream2Controller->maxPaquetSize = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_LATENCY_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_LATENCY_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_LATENCY_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream2Controller->maxLatency = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_NETWORK_LATENCY_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_NETWORK_LATENCY_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_NETWORK_LATENCY_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream2Controller->maxNetworkLatency = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_BITRATE_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_BITRATE_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_MAX_BITRATE_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ stream2Controller->maxBiterate = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_PARAMETER_SETS_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_PARAMETER_SETS_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_PARAMETER_SETS_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ int parmeterSetsLength = strlen(json_object_get_string(valueJsonObj));
+@@ -409,10 +409,12 @@ eARDISCOVERY_ERROR ARCONTROLLER_Stream2_OnReceiveJson (ARCONTROLLER_Stream2_t *s
+ uint8_t ARCONTROLLER_Stream2_JsonContainsStream2Param(json_object *jsonObj)
+ {
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_STREAM_PORT_KEY
+- json_object *serverStreamPortJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_STREAM_PORT_KEY);
++ json_object *serverStreamPortJsonObj = NULL;
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_STREAM_PORT_KEY, &serverStreamPortJsonObj);
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_CONTROL_PORT_KEY
+- json_object *serverControlPortJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_CONTROL_PORT_KEY);
++ json_object *serverControlPortJsonObj = NULL;
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM2_SERVER_CONTROL_PORT_KEY, &serverControlPortJsonObj);
+
+ return ((serverStreamPortJsonObj != NULL) && (serverControlPortJsonObj != NULL));
+ }
+--- a/packages/libARController/Sources/ARCONTROLLER_StreamSender.c
++++ b/packages/libARController/Sources/ARCONTROLLER_StreamSender.c
+@@ -324,21 +324,21 @@ eARDISCOVERY_ERROR ARCONTROLLER_StreamSender_OnReceiveJson (ARCONTROLLER_StreamS
+ {
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_SIZE_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_SIZE_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_SIZE_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ streamController->fragmentSize = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_MAXIMUM_NUMBER_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_MAXIMUM_NUMBER_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_FRAGMENT_MAXIMUM_NUMBER_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ streamController->maxNumberOfFragment = json_object_get_int(valueJsonObj);
+ }
+
+ // get ARDISCOVERY_CONNECTION_JSON_ARSTREAM_MAX_ACK_INTERVAL_KEY
+- valueJsonObj = json_object_object_get (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_MAX_ACK_INTERVAL_KEY);
++ json_object_object_get_ex (jsonObj, ARDISCOVERY_CONNECTION_JSON_ARSTREAM_MAX_ACK_INTERVAL_KEY, &valueJsonObj);
+ if (valueJsonObj != NULL)
+ {
+ streamController->maxAckInterval = json_object_get_int(valueJsonObj);
+--- a/packages/libARUpdater/Sources/ARUPDATER_Downloader.c
++++ b/packages/libARUpdater/Sources/ARUPDATER_Downloader.c
+@@ -1207,7 +1207,8 @@ eARUPDATER_ERROR ARUPDATER_Downloader_GetBlacklistedFirmwareVersionsSync(ARUPDAT
+ device = malloc(ARUPDATER_MANAGER_DEVICE_STRING_MAX_SIZE);
+ snprintf(device, ARUPDATER_MANAGER_DEVICE_STRING_MAX_SIZE, "%04x", productId);
+
+- json_object *productJsonObj = json_object_object_get (jsonObj, device);
++ json_object *productJsonObj = NULL;
++ json_object_object_get_ex (jsonObj, device, &productJsonObj);
+ if ((productJsonObj != NULL) && !is_error(productJsonObj))
+ {
+ blacklistedRemoteList = json_object_get_array(productJsonObj);
diff --git a/0004-libARController-Fix-uthash-path.patch b/0004-libARController-Fix-uthash-path.patch
new file mode 100644
index 000000000000..aeb006ce521a
--- /dev/null
+++ b/0004-libARController-Fix-uthash-path.patch
@@ -0,0 +1,77 @@
+--- a/packages/libARController/Includes/libARController/ARCONTROLLER_Dictionary.h
++++ b/packages/libARController/Includes/libARController/ARCONTROLLER_Dictionary.h
+@@ -39,8 +39,8 @@
+ #ifndef _ARCONTROLLER_DICTIONARY_H_
+ #define _ARCONTROLLER_DICTIONARY_H_
+
+-#include <uthash/uthash.h>
+-#include <uthash/utlist.h>
++#include <uthash.h>
++#include <utlist.h>
+
+ #include <libARController/ARCONTROLLER_Error.h>
+ #include <libARController/ARCONTROLLER_DICTIONARY_Key.h>
+--- a/packages/libARController/JNI/c/ARCONTROLLER_JNI_Dictionary.c
++++ b/packages/libARController/JNI/c/ARCONTROLLER_JNI_Dictionary.c
+@@ -42,8 +42,8 @@
+ #include <jni.h>
+ #include <stdlib.h>
+
+-#include <uthash/uthash.h>
+-#include <uthash/utlist.h>
++#include <uthash.h>
++#include <utlist.h>
+
+ #include <libARSAL/ARSAL_Print.h>
+
+--- a/packages/libARController/Python/generateDeviceControllers.py
++++ b/packages/libARController/Python/generateDeviceControllers.py
+@@ -106,7 +106,7 @@ def generateDeviceControllers (ctx, SRC_DIR, INC_DIR):
+ hfile.write ('\n')
+ hfile.write ('#include <libARSAL/ARSAL_Print.h>\n')
+ hfile.write ('#include <libARSAL/ARSAL_Mutex.h>\n')
+- hfile.write ('#include <uthash/uthash.h>\n')
++ hfile.write ('#include <uthash.h>\n')
+ hfile.write ('\n')
+ hfile.write ('#include <libARController/ARCONTROLLER_Error.h>\n')
+ hfile.write ('#include <libARController/ARCONTROLLER_Dictionary.h>\n')
+--- a/packages/libARController/Python/generateFeatureControllers.py
++++ b/packages/libARController/Python/generateFeatureControllers.py
+@@ -97,7 +97,7 @@ def generateFeatureControllers (ctx, SRC_DIR, INC_DIR):
+ hfile.write ('#include <libARSAL/ARSAL_Print.h>\n')
+ hfile.write ('#include <libARSAL/ARSAL_Mutex.h>\n')
+ hfile.write ('#include <libARCommands/ARCommands.h>\n')
+- hfile.write ('#include <uthash/uthash.h>\n')
++ hfile.write ('#include <uthash.h>\n')
+ hfile.write ('\n')
+ hfile.write ('#include <libARController/ARCONTROLLER_Error.h>\n')
+ hfile.write ('#include <libARController/ARCONTROLLER_Network.h>\n')
+--- a/packages/libARController/Sources/ARCONTROLLER_Dictionary.c
++++ b/packages/libARController/Sources/ARCONTROLLER_Dictionary.c
+@@ -38,8 +38,8 @@
+
+ #include <stdlib.h>
+
+-#include <uthash/uthash.h>
+-#include <uthash/utlist.h>
++#include <uthash.h>
++#include <utlist.h>
+
+ #include <libARSAL/ARSAL_Print.h>
+
+--- a/packages/libARController/Sources/ARCONTROLLER_StreamQueue.c
++++ b/packages/libARController/Sources/ARCONTROLLER_StreamQueue.c
+@@ -40,8 +40,8 @@
+ #include <time.h>
+ #include <stdint.h>
+
+-#include <uthash/uthash.h>
+-#include <uthash/utlist.h>
++#include <uthash.h>
++#include <utlist.h>
+
+ #include <libARSAL/ARSAL_Print.h>
+
+--
+2.9.2
+
diff --git a/0005-libARDiscovery-Fix-some-warnings.patch b/0005-libARDiscovery-Fix-some-warnings.patch
new file mode 100644
index 000000000000..40516a0d0a43
--- /dev/null
+++ b/0005-libARDiscovery-Fix-some-warnings.patch
@@ -0,0 +1,31 @@
+--- a/packages/libARDiscovery/Sources/ARDISCOVERY_Connection.c
++++ b/packages/libARDiscovery/Sources/ARDISCOVERY_Connection.c
+@@ -866,7 +866,7 @@ static eARDISCOVERY_ERROR ARDISCOVERY_Connection_RxPending (ARDISCOVERY_Connecti
+ else
+ {
+ if ((readSize == 0 || readSize == -1) &&
+- (errno == EAGAIN || errno == EWOULDBLOCK))
++ (errno == EAGAIN))
+ {
+ ARSAL_PRINT(ARSAL_PRINT_DEBUG, ARDISCOVERY_CONNECTION_TAG, "No more data to read");
+ // Nothing to do here, it just means that we had a size which is a multiple of ARDISCOVERY_CONNECTION_RX_BUFFER_SIZE
+@@ -902,7 +902,7 @@ static eARDISCOVERY_ERROR ARDISCOVERY_Connection_RxPending (ARDISCOVERY_Connecti
+ else
+ {
+ if ((readSize == 0 || readSize == -1) &&
+- (errno == EAGAIN || errno == EWOULDBLOCK))
++ (errno == EAGAIN))
+ {
+ ARSAL_PRINT(ARSAL_PRINT_DEBUG, ARDISCOVERY_CONNECTION_TAG, "No more data to read");
+ // Nothing to do here, it just means that we had a size which is a multiple of ARDISCOVERY_CONNECTION_RX_BUFFER_SIZE
+--- a/packages/libARDiscovery/Sources/ARDISCOVERY_Connection.h
++++ b/packages/libARDiscovery/Sources/ARDISCOVERY_Connection.h
+@@ -40,7 +40,7 @@
+ typedef struct ARDISCOVERY_Connection_ComData_t
+ {
+ uint8_t *buffer; /**< data buffer */
+- int32_t size; /**< size of the data */
++ uint32_t size; /**< size of the data */
+ int32_t capacity; /**< size allocated of the data buffer */
+ } ARDISCOVERY_Connection_ComData_t;
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000000..2b9256f4825e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,28 @@
+Copyright (C) 2014 Parrot SA
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+* Neither the name of Parrot nor the names
+ of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..7f06c7cd9bf4
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,80 @@
+# Maintainer: Alexandre Iooss <alexandre.iooss@gmail.com>
+
+# Everything works except libARController because of uthash
+# The Parrot's uthash seems to be patched a lot, if you know what to do, please help
+
+pkgname=libarsdk3-git
+pkgver=r22.305521e
+pkgrel=1
+pkgdesc="ARSDK3 C librairies to control Parrot devices"
+arch=(x86_64)
+url="http://developer.parrot.com/"
+license=('custom')
+groups=()
+depends=(curl json-c avahi ffmpeg uthash)
+optdepends=()
+makedepends=(git repo python2-virtualenv)
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=('arsdk_manifests::git+https://github.com/Parrot-Developers/arsdk_manifests'
+ '0001-arsdk_manifests-Remove-libs_and_samples.patch'
+ '0002-Use-local-json-and-curl.patch'
+ '0003-Fix-json-c.patch'
+ '0004-libARController-Fix-uthash-path.patch'
+ '0005-libARDiscovery-Fix-some-warnings.patch'
+ 'local-dependencies-atom.mk'
+ 'LICENSE')
+md5sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP')
+
+pkgver() {
+ cd "$srcdir/arsdk_manifests"
+ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
+
+prepare() {
+ # Clean
+ rm -rf "$srcdir/.repo" "$srcdir/packages" "$srcdir/products"
+
+ # Init repo
+ cd "$srcdir/"
+ repo init -u "$srcdir/arsdk_manifests"
+
+ # Remove unused libs and samples from manifest
+ patch -p1 -i "$srcdir/0001-arsdk_manifests-Remove-libs_and_samples.patch"
+
+ # Download the sdk
+ repo sync
+
+ # Patch files
+ patch -p1 -i "$srcdir/0002-Use-local-json-and-curl.patch"
+ patch -p1 -i "$srcdir/0003-Fix-json-c.patch"
+ patch -p1 -i "$srcdir/0004-libARController-Fix-uthash-path.patch"
+ patch -p1 -i "$srcdir/0005-libARDiscovery-Fix-some-warnings.patch"
+
+ # Add build settings to use archlinux libs
+ mkdir "$srcdir/packages/ArchlinuxLibs"
+ cp "$srcdir/local-dependencies-atom.mk" "$srcdir/packages/ArchlinuxLibs/atom.mk"
+}
+
+build() {
+ virtualenv2 venv
+ source venv/bin/activate
+ ./build.sh -p arsdk-native -t build-sdk -j
+}
+
+package() {
+ cp -r "$srcdir/out/arsdk-native/staging/"* "$pkgdir"
+
+ # Clean
+ rm -f "$pkgdir/native-wrapper.sh"
+ rm -rf "$pkgdir/etc"
+ rm -rf "$pkgdir/usr/include/x86_64-pc-linux-gnu"
+
+ # Install license
+ mkdir -p "$pkgdir/usr/share/licenses/$pkgname"
+ cp "$srcdir/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/local-dependencies-atom.mk b/local-dependencies-atom.mk
new file mode 100644
index 000000000000..99f08f758abf
--- /dev/null
+++ b/local-dependencies-atom.mk
@@ -0,0 +1,15 @@
+include $(CLEAR_VARS)
+LOCAL_MODULE := json
+LOCAL_EXPORT_C_INCLUDES := $(shell pkg-config --cflags json-c)
+LOCAL_EXPORT_LDLIBS := $(shell pkg-config --libs json-c)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := curl
+LOCAL_EXPORT_C_INCLUDES := $(shell pkg-config --cflags libcurl)
+LOCAL_EXPORT_LDLIBS := $(shell pkg-config --libs libcurl)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := uthash
+include $(BUILD_PREBUILT)