Merge tag 'dey-2.2-r1.4' into dey-2.2/master
Tweaked to maintain some recipes' revisions to AUTOREV instead of the fixed SHA1s from the tag. Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
commit
3fa939fdc3
19
README.md
19
README.md
|
|
@ -67,11 +67,19 @@ Documentation is available online on the Digi documentation site:
|
||||||
* Release based on [Yocto 2.2 (Morty)](https://www.yoctoproject.org/downloads/core/morty22) including:
|
* Release based on [Yocto 2.2 (Morty)](https://www.yoctoproject.org/downloads/core/morty22) including:
|
||||||
* New toolchain based on GCC-6.2.0 and GLIBC-2.24
|
* New toolchain based on GCC-6.2.0 and GLIBC-2.24
|
||||||
* Updated Qt 5.7
|
* Updated Qt 5.7
|
||||||
* Cellular support, including the new Quectel EC21 cellular modem
|
* Updated ModemManager with validated support for:
|
||||||
|
* Digi's XBee Cellular LTE Cat 1 (USA/Verizon), with P/N XBC-V1-UT-001
|
||||||
|
* Telit's LE910 and HE910
|
||||||
|
* Huawei's ME909u
|
||||||
|
* Quectel's EC21
|
||||||
|
* Modified default networking settings:
|
||||||
|
* Defalt to dynamic IP addresses assignments
|
||||||
|
* Default station and softAP concurrent wireless mode
|
||||||
* TrustFence enabled
|
* TrustFence enabled
|
||||||
* Remote manager
|
* Remote manager
|
||||||
* Local and remote manager firmware update
|
* Local and remote manager firmware update
|
||||||
* Package upgrades and security fixes
|
* Package upgrades and security fixes
|
||||||
|
* U-boot support for 1GB DDR3 RAM on CC6UL
|
||||||
|
|
||||||
# Known Issues and Limitations
|
# Known Issues and Limitations
|
||||||
|
|
||||||
|
|
@ -94,6 +102,15 @@ boot a signed U-Boot only.
|
||||||
control. To work around this issue, UART1 of these SOM versions has been
|
control. To work around this issue, UART1 of these SOM versions has been
|
||||||
configured to operate at 115200 bps and without hardware flow control,
|
configured to operate at 115200 bps and without hardware flow control,
|
||||||
reducing the maximum throughput of this interface.
|
reducing the maximum throughput of this interface.
|
||||||
|
* When using wireless concurrent mode as the wireless interface is shared
|
||||||
|
between several different functionalities performance is reduced.
|
||||||
|
* When using wireless concurrent mode Digi recommends to keep the different
|
||||||
|
modes on the same frequency channels. For example, when configuring access
|
||||||
|
point mode on channel 36 on band A, the recommendation would be to connect
|
||||||
|
to the same channel both in station mode and WiFi direct so that the radio
|
||||||
|
performance is optimized
|
||||||
|
* When working as an access point, DFS capable channels in band A are not
|
||||||
|
currently supported.
|
||||||
|
|
||||||
## Digi ConnectCore 6
|
## Digi ConnectCore 6
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ include conf/machine/include/ccimx6ul.inc
|
||||||
|
|
||||||
# U-Boot configurations
|
# U-Boot configurations
|
||||||
# Last one is the default (the one the symlinks point at)
|
# Last one is the default (the one the symlinks point at)
|
||||||
UBOOT_CONFIG ??= "ccimx6ulsbc"
|
UBOOT_CONFIG ??= "ccimx6ulsbc1GB ccimx6ulsbc"
|
||||||
|
UBOOT_CONFIG[ccimx6ulsbc1GB] = "ccimx6ulsbc1GB_defconfig"
|
||||||
UBOOT_CONFIG[ccimx6ulsbc] = "ccimx6ulsbc_defconfig"
|
UBOOT_CONFIG[ccimx6ulsbc] = "ccimx6ulsbc_defconfig"
|
||||||
|
|
||||||
KERNEL_DEVICETREE ?= " \
|
KERNEL_DEVICETREE ?= " \
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ include conf/machine/include/ccimx6ul.inc
|
||||||
|
|
||||||
# U-Boot configurations
|
# U-Boot configurations
|
||||||
# Last one is the default (the one the symlinks point at)
|
# Last one is the default (the one the symlinks point at)
|
||||||
UBOOT_CONFIG ??= "ccimx6ulstarter"
|
UBOOT_CONFIG ??= "ccimx6ulstarter1GB ccimx6ulstarter"
|
||||||
|
UBOOT_CONFIG[ccimx6ulstarter1GB] = "ccimx6ulstarter1GB_defconfig"
|
||||||
UBOOT_CONFIG[ccimx6ulstarter] = "ccimx6ulstarter_defconfig"
|
UBOOT_CONFIG[ccimx6ulstarter] = "ccimx6ulstarter_defconfig"
|
||||||
|
|
||||||
KERNEL_DEVICETREE ?= " \
|
KERNEL_DEVICETREE ?= " \
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,6 @@ FW_QCA6564-WIFI = " \
|
||||||
file://otp30.bin \
|
file://otp30.bin \
|
||||||
file://qwlan30.bin \
|
file://qwlan30.bin \
|
||||||
file://utf30.bin \
|
file://utf30.bin \
|
||||||
file://wlan/cfg.dat \
|
|
||||||
file://wlan/qcom_cfg.ini \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI = " \
|
SRC_URI = " \
|
||||||
|
|
@ -41,7 +39,7 @@ do_install() {
|
||||||
${D}${base_libdir}/firmware/qca
|
${D}${base_libdir}/firmware/qca
|
||||||
|
|
||||||
# Wifi firmware
|
# Wifi firmware
|
||||||
install -d ${D}${base_libdir}/firmware/wlan
|
install -d ${D}${base_libdir}/firmware
|
||||||
install -m 0644 \
|
install -m 0644 \
|
||||||
bdwlan30_US.bin \
|
bdwlan30_US.bin \
|
||||||
bdwlan30_World.bin \
|
bdwlan30_World.bin \
|
||||||
|
|
@ -50,10 +48,6 @@ do_install() {
|
||||||
qwlan30.bin \
|
qwlan30.bin \
|
||||||
utf30.bin \
|
utf30.bin \
|
||||||
${D}${base_libdir}/firmware
|
${D}${base_libdir}/firmware
|
||||||
install -m 0644 \
|
|
||||||
wlan/cfg.dat \
|
|
||||||
wlan/qcom_cfg.ini \
|
|
||||||
${D}${base_libdir}/firmware/wlan
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Do not create empty debug and development packages (PN-dbg PN-dev PN-staticdev)
|
# Do not create empty debug and development packages (PN-dbg PN-dev PN-staticdev)
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -11,7 +11,7 @@ else
|
||||||
#
|
#
|
||||||
# Set device tree filename depending on the hardware variant
|
# Set device tree filename depending on the hardware variant
|
||||||
#
|
#
|
||||||
if test "${module_variant}" = "0x02"; then
|
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then
|
||||||
setenv fdt_file zImage-imx6ul-ccimx6ulsbc-wb.dtb
|
setenv fdt_file zImage-imx6ul-ccimx6ulsbc-wb.dtb
|
||||||
elif test "${module_variant}" = "0x03"; then
|
elif test "${module_variant}" = "0x03"; then
|
||||||
setenv fdt_file zImage-imx6ul-ccimx6ulsbc.dtb
|
setenv fdt_file zImage-imx6ul-ccimx6ulsbc.dtb
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,36 @@ if test $? -eq 1; then
|
||||||
exit;
|
exit;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Determine U-Boot file to program basing on module variant
|
||||||
|
if test -n "${module_variant}"; then
|
||||||
|
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then
|
||||||
|
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx;
|
||||||
|
elif test "${module_variant}" = "0x04"; then
|
||||||
|
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc1GB.imx;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
|
||||||
|
# u-boot when the checked value is empty.
|
||||||
|
if test -n "${INSTALL_UBOOT_FILENAME}"; then
|
||||||
|
true;
|
||||||
|
else
|
||||||
|
echo "";
|
||||||
|
echo "[ERROR] Cannot determine U-Boot file for this module!";
|
||||||
|
echo "";
|
||||||
|
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6UL variant:";
|
||||||
|
echo " - For a SOM with 1GB DDR3, run:";
|
||||||
|
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc1GB.imx";
|
||||||
|
echo " - For a SOM with 256MB DDR3, run:";
|
||||||
|
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx";
|
||||||
|
echo "";
|
||||||
|
echo "2. Run the install script again.";
|
||||||
|
echo "";
|
||||||
|
echo "Aborted";
|
||||||
|
echo "";
|
||||||
|
exit;
|
||||||
|
fi;
|
||||||
|
|
||||||
setenv INSTALL_MMCDEV 0
|
setenv INSTALL_MMCDEV 0
|
||||||
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx
|
|
||||||
setenv INSTALL_LINUX_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.boot.ubifs
|
setenv INSTALL_LINUX_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.boot.ubifs
|
||||||
setenv INSTALL_RECOVERY_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.recovery.ubifs
|
setenv INSTALL_RECOVERY_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.recovery.ubifs
|
||||||
setenv INSTALL_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.ubifs
|
setenv INSTALL_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.ubifs
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ else
|
||||||
#
|
#
|
||||||
# Set device tree filename depending on the hardware variant
|
# Set device tree filename depending on the hardware variant
|
||||||
#
|
#
|
||||||
if test "${module_variant}" = "0x02"; then
|
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then
|
||||||
setenv fdt_file zImage-imx6ul-ccimx6ulstarter-wb.dtb
|
setenv fdt_file zImage-imx6ul-ccimx6ulstarter-wb.dtb
|
||||||
elif test "${module_variant}" = "0x03"; then
|
elif test "${module_variant}" = "0x03"; then
|
||||||
setenv fdt_file zImage-imx6ul-ccimx6ulstarter.dtb
|
setenv fdt_file zImage-imx6ul-ccimx6ulstarter.dtb
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,36 @@ if test $? -eq 1; then
|
||||||
exit;
|
exit;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Determine U-Boot file to program basing on module variant
|
||||||
|
if test -n "${module_variant}"; then
|
||||||
|
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then
|
||||||
|
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx;
|
||||||
|
elif test "${module_variant}" = "0x04"; then
|
||||||
|
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter1GB.imx;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
|
||||||
|
# u-boot when the checked value is empty.
|
||||||
|
if test -n "${INSTALL_UBOOT_FILENAME}"; then
|
||||||
|
true;
|
||||||
|
else
|
||||||
|
echo "";
|
||||||
|
echo "[ERROR] Cannot determine U-Boot file for this module!";
|
||||||
|
echo "";
|
||||||
|
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6UL variant:";
|
||||||
|
echo " - For a SOM with 1GB DDR3, run:";
|
||||||
|
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter1GB.imx";
|
||||||
|
echo " - For a SOM with 256MB DDR3, run:";
|
||||||
|
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx";
|
||||||
|
echo "";
|
||||||
|
echo "2. Run the install script again.";
|
||||||
|
echo "";
|
||||||
|
echo "Aborted";
|
||||||
|
echo "";
|
||||||
|
exit;
|
||||||
|
fi;
|
||||||
|
|
||||||
setenv INSTALL_MMCDEV 0
|
setenv INSTALL_MMCDEV 0
|
||||||
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx
|
|
||||||
setenv INSTALL_LINUX_FILENAME core-image-base-ccimx6ulstarter.boot.ubifs
|
setenv INSTALL_LINUX_FILENAME core-image-base-ccimx6ulstarter.boot.ubifs
|
||||||
setenv INSTALL_RECOVERY_FILENAME core-image-base-ccimx6ulstarter.recovery.ubifs
|
setenv INSTALL_RECOVERY_FILENAME core-image-base-ccimx6ulstarter.recovery.ubifs
|
||||||
setenv INSTALL_ROOTFS_FILENAME core-image-base-ccimx6ulstarter.ubifs
|
setenv INSTALL_ROOTFS_FILENAME core-image-base-ccimx6ulstarter.ubifs
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (C) 2016 Digi International.
|
# Copyright (C) 2016, 2017 Digi International.
|
||||||
|
|
||||||
SUMMARY = "MCA firmware management tool"
|
SUMMARY = "MCA firmware management tool"
|
||||||
SECTION = "console/tools"
|
SECTION = "console/tools"
|
||||||
|
|
@ -7,11 +7,13 @@ LICENSE = "CLOSED"
|
||||||
PKGNAME = "mca_tool"
|
PKGNAME = "mca_tool"
|
||||||
SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz"
|
SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz"
|
||||||
|
|
||||||
SRC_URI[md5sum] = "d54692090bf0820e6116364822f6433f"
|
SRC_URI[md5sum] = "20992b6b30904ee4d75d196c957077e0"
|
||||||
SRC_URI[sha256sum] = "e8267e66ba496a1e77b2dec70d6555bdeb8e06b267e776c86b9d4b01e9d13eb5"
|
SRC_URI[sha256sum] = "49458475dd5df11f0c4f4593ffc930fbcdaa457120f73ab18587d711eb9036f6"
|
||||||
|
|
||||||
S = "${WORKDIR}/${PKGNAME}-${PV}"
|
S = "${WORKDIR}/${PKGNAME}-${PV}"
|
||||||
|
|
||||||
inherit bin_package
|
inherit bin_package
|
||||||
|
|
||||||
|
INSANE_SKIP_${PN} = "already-stripped"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE = "(ccimx6ul)"
|
COMPATIBLE_MACHINE = "(ccimx6ul)"
|
||||||
|
|
@ -42,11 +42,16 @@ do_install_append() {
|
||||||
install -m 0755 ${WORKDIR}/qualcomm-pre-up ${D}${sysconfdir}/network/if-pre-up.d/qualcomm
|
install -m 0755 ${WORKDIR}/qualcomm-pre-up ${D}${sysconfdir}/network/if-pre-up.d/qualcomm
|
||||||
install -d ${D}${sysconfdir}/modprobe.d
|
install -d ${D}${sysconfdir}/modprobe.d
|
||||||
install -m 0644 ${WORKDIR}/modprobe-qualcomm.conf ${D}${sysconfdir}/modprobe.d/qualcomm.conf
|
install -m 0644 ${WORKDIR}/modprobe-qualcomm.conf ${D}${sysconfdir}/modprobe.d/qualcomm.conf
|
||||||
|
install -d ${D}${base_libdir}/firmware/wlan/
|
||||||
|
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_cfg.dat ${D}${base_libdir}/firmware/wlan/cfg.dat
|
||||||
|
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini
|
||||||
}
|
}
|
||||||
|
|
||||||
FILES_${PN} += " \
|
FILES_${PN} += " \
|
||||||
${sysconfdir}/network/if-pre-up.d/qualcomm \
|
${sysconfdir}/network/if-pre-up.d/qualcomm \
|
||||||
${sysconfdir}/modprobe.d/qualcomm.conf \
|
${sysconfdir}/modprobe.d/qualcomm.conf \
|
||||||
|
${base_libdir}/firmware/wlan/cfg.dat \
|
||||||
|
${base_libdir}/firmware/wlan/qcom_cfg.ini \
|
||||||
"
|
"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE = "(ccimx6ul)"
|
COMPATIBLE_MACHINE = "(ccimx6ul)"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
From: Mike Engel <Mike.Engel@digi.com>
|
||||||
|
Date: Tue, 11 Apr 2017 11:13:23 +0200
|
||||||
|
Subject: [PATCH] gpu: Get GPU reserved memory from DT.
|
||||||
|
|
||||||
|
This commit adds support to specify the GPU reserved memory in
|
||||||
|
the DT.
|
||||||
|
|
||||||
|
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
|
||||||
|
|
||||||
|
https://jira.digi.com/browse/DEL-3868
|
||||||
|
---
|
||||||
|
.../linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c
|
||||||
|
index dc7c976..fd2dbd3 100644
|
||||||
|
--- a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c
|
||||||
|
+++ b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c
|
||||||
|
@@ -444,7 +444,7 @@ gckPLATFORM_AdjustParam(
|
||||||
|
Args->registerMemSizeVG = res->end - res->start + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
|
||||||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
|
||||||
|
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "contiguous_mem");
|
||||||
|
if (res)
|
||||||
|
{
|
||||||
|
@@ -453,8 +453,6 @@ gckPLATFORM_AdjustParam(
|
||||||
|
if( Args->contiguousSize == ~0U )
|
||||||
|
Args->contiguousSize = res->end - res->start + 1;
|
||||||
|
}
|
||||||
|
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
|
||||||
|
- Args->contiguousBase = 0;
|
||||||
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
|
||||||
|
prop = of_get_property(dn, "contiguousbase", NULL);
|
||||||
|
if(prop)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
# Copyright (C) 2015 Digi International
|
# Copyright (C) 2015-2017 Digi International
|
||||||
|
|
||||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
||||||
|
|
||||||
SRC_URI += " \
|
SRC_URI += " \
|
||||||
file://0001-mxc-gpu-use-recommended-values-for-minimum-GPU-frequ.patch \
|
file://0001-mxc-gpu-use-recommended-values-for-minimum-GPU-frequ.patch \
|
||||||
file://0002-Use-busfreq-imx6.h-up-to-3.15-kernel.patch \
|
file://0002-Use-busfreq-imx6.h-up-to-3.15-kernel.patch \
|
||||||
|
file://0003-gpu-Get-GPU-reserved-memory-from-DT.patch \
|
||||||
"
|
"
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ CONFIG_ARM_IMX6Q_CPUFREQ=y
|
||||||
CONFIG_CPU_IDLE=y
|
CONFIG_CPU_IDLE=y
|
||||||
CONFIG_VFP=y
|
CONFIG_VFP=y
|
||||||
CONFIG_NEON=y
|
CONFIG_NEON=y
|
||||||
CONFIG_BINFMT_MISC=m
|
|
||||||
CONFIG_PM_DEBUG=y
|
CONFIG_PM_DEBUG=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
|
|
@ -141,8 +140,6 @@ CONFIG_USB_NET_CDC_MBIM=y
|
||||||
# CONFIG_USB_NET_ZAURUS is not set
|
# CONFIG_USB_NET_ZAURUS is not set
|
||||||
CONFIG_USB_NET_QMI_WWAN=y
|
CONFIG_USB_NET_QMI_WWAN=y
|
||||||
CONFIG_USB_SIERRA_NET=y
|
CONFIG_USB_SIERRA_NET=y
|
||||||
CONFIG_ATH_CARDS=m
|
|
||||||
CONFIG_ATH_DEBUG=y
|
|
||||||
CONFIG_HOSTAP=y
|
CONFIG_HOSTAP=y
|
||||||
CONFIG_HOSTAP_FIRMWARE=y
|
CONFIG_HOSTAP_FIRMWARE=y
|
||||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
||||||
|
|
@ -157,7 +154,7 @@ CONFIG_TOUCHSCREEN_FUSION_7_10=y
|
||||||
CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
|
CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
|
||||||
CONFIG_INPUT_MISC=y
|
CONFIG_INPUT_MISC=y
|
||||||
CONFIG_INPUT_MCA_CC6UL_PWRKEY=y
|
CONFIG_INPUT_MCA_CC6UL_PWRKEY=y
|
||||||
CONFIG_SERIO_SERPORT=m
|
# CONFIG_SERIO_SERPORT is not set
|
||||||
# CONFIG_LEGACY_PTYS is not set
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
# CONFIG_DEVKMEM is not set
|
# CONFIG_DEVKMEM is not set
|
||||||
CONFIG_SERIAL_IMX=y
|
CONFIG_SERIAL_IMX=y
|
||||||
|
|
@ -167,8 +164,6 @@ CONFIG_FSL_OTP=y
|
||||||
CONFIG_I2C_CHARDEV=y
|
CONFIG_I2C_CHARDEV=y
|
||||||
# CONFIG_I2C_HELPER_AUTO is not set
|
# CONFIG_I2C_HELPER_AUTO is not set
|
||||||
CONFIG_I2C_ALGOBIT=y
|
CONFIG_I2C_ALGOBIT=y
|
||||||
CONFIG_I2C_ALGOPCF=m
|
|
||||||
CONFIG_I2C_ALGOPCA=m
|
|
||||||
CONFIG_I2C_IMX=y
|
CONFIG_I2C_IMX=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_SPI_GPIO=y
|
CONFIG_SPI_GPIO=y
|
||||||
|
|
@ -249,7 +244,6 @@ CONFIG_USB_CHIPIDEA_UDC=y
|
||||||
CONFIG_USB_CHIPIDEA_HOST=y
|
CONFIG_USB_CHIPIDEA_HOST=y
|
||||||
CONFIG_USB_SERIAL=y
|
CONFIG_USB_SERIAL=y
|
||||||
CONFIG_USB_SERIAL_GENERIC=y
|
CONFIG_USB_SERIAL_GENERIC=y
|
||||||
CONFIG_USB_SERIAL_FTDI_SIO=m
|
|
||||||
CONFIG_USB_SERIAL_QUALCOMM=y
|
CONFIG_USB_SERIAL_QUALCOMM=y
|
||||||
CONFIG_USB_SERIAL_SIERRAWIRELESS=y
|
CONFIG_USB_SERIAL_SIERRAWIRELESS=y
|
||||||
CONFIG_USB_SERIAL_OPTION=y
|
CONFIG_USB_SERIAL_OPTION=y
|
||||||
|
|
@ -257,25 +251,9 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||||
CONFIG_NOP_USB_XCEIV=y
|
CONFIG_NOP_USB_XCEIV=y
|
||||||
CONFIG_USB_MXS_PHY=y
|
CONFIG_USB_MXS_PHY=y
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
CONFIG_USB_CONFIGFS=m
|
|
||||||
CONFIG_USB_CONFIGFS_SERIAL=y
|
|
||||||
CONFIG_USB_CONFIGFS_ACM=y
|
|
||||||
CONFIG_USB_CONFIGFS_OBEX=y
|
|
||||||
CONFIG_USB_CONFIGFS_NCM=y
|
|
||||||
CONFIG_USB_CONFIGFS_ECM=y
|
|
||||||
CONFIG_USB_CONFIGFS_ECM_SUBSET=y
|
|
||||||
CONFIG_USB_CONFIGFS_RNDIS=y
|
|
||||||
CONFIG_USB_CONFIGFS_EEM=y
|
|
||||||
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
|
|
||||||
CONFIG_USB_CONFIGFS_F_LB_SS=y
|
|
||||||
CONFIG_USB_CONFIGFS_F_FS=y
|
|
||||||
CONFIG_USB_ZERO=m
|
|
||||||
CONFIG_USB_ETH=m
|
CONFIG_USB_ETH=m
|
||||||
CONFIG_USB_G_NCM=m
|
|
||||||
CONFIG_USB_GADGETFS=m
|
|
||||||
CONFIG_USB_MASS_STORAGE=m
|
CONFIG_USB_MASS_STORAGE=m
|
||||||
CONFIG_USB_G_SERIAL=m
|
CONFIG_USB_G_SERIAL=m
|
||||||
CONFIG_USB_CDC_COMPOSITE=m
|
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
|
@ -326,7 +304,6 @@ CONFIG_NLS_DEFAULT="cp437"
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ASCII=y
|
CONFIG_NLS_ASCII=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_NLS_ISO8859_15=m
|
|
||||||
CONFIG_NLS_UTF8=y
|
CONFIG_NLS_UTF8=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
|
@ -335,7 +312,6 @@ CONFIG_MAGIC_SYSRQ=y
|
||||||
# CONFIG_FTRACE is not set
|
# CONFIG_FTRACE is not set
|
||||||
CONFIG_CRYPTO_USER=y
|
CONFIG_CRYPTO_USER=y
|
||||||
CONFIG_CRYPTO_NULL=y
|
CONFIG_CRYPTO_NULL=y
|
||||||
CONFIG_CRYPTO_TEST=m
|
|
||||||
CONFIG_CRYPTO_CBC=y
|
CONFIG_CRYPTO_CBC=y
|
||||||
CONFIG_CRYPTO_CTR=y
|
CONFIG_CRYPTO_CTR=y
|
||||||
CONFIG_CRYPTO_CTS=y
|
CONFIG_CRYPTO_CTS=y
|
||||||
|
|
@ -361,9 +337,6 @@ CONFIG_CRYPTO_DEV_FSL_CAAM=y
|
||||||
CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
|
CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
|
||||||
CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
|
CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
|
||||||
CONFIG_CRC_T10DIF=y
|
CONFIG_CRC_T10DIF=y
|
||||||
CONFIG_CRC_ITU_T=m
|
|
||||||
CONFIG_CRC7=m
|
|
||||||
CONFIG_LIBCRC32C=m
|
|
||||||
CONFIG_FONTS=y
|
CONFIG_FONTS=y
|
||||||
CONFIG_FONT_8x8=y
|
CONFIG_FONT_8x8=y
|
||||||
CONFIG_FONT_8x16=y
|
CONFIG_FONT_8x16=y
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,8 @@ generate_installer_zip () {
|
||||||
# Get list of files to pack
|
# Get list of files to pack
|
||||||
INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr"
|
INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr"
|
||||||
for ext in ${FSTYPES_WHITELIST}; do
|
for ext in ${FSTYPES_WHITELIST}; do
|
||||||
if readlink -e "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then
|
if readlink -e "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then
|
||||||
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}"
|
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
for ubconf in ${UBOOT_CONFIG}; do
|
for ubconf in ${UBOOT_CONFIG}; do
|
||||||
|
|
@ -33,19 +33,20 @@ generate_installer_zip () {
|
||||||
done
|
done
|
||||||
|
|
||||||
# Create README file
|
# Create README file
|
||||||
cat >README.txt <<_EOF_
|
cat >${IMGDEPLOYDIR}/README.txt <<_EOF_
|
||||||
Digi Embedded Yocto kit installer
|
Digi Embedded Yocto kit installer
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
_EOF_
|
_EOF_
|
||||||
md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g" >> README.txt
|
md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g;s,${IMGDEPLOYDIR}/,,g" >> ${IMGDEPLOYDIR}/README.txt
|
||||||
|
|
||||||
# Pack the files
|
# Pack the files and remove the temporary readme file
|
||||||
zip -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} README.txt
|
zip -j ${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/README.txt
|
||||||
|
rm -f ${IMGDEPLOYDIR}/README.txt
|
||||||
|
|
||||||
# Create the symlink
|
# Create the symlink
|
||||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip" ]; then
|
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip" ]; then
|
||||||
ln -sf ${IMAGE_NAME}.installer.zip ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.installer.zip
|
ln -sf ${IMAGE_NAME}.installer.zip ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.installer.zip
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,5 +51,6 @@ FILES_${PN}-init = "${sysconfdir}/init.d/bluetooth-init"
|
||||||
|
|
||||||
INITSCRIPT_PACKAGES += "${PN}-init"
|
INITSCRIPT_PACKAGES += "${PN}-init"
|
||||||
INITSCRIPT_NAME_${PN}-init = "bluetooth-init"
|
INITSCRIPT_NAME_${PN}-init = "bluetooth-init"
|
||||||
|
INITSCRIPT_PARAMS_${PN}-init = "start 19 2 3 4 5 . stop 21 0 1 6 ."
|
||||||
|
|
||||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ interface=wlan1
|
||||||
driver=nl80211
|
driver=nl80211
|
||||||
|
|
||||||
# WPA2-AES encryption
|
# WPA2-AES encryption
|
||||||
ssid=ap-wpa2aes_a
|
ssid=ap-wlan1-wpa2aes_a
|
||||||
auth_algs=1
|
auth_algs=1
|
||||||
wpa=2
|
wpa=2
|
||||||
wpa_key_mgmt=WPA-PSK
|
wpa_key_mgmt=WPA-PSK
|
||||||
|
|
@ -4,7 +4,7 @@ interface=wlan0
|
||||||
driver=nl80211
|
driver=nl80211
|
||||||
|
|
||||||
# WPA2-AES encryption
|
# WPA2-AES encryption
|
||||||
ssid=ap-wpa2aes_a
|
ssid=ap-wlan0-wpa2aes_a
|
||||||
auth_algs=1
|
auth_algs=1
|
||||||
wpa=2
|
wpa=2
|
||||||
wpa_key_mgmt=WPA-PSK
|
wpa_key_mgmt=WPA-PSK
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DAEMON=/usr/sbin/hostapd
|
||||||
|
NAME=hostapd
|
||||||
|
DESC="HOSTAP Daemon"
|
||||||
|
PIDFILE="/var/run/hostapd.${IFACE}.pid"
|
||||||
|
ARGS="/etc/hostapd_${IFACE}.conf"
|
||||||
|
|
||||||
|
test -f $DAEMON || exit 0
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# source function library
|
||||||
|
. /etc/init.d/functions
|
||||||
|
|
||||||
|
delay_stop() {
|
||||||
|
count=0
|
||||||
|
while [ $count -lt 9 ] ; do
|
||||||
|
if pidof $DAEMON >/dev/null; then
|
||||||
|
sleep 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
count=`expr $count + 1`
|
||||||
|
done
|
||||||
|
echo "Failed to stop $DESC."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting $DESC: "
|
||||||
|
start-stop-daemon -S -x $DAEMON -m -p ${PIDFILE} -b -- $ARGS
|
||||||
|
echo "$NAME."
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo -n "Stopping $DESC: "
|
||||||
|
start-stop-daemon -K --oknodo -x $DAEMON -p ${PIDFILE}
|
||||||
|
echo "$NAME."
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
$0 stop
|
||||||
|
delay_stop && $0 start
|
||||||
|
;;
|
||||||
|
reload)
|
||||||
|
echo -n "Reloading $DESC: "
|
||||||
|
killall -HUP $(basename ${DAEMON})
|
||||||
|
echo "$NAME."
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
status $DAEMON
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart|reload|status}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -2,11 +2,19 @@
|
||||||
|
|
||||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
||||||
|
|
||||||
SRC_URI += "file://hostapd.conf"
|
SRC_URI_append = " file://hostapd_wlan0.conf"
|
||||||
|
SRC_URI_append_ccimx6ul = " file://hostapd_wlan1.conf"
|
||||||
|
|
||||||
do_install_append() {
|
do_install_append() {
|
||||||
# Overwrite the default hostapd.conf with our custom file
|
# Remove the default hostapd.conf
|
||||||
install -m 0644 ${WORKDIR}/hostapd.conf ${D}${sysconfdir}
|
rm -f ${WORKDIR}/hostapd.conf
|
||||||
|
# Install custom hostapd_IFACE.conf file
|
||||||
|
install -m 0644 ${WORKDIR}/hostapd_wlan0.conf ${D}${sysconfdir}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_install_append_ccimx6ul() {
|
||||||
|
# Install custom hostapd_IFACE.conf file
|
||||||
|
install -m 0644 ${WORKDIR}/hostapd_wlan1.conf ${D}${sysconfdir}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Do not autostart hostapd daemon, it will conflict with wpa-supplicant.
|
# Do not autostart hostapd daemon, it will conflict with wpa-supplicant.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
From 8333cf300f6010243117aae6da4b823d9d7f30b2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Date: Thu, 20 Oct 2016 04:42:26 +0000
|
||||||
|
Subject: [PATCH] Detect clang
|
||||||
|
|
||||||
|
Check for clang compiler since we need to disable
|
||||||
|
unused-function warning for clang, at same time
|
||||||
|
pass werror when checking for compiler options if
|
||||||
|
werror is enabled so spurious options do not get
|
||||||
|
enabled. Only the ones that are supported by given
|
||||||
|
compiler are accepted.
|
||||||
|
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
---
|
||||||
|
m4/compiler-warnings.m4 | 29 +++++++++++++++++++++++++----
|
||||||
|
1 file changed, 25 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/m4/compiler-warnings.m4 b/m4/compiler-warnings.m4
|
||||||
|
index 5ba490c884dc..92022746487f 100644
|
||||||
|
--- a/m4/compiler-warnings.m4
|
||||||
|
+++ b/m4/compiler-warnings.m4
|
||||||
|
@@ -2,10 +2,30 @@ AC_DEFUN([LIBQMI_COMPILER_WARNINGS],
|
||||||
|
[AC_ARG_ENABLE(more-warnings,
|
||||||
|
AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
|
||||||
|
set_more_warnings="$enableval",set_more_warnings=error)
|
||||||
|
+
|
||||||
|
+# Clang throws a lot of warnings when it does not understand a flag. Disable
|
||||||
|
+# this warning for now so other warnings are visible.
|
||||||
|
+AC_MSG_CHECKING([if compiling with clang])
|
||||||
|
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
|
||||||
|
+#ifndef __clang__
|
||||||
|
+ not clang
|
||||||
|
+#endif
|
||||||
|
+ ]])],
|
||||||
|
+ [CLANG=yes],
|
||||||
|
+ [CLANG=no]
|
||||||
|
+)
|
||||||
|
+AC_MSG_RESULT([$CLANG])
|
||||||
|
+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
|
||||||
|
+CFLAGS="$CFLAGS $CLANG_FLAGS"
|
||||||
|
+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
|
||||||
|
+
|
||||||
|
AC_MSG_CHECKING(for more warnings)
|
||||||
|
if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
CFLAGS="-Wall -std=gnu89 $CFLAGS"
|
||||||
|
+ if test "x$set_more_warnings" = xerror; then
|
||||||
|
+ WERROR="-Werror"
|
||||||
|
+ fi
|
||||||
|
|
||||||
|
for option in -Wmissing-declarations -Wmissing-prototypes \
|
||||||
|
-Wdeclaration-after-statement -Wstrict-prototypes \
|
||||||
|
@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
|
||||||
|
-Wmissing-include-dirs -Waggregate-return \
|
||||||
|
-Wformat-security -Wtype-limits; do
|
||||||
|
SAVE_CFLAGS="$CFLAGS"
|
||||||
|
- CFLAGS="$CFLAGS $option"
|
||||||
|
+ CFLAGS="$CFLAGS $option $WERROR"
|
||||||
|
AC_MSG_CHECKING([whether gcc understands $option])
|
||||||
|
AC_TRY_COMPILE([], [],
|
||||||
|
has_option=yes,
|
||||||
|
has_option=no,)
|
||||||
|
if test $has_option = no; then
|
||||||
|
CFLAGS="$SAVE_CFLAGS"
|
||||||
|
+ else
|
||||||
|
+ CFLAGS="$SAVE_CFLAGS $option"
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT($has_option)
|
||||||
|
unset has_option
|
||||||
|
unset SAVE_CFLAGS
|
||||||
|
done
|
||||||
|
+ CFLAGS="$CFLAGS $WERROR"
|
||||||
|
unset option
|
||||||
|
- if test "x$set_more_warnings" = xerror; then
|
||||||
|
- CFLAGS="$CFLAGS -Werror"
|
||||||
|
- fi
|
||||||
|
+ unset WERROR
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
|
@ -1,74 +0,0 @@
|
||||||
From: Mike Engel <Mike.Engel@digi.com>
|
|
||||||
Date: Wed, 15 Mar 2017 18:20:25 +0100
|
|
||||||
Subject: [PATCH] meta-digi-dey: Added libqmi patch to DMS version miss match.
|
|
||||||
|
|
||||||
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
|
|
||||||
---
|
|
||||||
.../src/libqmi-glib/qmi-device.c | 32 +++++++++++++++++-----
|
|
||||||
1 file changed, 25 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c
|
|
||||||
index 5cee156..ef636f0 100644
|
|
||||||
--- a/src/libqmi-glib/qmi-device.c
|
|
||||||
+++ b/src/libqmi-glib/qmi-device.c
|
|
||||||
@@ -485,8 +485,10 @@ check_message_supported (QmiDevice *self,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
const QmiMessageCtlGetVersionInfoOutputServiceListService *info;
|
|
||||||
- guint major = 0;
|
|
||||||
- guint minor = 0;
|
|
||||||
+ guint message_major = 0;
|
|
||||||
+ guint message_minor = 0;
|
|
||||||
+ guint device_major = 0;
|
|
||||||
+ guint device_minor = 0;
|
|
||||||
|
|
||||||
/* If we didn't check supported services, just assume it is supported */
|
|
||||||
if (!self->priv->supported_services)
|
|
||||||
@@ -498,7 +500,7 @@ check_message_supported (QmiDevice *self,
|
|
||||||
|
|
||||||
/* If we cannot get in which version this message was introduced, we'll just
|
|
||||||
* assume it's supported */
|
|
||||||
- if (!qmi_message_get_version_introduced (message, &major, &minor))
|
|
||||||
+ if (!qmi_message_get_version_introduced (message, &message_major, &message_minor))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
/* Get version info. It MUST exist because we allowed creating a client
|
|
||||||
@@ -506,18 +508,34 @@ check_message_supported (QmiDevice *self,
|
|
||||||
info = find_service_version_info (self, qmi_message_get_service (message));
|
|
||||||
g_assert (info != NULL);
|
|
||||||
g_assert (info->service == qmi_message_get_service (message));
|
|
||||||
+ device_major = info->major_version;
|
|
||||||
+ device_minor = info->minor_version;
|
|
||||||
+
|
|
||||||
+ /* Some device firmware versions (Quectel EC21) lie about their supported
|
|
||||||
+ * DMS version, so assume a reasonable DMS version if the WDS version is
|
|
||||||
+ * high enough */
|
|
||||||
+ if (info->service == QMI_SERVICE_DMS && device_major == 1 && device_minor == 0) {
|
|
||||||
+ const QmiMessageCtlGetVersionInfoOutputServiceListService *wds;
|
|
||||||
+
|
|
||||||
+ wds = find_service_version_info (self, QMI_SERVICE_WDS);
|
|
||||||
+ g_assert (wds != NULL);
|
|
||||||
+ if (wds->major_version >= 1 && wds->minor_version >= 9) {
|
|
||||||
+ device_major = 1;
|
|
||||||
+ device_minor = 3;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* If the version of the message is greater than the version of the service,
|
|
||||||
* report unsupported */
|
|
||||||
- if (major > info->major_version ||
|
|
||||||
- (major == info->major_version &&
|
|
||||||
- minor > info->minor_version)) {
|
|
||||||
+ if (message_major > device_major ||
|
|
||||||
+ (message_major == device_major &&
|
|
||||||
+ message_minor > device_minor)) {
|
|
||||||
g_set_error (error,
|
|
||||||
QMI_CORE_ERROR,
|
|
||||||
QMI_CORE_ERROR_UNSUPPORTED,
|
|
||||||
"QMI service '%s' version '%u.%u' required, got version '%u.%u'",
|
|
||||||
qmi_service_get_string (qmi_message_get_service (message)),
|
|
||||||
- major, minor,
|
|
||||||
+ message_major, message_minor,
|
|
||||||
info->major_version,
|
|
||||||
info->minor_version);
|
|
||||||
return FALSE;
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
# Copyright (C) 2017 Digi International Inc.
|
|
||||||
|
|
||||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
|
||||||
|
|
||||||
SRC_URI += " \
|
|
||||||
file://0001-meta-digi-dey-Added-libqmi-patch-to-DMS-version-miss-match.patch \
|
|
||||||
"
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
|
||||||
|
DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems \
|
||||||
|
and devices which speak the Qualcomm MSM Interface (QMI) protocol"
|
||||||
|
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
|
||||||
|
LICENSE = "GPLv2 & LGPLv2.1"
|
||||||
|
LIC_FILES_CHKSUM = " \
|
||||||
|
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||||
|
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
|
||||||
|
"
|
||||||
|
|
||||||
|
DEPENDS = "glib-2.0 libgudev libmbim"
|
||||||
|
|
||||||
|
inherit autotools pkgconfig bash-completion
|
||||||
|
|
||||||
|
SRC_URI = " \
|
||||||
|
http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
|
||||||
|
file://0001-Detect-clang.patch \
|
||||||
|
"
|
||||||
|
SRC_URI[md5sum] = "25bae4e383ad77f491ad49b49e04fdcf"
|
||||||
|
SRC_URI[sha256sum] = "a0a42c55935e75a630208e2f70840bd4407f56fe1c5258f5b0f6c0aaedf88cec"
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Javier Viguera <javier.viguera@digi.com>
|
||||||
|
Date: Thu, 6 Apr 2017 11:17:46 +0200
|
||||||
|
Subject: [PATCH] configure.ac: add foreign automake option
|
||||||
|
|
||||||
|
Needed to build the repository directly in Yocto, so the missing
|
||||||
|
autotools files are generated.
|
||||||
|
|
||||||
|
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||||
|
---
|
||||||
|
configure.ac | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index c8a35d1b1a3f..24ed761d8e42 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -26,7 +26,7 @@ dnl-----------------------------------------------------------------------------
|
||||||
|
dnl autoconf, automake, libtool initialization
|
||||||
|
dnl
|
||||||
|
AC_INIT([ModemManager],[mm_version],[modemmanager-devel@lists.freedesktop.org],[ModemManager])
|
||||||
|
-AM_INIT_AUTOMAKE([1.11.2 subdir-objects tar-ustar no-dist-gzip dist-xz -Wno-portability])
|
||||||
|
+AM_INIT_AUTOMAKE([1.11.2 foreign subdir-objects tar-ustar no-dist-gzip dist-xz -Wno-portability])
|
||||||
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
|
AM_MAINTAINER_MODE([enable])
|
||||||
|
|
@ -1,144 +0,0 @@
|
||||||
From: Aleksander Morgado <aleksander@aleksander.es>
|
|
||||||
Date: Wed, 15 Mar 2017 00:03:35 +0100
|
|
||||||
Subject: [PATCH] telit: lock/unlock CSIM operations by default
|
|
||||||
|
|
||||||
Wrap the AT+CSIM=XX commands between lock (CSIM=1) and
|
|
||||||
unlock (CSIM=0) operations.
|
|
||||||
|
|
||||||
This seems to avoid the TTY lockup seen in several different Telit
|
|
||||||
modules.
|
|
||||||
|
|
||||||
https://bugs.freedesktop.org/show_bug.cgi?id=100205
|
|
||||||
|
|
||||||
Reported-by: Penalva, Salvador <Salvador.Penalva@digi.com>
|
|
||||||
(cherry picked from commit 9384817a14c8706909f619e773a76edd65a0fdef)
|
|
||||||
---
|
|
||||||
plugins/telit/mm-broadband-modem-telit.c | 69 +++++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 68 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
|
|
||||||
index 8baf2cf..264dd58 100644
|
|
||||||
--- a/plugins/telit/mm-broadband-modem-telit.c
|
|
||||||
+++ b/plugins/telit/mm-broadband-modem-telit.c
|
|
||||||
@@ -278,8 +278,17 @@ modem_load_supported_bands (MMIfaceModem *self,
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
-/* Load unlock retries (Modem interface) */
|
|
||||||
+/* Load unlock retries (Modem interface)
|
|
||||||
+ *
|
|
||||||
+ * NOTE: the logic must make sure that LOAD_UNLOCK_RETRIES_STEP_UNLOCK is always
|
|
||||||
+ * run if LOAD_UNLOCK_RETRIES_STEP_LOCK has been run. Currently, the logic just
|
|
||||||
+ * runs all intermediate steps ignoring errors (i.e. not completing the
|
|
||||||
+ * operation if something fails), so the LOAD_UNLOCK_RETRIES_STEP_UNLOCK is
|
|
||||||
+ * always run.
|
|
||||||
+ */
|
|
||||||
|
|
||||||
+#define CSIM_LOCK_STR "+CSIM=1"
|
|
||||||
+#define CSIM_UNLOCK_STR "+CSIM=0"
|
|
||||||
#define CSIM_QUERY_PIN_RETRIES_STR "+CSIM=10,0020000100"
|
|
||||||
#define CSIM_QUERY_PUK_RETRIES_STR "+CSIM=10,002C000100"
|
|
||||||
#define CSIM_QUERY_PIN2_RETRIES_STR "+CSIM=10,0020008100"
|
|
||||||
@@ -288,10 +297,12 @@ modem_load_supported_bands (MMIfaceModem *self,
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
LOAD_UNLOCK_RETRIES_STEP_FIRST,
|
|
||||||
+ LOAD_UNLOCK_RETRIES_STEP_LOCK,
|
|
||||||
LOAD_UNLOCK_RETRIES_STEP_PIN,
|
|
||||||
LOAD_UNLOCK_RETRIES_STEP_PUK,
|
|
||||||
LOAD_UNLOCK_RETRIES_STEP_PIN2,
|
|
||||||
LOAD_UNLOCK_RETRIES_STEP_PUK2,
|
|
||||||
+ LOAD_UNLOCK_RETRIES_STEP_UNLOCK,
|
|
||||||
LOAD_UNLOCK_RETRIES_STEP_LAST
|
|
||||||
} LoadUnlockRetriesStep;
|
|
||||||
|
|
||||||
@@ -328,6 +339,25 @@ modem_load_unlock_retries_finish (MMIfaceModem *self,
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
+csim_unlock_ready (MMBaseModem *self,
|
|
||||||
+ GAsyncResult *res,
|
|
||||||
+ LoadUnlockRetriesContext *ctx)
|
|
||||||
+{
|
|
||||||
+ const gchar *response;
|
|
||||||
+ GError *error = NULL;
|
|
||||||
+
|
|
||||||
+ /* Ignore errors */
|
|
||||||
+ response = mm_base_modem_at_command_finish (self, res, &error);
|
|
||||||
+ if (!response) {
|
|
||||||
+ mm_warn ("Couldn't unlock SIM card: %s", error->message);
|
|
||||||
+ g_error_free (error);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ctx->step++;
|
|
||||||
+ load_unlock_retries_step (ctx);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
csim_query_ready (MMBaseModem *self,
|
|
||||||
GAsyncResult *res,
|
|
||||||
LoadUnlockRetriesContext *ctx)
|
|
||||||
@@ -370,6 +400,7 @@ csim_query_ready (MMBaseModem *self,
|
|
||||||
mm_unlock_retries_set (ctx->retries, MM_MODEM_LOCK_SIM_PUK2, unlock_retries);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
+ g_assert_not_reached ();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -379,12 +410,40 @@ next_step:
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
+csim_lock_ready (MMBaseModem *self,
|
|
||||||
+ GAsyncResult *res,
|
|
||||||
+ LoadUnlockRetriesContext *ctx)
|
|
||||||
+{
|
|
||||||
+ const gchar *response;
|
|
||||||
+ GError *error = NULL;
|
|
||||||
+
|
|
||||||
+ response = mm_base_modem_at_command_finish (self, res, &error);
|
|
||||||
+ if (!response) {
|
|
||||||
+ g_prefix_error (&error, "Couldn't lock SIM card: ");
|
|
||||||
+ g_simple_async_result_take_error (ctx->result, error);
|
|
||||||
+ load_unlock_retries_context_complete_and_free (ctx);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ctx->step++;
|
|
||||||
+ load_unlock_retries_step (ctx);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
load_unlock_retries_step (LoadUnlockRetriesContext *ctx)
|
|
||||||
{
|
|
||||||
switch (ctx->step) {
|
|
||||||
case LOAD_UNLOCK_RETRIES_STEP_FIRST:
|
|
||||||
/* Fall back on next step */
|
|
||||||
ctx->step++;
|
|
||||||
+ case LOAD_UNLOCK_RETRIES_STEP_LOCK:
|
|
||||||
+ mm_base_modem_at_command (MM_BASE_MODEM (ctx->self),
|
|
||||||
+ CSIM_LOCK_STR,
|
|
||||||
+ CSIM_QUERY_TIMEOUT,
|
|
||||||
+ FALSE,
|
|
||||||
+ (GAsyncReadyCallback) csim_lock_ready,
|
|
||||||
+ ctx);
|
|
||||||
+ break;
|
|
||||||
case LOAD_UNLOCK_RETRIES_STEP_PIN:
|
|
||||||
mm_base_modem_at_command (MM_BASE_MODEM (ctx->self),
|
|
||||||
CSIM_QUERY_PIN_RETRIES_STR,
|
|
||||||
@@ -417,6 +476,14 @@ load_unlock_retries_step (LoadUnlockRetriesContext *ctx)
|
|
||||||
(GAsyncReadyCallback) csim_query_ready,
|
|
||||||
ctx);
|
|
||||||
break;
|
|
||||||
+ case LOAD_UNLOCK_RETRIES_STEP_UNLOCK:
|
|
||||||
+ mm_base_modem_at_command (MM_BASE_MODEM (ctx->self),
|
|
||||||
+ CSIM_UNLOCK_STR,
|
|
||||||
+ CSIM_QUERY_TIMEOUT,
|
|
||||||
+ FALSE,
|
|
||||||
+ (GAsyncReadyCallback) csim_unlock_ready,
|
|
||||||
+ ctx);
|
|
||||||
+ break;
|
|
||||||
case LOAD_UNLOCK_RETRIES_STEP_LAST:
|
|
||||||
if (ctx->succeded_requests == 0) {
|
|
||||||
g_simple_async_result_set_error (ctx->result,
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
From: Javier Viguera <javier.viguera@digi.com>
|
||||||
|
Date: Wed, 19 Apr 2017 14:13:56 +0200
|
||||||
|
Subject: [PATCH] port-serial: add B230400 and B921600 missing baudrates
|
||||||
|
|
||||||
|
So MM can use them when opening a specific serial port.
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||||
|
---
|
||||||
|
src/mm-port-serial.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
|
||||||
|
index 04ab17fe1675..b6359d28acd3 100644
|
||||||
|
--- a/src/mm-port-serial.c
|
||||||
|
+++ b/src/mm-port-serial.c
|
||||||
|
@@ -260,9 +260,15 @@ parse_baudrate (guint baudrate_num,
|
||||||
|
case 115200:
|
||||||
|
speed = B115200;
|
||||||
|
break;
|
||||||
|
+ case 230400:
|
||||||
|
+ speed = B230400;
|
||||||
|
+ break;
|
||||||
|
case 460800:
|
||||||
|
speed = B460800;
|
||||||
|
break;
|
||||||
|
+ case 921600:
|
||||||
|
+ speed = B921600;
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
ACTION!="add|change|move", GOTO="mm_digi_xbee_cellular_modem_end"
|
||||||
|
|
||||||
|
# By default, ModemManager expects a default baudrate of 57600bps. Different
|
||||||
|
# baudrates may be used by setting the ID_MM_TTY_BAUDRATE udev tag.
|
||||||
|
|
||||||
|
# ConnectCore 6 SBC
|
||||||
|
DEVPATH=="/devices/soc0/soc.0/2100000.aips-bus/21f4000.serial/tty/ttymxc4", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
|
||||||
|
|
||||||
|
# ConnectCore 6UL SBC Pro
|
||||||
|
DEVPATH=="/devices/platform/soc/2100000.aips-bus/21e8000.serial/tty/ttymxc1", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
|
||||||
|
|
||||||
|
LABEL="mm_digi_xbee_cellular_modem_end"
|
||||||
|
|
@ -7,8 +7,15 @@ POLLING_WAIT=5
|
||||||
[ -z "${IF_APN}" ] && exit 0
|
[ -z "${IF_APN}" ] && exit 0
|
||||||
|
|
||||||
background_connect() {
|
background_connect() {
|
||||||
|
# The XBee Cellular needs more time to settle down before MM is able
|
||||||
|
# to detect it. As the XBee is connected to a 'ttymxc' serial port,
|
||||||
|
# we check those ports to conditionally delay the launch of MM.
|
||||||
|
if echo "${IF_PORT}" | grep -qs ttymxc; then
|
||||||
|
sleep 25
|
||||||
|
fi
|
||||||
|
|
||||||
# Ensure ModemManager is running
|
# Ensure ModemManager is running
|
||||||
killall -0 ModemManager 2>/dev/null || ModemManager --log-file=/dev/null &
|
killall -0 ModemManager 2>/dev/null || ModemManager --log-file=/var/log/modemmanager.log &
|
||||||
|
|
||||||
# Wait for modem detection
|
# Wait for modem detection
|
||||||
while [ "${RETRIES}" -gt "0" ]; do
|
while [ "${RETRIES}" -gt "0" ]; do
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
||||||
|
|
||||||
SRC_URI += " \
|
SRC_URI += " \
|
||||||
file://cellularifupdown \
|
file://cellularifupdown \
|
||||||
file://0001-telit-lock-unlock-CSIM-operations-by-default.patch \
|
file://78-mm-digi-xbee-cellular.rules \
|
||||||
"
|
"
|
||||||
|
|
||||||
# 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So
|
# 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So
|
||||||
|
|
@ -17,4 +17,8 @@ do_install_append() {
|
||||||
install -d ${D}${sysconfdir}/network/if-pre-up.d/ ${D}${sysconfdir}/network/if-post-down.d/
|
install -d ${D}${sysconfdir}/network/if-pre-up.d/ ${D}${sysconfdir}/network/if-post-down.d/
|
||||||
install -m 0755 ${WORKDIR}/cellularifupdown ${D}${sysconfdir}/network/if-pre-up.d/
|
install -m 0755 ${WORKDIR}/cellularifupdown ${D}${sysconfdir}/network/if-pre-up.d/
|
||||||
ln -sf ../if-pre-up.d/cellularifupdown ${D}${sysconfdir}/network/if-post-down.d/cellularifupdown
|
ln -sf ../if-pre-up.d/cellularifupdown ${D}${sysconfdir}/network/if-post-down.d/cellularifupdown
|
||||||
|
|
||||||
|
# Install udev rules for XBee cellular
|
||||||
|
install -d ${D}${nonarch_base_libdir}/udev/rules.d
|
||||||
|
install -m 0644 ${WORKDIR}/78-mm-digi-xbee-cellular.rules ${D}${nonarch_base_libdir}/udev/rules.d/
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
|
||||||
|
DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile \
|
||||||
|
broadband (2G/3G/4G) devices and connections"
|
||||||
|
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
|
||||||
|
LICENSE = "GPL-2.0 & LGPL-2.1"
|
||||||
|
LIC_FILES_CHKSUM = " \
|
||||||
|
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||||
|
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
|
||||||
|
"
|
||||||
|
|
||||||
|
DEPENDS = "dbus-glib glib-2.0 intltool-native libgudev"
|
||||||
|
|
||||||
|
PV = "1.7.0+git${SRCPV}"
|
||||||
|
|
||||||
|
SRC_URI = " \
|
||||||
|
git://anongit.freedesktop.org/git/ModemManager/ModemManager.git;protocol=https \
|
||||||
|
file://0001-configure.ac-add-foreign-automake-option.patch \
|
||||||
|
file://0003-port-serial-add-B230400-and-B921600-missing-baudrate.patch \
|
||||||
|
"
|
||||||
|
SRCREV = "d09bc8baaa9fe93a72bb715530b1403a7a81c891"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
PACKAGECONFIG ??= "mbim qmi polkit \
|
||||||
|
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
|
||||||
|
"
|
||||||
|
PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,"
|
||||||
|
PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit"
|
||||||
|
PACKAGECONFIG[mbim] = "--with-mbim,--enable-mbim=no,libmbim"
|
||||||
|
PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
|
||||||
|
|
||||||
|
inherit autotools bash-completion gettext gobject-introspection gtk-doc pkgconfig systemd vala
|
||||||
|
|
||||||
|
FILES_${PN} += " \
|
||||||
|
${datadir}/icons \
|
||||||
|
${datadir}/polkit-1 \
|
||||||
|
${datadir}/dbus-1 \
|
||||||
|
${libdir}/ModemManager \
|
||||||
|
${systemd_unitdir}/system \
|
||||||
|
"
|
||||||
|
FILES_${PN}-dev += "${libdir}/ModemManager/*.la"
|
||||||
|
FILES_${PN}-staticdev += "${libdir}/ModemManager/*.a"
|
||||||
|
FILES_${PN}-dbg += "${libdir}/ModemManager/.debug"
|
||||||
|
|
||||||
|
SYSTEMD_SERVICE_${PN} = "ModemManager.service"
|
||||||
|
|
@ -21,6 +21,7 @@ lockfile="/var/lock/${scriptname}.lock"
|
||||||
lockfd="9"
|
lockfd="9"
|
||||||
|
|
||||||
BT_INIT="/etc/init.d/bluetooth-init"
|
BT_INIT="/etc/init.d/bluetooth-init"
|
||||||
|
BT_DAEMON="/etc/init.d/bluetooth"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
printf "\nSuspend system to RAM memory\n"
|
printf "\nSuspend system to RAM memory\n"
|
||||||
|
|
@ -37,6 +38,7 @@ suspend_interfaces() {
|
||||||
|
|
||||||
# Suspend bluetooth interface
|
# Suspend bluetooth interface
|
||||||
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
|
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
|
||||||
|
${BT_DAEMON} stop >/dev/null
|
||||||
${BT_INIT} stop >/dev/null
|
${BT_INIT} stop >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -47,7 +49,10 @@ resume_interfaces() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Resume bluetooth interface
|
# Resume bluetooth interface
|
||||||
[ -n "${up_bt_on_resume}" ] && ${BT_INIT} start >/dev/null
|
if [ -n "${up_bt_on_resume}" ]; then
|
||||||
|
${BT_INIT} start >/dev/null
|
||||||
|
${BT_DAEMON} start >/dev/null
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
enter_critical_section() {
|
enter_critical_section() {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ lockfile="/var/lock/${scriptname}.lock"
|
||||||
lockfd="9"
|
lockfd="9"
|
||||||
|
|
||||||
BT_INIT="/etc/init.d/bluetooth-init"
|
BT_INIT="/etc/init.d/bluetooth-init"
|
||||||
|
BT_DAEMON="/etc/init.d/bluetooth"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
printf "\nSuspend system to RAM memory\n"
|
printf "\nSuspend system to RAM memory\n"
|
||||||
|
|
@ -40,6 +41,7 @@ suspend_interfaces() {
|
||||||
|
|
||||||
# Suspend bluetooth interface
|
# Suspend bluetooth interface
|
||||||
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
|
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
|
||||||
|
${BT_DAEMON} stop >/dev/null
|
||||||
${BT_INIT} stop >/dev/null
|
${BT_INIT} stop >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -50,7 +52,10 @@ resume_interfaces() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Resume bluetooth interface
|
# Resume bluetooth interface
|
||||||
[ -n "${up_bt_on_resume}" ] && ${BT_INIT} start >/dev/null
|
if [ -n "${up_bt_on_resume}" ]; then
|
||||||
|
${BT_INIT} start >/dev/null
|
||||||
|
${BT_DAEMON} start >/dev/null
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
enter_critical_section() {
|
enter_critical_section() {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (C) 2013 Digi International.
|
# Copyright (C) 2013-2017 Digi International Inc.
|
||||||
|
|
||||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:"
|
FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:"
|
||||||
|
|
||||||
|
|
@ -82,7 +82,6 @@ do_install_append() {
|
||||||
|
|
||||||
if [ -n "${CELLULAR_PORT}" ]; then
|
if [ -n "${CELLULAR_PORT}" ]; then
|
||||||
sed -i -e 's/^\([[:blank:]]*\)port/\1port ${CELLULAR_PORT}/g' ${D}${sysconfdir}/network/interfaces
|
sed -i -e 's/^\([[:blank:]]*\)port/\1port ${CELLULAR_PORT}/g' ${D}${sysconfdir}/network/interfaces
|
||||||
sed -i -e 's,dhcp,manual,g' ${D}${sysconfdir}/network/interfaces
|
|
||||||
else
|
else
|
||||||
sed -i -e '/^[[:blank:]]*port/d' ${D}${sysconfdir}/network/interfaces
|
sed -i -e '/^[[:blank:]]*port/d' ${D}${sysconfdir}/network/interfaces
|
||||||
fi
|
fi
|
||||||
|
|
@ -139,3 +138,21 @@ do_install_append_ccimx6ul() {
|
||||||
sed -i -e "s,##WLAN1_STATIC_GATEWAY##,${WLAN1_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces
|
sed -i -e "s,##WLAN1_STATIC_GATEWAY##,${WLAN1_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces
|
||||||
sed -i -e "s,##WLAN1_STATIC_DNS##,${WLAN1_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces
|
sed -i -e "s,##WLAN1_STATIC_DNS##,${WLAN1_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Disable wireless interfaces on first boot for non-wireless variants
|
||||||
|
pkg_postinst_${PN}() {
|
||||||
|
if [ -n "$D" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "/proc/device-tree/wireless" ]; then
|
||||||
|
sed -i -e '/^auto wlan/{s,^,#,g};/^auto p2p/{s,^,#,g}' /etc/network/interfaces
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the symlinks in the different runlevels
|
||||||
|
if type update-rc.d >/dev/null 2>/dev/null; then
|
||||||
|
update-rc.d ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS}
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ REBOOT_TIME=10
|
||||||
# @param ${1} - Text to print.
|
# @param ${1} - Text to print.
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
log() {
|
log() {
|
||||||
echo "[RECOVERY] ${1}"
|
echo "[RECOVERY] ${1}" 1>&2
|
||||||
}
|
}
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
@ -254,21 +254,56 @@ format_emmc_block() {
|
||||||
#
|
#
|
||||||
# Get absolute path of update package searching in local media
|
# Get absolute path of update package searching in local media
|
||||||
#
|
#
|
||||||
# @param ${1} - SWU package name
|
# @param ${1} - SWU package
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
swu_package_path() {
|
swu_package_path() {
|
||||||
for i in ${UPDATE_MOUNT_DIR} $(echo ${USB_MOUNT_DIR}/*); do
|
# Check whether the package is local and get the absolute path.
|
||||||
echo $i | grep -qs "${USB_MOUNT_DIR}/\*" && continue
|
if echo "${1}" | grep -qs '^file://'; then
|
||||||
if [ -f "${i}/${1}" ]; then
|
local pkg_name="$(basename ${1})"
|
||||||
swu_abspath="${i}/${1}"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "${swu_abspath}" ]; then
|
for i in ${UPDATE_MOUNT_DIR} $(echo ${USB_MOUNT_DIR}/*); do
|
||||||
echo "${swu_abspath}"
|
echo $i | grep -qs "${USB_MOUNT_DIR}/\*" && continue
|
||||||
|
if [ -f "${i}/${pkg_name}" ]; then
|
||||||
|
swu_abspath="${i}/${pkg_name}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "${swu_abspath}" ]; then
|
||||||
|
echo "${swu_abspath}"
|
||||||
|
else
|
||||||
|
quit_with_error "Unable to find update package '${pkg_name}'"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
quit_with_error "Unable to find update package '${1}'"
|
echo "${1}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Function - check_swu_package
|
||||||
|
#
|
||||||
|
# Check if the update package is a valid one and get its absolute path
|
||||||
|
#
|
||||||
|
# @param ${1} - SWU package
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
check_swu_package() {
|
||||||
|
log "Checking update package '$(basename ${1})'"
|
||||||
|
|
||||||
|
if [ -z "${1}" ]; then
|
||||||
|
quit_with_error "Firmware update package not specified"
|
||||||
|
fi
|
||||||
|
|
||||||
|
update_package="$(swu_package_path ${1})"
|
||||||
|
|
||||||
|
# Check software update package.
|
||||||
|
if [ -f "${PUBLIC_KEY}" ]; then
|
||||||
|
swupdate -c -i "${update_package}" -k "${PUBLIC_KEY}"
|
||||||
|
else
|
||||||
|
swupdate -c -i "${update_package}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
quit_with_error "Invalid update package '$(basename ${1})'"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -395,11 +430,17 @@ for arg in ${COMMAND}; do
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Sanity checks.
|
||||||
|
if [ -n "${update_package_bool}" ]; then
|
||||||
|
check_swu_package "${update_package}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Check if encryption key command is configured.
|
# Check if encryption key command is configured.
|
||||||
if [ -n "${encryption_key_bool}" ]; then
|
if [ -n "${encryption_key_bool}" ]; then
|
||||||
log "Trustfence encryption key setup requested (new key: ${encryption_key:-random})"
|
log "Trustfence encryption key setup requested (new key: ${encryption_key:-random})"
|
||||||
psplash_message "Configuring new encryption key..."
|
psplash_message "Configuring new encryption key..."
|
||||||
psplash_progress "0"
|
psplash_progress "0"
|
||||||
|
|
||||||
trustfence-tool "--newkey${encryption_key:+=${encryption_key}}"
|
trustfence-tool "--newkey${encryption_key:+=${encryption_key}}"
|
||||||
if [ "$?" = "0" ]; then
|
if [ "$?" = "0" ]; then
|
||||||
psplash_progress "10"
|
psplash_progress "10"
|
||||||
|
|
@ -425,35 +466,27 @@ if [ -n "${update_package_bool}" ]; then
|
||||||
log "Firmware update requested"
|
log "Firmware update requested"
|
||||||
psplash_message "Updating firmware..."
|
psplash_message "Updating firmware..."
|
||||||
psplash_progress "0"
|
psplash_progress "0"
|
||||||
if [ -z "${update_package}" ]; then
|
|
||||||
quit_with_error "Firmware update package not specified"
|
# Format the UBI volume before updating.
|
||||||
|
if [ "$(is_nand)" = "yes" ]; then
|
||||||
|
psplash_message "Formatting rootfs partition..."
|
||||||
|
format_ubi_volume rootfs
|
||||||
|
psplash_progress "0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Update package location: ${update_package}"
|
||||||
|
# Execute the progress binary.
|
||||||
|
progress -wp &
|
||||||
|
# Execute the software update.
|
||||||
|
if [ -f "${PUBLIC_KEY}" ]; then
|
||||||
|
swupdate -f "${SW_CONFIG}" -i "${update_package}" -k "${PUBLIC_KEY}"
|
||||||
else
|
else
|
||||||
# Format the UBI volume before updating.
|
swupdate -f "${SW_CONFIG}" -i "${update_package}"
|
||||||
if [ "$(is_nand)" = "yes" ]; then
|
fi
|
||||||
psplash_message "Formatting rootfs partition..."
|
if [ "$?" = "0" ]; then
|
||||||
format_ubi_volume rootfs
|
log "Firmware update process succeed!"
|
||||||
psplash_progress "0"
|
else
|
||||||
fi
|
quit_with_error "Error executing the firmware update"
|
||||||
|
|
||||||
# Check whether the package is local and get the absolute path
|
|
||||||
if echo "${update_package}" | grep -qs '^file://'; then
|
|
||||||
update_package="$(swu_package_path $(basename ${update_package}))"
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "Update package location: ${update_package}"
|
|
||||||
# Execute the progress binary.
|
|
||||||
progress -wp &
|
|
||||||
# Execute the software update.
|
|
||||||
if [ -f "${PUBLIC_KEY}" ]; then
|
|
||||||
swupdate -f "${SW_CONFIG}" -i "${update_package}" -k "${PUBLIC_KEY}"
|
|
||||||
else
|
|
||||||
swupdate -f "${SW_CONFIG}" -i "${update_package}"
|
|
||||||
fi
|
|
||||||
if [ "$?" = "0" ]; then
|
|
||||||
log "Firmware update process succeed!"
|
|
||||||
else
|
|
||||||
quit_with_error "Error executing the firmware update"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,6 @@ do_install() {
|
||||||
install -m 0755 hdp-test.py ${D}${bindir}
|
install -m 0755 hdp-test.py ${D}${bindir}
|
||||||
}
|
}
|
||||||
|
|
||||||
RDEPENDS_${PN} = "python python-argparse python-crypt python-dbus python-pygobject"
|
RDEPENDS_${PN} = "python3 python3-argparse python3-crypt python3-dbus python3-pygobject"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE = "(ccardimx28|ccimx6$|ccimx6ul)"
|
COMPATIBLE_MACHINE = "(ccardimx28|ccimx6$|ccimx6ul)"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -9,12 +9,13 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import glib
|
from gi.repository import GLib
|
||||||
import dbus
|
import dbus
|
||||||
import socket
|
import socket
|
||||||
import dbus.service
|
import dbus.service
|
||||||
import gobject
|
from gi.repository import GObject
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
from dbus.mainloop.glib import DBusGMainLoop
|
||||||
|
from dbus.exceptions import DBusException
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
# from hdp_utils import *
|
# from hdp_utils import *
|
||||||
|
|
@ -31,18 +32,8 @@ class MessageType:
|
||||||
Release_Confirmation, Data, Unknown) = range(0, 6)
|
Release_Confirmation, Data, Unknown) = range(0, 6)
|
||||||
|
|
||||||
class HdpMessage:
|
class HdpMessage:
|
||||||
def s2b(self, msg):
|
|
||||||
if msg is None:
|
|
||||||
return None
|
|
||||||
return [ord(x) for x in msg]
|
|
||||||
|
|
||||||
def b2s(self, msg):
|
|
||||||
if msg is None:
|
|
||||||
return None
|
|
||||||
return "".join([chr(int(x)) for x in msg])
|
|
||||||
|
|
||||||
def getAssociationResponse(self, invokeId):
|
def getAssociationResponse(self, invokeId):
|
||||||
return self.b2s((
|
return bytes((
|
||||||
0xe3, 0x00, #APDU CHOICE Type(AareApdu)
|
0xe3, 0x00, #APDU CHOICE Type(AareApdu)
|
||||||
0x00, 0x2c, #CHOICE.length = 44
|
0x00, 0x2c, #CHOICE.length = 44
|
||||||
0x00, 0x00, #result=accept (known config)
|
0x00, 0x00, #result=accept (known config)
|
||||||
|
|
@ -62,7 +53,7 @@ class HdpMessage:
|
||||||
))
|
))
|
||||||
|
|
||||||
def getConfigurationResp(self, invokeId):
|
def getConfigurationResp(self, invokeId):
|
||||||
return self.b2s((
|
return bytes((
|
||||||
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
||||||
0x00, 0x16, #CHOICE.length = 22
|
0x00, 0x16, #CHOICE.length = 22
|
||||||
0x00, 0x14, #OCTET STRING.length = 20
|
0x00, 0x14, #OCTET STRING.length = 20
|
||||||
|
|
@ -78,24 +69,24 @@ class HdpMessage:
|
||||||
))
|
))
|
||||||
|
|
||||||
def getReleaseRequest(self, invokeId):
|
def getReleaseRequest(self, invokeId):
|
||||||
return self.b2s((0xe4, 0x00, 0x00, 0x02, 0x00, 0x00))
|
return bytes((0xe4, 0x00, 0x00, 0x02, 0x00, 0x00))
|
||||||
|
|
||||||
def getReleaseResponse(self, invokeId):
|
def getReleaseResponse(self, invokeId):
|
||||||
return self.b2s((0xe5, 0x00, 0x00, 0x02, 0x00, 0x00))
|
return bytes((0xe5, 0x00, 0x00, 0x02, 0x00, 0x00))
|
||||||
|
|
||||||
def getDataResponse(self, invokeId):
|
def getDataResponse(self, invokeId):
|
||||||
return self.b2s((
|
return bytes((
|
||||||
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
||||||
0x00, 0x12, #CHOICE.length = 18
|
0x00, 0x12, #CHOICE.length = 18
|
||||||
0x00, 0x10, #OCTET STRING.length = 16
|
0x00, 0x10, #OCTET STRING.length = 16
|
||||||
invokeId[0], invokeId[1], #invoke-id (mirrored from invocation)
|
invokeId[0], invokeId[1], #invoke-id (mirrored from invocation)
|
||||||
0x02, 0x01, #CHOICE(Remote Operation Response | Confirmed Event Report)
|
0x02, 0x01, #CHOICE(Remote Operation Response | Confirmed Event Report)
|
||||||
0x00, 0x0a, #CHOICE.length = 10
|
0x00, 0x0a, #CHOICE.length = 10
|
||||||
0x00, 0x00, #obj-handle = 0 (MDS object)
|
0x00, 0x00, #obj-handle = 0 (MDS object)
|
||||||
0x00, 0x00, 0x00, 0x00, #currentTime = 0
|
0x00, 0x00, 0x00, 0x00, #currentTime = 0
|
||||||
0x0d, 0x1d, #event-type = MDC_NOTI_SCAN_REPORT_FIXED
|
0x0d, 0x1d, #event-type = MDC_NOTI_SCAN_REPORT_FIXED
|
||||||
0x00, 0x00, #event-reply-info.length = 0
|
0x00, 0x00, #event-reply-info.length = 0
|
||||||
))
|
))
|
||||||
|
|
||||||
def parse(self, string_msg):
|
def parse(self, string_msg):
|
||||||
#
|
#
|
||||||
|
|
@ -113,28 +104,27 @@ class HdpMessage:
|
||||||
invokeId = (0, 0)
|
invokeId = (0, 0)
|
||||||
sp02 = 0
|
sp02 = 0
|
||||||
pulse = 0
|
pulse = 0
|
||||||
msg = self.s2b(string_msg)
|
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "IEEE opcode received: %x, length = %d" % (int(msg[0]), len(msg))
|
print("IEEE opcode received: %x, length = %d" % (int(string_msg[0]), len(string_msg)))
|
||||||
for i in range(len(msg)):
|
for i in range(len(string_msg)):
|
||||||
if ((i & 15) == 0):
|
if ((i & 15) == 0):
|
||||||
print
|
print
|
||||||
print '%2.2X' % int(msg[i]),
|
print('%2.2X' % int(string_msg[i]),)
|
||||||
print
|
print
|
||||||
|
|
||||||
if int(msg[0]) == 0xe2:
|
if int(string_msg[0]) == 0xe2:
|
||||||
msg_type = MessageType.Association
|
msg_type = MessageType.Association
|
||||||
elif int(msg[0]) == 0xe7:
|
elif int(string_msg[0]) == 0xe7:
|
||||||
invokeId = int(msg[6]), int(msg[7])
|
invokeId = int(string_msg[6]), int(string_msg[7])
|
||||||
if int(msg[18]) == 0x0d and int(msg[19]) == 0x1c:
|
if int(string_msg[18]) == 0x0d and int(string_msg[19]) == 0x1c:
|
||||||
msg_type = MessageType.Configuration
|
msg_type = MessageType.Configuration
|
||||||
else:
|
else:
|
||||||
msg_type = MessageType.Data
|
msg_type = MessageType.Data
|
||||||
sp02 = int(msg[35])
|
sp02 = int(string_msg[35])
|
||||||
pulse = int(msg[49])
|
pulse = int(string_msg[49])
|
||||||
elif int(msg[0]) == 0xe4:
|
elif int(string_msg[0]) == 0xe4:
|
||||||
msg_type = MessageType.Release_Request
|
msg_type = MessageType.Release_Request
|
||||||
elif int(msg[0]) == 0xe5:
|
elif int(string_msg[0]) == 0xe5:
|
||||||
msg_type = MessageType.Release_Confirmation
|
msg_type = MessageType.Release_Confirmation
|
||||||
else:
|
else:
|
||||||
msg_type = MessageType.Unknown
|
msg_type = MessageType.Unknown
|
||||||
|
|
@ -152,7 +142,7 @@ def receive_data(sk, evt):
|
||||||
data = None
|
data = None
|
||||||
disconnecting = False
|
disconnecting = False
|
||||||
hdp = HdpMessage()
|
hdp = HdpMessage()
|
||||||
if evt & glib.IO_IN:
|
if evt & GLib.IO_IN:
|
||||||
try:
|
try:
|
||||||
data = sk.recv(1024)
|
data = sk.recv(1024)
|
||||||
except IOError:
|
except IOError:
|
||||||
|
|
@ -163,44 +153,44 @@ def receive_data(sk, evt):
|
||||||
invokeId = result[1]
|
invokeId = result[1]
|
||||||
if msgType == MessageType.Association:
|
if msgType == MessageType.Association:
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Oximeter has associated"
|
print("Oximeter has associated")
|
||||||
sk.send(hdp.getAssociationResponse(invokeId))
|
sk.send(hdp.getAssociationResponse(invokeId))
|
||||||
elif msgType == MessageType.Configuration:
|
elif msgType == MessageType.Configuration:
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Received configuration data"
|
print("Received configuration data")
|
||||||
sk.send(hdp.getConfigurationResponse(invokeId))
|
sk.send(hdp.getConfigurationResponse(invokeId))
|
||||||
elif msgType == MessageType.Release_Request:
|
elif msgType == MessageType.Release_Request:
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Received release request"
|
print("Received release request")
|
||||||
sk.send(hdp.getReleaseResponse(invokeId))
|
sk.send(hdp.getReleaseResponse(invokeId))
|
||||||
disconnecting = True
|
disconnecting = True
|
||||||
elif msgType == MessageType.Release_Confirmation:
|
elif msgType == MessageType.Release_Confirmation:
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Received release confirmation"
|
print("Received release confirmation")
|
||||||
disconnecting = True
|
disconnecting = True
|
||||||
elif msgType == MessageType.Data:
|
elif msgType == MessageType.Data:
|
||||||
sk.send(hdp.getDataResponse(invokeId))
|
sk.send(hdp.getDataResponse(invokeId))
|
||||||
sp02 = result[2]
|
sp02 = result[2]
|
||||||
pulse = result[3]
|
pulse = result[3]
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Received data from oximeter"
|
print("Received data from oximeter")
|
||||||
print "SpO2 Level: %d, Beats/second: %d" % \
|
print("SpO2 Level: %d, Beats/second: %d" % \
|
||||||
(result[2], result[3])
|
(result[2], result[3]))
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Sending disconnect"
|
print("Sending disconnect")
|
||||||
sk.send(hdp.getReleaseRequest(invokeId))
|
sk.send(hdp.getReleaseRequest(invokeId))
|
||||||
else:
|
else:
|
||||||
print "Received unknown message, disconnecting"
|
print("Received unknown message, disconnecting")
|
||||||
sk.send(hdp.getReleaseRequest(invokeId))
|
sk.send(hdp.getReleaseRequest(invokeId))
|
||||||
disconnecting = True
|
disconnecting = True
|
||||||
|
|
||||||
if disconnecting or evt != glib.IO_IN or not data:
|
if disconnecting or evt != GLib.IO_IN or not data:
|
||||||
try:
|
try:
|
||||||
sk.shutdown(2)
|
sk.shutdown(2)
|
||||||
except IOError:
|
except IOError:
|
||||||
pass
|
pass
|
||||||
sk.close()
|
sk.close()
|
||||||
print "Disconnected from oximeter"
|
print("Disconnected from oximeter")
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
@ -223,9 +213,9 @@ class SignalHandler(object):
|
||||||
dbus_interface=HEALTH_DEVICE_INTERFACE)
|
dbus_interface=HEALTH_DEVICE_INTERFACE)
|
||||||
|
|
||||||
def ChannelConnected(self, channel, interface, device):
|
def ChannelConnected(self, channel, interface, device):
|
||||||
print "%s has connected" % device
|
print("%s has connected" % device)
|
||||||
if debugOn:
|
if debugOn:
|
||||||
print "Channel: %s" % channel
|
print("Channel: %s" % channel)
|
||||||
#
|
#
|
||||||
# The oximeter has connected to us. Let's get
|
# The oximeter has connected to us. Let's get
|
||||||
# a socket for the connection.
|
# a socket for the connection.
|
||||||
|
|
@ -241,14 +231,14 @@ class SignalHandler(object):
|
||||||
# Now set up our receiver function to be called
|
# Now set up our receiver function to be called
|
||||||
# when interesting events are detected on that
|
# when interesting events are detected on that
|
||||||
# socket
|
# socket
|
||||||
watch_bitmap = glib.IO_IN | glib.IO_ERR| glib.IO_HUP | glib.IO_NVAL
|
watch_bitmap = GLib.IO_IN | GLib.IO_ERR| GLib.IO_HUP | GLib.IO_NVAL
|
||||||
glib.io_add_watch(sk, watch_bitmap, receive_data)
|
GLib.io_add_watch(sk, watch_bitmap, receive_data)
|
||||||
except DBusException:
|
except DBusException:
|
||||||
print "Error communicating with Oximeter."
|
print("Error communicating with Oximeter.")
|
||||||
print "Please make sure the Oximeter has fresh batteries."
|
print("Please make sure the Oximeter has fresh batteries.")
|
||||||
|
|
||||||
def ChannelDeleted(self, channel, interface, device):
|
def ChannelDeleted(self, channel, interface, device):
|
||||||
print "Device %s channel %s deleted" % (device, channel)
|
print("Device %s channel %s deleted" % (device, channel))
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("-d", "--debug", help="supply debug output",
|
parser.add_argument("-d", "--debug", help="supply debug output",
|
||||||
|
|
@ -257,7 +247,7 @@ args = parser.parse_args()
|
||||||
debugOn = args.debug
|
debugOn = args.debug
|
||||||
|
|
||||||
DBusGMainLoop(set_as_default=True)
|
DBusGMainLoop(set_as_default=True)
|
||||||
loop = gobject.MainLoop()
|
loop = GObject.MainLoop()
|
||||||
bus = dbus.SystemBus()
|
bus = dbus.SystemBus()
|
||||||
|
|
||||||
signal_handler = SignalHandler()
|
signal_handler = SignalHandler()
|
||||||
|
|
@ -275,16 +265,16 @@ config = dbus.Dictionary({"Role": "Sink", "DataType": dbus.types.UInt16(0x1004),
|
||||||
manager = dbus.Interface(bus.get_object(BUS_NAME, PATH),
|
manager = dbus.Interface(bus.get_object(BUS_NAME, PATH),
|
||||||
HEALTH_MANAGER_INTERFACE)
|
HEALTH_MANAGER_INTERFACE)
|
||||||
app = manager.CreateApplication(config)
|
app = manager.CreateApplication(config)
|
||||||
print "HDP application created, waiting for connection from"
|
print("HDP application created, waiting for connection from")
|
||||||
print "a pulse oximeter. Press control-c to terminate."
|
print("a pulse oximeter. Press control-c to terminate.")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
loop = glib.MainLoop()
|
loop = GLib.MainLoop()
|
||||||
loop.run()
|
loop.run()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
manager.DestroyApplication(app)
|
manager.DestroyApplication(app)
|
||||||
print
|
print
|
||||||
print "Application stopped"
|
print("Application stopped")
|
||||||
print
|
print
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ make_report(){
|
||||||
echo "- -"
|
echo "- -"
|
||||||
echo "--------------------------------------"
|
echo "--------------------------------------"
|
||||||
echo ""
|
echo ""
|
||||||
for f in $(find /var/log/ -name *.log); do
|
for f in $(find /var/log/ -name "*.log"); do
|
||||||
echo "${f} FILE";
|
echo "${f} FILE";
|
||||||
echo "---------------------------------------";
|
echo "---------------------------------------";
|
||||||
cat ${f};
|
cat ${f};
|
||||||
|
|
@ -196,8 +196,15 @@ make_report(){
|
||||||
else
|
else
|
||||||
echo "[NOT FOUND] /etc/wpa_supplicant.conf"
|
echo "[NOT FOUND] /etc/wpa_supplicant.conf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
if [ -f "/etc/wpa_supplicant_p2p.conf" ]; then
|
||||||
|
echo "wpa_supplicant_p2p.conf:"
|
||||||
|
cat "/etc/wpa_supplicant_p2p.conf"
|
||||||
|
else
|
||||||
|
echo "[NOT FOUND] /etc/wpa_supplicant_p2p.conf"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
hostapd -v 2>&1
|
hostapd -v 2>&1
|
||||||
echo ""
|
echo ""
|
||||||
if [ -f "/etc/hostapd.conf" ]; then
|
if [ -f "/etc/hostapd.conf" ]; then
|
||||||
|
|
@ -206,6 +213,20 @@ make_report(){
|
||||||
else
|
else
|
||||||
echo "[NOT FOUND] hostapd.conf"
|
echo "[NOT FOUND] hostapd.conf"
|
||||||
fi
|
fi
|
||||||
|
echo ""
|
||||||
|
if [ -f "/etc/hostapd_wlan0.conf" ]; then
|
||||||
|
echo "hostapd_wlan0.conf:"
|
||||||
|
cat "/etc/hostapd_wlan0.conf"
|
||||||
|
else
|
||||||
|
echo "[NOT FOUND] /etc/hostapd_wlan0.conf"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
if [ -f "/etc/hostapd_wlan1.conf" ]; then
|
||||||
|
echo "hostapd_wlan1.conf:"
|
||||||
|
cat "/etc/hostapd_wlan1.conf"
|
||||||
|
else
|
||||||
|
echo "[NOT FOUND] /etc/hostapd_wlan1.conf"
|
||||||
|
fi
|
||||||
printf "\n\n"
|
printf "\n\n"
|
||||||
|
|
||||||
echo "--------------------------------------"
|
echo "--------------------------------------"
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ SRC_URI_append_ccimx6sbc = " \
|
||||||
file://dey-audio-sgtl5000.conf \
|
file://dey-audio-sgtl5000.conf \
|
||||||
"
|
"
|
||||||
|
|
||||||
|
EXTRA_OECONF_append_ccimx6sbc = " --disable-memfd"
|
||||||
|
|
||||||
do_install_append_ccimx6sbc() {
|
do_install_append_ccimx6sbc() {
|
||||||
install -d ${D}${sysconfdir}/udev/scripts
|
install -d ${D}${sysconfdir}/udev/scripts
|
||||||
install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts
|
install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue