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:
|
||||
* New toolchain based on GCC-6.2.0 and GLIBC-2.24
|
||||
* 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
|
||||
* Remote manager
|
||||
* Local and remote manager firmware update
|
||||
* Package upgrades and security fixes
|
||||
* U-boot support for 1GB DDR3 RAM on CC6UL
|
||||
|
||||
# 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
|
||||
configured to operate at 115200 bps and without hardware flow control,
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ include conf/machine/include/ccimx6ul.inc
|
|||
|
||||
# U-Boot configurations
|
||||
# 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"
|
||||
|
||||
KERNEL_DEVICETREE ?= " \
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ include conf/machine/include/ccimx6ul.inc
|
|||
|
||||
# U-Boot configurations
|
||||
# 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"
|
||||
|
||||
KERNEL_DEVICETREE ?= " \
|
||||
|
|
|
|||
|
|
@ -19,8 +19,6 @@ FW_QCA6564-WIFI = " \
|
|||
file://otp30.bin \
|
||||
file://qwlan30.bin \
|
||||
file://utf30.bin \
|
||||
file://wlan/cfg.dat \
|
||||
file://wlan/qcom_cfg.ini \
|
||||
"
|
||||
|
||||
SRC_URI = " \
|
||||
|
|
@ -41,7 +39,7 @@ do_install() {
|
|||
${D}${base_libdir}/firmware/qca
|
||||
|
||||
# Wifi firmware
|
||||
install -d ${D}${base_libdir}/firmware/wlan
|
||||
install -d ${D}${base_libdir}/firmware
|
||||
install -m 0644 \
|
||||
bdwlan30_US.bin \
|
||||
bdwlan30_World.bin \
|
||||
|
|
@ -50,10 +48,6 @@ do_install() {
|
|||
qwlan30.bin \
|
||||
utf30.bin \
|
||||
${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)
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -11,7 +11,7 @@ else
|
|||
#
|
||||
# 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
|
||||
elif test "${module_variant}" = "0x03"; then
|
||||
setenv fdt_file zImage-imx6ul-ccimx6ulsbc.dtb
|
||||
|
|
|
|||
|
|
@ -19,8 +19,36 @@ if test $? -eq 1; then
|
|||
exit;
|
||||
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_UBOOT_FILENAME u-boot-ccimx6ulsbc.imx
|
||||
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_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6ulsbc.ubifs
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ else
|
|||
#
|
||||
# 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
|
||||
elif test "${module_variant}" = "0x03"; then
|
||||
setenv fdt_file zImage-imx6ul-ccimx6ulstarter.dtb
|
||||
|
|
|
|||
|
|
@ -19,8 +19,36 @@ if test $? -eq 1; then
|
|||
exit;
|
||||
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_UBOOT_FILENAME u-boot-ccimx6ulstarter.imx
|
||||
setenv INSTALL_LINUX_FILENAME core-image-base-ccimx6ulstarter.boot.ubifs
|
||||
setenv INSTALL_RECOVERY_FILENAME core-image-base-ccimx6ulstarter.recovery.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"
|
||||
SECTION = "console/tools"
|
||||
|
|
@ -7,11 +7,13 @@ LICENSE = "CLOSED"
|
|||
PKGNAME = "mca_tool"
|
||||
SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz"
|
||||
|
||||
SRC_URI[md5sum] = "d54692090bf0820e6116364822f6433f"
|
||||
SRC_URI[sha256sum] = "e8267e66ba496a1e77b2dec70d6555bdeb8e06b267e776c86b9d4b01e9d13eb5"
|
||||
SRC_URI[md5sum] = "20992b6b30904ee4d75d196c957077e0"
|
||||
SRC_URI[sha256sum] = "49458475dd5df11f0c4f4593ffc930fbcdaa457120f73ab18587d711eb9036f6"
|
||||
|
||||
S = "${WORKDIR}/${PKGNAME}-${PV}"
|
||||
|
||||
inherit bin_package
|
||||
|
||||
INSANE_SKIP_${PN} = "already-stripped"
|
||||
|
||||
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 -d ${D}${sysconfdir}/modprobe.d
|
||||
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} += " \
|
||||
${sysconfdir}/network/if-pre-up.d/qualcomm \
|
||||
${sysconfdir}/modprobe.d/qualcomm.conf \
|
||||
${base_libdir}/firmware/wlan/cfg.dat \
|
||||
${base_libdir}/firmware/wlan/qcom_cfg.ini \
|
||||
"
|
||||
|
||||
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}:"
|
||||
|
||||
SRC_URI += " \
|
||||
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://0003-gpu-Get-GPU-reserved-memory-from-DT.patch \
|
||||
"
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ CONFIG_ARM_IMX6Q_CPUFREQ=y
|
|||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_PM_DEBUG=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
|
|
@ -141,8 +140,6 @@ CONFIG_USB_NET_CDC_MBIM=y
|
|||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
CONFIG_USB_NET_QMI_WWAN=y
|
||||
CONFIG_USB_SIERRA_NET=y
|
||||
CONFIG_ATH_CARDS=m
|
||||
CONFIG_ATH_DEBUG=y
|
||||
CONFIG_HOSTAP=y
|
||||
CONFIG_HOSTAP_FIRMWARE=y
|
||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
||||
|
|
@ -157,7 +154,7 @@ CONFIG_TOUCHSCREEN_FUSION_7_10=y
|
|||
CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_MCA_CC6UL_PWRKEY=y
|
||||
CONFIG_SERIO_SERPORT=m
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_IMX=y
|
||||
|
|
@ -167,8 +164,6 @@ CONFIG_FSL_OTP=y
|
|||
CONFIG_I2C_CHARDEV=y
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_I2C_ALGOPCF=m
|
||||
CONFIG_I2C_ALGOPCA=m
|
||||
CONFIG_I2C_IMX=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_GPIO=y
|
||||
|
|
@ -249,7 +244,6 @@ CONFIG_USB_CHIPIDEA_UDC=y
|
|||
CONFIG_USB_CHIPIDEA_HOST=y
|
||||
CONFIG_USB_SERIAL=y
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
CONFIG_USB_SERIAL_FTDI_SIO=m
|
||||
CONFIG_USB_SERIAL_QUALCOMM=y
|
||||
CONFIG_USB_SERIAL_SIERRAWIRELESS=y
|
||||
CONFIG_USB_SERIAL_OPTION=y
|
||||
|
|
@ -257,25 +251,9 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
|||
CONFIG_NOP_USB_XCEIV=y
|
||||
CONFIG_USB_MXS_PHY=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_G_NCM=m
|
||||
CONFIG_USB_GADGETFS=m
|
||||
CONFIG_USB_MASS_STORAGE=m
|
||||
CONFIG_USB_G_SERIAL=m
|
||||
CONFIG_USB_CDC_COMPOSITE=m
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
|
|
@ -326,7 +304,6 @@ CONFIG_NLS_DEFAULT="cp437"
|
|||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_15=m
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
|
|
@ -335,7 +312,6 @@ CONFIG_MAGIC_SYSRQ=y
|
|||
# CONFIG_FTRACE is not set
|
||||
CONFIG_CRYPTO_USER=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_CTR=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_SECVIO=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_CRC_ITU_T=m
|
||||
CONFIG_CRC7=m
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_FONTS=y
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ generate_installer_zip () {
|
|||
# Get list of files to pack
|
||||
INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr"
|
||||
for ext in ${FSTYPES_WHITELIST}; do
|
||||
if readlink -e "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then
|
||||
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}"
|
||||
if readlink -e "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then
|
||||
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}"
|
||||
fi
|
||||
done
|
||||
for ubconf in ${UBOOT_CONFIG}; do
|
||||
|
|
@ -33,19 +33,20 @@ generate_installer_zip () {
|
|||
done
|
||||
|
||||
# Create README file
|
||||
cat >README.txt <<_EOF_
|
||||
cat >${IMGDEPLOYDIR}/README.txt <<_EOF_
|
||||
Digi Embedded Yocto kit installer
|
||||
---------------------------------
|
||||
|
||||
_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
|
||||
zip -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} README.txt
|
||||
# Pack the files and remove the temporary readme file
|
||||
zip -j ${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/README.txt
|
||||
rm -f ${IMGDEPLOYDIR}/README.txt
|
||||
|
||||
# Create the symlink
|
||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip" ]; then
|
||||
ln -sf ${IMAGE_NAME}.installer.zip ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.installer.zip
|
||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip" ]; then
|
||||
ln -sf ${IMAGE_NAME}.installer.zip ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.installer.zip
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,5 +51,6 @@ FILES_${PN}-init = "${sysconfdir}/init.d/bluetooth-init"
|
|||
|
||||
INITSCRIPT_PACKAGES += "${PN}-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}"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ interface=wlan1
|
|||
driver=nl80211
|
||||
|
||||
# WPA2-AES encryption
|
||||
ssid=ap-wpa2aes_a
|
||||
ssid=ap-wlan1-wpa2aes_a
|
||||
auth_algs=1
|
||||
wpa=2
|
||||
wpa_key_mgmt=WPA-PSK
|
||||
|
|
@ -4,7 +4,7 @@ interface=wlan0
|
|||
driver=nl80211
|
||||
|
||||
# WPA2-AES encryption
|
||||
ssid=ap-wpa2aes_a
|
||||
ssid=ap-wlan0-wpa2aes_a
|
||||
auth_algs=1
|
||||
wpa=2
|
||||
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}:"
|
||||
|
||||
SRC_URI += "file://hostapd.conf"
|
||||
SRC_URI_append = " file://hostapd_wlan0.conf"
|
||||
SRC_URI_append_ccimx6ul = " file://hostapd_wlan1.conf"
|
||||
|
||||
do_install_append() {
|
||||
# Overwrite the default hostapd.conf with our custom file
|
||||
install -m 0644 ${WORKDIR}/hostapd.conf ${D}${sysconfdir}
|
||||
# Remove the default hostapd.conf
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
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
|
||||
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
|
||||
while [ "${RETRIES}" -gt "0" ]; do
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
|||
|
||||
SRC_URI += " \
|
||||
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
|
||||
|
|
@ -17,4 +17,8 @@ do_install_append() {
|
|||
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/
|
||||
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"
|
||||
|
||||
BT_INIT="/etc/init.d/bluetooth-init"
|
||||
BT_DAEMON="/etc/init.d/bluetooth"
|
||||
|
||||
usage() {
|
||||
printf "\nSuspend system to RAM memory\n"
|
||||
|
|
@ -37,6 +38,7 @@ suspend_interfaces() {
|
|||
|
||||
# Suspend bluetooth interface
|
||||
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
|
||||
${BT_DAEMON} stop >/dev/null
|
||||
${BT_INIT} stop >/dev/null
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +49,10 @@ resume_interfaces() {
|
|||
fi
|
||||
|
||||
# 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() {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ lockfile="/var/lock/${scriptname}.lock"
|
|||
lockfd="9"
|
||||
|
||||
BT_INIT="/etc/init.d/bluetooth-init"
|
||||
BT_DAEMON="/etc/init.d/bluetooth"
|
||||
|
||||
usage() {
|
||||
printf "\nSuspend system to RAM memory\n"
|
||||
|
|
@ -40,6 +41,7 @@ suspend_interfaces() {
|
|||
|
||||
# Suspend bluetooth interface
|
||||
hciconfig hci0 2>&1 | grep -qs UP && up_bt_on_resume="1"
|
||||
${BT_DAEMON} stop >/dev/null
|
||||
${BT_INIT} stop >/dev/null
|
||||
}
|
||||
|
||||
|
|
@ -50,7 +52,10 @@ resume_interfaces() {
|
|||
fi
|
||||
|
||||
# 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() {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2013 Digi International.
|
||||
# Copyright (C) 2013-2017 Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:"
|
||||
|
||||
|
|
@ -82,7 +82,6 @@ do_install_append() {
|
|||
|
||||
if [ -n "${CELLULAR_PORT}" ]; then
|
||||
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
|
||||
sed -i -e '/^[[:blank:]]*port/d' ${D}${sysconfdir}/network/interfaces
|
||||
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_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.
|
||||
#------------------------------------------------------------------------------
|
||||
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
|
||||
#
|
||||
# @param ${1} - SWU package name
|
||||
# @param ${1} - SWU package
|
||||
#------------------------------------------------------------------------------
|
||||
swu_package_path() {
|
||||
for i in ${UPDATE_MOUNT_DIR} $(echo ${USB_MOUNT_DIR}/*); do
|
||||
echo $i | grep -qs "${USB_MOUNT_DIR}/\*" && continue
|
||||
if [ -f "${i}/${1}" ]; then
|
||||
swu_abspath="${i}/${1}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
# Check whether the package is local and get the absolute path.
|
||||
if echo "${1}" | grep -qs '^file://'; then
|
||||
local pkg_name="$(basename ${1})"
|
||||
|
||||
if [ -n "${swu_abspath}" ]; then
|
||||
echo "${swu_abspath}"
|
||||
for i in ${UPDATE_MOUNT_DIR} $(echo ${USB_MOUNT_DIR}/*); do
|
||||
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
|
||||
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
|
||||
}
|
||||
|
||||
|
|
@ -395,11 +430,17 @@ for arg in ${COMMAND}; do
|
|||
esac
|
||||
done
|
||||
|
||||
# Sanity checks.
|
||||
if [ -n "${update_package_bool}" ]; then
|
||||
check_swu_package "${update_package}"
|
||||
fi
|
||||
|
||||
# Check if encryption key command is configured.
|
||||
if [ -n "${encryption_key_bool}" ]; then
|
||||
log "Trustfence encryption key setup requested (new key: ${encryption_key:-random})"
|
||||
psplash_message "Configuring new encryption key..."
|
||||
psplash_progress "0"
|
||||
|
||||
trustfence-tool "--newkey${encryption_key:+=${encryption_key}}"
|
||||
if [ "$?" = "0" ]; then
|
||||
psplash_progress "10"
|
||||
|
|
@ -425,35 +466,27 @@ if [ -n "${update_package_bool}" ]; then
|
|||
log "Firmware update requested"
|
||||
psplash_message "Updating firmware..."
|
||||
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
|
||||
# Format the UBI volume before updating.
|
||||
if [ "$(is_nand)" = "yes" ]; then
|
||||
psplash_message "Formatting rootfs partition..."
|
||||
format_ubi_volume rootfs
|
||||
psplash_progress "0"
|
||||
fi
|
||||
|
||||
# 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
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@ do_install() {
|
|||
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)"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#
|
||||
|
|
@ -9,12 +9,13 @@
|
|||
|
||||
import sys
|
||||
import os
|
||||
import glib
|
||||
from gi.repository import GLib
|
||||
import dbus
|
||||
import socket
|
||||
import dbus.service
|
||||
import gobject
|
||||
from gi.repository import GObject
|
||||
from dbus.mainloop.glib import DBusGMainLoop
|
||||
from dbus.exceptions import DBusException
|
||||
import argparse
|
||||
|
||||
# from hdp_utils import *
|
||||
|
|
@ -31,18 +32,8 @@ class MessageType:
|
|||
Release_Confirmation, Data, Unknown) = range(0, 6)
|
||||
|
||||
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):
|
||||
return self.b2s((
|
||||
return bytes((
|
||||
0xe3, 0x00, #APDU CHOICE Type(AareApdu)
|
||||
0x00, 0x2c, #CHOICE.length = 44
|
||||
0x00, 0x00, #result=accept (known config)
|
||||
|
|
@ -62,7 +53,7 @@ class HdpMessage:
|
|||
))
|
||||
|
||||
def getConfigurationResp(self, invokeId):
|
||||
return self.b2s((
|
||||
return bytes((
|
||||
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
||||
0x00, 0x16, #CHOICE.length = 22
|
||||
0x00, 0x14, #OCTET STRING.length = 20
|
||||
|
|
@ -78,24 +69,24 @@ class HdpMessage:
|
|||
))
|
||||
|
||||
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):
|
||||
return self.b2s((0xe5, 0x00, 0x00, 0x02, 0x00, 0x00))
|
||||
return bytes((0xe5, 0x00, 0x00, 0x02, 0x00, 0x00))
|
||||
|
||||
def getDataResponse(self, invokeId):
|
||||
return self.b2s((
|
||||
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
||||
0x00, 0x12, #CHOICE.length = 18
|
||||
0x00, 0x10, #OCTET STRING.length = 16
|
||||
invokeId[0], invokeId[1], #invoke-id (mirrored from invocation)
|
||||
0x02, 0x01, #CHOICE(Remote Operation Response | Confirmed Event Report)
|
||||
0x00, 0x0a, #CHOICE.length = 10
|
||||
0x00, 0x00, #obj-handle = 0 (MDS object)
|
||||
0x00, 0x00, 0x00, 0x00, #currentTime = 0
|
||||
0x0d, 0x1d, #event-type = MDC_NOTI_SCAN_REPORT_FIXED
|
||||
0x00, 0x00, #event-reply-info.length = 0
|
||||
))
|
||||
return bytes((
|
||||
0xe7, 0x00, #APDU CHOICE Type(PrstApdu)
|
||||
0x00, 0x12, #CHOICE.length = 18
|
||||
0x00, 0x10, #OCTET STRING.length = 16
|
||||
invokeId[0], invokeId[1], #invoke-id (mirrored from invocation)
|
||||
0x02, 0x01, #CHOICE(Remote Operation Response | Confirmed Event Report)
|
||||
0x00, 0x0a, #CHOICE.length = 10
|
||||
0x00, 0x00, #obj-handle = 0 (MDS object)
|
||||
0x00, 0x00, 0x00, 0x00, #currentTime = 0
|
||||
0x0d, 0x1d, #event-type = MDC_NOTI_SCAN_REPORT_FIXED
|
||||
0x00, 0x00, #event-reply-info.length = 0
|
||||
))
|
||||
|
||||
def parse(self, string_msg):
|
||||
#
|
||||
|
|
@ -113,28 +104,27 @@ class HdpMessage:
|
|||
invokeId = (0, 0)
|
||||
sp02 = 0
|
||||
pulse = 0
|
||||
msg = self.s2b(string_msg)
|
||||
if debugOn:
|
||||
print "IEEE opcode received: %x, length = %d" % (int(msg[0]), len(msg))
|
||||
for i in range(len(msg)):
|
||||
if ((i & 15) == 0):
|
||||
print
|
||||
print '%2.2X' % int(msg[i]),
|
||||
print
|
||||
print("IEEE opcode received: %x, length = %d" % (int(string_msg[0]), len(string_msg)))
|
||||
for i in range(len(string_msg)):
|
||||
if ((i & 15) == 0):
|
||||
print
|
||||
print('%2.2X' % int(string_msg[i]),)
|
||||
print
|
||||
|
||||
if int(msg[0]) == 0xe2:
|
||||
if int(string_msg[0]) == 0xe2:
|
||||
msg_type = MessageType.Association
|
||||
elif int(msg[0]) == 0xe7:
|
||||
invokeId = int(msg[6]), int(msg[7])
|
||||
if int(msg[18]) == 0x0d and int(msg[19]) == 0x1c:
|
||||
elif int(string_msg[0]) == 0xe7:
|
||||
invokeId = int(string_msg[6]), int(string_msg[7])
|
||||
if int(string_msg[18]) == 0x0d and int(string_msg[19]) == 0x1c:
|
||||
msg_type = MessageType.Configuration
|
||||
else:
|
||||
msg_type = MessageType.Data
|
||||
sp02 = int(msg[35])
|
||||
pulse = int(msg[49])
|
||||
elif int(msg[0]) == 0xe4:
|
||||
sp02 = int(string_msg[35])
|
||||
pulse = int(string_msg[49])
|
||||
elif int(string_msg[0]) == 0xe4:
|
||||
msg_type = MessageType.Release_Request
|
||||
elif int(msg[0]) == 0xe5:
|
||||
elif int(string_msg[0]) == 0xe5:
|
||||
msg_type = MessageType.Release_Confirmation
|
||||
else:
|
||||
msg_type = MessageType.Unknown
|
||||
|
|
@ -152,7 +142,7 @@ def receive_data(sk, evt):
|
|||
data = None
|
||||
disconnecting = False
|
||||
hdp = HdpMessage()
|
||||
if evt & glib.IO_IN:
|
||||
if evt & GLib.IO_IN:
|
||||
try:
|
||||
data = sk.recv(1024)
|
||||
except IOError:
|
||||
|
|
@ -163,44 +153,44 @@ def receive_data(sk, evt):
|
|||
invokeId = result[1]
|
||||
if msgType == MessageType.Association:
|
||||
if debugOn:
|
||||
print "Oximeter has associated"
|
||||
print("Oximeter has associated")
|
||||
sk.send(hdp.getAssociationResponse(invokeId))
|
||||
elif msgType == MessageType.Configuration:
|
||||
if debugOn:
|
||||
print "Received configuration data"
|
||||
print("Received configuration data")
|
||||
sk.send(hdp.getConfigurationResponse(invokeId))
|
||||
elif msgType == MessageType.Release_Request:
|
||||
if debugOn:
|
||||
print "Received release request"
|
||||
print("Received release request")
|
||||
sk.send(hdp.getReleaseResponse(invokeId))
|
||||
disconnecting = True
|
||||
elif msgType == MessageType.Release_Confirmation:
|
||||
if debugOn:
|
||||
print "Received release confirmation"
|
||||
print("Received release confirmation")
|
||||
disconnecting = True
|
||||
elif msgType == MessageType.Data:
|
||||
sk.send(hdp.getDataResponse(invokeId))
|
||||
sp02 = result[2]
|
||||
pulse = result[3]
|
||||
if debugOn:
|
||||
print "Received data from oximeter"
|
||||
print "SpO2 Level: %d, Beats/second: %d" % \
|
||||
(result[2], result[3])
|
||||
print("Received data from oximeter")
|
||||
print("SpO2 Level: %d, Beats/second: %d" % \
|
||||
(result[2], result[3]))
|
||||
if debugOn:
|
||||
print "Sending disconnect"
|
||||
print("Sending disconnect")
|
||||
sk.send(hdp.getReleaseRequest(invokeId))
|
||||
else:
|
||||
print "Received unknown message, disconnecting"
|
||||
print("Received unknown message, disconnecting")
|
||||
sk.send(hdp.getReleaseRequest(invokeId))
|
||||
disconnecting = True
|
||||
|
||||
if disconnecting or evt != glib.IO_IN or not data:
|
||||
if disconnecting or evt != GLib.IO_IN or not data:
|
||||
try:
|
||||
sk.shutdown(2)
|
||||
except IOError:
|
||||
pass
|
||||
sk.close()
|
||||
print "Disconnected from oximeter"
|
||||
print("Disconnected from oximeter")
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
|
@ -223,9 +213,9 @@ class SignalHandler(object):
|
|||
dbus_interface=HEALTH_DEVICE_INTERFACE)
|
||||
|
||||
def ChannelConnected(self, channel, interface, device):
|
||||
print "%s has connected" % device
|
||||
print("%s has connected" % device)
|
||||
if debugOn:
|
||||
print "Channel: %s" % channel
|
||||
print("Channel: %s" % channel)
|
||||
#
|
||||
# The oximeter has connected to us. Let's get
|
||||
# a socket for the connection.
|
||||
|
|
@ -241,14 +231,14 @@ class SignalHandler(object):
|
|||
# Now set up our receiver function to be called
|
||||
# when interesting events are detected on that
|
||||
# socket
|
||||
watch_bitmap = glib.IO_IN | glib.IO_ERR| glib.IO_HUP | glib.IO_NVAL
|
||||
glib.io_add_watch(sk, watch_bitmap, receive_data)
|
||||
watch_bitmap = GLib.IO_IN | GLib.IO_ERR| GLib.IO_HUP | GLib.IO_NVAL
|
||||
GLib.io_add_watch(sk, watch_bitmap, receive_data)
|
||||
except DBusException:
|
||||
print "Error communicating with Oximeter."
|
||||
print "Please make sure the Oximeter has fresh batteries."
|
||||
print("Error communicating with Oximeter.")
|
||||
print("Please make sure the Oximeter has fresh batteries.")
|
||||
|
||||
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.add_argument("-d", "--debug", help="supply debug output",
|
||||
|
|
@ -257,7 +247,7 @@ args = parser.parse_args()
|
|||
debugOn = args.debug
|
||||
|
||||
DBusGMainLoop(set_as_default=True)
|
||||
loop = gobject.MainLoop()
|
||||
loop = GObject.MainLoop()
|
||||
bus = dbus.SystemBus()
|
||||
|
||||
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),
|
||||
HEALTH_MANAGER_INTERFACE)
|
||||
app = manager.CreateApplication(config)
|
||||
print "HDP application created, waiting for connection from"
|
||||
print "a pulse oximeter. Press control-c to terminate."
|
||||
print("HDP application created, waiting for connection from")
|
||||
print("a pulse oximeter. Press control-c to terminate.")
|
||||
|
||||
try:
|
||||
loop = glib.MainLoop()
|
||||
loop = GLib.MainLoop()
|
||||
loop.run()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
finally:
|
||||
manager.DestroyApplication(app)
|
||||
print
|
||||
print "Application stopped"
|
||||
print("Application stopped")
|
||||
print
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ make_report(){
|
|||
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 "---------------------------------------";
|
||||
cat ${f};
|
||||
|
|
@ -196,8 +196,15 @@ make_report(){
|
|||
else
|
||||
echo "[NOT FOUND] /etc/wpa_supplicant.conf"
|
||||
fi
|
||||
|
||||
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
|
||||
echo ""
|
||||
if [ -f "/etc/hostapd.conf" ]; then
|
||||
|
|
@ -206,6 +213,20 @@ make_report(){
|
|||
else
|
||||
echo "[NOT FOUND] hostapd.conf"
|
||||
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"
|
||||
|
||||
echo "--------------------------------------"
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ SRC_URI_append_ccimx6sbc = " \
|
|||
file://dey-audio-sgtl5000.conf \
|
||||
"
|
||||
|
||||
EXTRA_OECONF_append_ccimx6sbc = " --disable-memfd"
|
||||
|
||||
do_install_append_ccimx6sbc() {
|
||||
install -d ${D}${sysconfdir}/udev/scripts
|
||||
install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts
|
||||
|
|
|
|||
Loading…
Reference in New Issue