mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-16 17:01:37 +00:00
wlan-ap: initial import
based on the develop branch -> 6af07cd39cfa06ec8eb4d6182c7d7923236c2dbf Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
commit
ae51caf8a5
82
.github/workflows/build.yml
vendored
Normal file
82
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
name: Build OpenWrt with OpenSync
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ trunk ]
|
||||
|
||||
jobs:
|
||||
build-ea8300:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.GH_BUILD_TOKEN }}
|
||||
submodules: true
|
||||
- name: Build Image for EA8300
|
||||
env:
|
||||
GH_BUILD_USERNAME: ${{ secrets.GH_BUILD_USERNAME }}
|
||||
GH_BUILD_PASSWORD: ${{ secrets.GH_BUILD_PASSWORD }}
|
||||
run: |
|
||||
make TARGET=IPQ40XX
|
||||
TAG=$(date +%Y-%m-%d)-$(git rev-parse --short HEAD)
|
||||
TAR_NAME="ea8300-$TAG.tar.gz"
|
||||
tar cfz "$TAR_NAME" -C openwrt/bin/targets/ipq40xx/generic .
|
||||
curl -u "$GH_BUILD_USERNAME":"$GH_BUILD_PASSWORD" -T "$TAR_NAME" "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/ea8300/"$TAR_NAME""
|
||||
|
||||
build-ecw5410:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.GH_BUILD_TOKEN }}
|
||||
submodules: true
|
||||
- name: Build Image for ECW5410
|
||||
env:
|
||||
GH_BUILD_USERNAME: ${{ secrets.GH_BUILD_USERNAME }}
|
||||
GH_BUILD_PASSWORD: ${{ secrets.GH_BUILD_PASSWORD }}
|
||||
run: |
|
||||
make TARGET=ECW5410
|
||||
TAG=$(date +%Y-%m-%d)-$(git rev-parse --short HEAD)
|
||||
TAR_NAME="ecw5410-$TAG.tar.gz"
|
||||
tar cfz "$TAR_NAME" -C openwrt/bin/targets/ipq806x/generic .
|
||||
curl -u "$GH_BUILD_USERNAME":"$GH_BUILD_PASSWORD" -T "$TAR_NAME" "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/ecw5410/"$TAR_NAME""
|
||||
|
||||
build-ap2220:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.GH_BUILD_TOKEN }}
|
||||
submodules: true
|
||||
- name: Build Image for AP2220
|
||||
env:
|
||||
GH_BUILD_USERNAME: ${{ secrets.GH_BUILD_USERNAME }}
|
||||
GH_BUILD_PASSWORD: ${{ secrets.GH_BUILD_PASSWORD }}
|
||||
run: |
|
||||
make TARGET=AP2220
|
||||
TAG=$(date +%Y-%m-%d)-$(git rev-parse --short HEAD)
|
||||
TAR_NAME="ap2220-$TAG.tar.gz"
|
||||
tar cfz "$TAR_NAME" -C openwrt/bin/targets/ipq40xx/generic .
|
||||
curl -u "$GH_BUILD_USERNAME":"$GH_BUILD_PASSWORD" -T "$TAR_NAME" "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/ap2220/"$TAR_NAME""
|
||||
|
||||
build-ecw5211:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.GH_BUILD_TOKEN }}
|
||||
submodules: true
|
||||
- name: Build Image for ECW5211
|
||||
env:
|
||||
GH_BUILD_USERNAME: ${{ secrets.GH_BUILD_USERNAME }}
|
||||
GH_BUILD_PASSWORD: ${{ secrets.GH_BUILD_PASSWORD }}
|
||||
run: |
|
||||
make TARGET=ECW5211
|
||||
TAG=$(date +%Y-%m-%d)-$(git rev-parse --short HEAD)
|
||||
TAR_NAME="ecw5211-$TAG.tar.gz"
|
||||
tar cfz "$TAR_NAME" -C openwrt/bin/targets/ipq40xx/generic .
|
||||
curl -u "$GH_BUILD_USERNAME":"$GH_BUILD_PASSWORD" -T "$TAR_NAME" "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/ecw5211/"$TAR_NAME""
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/openwrt
|
||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
@ -0,0 +1,13 @@
|
||||
#FROM ubuntu:18.04
|
||||
FROM ubuntu:20.04
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata \
|
||||
&& apt-get install -y \
|
||||
time git-core build-essential gcc-multilib \
|
||||
libncurses5-dev zlib1g-dev gawk flex gettext wget unzip python \
|
||||
python3 python3-pip python3-yaml openvswitch-common openvswitch-switch libssl-dev \
|
||||
&& apt-get clean
|
||||
RUN git config --global user.email "you@example.com"
|
||||
RUN git config --global user.name "Your Name"
|
||||
RUN pip3 install kconfiglib
|
||||
12
Makefile
Normal file
12
Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
.PHONY: all opensync purge
|
||||
|
||||
all:
|
||||
./dock-run.sh ./build.sh $(TARGET)
|
||||
|
||||
opensync:
|
||||
./dock-run.sh make -j$(nproc) V=s -C openwrt package/feeds/opensync/opensync/clean
|
||||
./dock-run.sh make -j$(nproc) V=s -C openwrt package/feeds/opensync/opensync/compile TARGET=$(TARGET) OPENSYNC_SRC=$(shell pwd)
|
||||
purge:
|
||||
cd openwrt && rm -rf * && rm -rf .*
|
||||
rm -rf ./example/build
|
||||
@echo Done
|
||||
32
README.md
Normal file
32
README.md
Normal file
@ -0,0 +1,32 @@
|
||||
# Setting up your build machine
|
||||
|
||||
Requires a recent linux installation. Older systems without python 3.7 will have trouble. See this link for details: https://openwrt.org/docs/guide-developer/quickstart-build-images
|
||||
|
||||
Install build packages: sudo apt install build-essential libncurses5-dev gawk git libssl-dev gettext zlib1g-dev swig unzip time rsync python3 python3-setuptools python3-yaml.
|
||||
|
||||
Plus specific for TIP: sudo apt-get install openvswitch-common
|
||||
|
||||
# Doing a native build on Linux
|
||||
First we need to clone and setup our tree. This will result in an openwrt/.
|
||||
```
|
||||
python3 setup.py --setup
|
||||
```
|
||||
Next we need to select the profile and base package selection. This setup will install the feeds, packages and generate the .config file. The available profiles are ap2220, ea8300, ecw5211, ecw5410.
|
||||
```
|
||||
cd openwrt
|
||||
./scripts/gen_config.py ap2220 wlan-ap
|
||||
```
|
||||
Finally we can build the tree.
|
||||
```
|
||||
make -j X V=s
|
||||
```
|
||||
Builds for different profiles can co-exist in the same tree. Switching is done by simple calling gen_config.py again.
|
||||
|
||||
# Doing a docker build
|
||||
|
||||
Start by installing docker.io on your host system and ensuring that you can run an unprivileged container.
|
||||
Once this is done edit the Dockerfile and choose the Ubuntu flavour. This might depend on your host installation.
|
||||
Then simple call (available targets are AP2220, EA8300, ECW5211, ECW5410)
|
||||
```
|
||||
TARGET=AP2200 make -j 8
|
||||
```
|
||||
48
build.sh
Executable file
48
build.sh
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
ROOT_PATH=${PWD}
|
||||
BUILD_DIR=${ROOT_PATH}/openwrt
|
||||
TARGET=${1}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Error: please specify TARGET"
|
||||
echo "For example: IPQ40XX, ECW5410, AP2220, ECW5211"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! "$(ls -A $BUILD_DIR)" ]; then
|
||||
python3 setup.py --setup --docker || exit 1
|
||||
|
||||
else
|
||||
python3 setup.py --rebase --docker
|
||||
echo "### OpenWrt repo already setup"
|
||||
fi
|
||||
|
||||
case "${TARGET}" in
|
||||
EA8300|\
|
||||
IPQ40XX)
|
||||
TARGET=ea8300
|
||||
;;
|
||||
ECW5211)
|
||||
TARGET=ecw5211
|
||||
;;
|
||||
ECW5410)
|
||||
TARGET=ecw5410
|
||||
;;
|
||||
AP2220)
|
||||
TARGET=ap2220
|
||||
;;
|
||||
*)
|
||||
echo "${TARGET} is unknown"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
cd ${BUILD_DIR}
|
||||
./scripts/gen_config.py ${TARGET} wlan-ap || exit 1
|
||||
cd -
|
||||
|
||||
echo "### Building image ..."
|
||||
cd $BUILD_DIR
|
||||
make -j$(nproc) V=s 2>&1 | tee build.log
|
||||
echo "Done"
|
||||
8
config.yml
Normal file
8
config.yml
Normal file
@ -0,0 +1,8 @@
|
||||
repo: https://github.com/openwrt/openwrt.git
|
||||
branch: openwrt-19.07
|
||||
revision: c3e3802a8effd099481cedf669e3a17840612514
|
||||
output_dir: ./output
|
||||
|
||||
patch_folders:
|
||||
- patches/pending
|
||||
- patches/wlan-ap
|
||||
9
dock-run.sh
Executable file
9
dock-run.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
tag=$(echo ${PWD} | tr / - | cut -b2- | tr A-Z a-z)
|
||||
groups=$(id -G | xargs -n1 echo -n " --group-add ")
|
||||
params="-v ${PWD}:${PWD} --rm -w ${PWD} -u"$(id -u):$(id -g)" $groups -v/etc/passwd:/etc/passwd -v/etc/group:/etc/group ${tag}"
|
||||
|
||||
docker build --tag=${tag} .
|
||||
|
||||
docker run $params $@
|
||||
96
feeds/wlan-ap/opensync/Makefile
Normal file
96
feeds/wlan-ap/opensync/Makefile
Normal file
@ -0,0 +1,96 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=opensync
|
||||
PKG_VERSION:=1.4.0.1
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/plume-design/opensync.git
|
||||
PKG_SOURCE_DATE:=2019-10-25
|
||||
PKG_SOURCE_VERSION:=d46964b2588800e92ac96f562054d6f45cb81147
|
||||
|
||||
PKG_BUILD_DEPENDS:=python3-kconfiglib/host
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/opensync/default
|
||||
CATEGORY:=Network
|
||||
TITLE:=cloud network management system
|
||||
DEPENDS:=+libev +jansson +protobuf +libprotobuf-c +libmosquitto +libopenssl +openvswitch +libpcap +libuci +libiwinfo +iw
|
||||
endef
|
||||
|
||||
define Package/opensync-ap2220
|
||||
$(call Package/opensync/default)
|
||||
TITLE += (AP2220)
|
||||
VARIANT:=AP2220
|
||||
DEPENDS+=@TARGET_ipq40xx
|
||||
endef
|
||||
|
||||
define Package/opensync-ecw5410
|
||||
$(call Package/opensync/default)
|
||||
TITLE += (ECW5410)
|
||||
VARIANT:=ECW5410
|
||||
DEPENDS+=@TARGET_ipq806x
|
||||
endef
|
||||
|
||||
define Package/opensync-ecw5211
|
||||
$(call Package/opensync/default)
|
||||
TITLE += (ECW5211)
|
||||
VARIANT:=ECW5211
|
||||
DEPENDS+=@TARGET_ipq40xx
|
||||
endef
|
||||
|
||||
define Package/opensync-ea8300
|
||||
$(call Package/opensync/default)
|
||||
TITLE += (EA8300)
|
||||
VARIANT:=IPQ40XX
|
||||
DEPENDS+=@TARGET_ipq40xx
|
||||
endef
|
||||
|
||||
define Package/opensync/description
|
||||
OpenSync is a cloud-agnostic software for the delivery, curation, and management of services for the modern home.
|
||||
For more info please visit: https://opensync.io
|
||||
endef
|
||||
|
||||
Package/opensync-ap2220/description=$(call Package/opensync/description)
|
||||
Package/opensync-ecw5410/description=$(call Package/opensync/description)
|
||||
Package/opensync-ecw5211/description=$(call Package/opensync/description)
|
||||
Package/opensync-ea8300/description=$(call Package/opensync/description)
|
||||
|
||||
define Build/Prepare
|
||||
$(PKG_UNPACK)
|
||||
rm $(PKG_BUILD_DIR)/{vendor,platform}
|
||||
mkdir $(PKG_BUILD_DIR)/core
|
||||
[ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR)
|
||||
$(Build/Patch)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
OWRT_CFLAGS="$(TARGET_CFLAGS)" \
|
||||
TARGET=$(BUILD_VARIANT) TOOLCHAIN_DIR="$(TOOLCHAIN_DIR)" \
|
||||
TOOLCHAIN_PREFIX="$(TARGET_CROSS)" STAGING_DIR="$(STAGING_DIR)"
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) rootfs \
|
||||
TARGET=$(BUILD_VARIANT) TOOLCHAIN_DIR="$(TOOLCHAIN_DIR)" \
|
||||
TOOLCHAIN_PREFIX="$(TARGET_CROSS)"
|
||||
endef
|
||||
|
||||
define Package/opensync/install
|
||||
$(INSTALL_DIR) $(1)/usr/plume/bin
|
||||
$(INSTALL_DIR) $(1)/usr/plume/etc
|
||||
$(INSTALL_DIR) $(1)/usr/plume/certs
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/work/$(BUILD_VARIANT)/rootfs//usr/plume/bin/* $(1)/usr/plume/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/work/$(BUILD_VARIANT)/rootfs/usr/plume/etc/* $(1)/usr/plume/etc
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/work/$(BUILD_VARIANT)/rootfs/usr/plume/tools/ovsh $(1)/usr/plume/bin
|
||||
$(MAKE) -C $(PKG_BUILD_DIR)/ TARGET=$(BUILD_VARIANT) rootfs-copy-only INSTALL_ROOTFS_DIR=$(1)
|
||||
endef
|
||||
|
||||
Package/opensync-ap2220/install=$(call Package/opensync/install,$(1))
|
||||
Package/opensync-ecw5410/install=$(call Package/opensync/install,$(1))
|
||||
Package/opensync-ecw5211/install=$(call Package/opensync/install,$(1))
|
||||
Package/opensync-ea8300/install=$(call Package/opensync/install,$(1))
|
||||
|
||||
$(eval $(call BuildPackage,opensync-ap2220))
|
||||
$(eval $(call BuildPackage,opensync-ecw5410))
|
||||
$(eval $(call BuildPackage,opensync-ecw5211))
|
||||
$(eval $(call BuildPackage,opensync-ea8300))
|
||||
21
feeds/wlan-ap/opensync/patches/01-add-lib-uci-to-wm2.patch
Normal file
21
feeds/wlan-ap/opensync/patches/01-add-lib-uci-to-wm2.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff --git a/src/wm2/tests/unit.mk b/src/wm2/tests/unit.mk
|
||||
index e98529d..6b67334 100644
|
||||
--- a/src/wm2/tests/unit.mk
|
||||
+++ b/src/wm2/tests/unit.mk
|
||||
@@ -33,3 +33,4 @@ UNIT_DEPS := src/lib/common
|
||||
UNIT_DEPS += src/lib/osa
|
||||
UNIT_DEPS += src/lib/schema
|
||||
UNIT_DEPS += src/lib/ovsdb
|
||||
+UNIT_LDFLAGS += -luci
|
||||
diff --git a/src/wm2/unit.mk b/src/wm2/unit.mk
|
||||
index 9b27ad9..302b64f 100644
|
||||
--- a/src/wm2/unit.mk
|
||||
+++ b/src/wm2/unit.mk
|
||||
@@ -44,6 +44,7 @@ UNIT_LDFLAGS += -ljansson
|
||||
UNIT_LDFLAGS += -ldl
|
||||
UNIT_LDFLAGS += -lev
|
||||
UNIT_LDFLAGS += -lrt
|
||||
+UNIT_LDFLAGS += -luci
|
||||
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
UNIT_EXPORT_LDFLAGS := $(UNIT_LDFLAGS)
|
||||
@ -0,0 +1,35 @@
|
||||
diff --git a/src/wm2/src/wm2_radio.c b/src/wm2/src/wm2_radio.c
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
index b01a88f..5148636
|
||||
--- a/src/wm2/src/wm2_radio.c
|
||||
+++ b/src/wm2/src/wm2_radio.c
|
||||
@@ -874,7 +874,7 @@ wm2_vconf_recalc(const char *ifname, bool force)
|
||||
if (has && strlen(SCHEMA_KEY_VAL(vconf.security, "key")) < 8) {
|
||||
LOGD("%s: overriding 'ssid' and 'security' for onboarding", ifname);
|
||||
vconf.ssid_exists = vstate.ssid_exists;
|
||||
- STRSCPY(vconf.ssid, vstate.ssid);
|
||||
+// STRSCPY(vconf.ssid, vstate.ssid);
|
||||
- memcpy(vconf.security, vstate.security, sizeof(vconf.security));
|
||||
+// memcpy(vconf.security, vstate.security, sizeof(vconf.security));
|
||||
}
|
||||
|
||||
@@ -1109,8 +1109,7 @@ wm2_rconf_recalc(const char *ifname, bool force)
|
||||
memset(&rstate, 0, sizeof(rstate));
|
||||
|
||||
if (want) {
|
||||
- if (!rconf.enabled_exists || !rconf.enabled) {
|
||||
- LOGW("%s: overriding 'enabled'; conf.db.bck needs fixing, or it's cloud bug PIR-12794", ifname);
|
||||
+ if (!rconf.enabled_exists) {
|
||||
rconf.enabled_exists = true;
|
||||
rconf.enabled = true;
|
||||
}
|
||||
@@ -1132,7 +1132,7 @@ wm2_rconf_recalc(const char *ifname, bool force)
|
||||
if (rconf.channel_exists && rconf.vif_configs_len == 0) {
|
||||
LOGD("%s: ignoring rconf channel %d: no vifs available yet",
|
||||
rconf.if_name, rconf.channel);
|
||||
- rconf.channel = rstate.channel;
|
||||
+// rconf.channel = rstate.channel;
|
||||
}
|
||||
|
||||
if (want) {
|
||||
12
feeds/wlan-ap/opensync/patches/03-sm-add-libiwinfo.patch
Normal file
12
feeds/wlan-ap/opensync/patches/03-sm-add-libiwinfo.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff --git a/src/sm/unit.mk b/src/sm/unit.mk
|
||||
index d62bde7..8063c0c 100644
|
||||
--- a/src/sm/unit.mk
|
||||
+++ b/src/sm/unit.mk
|
||||
@@ -53,6 +53,7 @@ UNIT_LDFLAGS += -ldl
|
||||
UNIT_LDFLAGS += -lev
|
||||
UNIT_LDFLAGS += -lrt
|
||||
UNIT_LDFLAGS += -lz
|
||||
+UNIT_LDFLAGS += -liwinfo
|
||||
|
||||
UNIT_DEPS := src/lib/ovsdb
|
||||
UNIT_DEPS += src/lib/pjs
|
||||
20
feeds/wlan-ap/opensync/patches/04-honour-copts.patch
Normal file
20
feeds/wlan-ap/opensync/patches/04-honour-copts.patch
Normal file
@ -0,0 +1,20 @@
|
||||
Index: opensync-1.4.0.1/build/flags.mk
|
||||
===================================================================
|
||||
--- opensync-1.4.0.1.orig/build/flags.mk
|
||||
+++ opensync-1.4.0.1/build/flags.mk
|
||||
@@ -23,12 +23,13 @@
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# C FLAGS
|
||||
-CFLAGS := -Wall -Wextra -Werror
|
||||
+CFLAGS ?=
|
||||
+CFLAGS += -Wall -Wextra -Werror
|
||||
CFLAGS += -Wno-unused-parameter
|
||||
CFLAGS += -Wno-unused-label
|
||||
CFLAGS += -Wno-strict-aliasing
|
||||
CFLAGS += -fasynchronous-unwind-tables
|
||||
-
|
||||
+CFLAGS += $(OWRT_CFLAGS)
|
||||
DEBUGFLAGS := -g
|
||||
OPTIMIZE :=
|
||||
|
||||
22
feeds/wlan-ap/opensync/patches/04-wm-add-libiwinfo.patch
Normal file
22
feeds/wlan-ap/opensync/patches/04-wm-add-libiwinfo.patch
Normal file
@ -0,0 +1,22 @@
|
||||
diff --git a/src/wm2/tests/unit.mk b/src/wm2/tests/unit.mk
|
||||
index 6b67334..66e9679 100644
|
||||
--- a/src/wm2/tests/unit.mk
|
||||
+++ b/src/wm2/tests/unit.mk
|
||||
@@ -34,3 +34,4 @@ UNIT_DEPS += src/lib/osa
|
||||
UNIT_DEPS += src/lib/schema
|
||||
UNIT_DEPS += src/lib/ovsdb
|
||||
UNIT_LDFLAGS += -luci
|
||||
+UNIT_LDFLAGS += -liwinfo
|
||||
diff --git a/src/wm2/unit.mk b/src/wm2/unit.mk
|
||||
index 302b64f..319c663 100644
|
||||
--- a/src/wm2/unit.mk
|
||||
+++ b/src/wm2/unit.mk
|
||||
@@ -45,6 +45,7 @@ UNIT_LDFLAGS += -ldl
|
||||
UNIT_LDFLAGS += -lev
|
||||
UNIT_LDFLAGS += -lrt
|
||||
UNIT_LDFLAGS += -luci
|
||||
+UNIT_LDFLAGS += -liwinfo
|
||||
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
UNIT_EXPORT_LDFLAGS := $(UNIT_LDFLAGS)
|
||||
|
||||
26
feeds/wlan-ap/opensync/patches/05-fixes.patch
Normal file
26
feeds/wlan-ap/opensync/patches/05-fixes.patch
Normal file
@ -0,0 +1,26 @@
|
||||
Index: opensync-1.4.0.1/platform/openwrt/src/lib/target/src/vif.c
|
||||
===================================================================
|
||||
--- opensync-1.4.0.1.orig/platform/openwrt/src/lib/target/src/vif.c
|
||||
+++ opensync-1.4.0.1/platform/openwrt/src/lib/target/src/vif.c
|
||||
@@ -1039,7 +1039,7 @@ bool target_vif_config_set2(
|
||||
int ret;
|
||||
char tmp[256];
|
||||
c_item_t *citem;
|
||||
- bool bval;
|
||||
+ bool bval = false;
|
||||
|
||||
const char *ssid_ifname = (char *)vconf->if_name;
|
||||
|
||||
Index: opensync-1.4.0.1/src/wm2/src/wm2_clients.c
|
||||
===================================================================
|
||||
--- opensync-1.4.0.1.orig/src/wm2/src/wm2_clients.c
|
||||
+++ opensync-1.4.0.1/src/wm2/src/wm2_clients.c
|
||||
@@ -69,7 +69,7 @@ wm2_clients_oftag_from_key_id(const char
|
||||
{
|
||||
struct schema_Wifi_VIF_Config vconf;
|
||||
ovsdb_table_t table_Wifi_VIF_Config;
|
||||
- char oftagkey[32];
|
||||
+ char oftagkey[38];
|
||||
char *ptr;
|
||||
bool ok;
|
||||
|
||||
23
feeds/wlan-ap/opensync/src/platform/openwrt/LICENSE
Normal file
23
feeds/wlan-ap/opensync/src/platform/openwrt/LICENSE
Normal file
@ -0,0 +1,23 @@
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
2
feeds/wlan-ap/opensync/src/platform/openwrt/NOTICE
Normal file
2
feeds/wlan-ap/opensync/src/platform/openwrt/NOTICE
Normal file
@ -0,0 +1,2 @@
|
||||
Copyright 2019, Plume Design Inc. All rights reserved.
|
||||
Licensed under the "3-Clause BSD License" also known as "Revised BSD License"
|
||||
8
feeds/wlan-ap/opensync/src/platform/openwrt/README.md
Normal file
8
feeds/wlan-ap/opensync/src/platform/openwrt/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
OpenSync platform layer template for OpenWrt
|
||||
--------------------------------------------
|
||||
|
||||
OpenSync platform layer template for OpenWrt based targets.
|
||||
|
||||
This repository is a part of the `opensync-openwrt` project.
|
||||
|
||||
For more info please visit: https://opensync.io
|
||||
34
feeds/wlan-ap/opensync/src/platform/openwrt/build/openwrt.mk
Normal file
34
feeds/wlan-ap/opensync/src/platform/openwrt/build/openwrt.mk
Normal file
@ -0,0 +1,34 @@
|
||||
# Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3. Neither the name of the Plume Design Inc. nor the
|
||||
# names of its contributors may be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
CFLAGS += -I$(STAGING_DIR)/usr/include/protobuf-c
|
||||
|
||||
BUILD_SHARED_LIB = n
|
||||
|
||||
CONTROLLER_ADDR="ssl:opensync.zone1.art2wave.com:6643"
|
||||
|
||||
CC = $(TOOLCHAIN_DIR)/bin/$(TOOLCHAIN_PREFIX)gcc
|
||||
CXX = $(TOOLCHAIN_DIR)/bin/$(TOOLCHAIN_PREFIX)g++
|
||||
AR = $(TOOLCHAIN_DIR)/bin/$(TOOLCHAIN_PREFIX)ar
|
||||
STRIP = $(TOOLCHAIN_DIR)/bin/$(TOOLCHAIN_PREFIX)strip -g
|
||||
@ -0,0 +1 @@
|
||||
CONFIG_USE_KCONFIG=y
|
||||
@ -0,0 +1,51 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
USE_PROCD=1
|
||||
START=90
|
||||
STOP=90
|
||||
|
||||
PROG="/usr/plume/bin/dm"
|
||||
OPENSYNC_DB=/usr/plume/etc/conf.db.bck
|
||||
OPENSYNC_SCHEMA=/usr/plume/etc/plume.ovsschema
|
||||
OVS_DB_DIR=/var/run/openvswitch
|
||||
OVS_DB=/var/run/openvswitch/conf.db
|
||||
CERTS_DEST_PATH=/var/run/openvswitch/certs
|
||||
CERTS_SRC_PATH=/usr/plume/certs
|
||||
|
||||
start_ovs() {
|
||||
echo "Starting OVS"
|
||||
if [ ! -d ${OVS_DB_DIR} ]; then
|
||||
mkdir -p ${OVS_DB_DIR}
|
||||
fi
|
||||
cp ${OPENSYNC_DB} ${OVS_DB}
|
||||
procd_open_instance
|
||||
procd_set_param command /bin/sh
|
||||
procd_append_param command /usr/share/openvswitch/scripts/ovs-ctl
|
||||
procd_append_param command start --db-file=${OVS_DB} --db-schema=${OPENSYNC_SCHEMA} --system-id=1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_ovs() {
|
||||
echo "Stopping OVS"
|
||||
/usr/share/openvswitch/scripts/ovs-ctl stop
|
||||
}
|
||||
|
||||
start_service() {
|
||||
stop_ovs
|
||||
start_ovs
|
||||
procd_open_instance
|
||||
echo "Setting certificates"
|
||||
mkdir -p ${CERTS_DEST_PATH}
|
||||
cp ${CERTS_SRC_PATH}/* ${CERTS_DEST_PATH}/
|
||||
echo "Starting OpenSync"
|
||||
procd_set_param command ${PROG}
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
stop_ovs
|
||||
echo "Removing certificates"
|
||||
rm -rf ${CERTS_DEST_PATH}
|
||||
echo "Killing managers"
|
||||
killall cm nm wm lm sm qm
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
# Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3. Neither the name of the Plume Design Inc. nor the
|
||||
# names of its contributors may be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# OpenSync low level API
|
||||
#
|
||||
##############################################################################
|
||||
UNIT_SRC := src/osn_dnsmasq.c
|
||||
UNIT_SRC += src/osn_dnsmasq6.c
|
||||
UNIT_SRC += src/osn_inet.c
|
||||
UNIT_SRC += src/osn_inet6.c
|
||||
UNIT_SRC += src/osn_odhcp6c.c
|
||||
UNIT_SRC += src/osn_priv_netlink.c
|
||||
UNIT_SRC += src/osn_route.c
|
||||
UNIT_SRC += src/osn_types.c
|
||||
UNIT_SRC += src/osn_udhcpc.c
|
||||
UNIT_SRC += src/osn_fw.c
|
||||
|
||||
UNIT_SRC_TOP := $(OVERRIDE_DIR)/src/osn_upnpd.c
|
||||
@ -0,0 +1,37 @@
|
||||
#include <stdlib.h>
|
||||
#include "osn_upnp.h"
|
||||
|
||||
static int dummy_osn_upnp;
|
||||
|
||||
osn_upnp_t *osn_upnp_new(const char *ifname)
|
||||
{
|
||||
return (osn_upnp_t *)&dummy_osn_upnp;
|
||||
}
|
||||
|
||||
bool osn_upnp_del(osn_upnp_t *self)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool osn_upnp_set(osn_upnp_t *self, enum osn_upnp_mode mode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool osn_upnp_get(osn_upnp_t *self, enum osn_upnp_mode *mode)
|
||||
{
|
||||
*mode = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool osn_upnp_start(osn_upnp_t *self)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool osn_upnp_stop(osn_upnp_t *self)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -0,0 +1,62 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef TARGET_OPENWRT_H_INCLUDED
|
||||
#define TARGET_OPEMWRT_H_INCLUDED
|
||||
|
||||
#include "dpp_client.h"
|
||||
#include "dpp_survey.h"
|
||||
|
||||
#define TARGET_CERT_PATH "/var/run/openvswitch/certs"
|
||||
#define TARGET_MANAGERS_PID_PATH "/tmp/dmpid"
|
||||
#define TARGET_OVSDB_SOCK_PATH "/var/run/openvswitch/db.sock"
|
||||
#define TARGET_LOGREAD_FILENAME "messages"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_CLIENT_RECORD_COMMON_STRUCT;
|
||||
dpp_client_stats_t stats;
|
||||
} target_client_record_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_SURVEY_RECORD_COMMON_STRUCT;
|
||||
} target_survey_record_t;
|
||||
|
||||
typedef void target_capacity_data_t;
|
||||
|
||||
/******************************************************************************
|
||||
* MANAGERS definitions
|
||||
*****************************************************************************/
|
||||
#if !defined(CONFIG_TARGET_MANAGER)
|
||||
#define TARGET_MANAGER_PATH(X) "/usr/plume/bin/"X
|
||||
#endif
|
||||
|
||||
#define TARGET_TOOLS_PATH "/usr/plume/tools"
|
||||
|
||||
#include "target_common.h"
|
||||
|
||||
#endif /* TARGET_OPENWRT_H_INCLUDED */
|
||||
139
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/inc/uci_helper.h
Executable file
139
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/inc/uci_helper.h
Executable file
@ -0,0 +1,139 @@
|
||||
#ifndef TARGET_UCI_HELPER_H_INCLUDED
|
||||
#define TARGET_UCI_HELPER_H_INCLUDED
|
||||
|
||||
#include "target.h"
|
||||
#include "uci.h"
|
||||
#include "schema_consts.h"
|
||||
|
||||
#define UCI_WRITE(type, section, index, option, value) ({ \
|
||||
if(!uci_write(type, section, index, option, value)) \
|
||||
{ \
|
||||
return false; \
|
||||
} \
|
||||
})
|
||||
|
||||
#define UCI_READ(type, section, index, option, result, length) ({ \
|
||||
if(uci_read(type, section, index, option, result, length) != UCI_OK) \
|
||||
{\
|
||||
return false; \
|
||||
} \
|
||||
})
|
||||
|
||||
#define UCI_REMOVE(type, section, index, option) ({ \
|
||||
if(uci_remove(type, section, index, option) != UCI_OK) \
|
||||
{ \
|
||||
return false; \
|
||||
} \
|
||||
})
|
||||
|
||||
#define UCI_BUFFER_SIZE 80
|
||||
#define DEFAULT_ENC_MODE "TKIPandAESEncryption"
|
||||
#define UCI_MAX_RADIOS 4
|
||||
|
||||
typedef enum {
|
||||
eFreqBand_24G = 0,
|
||||
eFreqBand_5G,
|
||||
eFreqBand_5GL,
|
||||
eFreqBand_5GU
|
||||
} eFreqBand;
|
||||
|
||||
#define HWMODE_11a "11a"
|
||||
#define HWMODE_11b "11b"
|
||||
#define HWMODE_11g "11g"
|
||||
|
||||
#define HTMODE_noht "NOHT"
|
||||
#define HTMODE_ht20 "HT20"
|
||||
#define HTMODE_ht40m "HT40-"
|
||||
#define HTMODE_ht40p "HT40+"
|
||||
#define HTMODE_ht40 "HT40"
|
||||
#define HTMODE_vht20 "VHT20"
|
||||
#define HTMODE_vht40 "VHT40"
|
||||
#define HTMODE_vht80 "VHT80"
|
||||
#define HTMODE_vht160 "VHT160"
|
||||
|
||||
#define OVSDB_SECURITY_KEY "key"
|
||||
#define OVSDB_SECURITY_OFTAG "oftag"
|
||||
#define OVSDB_SECURITY_MODE "mode"
|
||||
#define OVSDB_SECURITY_MODE_WEP64 "64"
|
||||
#define OVSDB_SECURITY_MODE_WEP128 "128"
|
||||
#define OVSDB_SECURITY_MODE_WPA1 "1"
|
||||
#define OVSDB_SECURITY_MODE_WPA2 "2"
|
||||
#define OVSDB_SECURITY_MODE_MIXED "mixed"
|
||||
#define OVSDB_SECURITY_ENCRYPTION "encryption"
|
||||
#define OVSDB_SECURITY_ENCRYPTION_OPEN "OPEN"
|
||||
#define OVSDB_SECURITY_ENCRYPTION_WEP "WEP"
|
||||
#define OVSDB_SECURITY_ENCRYPTION_WPA_PSK "WPA-PSK"
|
||||
#define OVSDB_SECURITY_ENCRYPTION_WPA_EAP "WPA-EAP"
|
||||
#define OVSDB_SECURITY_RADIUS_SERVER_IP "radius_server_ip"
|
||||
#define OVSDB_SECURITY_RADIUS_SERVER_PORT "radius_server_port"
|
||||
#define OVSDB_SECURITY_RADIUS_SERVER_SECRET "radius_server_secret"
|
||||
/*
|
||||
* Functions to retrieve Radio parameters
|
||||
*/
|
||||
int wifi_getRadioNumberOfEntries( int *numberOfEntries );
|
||||
int wifi_getRadioIfName(int radio_idx, char *radio_ifname, size_t radio_ifname_len);
|
||||
int wifi_getRadioChannel(int radio_idx, int *channel);
|
||||
int wifi_getRadioEnable(int radio_idx, bool *enabled);
|
||||
int wifi_getRadioTxPower(int radio_idx, int *txpower );
|
||||
int wifi_getRadioBeaconInterval(int radio_idx, int *beacon_int);
|
||||
int wifi_getRadioFreqBand(int *allowedChannels, int numberOfChannels, char *freq_band);
|
||||
int wifi_getRadioHtMode(int radio_idx, char *ht_mode);
|
||||
int wifi_getRadioHwMode(int radio_idx, char *hw_mode);
|
||||
int wifi_getTxChainMask(int radioIndex, int *txChainMask);
|
||||
int wifi_getRadioAllowedChannel(int radioIndex, int *allowedChannelList, int *allowedChannelListLen);
|
||||
int wifi_getRadioMacaddress(int radio_idx, char *mac);
|
||||
|
||||
/*
|
||||
* Functions to set Radio parameters
|
||||
*/
|
||||
bool wifi_setRadioChannel(int radioIndex, int channel, const char *ht_mode);
|
||||
bool wifi_setRadioEnabled(int radioIndex, bool enabled);
|
||||
bool wifi_setRadioTxPower(int radioIndex, int txpower);
|
||||
bool wifi_setRadioBeaconInterval(int radioIndex, int beacon_int);
|
||||
bool wifi_setRadioModes(int radioIndex, const char *freq_band, const char *ht_mode, const char *hw_mode);
|
||||
|
||||
/*
|
||||
* Functions to retrieve SSID parameters
|
||||
*/
|
||||
int wifi_getSSIDNumberOfEntries( int *numberOfEntries);
|
||||
int wifi_getVIFName(int ssid_index, char *ssid_ifname, size_t ssid_ifname_len);
|
||||
int wifi_getSSIDName(int ssid_index, char *ssid_name, size_t ssid_name_len);
|
||||
int wifi_getSSIDRadioIndex(int ssid_index, int *radio_index);
|
||||
int wifi_getSSIDRadioIfName(int ssid_index, char *radio_ifname, size_t radio_ifname_len);
|
||||
int wifi_getSsidEnabled(int ssid_index, bool *enabled);
|
||||
int wifi_getApBridgeInfo(int ssid_index, char *bridge_info, char *tmp1, char *tmp2, size_t bridge_info_len);
|
||||
int wifi_getApIsolationEnable(int ssid_index, bool *enabled);
|
||||
int wifi_getApSsidAdvertisementEnable(int ssid_index, bool *enabled);
|
||||
int wifi_getBaseBSSID(int ssid_index,char *buf, size_t buf_len,int radio_idx);
|
||||
int wifi_getApSecurityKeyPassphrase(int ssid_index, char *buf, size_t buf_len);
|
||||
bool wifi_getApSecurityModeEnabled(int ssid_index, char *buf, size_t buf_len);
|
||||
bool wifi_getApSecurityRadiusServer(int ssid_index, char *radius_ip, char *radius_port, char *radius_secret);
|
||||
bool wifi_setFtMode(int ssid_index, const struct schema_Wifi_VIF_Config *vconf);
|
||||
bool wifi_getApVlanId(int ssidIndex, int *vlan_id);
|
||||
|
||||
/*
|
||||
* Functions to set SSID parameters
|
||||
*/
|
||||
bool wifi_setSSIDName(int ssis_index, char* ssidName);
|
||||
bool wifi_setApSecurityModeEnabled(int ssid_index, const struct schema_Wifi_VIF_Config *vconf);
|
||||
bool wifi_setApSsidAdvertisementEnable(int ssid_index, bool enabled);
|
||||
bool wifi_setApIsolationEnable(int ssid_index, bool enabled);
|
||||
bool wifi_setSsidEnabled(int ssid_index, bool enabled);
|
||||
bool wifi_setApBridgeInfo(int ssid_index, char *bridge_info);
|
||||
bool wifi_setApVlanNetwork(int ssid_index, int vlan_id);
|
||||
|
||||
/*
|
||||
* Functions to access OVSDB callbacks
|
||||
*/
|
||||
bool radio_rops_vstate(struct schema_Wifi_VIF_State *vstate);
|
||||
bool radio_rops_vconfig( struct schema_Wifi_VIF_Config *vconf, const char *radio_ifname);
|
||||
|
||||
/*
|
||||
* VIF functions
|
||||
*/
|
||||
|
||||
bool vif_state_update(int ssidIndex);
|
||||
bool vif_state_get(int ssidIndex, struct schema_Wifi_VIF_State *vstate);
|
||||
bool vif_copy_to_config(int ssidIndex, struct schema_Wifi_VIF_State *vstate, struct schema_Wifi_VIF_Config *vconf);
|
||||
|
||||
#endif
|
||||
54
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/override.mk
Executable file
54
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/override.mk
Executable file
@ -0,0 +1,54 @@
|
||||
# Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3. Neither the name of the Plume Design Inc. nor the
|
||||
# names of its contributors may be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$(info xxx $(OVERRIDE_DIR))
|
||||
UNIT_CFLAGS += -I$(OVERRIDE_DIR)/inc
|
||||
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
|
||||
UNIT_SRC_TOP := $(OVERRIDE_DIR)/src/radio.c
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/managers.c
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/stats.c
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/uci_helper.c
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/target.c
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/vif.c
|
||||
|
||||
CONFIG_USE_KCONFIG=y
|
||||
CONFIG_INET_ETH_LINUX=y
|
||||
CONFIG_INET_VIF_LINUX=y
|
||||
CONFIG_INET_GRE_LINUX=y
|
||||
CONFIG_INET_FW_NULL=y
|
||||
CONFIG_INET_DHCPC_NULL=y
|
||||
CONFIG_INET_DHCPS_NULL=y
|
||||
CONFIG_INET_UPNP_NULL=y
|
||||
CONFIG_INET_DNS_NULL=y
|
||||
CONFIG_INET_DHSNIFF_NULL=y
|
||||
|
||||
UNIT_SRC := $(filter-out src/target_inet.c,$(UNIT_SRC))
|
||||
UNIT_SRC := $(filter-out src/target_dhcp.c,$(UNIT_SRC))
|
||||
UNIT_DEPS := $(filter-out src/lib/inet,$(UNIT_DEPS))
|
||||
UNIT_DEPS += src/lib/evsched
|
||||
UNIT_LDFLAGS += -luci
|
||||
UNIT_LDFLAGS += -libiwinfo
|
||||
UNIT_DEPS_CFLAGS += src/lib/inet
|
||||
67
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/managers.c
Executable file
67
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/managers.c
Executable file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "target.h"
|
||||
#include "const.h"
|
||||
|
||||
/******************************************************************************
|
||||
* MANAGERS definitions
|
||||
*****************************************************************************/
|
||||
|
||||
target_managers_config_t target_managers_config[] =
|
||||
{
|
||||
{
|
||||
.name = TARGET_MANAGER_PATH("wm"),
|
||||
.needs_plan_b = true,
|
||||
},
|
||||
|
||||
{
|
||||
.name = TARGET_MANAGER_PATH("nm"),
|
||||
.needs_plan_b = true,
|
||||
},
|
||||
|
||||
{
|
||||
.name = TARGET_MANAGER_PATH("cm"),
|
||||
.needs_plan_b = true,
|
||||
},
|
||||
|
||||
{
|
||||
.name = TARGET_MANAGER_PATH("lm"),
|
||||
.needs_plan_b = true,
|
||||
},
|
||||
|
||||
{
|
||||
.name = TARGET_MANAGER_PATH("sm"),
|
||||
.needs_plan_b = false,
|
||||
},
|
||||
|
||||
{
|
||||
.name = TARGET_MANAGER_PATH("qm"),
|
||||
.needs_plan_b = false,
|
||||
},
|
||||
};
|
||||
|
||||
int target_managers_num = ARRAY_SIZE(target_managers_config);
|
||||
506
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/radio.c
Executable file
506
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/radio.c
Executable file
@ -0,0 +1,506 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <target.h>
|
||||
#include "log.h"
|
||||
#include "evsched.h"
|
||||
#include "uci_helper.h"
|
||||
|
||||
static bool needReset = true; /* On start-up, we need to initialize DB from the UCI */
|
||||
|
||||
static struct target_radio_ops g_rops;
|
||||
static bool g_resync_ongoing = false;
|
||||
|
||||
|
||||
static bool radio_state_get(
|
||||
int radioIndex,
|
||||
struct schema_Wifi_Radio_State *rstate)
|
||||
{
|
||||
memset(rstate, 0, sizeof(*rstate));
|
||||
schema_Wifi_Radio_State_mark_all_present(rstate);
|
||||
rstate->_partial_update = true;
|
||||
rstate->channel_sync_present = false;
|
||||
rstate->channel_mode_present = false;
|
||||
rstate->radio_config_present = false;
|
||||
rstate->vif_states_present = false;
|
||||
|
||||
if (UCI_OK == wifi_getRadioIfName(radioIndex, rstate->if_name, sizeof(rstate->if_name))) {
|
||||
rstate->if_name_exists = true;
|
||||
LOGN("radio if_name: %s", rstate->if_name);
|
||||
}
|
||||
|
||||
if (UCI_OK == wifi_getRadioChannel(radioIndex, &(rstate->channel))) {
|
||||
rstate->channel_exists = true;
|
||||
LOGN("radio channel: %d", rstate->channel);
|
||||
}
|
||||
|
||||
if (UCI_OK == wifi_getRadioEnable(radioIndex, &(rstate->enabled))) {
|
||||
rstate->enabled_exists = true;
|
||||
LOGN("radio enabled %d", rstate->enabled);
|
||||
}
|
||||
|
||||
/* tx_power gets boundary checked between 1 .. 32 */
|
||||
if (UCI_OK == wifi_getRadioTxPower(radioIndex, &(rstate->tx_power))) {
|
||||
rstate->tx_power_exists = true;
|
||||
LOGN("radio tx_power: %d", rstate->tx_power);
|
||||
/* 0 means max in UCI, 32 is max in OVSDB */
|
||||
if (rstate->tx_power == 0) rstate->tx_power = 32;
|
||||
} else {
|
||||
rstate->tx_power = 32;
|
||||
rstate->tx_power_exists = true;
|
||||
}
|
||||
|
||||
if (UCI_OK == wifi_getRadioBeaconInterval(radioIndex, &(rstate->bcn_int))) {
|
||||
rstate->bcn_int_exists = true;
|
||||
LOGN("radio beacon interval: %d", rstate->bcn_int);
|
||||
} else {
|
||||
rstate->bcn_int = 100;
|
||||
rstate->bcn_int_exists = true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
switch (radioIndex) {
|
||||
case 0:
|
||||
snprintf(rstate->ht_mode, sizeof(rstate->ht_mode),"HT80");
|
||||
snprintf(rstate->hw_mode, sizeof(rstate->hw_mode),"11a");
|
||||
snprintf(rstate->freq_band, sizeof(rstate->freq_band),"5GU");
|
||||
break;
|
||||
case 1:
|
||||
snprintf(rstate->ht_mode, sizeof(rstate->ht_mode),"HT20");
|
||||
snprintf(rstate->hw_mode, sizeof(rstate->hw_mode),"11g");
|
||||
snprintf(rstate->freq_band, sizeof(rstate->freq_band),"5GU");
|
||||
break;
|
||||
case 2:
|
||||
snprintf(rstate->ht_mode, sizeof(rstate->ht_mode),"HT80");
|
||||
snprintf(rstate->hw_mode, sizeof(rstate->hw_mode),"11a");
|
||||
snprintf(rstate->freq_band, sizeof(rstate->freq_band),"5GU");
|
||||
break;
|
||||
}
|
||||
rstate->ht_mode_exists = true;
|
||||
rstate->freq_band_exists = true;
|
||||
rstate->hw_mode_exists = true;
|
||||
#endif
|
||||
wifi_getRadioAllowedChannel(radioIndex, rstate->allowed_channels, &(rstate->allowed_channels_len));
|
||||
|
||||
if (UCI_OK == wifi_getRadioFreqBand(rstate->allowed_channels, rstate->allowed_channels_len, rstate->freq_band)) {
|
||||
rstate->freq_band_exists = true;
|
||||
LOGN("radio freq band: %s", rstate->freq_band);
|
||||
}
|
||||
|
||||
if(wifi_getTxChainMask(radioIndex, &(rstate->tx_chainmask))) {
|
||||
rstate->tx_chainmask_exists = true;
|
||||
LOGN("tx_chainmask: %d", rstate->tx_chainmask);
|
||||
}
|
||||
|
||||
if (UCI_OK == wifi_getRadioHtMode(radioIndex, rstate->ht_mode)) {
|
||||
rstate->ht_mode_exists = true;
|
||||
LOGN("radio ht mode: %s", rstate->ht_mode);
|
||||
}
|
||||
|
||||
if (UCI_OK == wifi_getRadioHwMode(radioIndex, rstate->hw_mode)) {
|
||||
rstate->hw_mode_exists = true;
|
||||
LOGN("radio hw mode: %s", rstate->hw_mode);
|
||||
}
|
||||
if(UCI_OK == wifi_getRadioMacaddress(radioIndex, rstate->mac)){
|
||||
rstate->mac_exists = true;
|
||||
LOGN("radio mac address:%s", rstate->mac);
|
||||
}
|
||||
snprintf(rstate->country, sizeof(rstate->country),"CA");
|
||||
rstate->country_exists = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool radio_state_update(unsigned int radioIndex)
|
||||
{
|
||||
struct schema_Wifi_Radio_State rstate;
|
||||
|
||||
if (!radio_state_get(radioIndex, &rstate))
|
||||
{
|
||||
LOGE("%s: Radio state update failed -- unable to get state for idx %d",
|
||||
__func__, radioIndex);
|
||||
return false;
|
||||
}
|
||||
LOGN("Updating state for radio index %d...", radioIndex);
|
||||
g_rops.op_rstate(&rstate);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool radio_copy_config_from_state(
|
||||
int radioIndex,
|
||||
struct schema_Wifi_Radio_State *rstate,
|
||||
struct schema_Wifi_Radio_Config *rconf)
|
||||
{
|
||||
memset(rconf, 0, sizeof(*rconf));
|
||||
schema_Wifi_Radio_Config_mark_all_present(rconf);
|
||||
rconf->_partial_update = true;
|
||||
rconf->vif_configs_present = false;
|
||||
|
||||
SCHEMA_SET_STR(rconf->if_name, rstate->if_name);
|
||||
LOGT("rconf->ifname = %s", rconf->if_name);
|
||||
SCHEMA_SET_STR(rconf->freq_band, rstate->freq_band);
|
||||
LOGT("rconf->freq_band = %s", rconf->freq_band);
|
||||
SCHEMA_SET_STR(rconf->hw_type, rstate->hw_type);
|
||||
LOGT("rconf->hw_type = %s", rconf->hw_type);
|
||||
SCHEMA_SET_INT(rconf->enabled, rstate->enabled);
|
||||
LOGT("rconf->enabled = %d", rconf->enabled);
|
||||
SCHEMA_SET_INT(rconf->channel, rstate->channel);
|
||||
LOGT("rconf->channel = %d", rconf->channel);
|
||||
SCHEMA_SET_INT(rconf->tx_power, rstate->tx_power);
|
||||
LOGT("rconf->tx_power = %d", rconf->tx_power);
|
||||
SCHEMA_SET_STR(rconf->country, rstate->country);
|
||||
LOGT("rconf->country = %s", rconf->country);
|
||||
SCHEMA_SET_STR(rconf->ht_mode, rstate->ht_mode);
|
||||
LOGT("rconf->ht_mode = %s", rconf->ht_mode);
|
||||
SCHEMA_SET_STR(rconf->hw_mode, rstate->hw_mode);
|
||||
LOGT("rconf->hw_mode = %s", rconf->hw_mode);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void radio_resync_all_task(void *arg)
|
||||
{
|
||||
int r, rnum;
|
||||
int ret;
|
||||
int s, snum;
|
||||
char ssid_ifname[128];
|
||||
|
||||
LOGT("Re-sync started");
|
||||
|
||||
#if 1
|
||||
ret = wifi_getRadioNumberOfEntries(&rnum);
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
LOGE("%s: failed to get radio count", __func__);
|
||||
goto out;
|
||||
}
|
||||
#else
|
||||
rnum = 3;
|
||||
#endif
|
||||
|
||||
for(r = 0; r < rnum; r++)
|
||||
{
|
||||
if (!radio_state_update(r))
|
||||
{
|
||||
LOGW("Cannot update radio state for radio index %d", r);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
#if 1
|
||||
ret = wifi_getSSIDNumberOfEntries(&snum);
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
LOGE("%s: failed to get SSID count", __func__);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (snum == 0)
|
||||
{
|
||||
LOGE("%s: no SSIDs detected", __func__);
|
||||
goto out;
|
||||
}
|
||||
#else
|
||||
snum = 5;
|
||||
#endif
|
||||
|
||||
for (s = 0; s < snum; s++)
|
||||
{
|
||||
memset(ssid_ifname, 0, sizeof(ssid_ifname));
|
||||
ret = wifi_getVIFName(s, ssid_ifname, sizeof(ssid_ifname));
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Filter SSID's that we don't have mappings for
|
||||
if (!target_unmap_ifname_exists(ssid_ifname))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Fetch existing clients
|
||||
if (!clients_hal_fetch_existing(s))
|
||||
{
|
||||
LOGW("Fetching existing clients for %s failed", ssid_ifname);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!vif_state_update(s))
|
||||
{
|
||||
LOGW("Cannot update VIF state for SSID index %d", s);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
out:
|
||||
LOGT("Re-sync completed");
|
||||
g_resync_ongoing = false;
|
||||
}
|
||||
|
||||
void radio_trigger_resync()
|
||||
{
|
||||
if (!g_resync_ongoing)
|
||||
{
|
||||
g_resync_ongoing = true;
|
||||
LOGI("Radio re-sync scheduled");
|
||||
evsched_task(&radio_resync_all_task, NULL,
|
||||
EVSCHED_SEC(2));
|
||||
} else
|
||||
{
|
||||
LOGT("Radio re-sync already ongoing!");
|
||||
}
|
||||
}
|
||||
|
||||
static void healthcheck_task(void *arg)
|
||||
{
|
||||
LOGI("Healthcheck re-sync");
|
||||
radio_trigger_resync();
|
||||
evsched_task_reschedule_ms(EVSCHED_SEC(15));
|
||||
}
|
||||
|
||||
bool target_radio_init(const struct target_radio_ops *ops)
|
||||
{
|
||||
g_rops = *ops;
|
||||
evsched_task(&healthcheck_task, NULL, EVSCHED_SEC(5));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_radio_config_init2()
|
||||
{
|
||||
int r;
|
||||
int rnum;
|
||||
int s;
|
||||
int snum;
|
||||
int ssid_radio_idx;
|
||||
char ssid_ifname[128];
|
||||
int ret;
|
||||
|
||||
struct schema_Wifi_VIF_Config vconfig;
|
||||
struct schema_Wifi_VIF_State vstate;
|
||||
struct schema_Wifi_Radio_Config rconfig;
|
||||
struct schema_Wifi_Radio_State rstate;
|
||||
|
||||
target_ifname_map_init();
|
||||
|
||||
#if 1
|
||||
ret = wifi_getRadioNumberOfEntries(&rnum);
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
LOGE("%s: failed to get radio count", __func__);
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
rnum = 3;
|
||||
#endif
|
||||
|
||||
for (r = 0; r < rnum; r++)
|
||||
{
|
||||
radio_state_get(r, &rstate);
|
||||
radio_copy_config_from_state(r, &rstate, &rconfig);
|
||||
g_rops.op_rconf(&rconfig);
|
||||
g_rops.op_rstate(&rstate);
|
||||
|
||||
#if 1
|
||||
ret = wifi_getSSIDNumberOfEntries(&snum);
|
||||
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
LOGE("%s: failed to get SSID count", __func__);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (snum == 0)
|
||||
{
|
||||
LOGE("%s: no SSIDs detected", __func__);
|
||||
continue;
|
||||
}
|
||||
#else
|
||||
snum = 5;
|
||||
#endif
|
||||
|
||||
for (s = 0; s < snum; s++)
|
||||
{
|
||||
memset(ssid_ifname, 0, sizeof(ssid_ifname));
|
||||
ret = wifi_getVIFName(s, ssid_ifname, sizeof(ssid_ifname));
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
LOGW("%s: failed to get AP name for index %d. Skipping.\n", __func__, s);
|
||||
continue;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Filter SSID's that we don't have mappings for
|
||||
if (!target_unmap_ifname_exists(ssid_ifname))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = wifi_getSSIDRadioIndex(s, &ssid_radio_idx);
|
||||
if (ret != UCI_OK)
|
||||
{
|
||||
LOGW("Cannot get radio index for SSID %d", s);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ssid_radio_idx != r)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
LOGI("Found SSID index %d: %s", s, ssid_ifname);
|
||||
if (!vif_state_get(s, &vstate))
|
||||
{
|
||||
LOGE("%s: cannot get vif state for SSID index %d", __func__, s);
|
||||
continue;
|
||||
}
|
||||
if (!vif_copy_to_config(s, &vstate, &vconfig))
|
||||
{
|
||||
LOGE("%s: cannot copy VIF state to config for SSID index %d", __func__, s);
|
||||
continue;
|
||||
}
|
||||
g_rops.op_vconf(&vconfig, rconfig.if_name);
|
||||
g_rops.op_vstate(&vstate);
|
||||
}
|
||||
}
|
||||
/*
|
||||
if (!dfs_event_cb_registered)
|
||||
{
|
||||
if (wifi_chan_eventRegister(chan_event_cb) != RETURN_OK)
|
||||
{
|
||||
LOGE("Failed to register chan event callback\n");
|
||||
}
|
||||
|
||||
dfs_event_cb_registered = true;
|
||||
}
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_radio_config_need_reset()
|
||||
{
|
||||
return needReset;
|
||||
}
|
||||
|
||||
static void radio_ifname_to_idx(char* if_name, int* radioIndex)
|
||||
{
|
||||
// TODO: Quick hack. This needs to be improved.
|
||||
*radioIndex = atoi(strndup(if_name + 5, 5));
|
||||
}
|
||||
|
||||
bool target_radio_config_set2(
|
||||
const struct schema_Wifi_Radio_Config *rconf,
|
||||
const struct schema_Wifi_Radio_Config_flags *changed)
|
||||
{
|
||||
int radioIndex;
|
||||
bool rc = true;
|
||||
|
||||
radio_ifname_to_idx(target_map_ifname((char*)rconf->if_name), &radioIndex);
|
||||
|
||||
if (changed->channel || changed->ht_mode)
|
||||
{
|
||||
if (!wifi_setRadioChannel(radioIndex, rconf->channel, rconf->ht_mode))
|
||||
{
|
||||
LOGE("%s: cannot change radio channel for %s", __func__, rconf->if_name);
|
||||
rc = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (changed->enabled)
|
||||
{
|
||||
if (!wifi_setRadioEnabled(radioIndex, rconf->enabled))
|
||||
{
|
||||
LOGE("%s: cannot enable/disable radio for %s", __func__, rconf->if_name);
|
||||
rc = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (changed->tx_power)
|
||||
{
|
||||
if (!wifi_setRadioTxPower(radioIndex, rconf->tx_power))
|
||||
{
|
||||
LOGE("%s: cannot set radio tx power for %s", __func__, rconf->if_name);
|
||||
rc = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (changed->bcn_int)
|
||||
{
|
||||
int beacon_interval = rconf->bcn_int;
|
||||
if ((rconf->bcn_int < 50) || (rconf->bcn_int > 400)) beacon_interval = 100;
|
||||
if (!wifi_setRadioBeaconInterval(radioIndex, beacon_interval))
|
||||
{
|
||||
LOGE("%s: cannot set beacon interval radio for %s", __func__, rconf->if_name);
|
||||
rc = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ((changed->ht_mode) || (changed->hw_mode) || (changed->freq_band))
|
||||
{
|
||||
if (!wifi_setRadioModes(radioIndex, rconf->freq_band, rconf->ht_mode, rconf->hw_mode))
|
||||
{
|
||||
LOGE("%s: cannot set radio mode and bw for %s", __func__, rconf->if_name);
|
||||
rc = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (rc==false) LOGE("Radio config partially applied for %s", rconf->if_name);
|
||||
|
||||
return radio_state_update(radioIndex);
|
||||
}
|
||||
|
||||
bool radio_rops_vstate(struct schema_Wifi_VIF_State *vstate)
|
||||
{
|
||||
if (!g_rops.op_vstate)
|
||||
{
|
||||
LOGE("%s: op_vstate not set", __func__);
|
||||
return false;
|
||||
}
|
||||
|
||||
g_rops.op_vstate(vstate);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool radio_rops_vconfig(
|
||||
struct schema_Wifi_VIF_Config *vconf,
|
||||
const char *radio_ifname)
|
||||
{
|
||||
if (!g_rops.op_vconf)
|
||||
{
|
||||
LOGE("%s: op_vconf not set", __func__);
|
||||
return false;
|
||||
}
|
||||
|
||||
g_rops.op_vconf(vconf, radio_ifname);
|
||||
return true;
|
||||
}
|
||||
|
||||
535
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/stats.c
Executable file
535
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/stats.c
Executable file
@ -0,0 +1,535 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "target.h"
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include "iwinfo.h"
|
||||
|
||||
#define NUM_MAX_CLIENTS 10
|
||||
|
||||
/*****************************************************************************
|
||||
* INTERFACE definitions
|
||||
*****************************************************************************/
|
||||
|
||||
bool target_is_radio_interface_ready(char *phy_name)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_is_interface_ready(char *if_name)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* STATS definitions
|
||||
*****************************************************************************/
|
||||
|
||||
bool target_radio_tx_stats_enable(radio_entry_t *radio_cfg, bool enable)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_radio_fast_scan_enable(radio_entry_t *radio_cfg, ifname_t if_name)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* CLIENT definitions
|
||||
*****************************************************************************/
|
||||
|
||||
target_client_record_t* target_client_record_alloc()
|
||||
{
|
||||
target_client_record_t *record = NULL;
|
||||
|
||||
record = malloc(sizeof(target_client_record_t));
|
||||
if (record == NULL) return NULL;
|
||||
|
||||
memset(record, 0, sizeof(target_client_record_t));
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
void target_client_record_free(target_client_record_t *record)
|
||||
{
|
||||
if (record != NULL)
|
||||
{
|
||||
free(record);
|
||||
}
|
||||
}
|
||||
|
||||
bool target_stats_clients_get(
|
||||
radio_entry_t *radio_cfg,
|
||||
radio_essid_t *essid,
|
||||
target_stats_clients_cb_t *client_cb,
|
||||
ds_dlist_t *client_list,
|
||||
void *client_ctx)
|
||||
{
|
||||
char buf[IWINFO_BUFSIZE];
|
||||
int len;
|
||||
struct iwinfo_assoclist_entry *assoc_client = NULL;
|
||||
target_client_record_t *client_entry = NULL;
|
||||
char stats_if_name[15];
|
||||
radio_type_t radio_type;
|
||||
|
||||
memset(stats_if_name, '\0', sizeof(stats_if_name));
|
||||
|
||||
if(!target_map_cloud_to_iw(radio_cfg->if_name, stats_if_name, sizeof(stats_if_name)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(strcmp(radio_cfg->if_name, "home-ap-24") == 0)
|
||||
{
|
||||
radio_type = RADIO_TYPE_2G;
|
||||
}
|
||||
else if(strcmp(radio_cfg->if_name, "home-ap-l50") == 0)
|
||||
{
|
||||
radio_type = RADIO_TYPE_5GL;
|
||||
}
|
||||
else if(strcmp(radio_cfg->if_name, "home-ap-u50") == 0)
|
||||
{
|
||||
radio_type = RADIO_TYPE_5GU;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// find iwinfo type
|
||||
const char *if_type = iwinfo_type(stats_if_name);
|
||||
const struct iwinfo_ops *winfo_ops = iwinfo_backend_by_name(if_type);
|
||||
|
||||
if(0 != winfo_ops->assoclist(stats_if_name, buf, &len))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
assoc_client = (struct iwinfo_assoclist_entry *)buf;
|
||||
|
||||
LOGN("%s:%d radiocfg.ifname.%s len.%d", __func__, __LINE__, radio_cfg->if_name, len);
|
||||
|
||||
//add a for loop to traverse through the lists
|
||||
for(int i = 0; i < len; i += sizeof(struct iwinfo_assoclist_entry))
|
||||
{
|
||||
//do all the copy stuff
|
||||
client_entry = target_client_record_alloc();
|
||||
client_entry->info.type = radio_type;
|
||||
memcpy(client_entry->info.mac, assoc_client->mac, sizeof(assoc_client->mac));
|
||||
memcpy(client_entry->info.ifname, radio_cfg->if_name, sizeof(radio_cfg->if_name));
|
||||
client_entry->stats.bytes_tx = assoc_client->tx_bytes;
|
||||
client_entry->stats.bytes_rx = assoc_client->rx_bytes;
|
||||
client_entry->stats.rssi = assoc_client->signal;
|
||||
client_entry->stats.rate_tx = assoc_client->tx_rate.rate;
|
||||
client_entry->stats.rate_rx = assoc_client->tx_rate.rate;
|
||||
|
||||
ds_dlist_insert_tail(client_list, client_entry);
|
||||
|
||||
LOGN("%s:%d mac.%02x:%02x:%02x:%02x:%02x:%02x", __func__, __LINE__,
|
||||
assoc_client->mac[0],
|
||||
assoc_client->mac[1],
|
||||
assoc_client->mac[2],
|
||||
assoc_client->mac[3],
|
||||
assoc_client->mac[4],
|
||||
assoc_client->mac[5]);
|
||||
//move to next client
|
||||
assoc_client++;
|
||||
}
|
||||
|
||||
(*client_cb)(client_list, client_ctx, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_clients_convert(
|
||||
radio_entry_t *radio_cfg,
|
||||
target_client_record_t *data_new,
|
||||
target_client_record_t *data_old,
|
||||
dpp_client_record_t *client_record)
|
||||
{
|
||||
memcpy(client_record->info.mac, data_new->info.mac, sizeof(data_new->info.mac));
|
||||
|
||||
client_record->stats.bytes_tx = data_new->stats.bytes_tx;
|
||||
client_record->stats.bytes_rx = data_new->stats.bytes_rx;
|
||||
client_record->stats.rssi = data_new->stats.rssi;
|
||||
client_record->stats.rate_tx = data_new->stats.rate_tx;
|
||||
client_record->stats.rate_rx = data_new->stats.rate_rx;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* SURVEY definitions
|
||||
*****************************************************************************/
|
||||
|
||||
target_survey_record_t* target_survey_record_alloc()
|
||||
{
|
||||
target_survey_record_t *record = NULL;
|
||||
|
||||
record = malloc(sizeof(target_survey_record_t));
|
||||
if (record == NULL) return NULL;
|
||||
|
||||
memset(record, 0, sizeof(target_survey_record_t));
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
void target_survey_record_free(target_survey_record_t *result)
|
||||
{
|
||||
if (result != NULL)
|
||||
{
|
||||
free(result);
|
||||
}
|
||||
}
|
||||
|
||||
bool target_stats_survey_get(
|
||||
radio_entry_t *radio_cfg,
|
||||
uint32_t *chan_list,
|
||||
uint32_t chan_num,
|
||||
radio_scan_type_t scan_type,
|
||||
target_stats_survey_cb_t *survey_cb,
|
||||
ds_dlist_t *survey_list,
|
||||
void *survey_ctx)
|
||||
{
|
||||
target_survey_record_t *survey_record;
|
||||
|
||||
survey_record = target_survey_record_alloc();
|
||||
survey_record->info.chan = 1;
|
||||
ds_dlist_insert_tail(survey_list, survey_record);
|
||||
|
||||
(*survey_cb)(survey_list, survey_ctx, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_survey_convert(
|
||||
radio_entry_t *radio_cfg,
|
||||
radio_scan_type_t scan_type,
|
||||
target_survey_record_t *data_new,
|
||||
target_survey_record_t *data_old,
|
||||
dpp_survey_record_t *survey_record)
|
||||
{
|
||||
survey_record->chan_tx = 30;
|
||||
survey_record->chan_self = 30;
|
||||
survey_record->chan_rx = 40;
|
||||
survey_record->chan_busy_ext = 50;
|
||||
survey_record->duration_ms = 60;
|
||||
survey_record->chan_busy = 70;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* NEIGHBORS definitions
|
||||
*****************************************************************************/
|
||||
|
||||
static uint32_t channel_to_freq(uint32_t chan)
|
||||
{
|
||||
uint32_t channel[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165};
|
||||
uint32_t freq[] = {2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560, 5580, 5660, 5680, 5700, 5720, 5745, 5765, 5785, 5805, 5825 };
|
||||
|
||||
for(int i = 0; i<33; i++)
|
||||
{
|
||||
if(channel[i] == chan)
|
||||
return freq[i];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool target_stats_scan_start(
|
||||
radio_entry_t *radio_cfg,
|
||||
uint32_t *chan_list,
|
||||
uint32_t chan_num,
|
||||
radio_scan_type_t scan_type,
|
||||
int32_t dwell_time,
|
||||
target_scan_cb_t *scan_cb,
|
||||
void *scan_ctx)
|
||||
{
|
||||
|
||||
char command[64];
|
||||
uint32_t frequency;
|
||||
char scan_if_name[15];
|
||||
memset(command, 0, strlen(command));
|
||||
memset(scan_if_name, '\0', strlen(scan_if_name));
|
||||
//sprintf(command,"iw %s scan duration %d", radio_cfg->if_name, dwell_time);
|
||||
//sprintf(command,"iw wlan0 scan duration 30");
|
||||
|
||||
if(!target_map_cloud_to_iw(radio_cfg->if_name, scan_if_name, sizeof(scan_if_name)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
frequency = channel_to_freq(chan_list[0]);
|
||||
sprintf(command,"iw %s scan duration 30 freq %d", scan_if_name, frequency);
|
||||
LOGN("Freq: %d %d", frequency, chan_list[0]);
|
||||
LOGN("scanning command : %s", command);
|
||||
LOGN("channel num: %d", chan_num);
|
||||
LOGN("scan_type : %d", scan_type);
|
||||
if(system(command) == -1)
|
||||
{
|
||||
(*scan_cb)(scan_ctx, false);
|
||||
LOGN("SCAN FAILED");
|
||||
return false;
|
||||
}
|
||||
|
||||
(*scan_cb)(scan_ctx, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_scan_stop(
|
||||
radio_entry_t *radio_cfg,
|
||||
radio_scan_type_t scan_type)
|
||||
{
|
||||
char command[64];
|
||||
char scan_if_name[15];
|
||||
|
||||
memset(scan_if_name, '\0', strlen(scan_if_name));
|
||||
memset(command, 0, strlen(command));
|
||||
|
||||
if(!target_map_cloud_to_iw(radio_cfg->if_name, scan_if_name, sizeof(scan_if_name)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
sprintf(command,"iw %s scan abort", scan_if_name);
|
||||
LOGN("stop scan command : %s", command);
|
||||
|
||||
if(system(command) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_scan_get(
|
||||
radio_entry_t *radio_cfg,
|
||||
uint32_t *chan_list,
|
||||
uint32_t chan_num,
|
||||
radio_scan_type_t scan_type,
|
||||
dpp_neighbor_report_data_t *scan_results)
|
||||
{
|
||||
char command[128];
|
||||
FILE *fp=NULL;
|
||||
long int fsize;
|
||||
char *buffer=NULL;
|
||||
char *tmp=NULL;
|
||||
char sig[4];
|
||||
char lastseen[12];
|
||||
char ssid[32];
|
||||
//char channwidth[4];
|
||||
char TSF[20];
|
||||
char scan_if_name[15];
|
||||
|
||||
memset(scan_if_name, '\0', strlen(scan_if_name));
|
||||
memset(command, 0, strlen(command));
|
||||
// sprintf(command,"iw %s scan dump > /tmp/scan%s.dump", radio_cfg->if_name, radio_cfg->if_name);
|
||||
// LOGN("dump scan command : %s", command);
|
||||
|
||||
if(!target_map_cloud_to_iw(radio_cfg->if_name, scan_if_name, sizeof(scan_if_name)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
sprintf(command,"iw %s scan dump > /tmp/scan.dump", scan_if_name);
|
||||
LOGN("dump scan command : %s", command);
|
||||
if(system(command) != -1)
|
||||
{
|
||||
fp = fopen("/tmp/scan.dump","r");
|
||||
}
|
||||
|
||||
if(fp == NULL)
|
||||
return false;
|
||||
|
||||
fseek(fp, 0, SEEK_END);
|
||||
fsize = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
buffer = malloc(fsize+1);
|
||||
fread(buffer, 1, fsize, fp);
|
||||
buffer[fsize] = 0;
|
||||
fclose(fp);
|
||||
tmp = buffer;
|
||||
|
||||
while(strstr(tmp,"BSS") != NULL)
|
||||
{
|
||||
dpp_neighbor_record_list_t *neighbor;
|
||||
|
||||
neighbor = dpp_neighbor_record_alloc();
|
||||
if (neighbor == NULL) return false;
|
||||
|
||||
neighbor->entry.type = radio_cfg->type;
|
||||
|
||||
tmp = strstr(tmp,"BSS");
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
tmp = tmp + 4;
|
||||
strncpy(neighbor->entry.bssid, tmp, 17);
|
||||
}
|
||||
|
||||
tmp = strstr(tmp,"TSF");
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
tmp = tmp + 4;
|
||||
sscanf(tmp, "%s", TSF);
|
||||
neighbor->entry.tsf = atoll(TSF);
|
||||
}
|
||||
|
||||
tmp = strstr(tmp,"signal");
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
tmp = tmp + 8;
|
||||
strncpy(sig, tmp, 3);
|
||||
neighbor->entry.sig = atoi(sig);
|
||||
}
|
||||
|
||||
tmp = strstr(tmp,"last seen");
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
tmp = tmp + 11;
|
||||
sscanf(tmp, "%s", lastseen);
|
||||
neighbor->entry.lastseen = atoi(lastseen);
|
||||
}
|
||||
|
||||
tmp = strstr(tmp,"SSID");
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
tmp = tmp + 6;
|
||||
sscanf(tmp, "%s", ssid);
|
||||
strncpy(neighbor->entry.ssid, ssid, 32);
|
||||
}
|
||||
/* In some cases channel width is missing so causes a crash
|
||||
tmp = strstr(tmp,"STA channel width");
|
||||
if(tmp!=NULL)
|
||||
{
|
||||
tmp = tmp + 19;
|
||||
sscanf(tmp, "%s", channwidth);
|
||||
neighbor->entry.chanwidth = atoi(channwidth);
|
||||
}
|
||||
*/
|
||||
neighbor->entry.chan = chan_list[0];
|
||||
|
||||
ds_dlist_insert_tail(&scan_results->list, neighbor);
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* DEVICE definitions
|
||||
*****************************************************************************/
|
||||
|
||||
bool target_stats_device_temp_get(
|
||||
radio_entry_t *radio_cfg,
|
||||
dpp_device_temp_t *temp_entry)
|
||||
{
|
||||
int32_t temperature;
|
||||
FILE *fp = NULL;
|
||||
|
||||
if(strcmp(radio_cfg->if_name, "home-ap-24") == 0)
|
||||
{
|
||||
fp = fopen("/sys/class/hwmon/hwmon1/temp1_input","r");
|
||||
}
|
||||
else if(strcmp(radio_cfg->if_name, "home-ap-l50") == 0)
|
||||
{
|
||||
fp = fopen("/sys/class/hwmon/hwmon2/temp1_input","r");
|
||||
}
|
||||
else if(strcmp(radio_cfg->if_name, "home-ap-u50") == 0)
|
||||
{
|
||||
fp = fopen("/sys/class/hwmon/hwmon0/temp1_input","r");
|
||||
}
|
||||
|
||||
if(fp==NULL)
|
||||
{
|
||||
LOG(ERR,"Failed to open temp input files");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(fscanf(fp,"%d",&temperature) == EOF)
|
||||
{
|
||||
LOG(ERR,"Temperature reading failed");
|
||||
fclose(fp);
|
||||
return false;
|
||||
}
|
||||
|
||||
LOGN("temperature : %d", temperature);
|
||||
|
||||
fclose(fp);
|
||||
temp_entry->type = radio_cfg->type;
|
||||
temp_entry->value = (temperature/1000);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_device_txchainmask_get(
|
||||
radio_entry_t *radio_cfg,
|
||||
dpp_device_txchainmask_t *txchainmask_entry)
|
||||
{
|
||||
txchainmask_entry->type = radio_cfg->type;
|
||||
txchainmask_entry->value = 2;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_device_fanrpm_get(uint32_t *fan_rpm)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* CAPACITY definitions
|
||||
*****************************************************************************/
|
||||
|
||||
bool target_stats_capacity_enable(radio_entry_t *radio_cfg, bool enabled)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_capacity_get(
|
||||
radio_entry_t *radio_cfg,
|
||||
target_capacity_data_t *capacity_new)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_stats_capacity_convert(
|
||||
target_capacity_data_t *capacity_new,
|
||||
target_capacity_data_t *capacity_old,
|
||||
dpp_capacity_record_t *capacity_entry)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -0,0 +1,135 @@
|
||||
/*
|
||||
Copyright (c) 2017, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "evsched.h"
|
||||
#include "os.h"
|
||||
#include "os_nif.h"
|
||||
#include "log.h"
|
||||
#include "const.h"
|
||||
|
||||
#include "target.h"
|
||||
|
||||
struct ev_loop *wifihal_evloop = NULL;
|
||||
|
||||
/******************************************************************************
|
||||
* TARGET definitions
|
||||
*****************************************************************************/
|
||||
|
||||
bool target_ready(struct ev_loop *loop)
|
||||
{
|
||||
wifihal_evloop = loop;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_init(target_init_opt_t opt, struct ev_loop *loop)
|
||||
{
|
||||
#if 0
|
||||
if (!target_map_ifname_init())
|
||||
{
|
||||
LOGE("Target init failed to initialize interface mapping");
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
wifihal_evloop = loop;
|
||||
|
||||
switch (opt)
|
||||
{
|
||||
case TARGET_INIT_MGR_SM:
|
||||
break;
|
||||
|
||||
case TARGET_INIT_MGR_WM:
|
||||
if (evsched_init(loop) == false)
|
||||
{
|
||||
LOGE("Initializing WM "
|
||||
"(Failed to initialize EVSCHED)");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// sync_init(SYNC_MGR_WM, NULL);
|
||||
break;
|
||||
|
||||
case TARGET_INIT_MGR_CM:
|
||||
// sync_init(SYNC_MGR_CM, cloud_config_mode_init);
|
||||
break;
|
||||
|
||||
case TARGET_INIT_MGR_BM:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_close(target_init_opt_t opt, struct ev_loop *loop)
|
||||
{
|
||||
switch (opt)
|
||||
{
|
||||
case TARGET_INIT_MGR_WM:
|
||||
// sync_cleanup();
|
||||
/* fall through */
|
||||
|
||||
case TARGET_INIT_MGR_SM:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
target_map_close();
|
||||
|
||||
return true;
|
||||
}
|
||||
#if 0
|
||||
const char* target_persistent_storage_dir(void)
|
||||
{
|
||||
return TARGET_PERSISTENT_STORAGE;
|
||||
}
|
||||
|
||||
const char* target_scripts_dir(void)
|
||||
{
|
||||
return TARGET_SCRIPTS_PATH;
|
||||
}
|
||||
|
||||
const char* target_tools_dir(void)
|
||||
{
|
||||
return TARGET_TOOLS_PATH;
|
||||
}
|
||||
|
||||
const char* target_bin_dir(void)
|
||||
{
|
||||
return TARGET_BIN_PATH;
|
||||
}
|
||||
|
||||
const char* target_speedtest_dir(void)
|
||||
{
|
||||
return target_tools_dir();
|
||||
}
|
||||
#endif
|
||||
1079
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/uci_helper.c
Executable file
1079
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/uci_helper.c
Executable file
File diff suppressed because it is too large
Load Diff
1176
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/vif.c
Executable file
1176
feeds/wlan-ap/opensync/src/platform/openwrt/src/lib/target/src/vif.c
Executable file
File diff suppressed because it is too large
Load Diff
1
feeds/wlan-ap/opensync/src/vendor/ap2220/.version
vendored
Normal file
1
feeds/wlan-ap/opensync/src/vendor/ap2220/.version
vendored
Normal file
@ -0,0 +1 @@
|
||||
0.1.0
|
||||
23
feeds/wlan-ap/opensync/src/vendor/ap2220/LICENSE
vendored
Normal file
23
feeds/wlan-ap/opensync/src/vendor/ap2220/LICENSE
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
2
feeds/wlan-ap/opensync/src/vendor/ap2220/NOTICE
vendored
Normal file
2
feeds/wlan-ap/opensync/src/vendor/ap2220/NOTICE
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
Copyright 2019, Plume Design Inc. All rights reserved.
|
||||
Licensed under the "3-Clause BSD License" also known as "Revised BSD License"
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ap2220/README.md
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ap2220/README.md
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OpenSync vendor layer example for armvirt
|
||||
-----------------------------------------
|
||||
|
||||
This is an example vendor layer for the OpenWrt `armvirt` target.
|
||||
It can be used as a template for other targets.
|
||||
|
||||
This repository is a part of the `opensync-openwrt` project.
|
||||
|
||||
For more info please visit: https://opensync.io
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ap2220/build/vendor-arch.mk
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ap2220/build/vendor-arch.mk
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OS_TARGETS +=AP2220
|
||||
|
||||
ifeq ($(TARGET),AP2220)
|
||||
PLATFORM=openwrt
|
||||
VENDOR=ap2220
|
||||
PLATFORM_DIR := platform/$(PLATFORM)
|
||||
KCONFIG_TARGET ?= $(PLATFORM_DIR)/kconfig/openwrt_generic
|
||||
ARCH_MK := $(PLATFORM_DIR)/build/$(PLATFORM).mk
|
||||
endif
|
||||
75
feeds/wlan-ap/opensync/src/vendor/ap2220/ovsdb/static_configuration.json
vendored
Normal file
75
feeds/wlan-ap/opensync/src/vendor/ap2220/ovsdb/static_configuration.json
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
[
|
||||
"Open_vSwitch",
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
}
|
||||
]
|
||||
179
feeds/wlan-ap/opensync/src/vendor/ap2220/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
179
feeds/wlan-ap/opensync/src/vendor/ap2220/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGSTCCBDGgAwIBAgIEEAAABDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJV
|
||||
UzEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4xKzApBgNVBAsMIlBsdW1lIERl
|
||||
c2lnbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHTAbBgNVBAMMFFBsdW1lIERlc2ln
|
||||
biBSb290IENBMB4XDTE4MDEyMjIzMjMzOVoXDTI4MDEyMjIzMjMzOVowbTELMAkG
|
||||
A1UEBhMCVVMxGjAYBgNVBAoMEVBsdW1lIERlc2lnbiBJbmMuMSswKQYDVQQLDCJQ
|
||||
bHVtZSBEZXNpZ24gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRUwEwYDVQQDDAxQbHVt
|
||||
ZSBUTFMgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSDVhBzdBE
|
||||
OM7oi7YzRevbzmM5dJhYKC+l44lFnltTIObbFk4QGN/sGQmgtZybEHtBnFgbamb5
|
||||
sIJsBVCkNFojFjg/HQwDc7TpwWN339t3Ih7iXmReiEfp8h1msWQRBpP3+d3E56ZP
|
||||
PlJwivbw3ywfXSv7QlxSZ5iJeC6amPohvj3/VJeqM5c8hiiDuuZsZMAaW2Yl9gm/
|
||||
keM//Z7AfIGjbidUmJ9nfDftNPexqzx82RROATONIglk3PXjZxAyKSEuYS0djuPK
|
||||
XXu5j8w222efdS6ARufpEZAO5LH/MVPdZpT1Emzh+uKjTQYlL0Flu8PyP30Do/cK
|
||||
KBGMwZYAV4op8or8ntK7ndDTu3Xr6tq6g6KduxUjVukXpAmQhbwoGRUzJj4zC3oM
|
||||
QkIYLlM1JOUrIlSw0s/E2ONNaWhL89bNFw3/LOhG6yAjbeJvjsebB/iQEvVJQfmV
|
||||
i73QNwQQ93kCj+/unIkc+hi1/Vjuhkx3Q+LV4wjG4iaUoPlf49K1SqV9xDcc+2KF
|
||||
0K8sVQ4Tqb2UQYp63C44HEZzRS3fhBp7xmEBTncCOckttqz1zCZQ0dcuyYm3bovf
|
||||
NO5ur7OvvNL7ALJz9ah56v5KUDDqeH+aRm8i/rYdDSpcNm5kA9Ct2Q7/RSCCqFlO
|
||||
bk+1yEkgAm9Jkebvi5L05dJryhXw31cXVwIDAQABo4HoMIHlMA4GA1UdDwEB/wQE
|
||||
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTKifKsuPwRxf+47Nsr
|
||||
UHqivPBIkTAfBgNVHSMEGDAWgBQivhNIgc2MBY9u64p9MYFvWmDNOTBEBggrBgEF
|
||||
BQcBAQQ4MDYwNAYIKwYBBQUHMAKGKGh0dHBzOi8vd3d3LnBsdW1ld2lmaS5jb20v
|
||||
Y2Evcm9vdC1jYS5jZXIwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly93d3cucGx1
|
||||
bWV3aWZpLmNvbS9jYS9yb290LWNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAjG4R
|
||||
nkcVdO4oQqjJeWLIdNu48V3T7CB08t3sqjQaxu4gAXfYm8a+tdubff6Dg0PuTFzh
|
||||
edogXQchaEiYeEFTPNrz4hf5NhS+9t2PKcEpAKCbY6vjpfT9F5gUDrXmfUZnLIUV
|
||||
SVXZ6NC+/jI56cAykbCv5ytYxSE0LxSgA3OLZyd4QESJdSJIkCw7s3nDx7rv05Np
|
||||
UjQuFu1+WbXxUkrKYZBCTwczuKsDc2syiscC2sBUydDbK1jySV1og3nY6JXojNSa
|
||||
V8OtnsnAUdD8Gbg38UNFb3SN7VmE1RIYgXgj7tVEKW/Rhyf49LCchAl+CO2m9TKW
|
||||
ZPA2NcQ94b++VoreAdkpH3eOkko12RofWQo+wHT/g6qm668L7exONawjmU+Or2Wj
|
||||
TXJFz5xb57kEnZjyXX4GgCxVSr8hHPA0+gFRPS4mkUZAQaH5XkODvcLAJ6CCSYIp
|
||||
78B89VI8lkSji0wanlGcrSbUVHg6bVNw++gW//N4DRfqURRqYwDLQt6BXi11vgSu
|
||||
l8NrrzBLU7leb1+IcY5p8g+z9HE4PM7uxd9fcP/P3Rldq7EW9V1NIXTn0kPHJd2C
|
||||
zDReVg7t/tCFWM6wyXL1KKuXd36Py1XxATsgEwkmfXJn4QjOn60NK/SxTDKIBfvZ
|
||||
9iWfWz/J3JLDRMk5Y/5CFuC6lm+6cHkbT4WR3wA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGxzCCBK+gAwIBAgIJAIyLecDrnpzeMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTAeFw0xNjAzMDMyMjQwMTRaFw0yMTAzMDIyMjQwMTRaMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALo0cr8ZyiLs
|
||||
CUyp4P4JFXkU6Ymx6QhN1DZ1SCuDgiMkX8A7/QCDMKz7Q70qqM022NwYW3Ff5VJG
|
||||
El/epXmcaPx7vzfXpsy023mtyaLcwovCwr+IRDM5LgKlW9v3wcaWBWLEXbbv8are
|
||||
a9q1eXW5jJjAyDMPdkrUqCwdJy3Gjnwy16mRiBnaY6A2+wVr5mTzkrtNGzJiEzhX
|
||||
MECnal7T16sOC8HeaJZ4BVYJzxAnyU+wlf0ygzQeF4WaYXTDgcRs8g1D62LHcr7f
|
||||
ioAT2Z69V5CVHFX7VJoE1PJeU867GwZDtM+osZ0WJFkeMA8cJgrs7ujKTl9nmiVp
|
||||
Q2qt6BDABrd9ibZkjHj5XcXQz7o+z3zwL9v9x/1bilmY/yBz2rlozR+xbNwTM6Ra
|
||||
D+FXpcv2caj2851Ci59eh+5eCJJkMNzGKdZZ9wyMaPqk2bynGDf6glhJc2cML9L3
|
||||
+L/iLq63yiYDOmDwKXiAjPVCPPgMPxp+Y4gwfiZdop2ou8W7xzFxOEwKuS8qK6Qp
|
||||
9j8Mq1ritAFa4WIiVsuHjrEkmykCzHvb9z5ujsrZ4hJzBDNqfjXkazpR2wb4o895
|
||||
YfBQIHdoQy2H+wsOEaNatUkFuSE5uw2nMS+SDf8J2ouAG0U51n/SnWKd636WC4s+
|
||||
Mn5Bd8nwNP1H1DXCUf8TS7iow+Bt0A+VAgMBAAGjggEGMIIBAjAdBgNVHQ4EFgQU
|
||||
CBK8rxUUByBBgsU0VXsOLjVIWiEwgdIGA1UdIwSByjCBx4AUCBK8rxUUByBBgsU0
|
||||
VXsOLjVIWiGhgaOkgaAwgZ0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
|
||||
bmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xGzAZBgNVBAoTElBsdW1lIERlc2lnbiwg
|
||||
SW5jLjEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29tMSIwIAYD
|
||||
VQQDExlQbHVtZSBEZXNpZ24gQXV0aG9yaXR5IEExggkAjIt5wOuenN4wDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAsTLMCgl/1rSf/+/14y0FWyj2yvOq
|
||||
X5hgd/+kIRfIp/5Ib1wWdpWGY5sTV3Vy1rQvWHF/PijP9qMWE5QKfxHh/l2+HKv0
|
||||
gyRPW3I4QgK3Qr/u75nNFizYhI2L2n1+2MQmoejcu6TI9Kk5n7oVo3dGn2KxkrKC
|
||||
WiB0QZmJgD6iIrJQt6oXB/oG4gSHqTIaTawflIvFgr5S94rKjVm+ZBtz6nOO184s
|
||||
fDGXNOfw8zOXkGB5gAtxF5oX+XQ9s/2y0nrDbT/Oup3MzzrZ2zAEXqIUvb6cP8z6
|
||||
IqYGiwtzzhD8F/4jA6dUI/pnlPMnT670sy4YO7GsJaZi/Af/pvdRh342FFUpV3HF
|
||||
+jJJxuejI+yehI2y0S1M4idmJLaCS5EldJF1GB3DU5CjSOhCeZKpIrkWEAIEXf4f
|
||||
VTffDmOn/5SAcdKwe9v7tzJ2knNME0BPhVei/cSmU3VI6sAY04HzPtC498BLyaUJ
|
||||
Nj+70iQ3tvNjegwfRI4CIgn0/Y90W6NcEd9Ihg/MTImH5uQag7ftupFqp7wP882N
|
||||
SJGjWsd/oMDbB8kcyLKZ8z05nYhxG8v0/D6esu51SAXhnC2G2jybjuk3QHvMRTBo
|
||||
jMnFwM/u3cRLzWwsHP3dSkY1NsnfMKA+ivUEXslq+8R0EH02Js4OUTrscDKPJSWo
|
||||
YDLIkv5E8HWLVoc=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFyDCCA7CgAwIBAgIJAJ78fVrF1kYwMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNV
|
||||
BAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4x
|
||||
JzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UE
|
||||
AwwOT3BlblN5bmMgQ0EgQTEwIBcNMTkwMzI4MTI0ODIwWhgPMjA2OTAzMTUxMjQ4
|
||||
MjBaMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUg
|
||||
RGVzaWduIEluYy4xJzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhv
|
||||
cml0eTEXMBUGA1UEAwwOT3BlblN5bmMgQ0EgQTEwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQDZOu6RWVfAJy10izzsgcSVTPqkIK84Jhy02ZxEx+XUOLJg
|
||||
G6d75a2X2Qdb0xyu4vIr/zAnsFcm8L/w9J5MZh+IRvW1c9f5P7ROjzivM9vfub2I
|
||||
CJ+4acoN0ErWX5qqNPx1FvL5gM7TzsgbvmUMYKcRxRUKmo9CCO1uJy/zjvr8jDNZ
|
||||
ZvrI2cPA70UHjwzP3LPANH8gnQTZMdFM3W/K6vyRIJdIYGmsGRYdzrqI2jP7z5Ex
|
||||
5tiqthZQPlXhwj8QFk8vONbuUEdWq/dPlY4LKDgg4qE0t9eV3kLwC8WPTcly2KwZ
|
||||
FaFdrQFpeLQh3H3CcaN8O++lv5BlCNEbOkEE9CUaUHbAVSNDv4tePpHp0pFJGkl4
|
||||
io6OkJ20hywjyJ71RY+qxgw/oyTii5mDTcqIVYJ3nkblrHKlQihnZ7+uHSJzhioO
|
||||
JEv0t/eBetG62N4GzuiUH6MUARsDf7sd8anFf+pk4zUEwTVkdkYb2j/tp+g0WV08
|
||||
kvnNJ/wRuT9mYO+PKS9HXHwG1brBEwAepN524FgncopTwm+VglsHqrH9c91c5bbC
|
||||
GwHKlEUEhRy45+2OACIhqhaoPqolFXNLSXGJFAkA7hYzbXrCs7kc8tzrqFj7kUQn
|
||||
uMQj8TtVM1+gFOfy0J0nGOV7hs/ya30obLGYa8MHXD2cR3GK6Xpl8ZDHeCmQvwID
|
||||
AQABo1MwUTAdBgNVHQ4EFgQU3Ji6Gbgbvie8gFgWEJNd1OzU31QwHwYDVR0jBBgw
|
||||
FoAU3Ji6Gbgbvie8gFgWEJNd1OzU31QwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
||||
9w0BAQsFAAOCAgEAkjs7a0eHLLRuzt6+WKA/Q0/MD01H0r9ZaY9LC4WfyY49qsF+
|
||||
CYK/7pYPJVc7YbO8hlnxKfCkJlCxP7i4lNN91BW+Lw4keI0J/VKa0GdSnPy88Ps/
|
||||
5QtSXn+Yix1VHXfu7q45ORra2ZpuESNxXOCobbLBE6ow8lKNapCYkuex9wE2iMlA
|
||||
Z72Wul8K8X7oX1yIzNrnBc89b7vbMAc6F0iseE9eINmQpp5sqhk347/dLKOMVVNX
|
||||
lDqrw1bOgbDLW4aQdkws4fUnH8m7DjeOxSiJhR9jZRimtFdQ9VVv5wuQswGPOXue
|
||||
7vBDeHP8td3pZrsQygFzprOUvREKSJcle3xgiYxhbtVUfi/nBBgxLPM7+ga4jol6
|
||||
AByOCa6nPcMGbWikFTbO+bQgwka7V54RBXjKhBx1XBtpZHAooRm8PPDmesLbUWc1
|
||||
SB21o+8Kfm9+kVxup2udDrXo0cQpLskHKNCQOZbiIW/TCF+6cnQGSCCzgcMazgGS
|
||||
pm5oJskK3/z30xvKphU4o6CZzJocdIX5xS7lX+iQIYZNT42U31juEbhOpGUmg3xO
|
||||
lBGhysfYkR2AzDifN11uuy8uWca+4JDA6qutieEoNqY2gBMkyBe7qsvlsYphvnCM
|
||||
gIOXqPD3c4IGS6uxP+hzqn0na/b5Ai4I3iSAh5IvXr5pm+ZaQISq0WFBPIk=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
26
feeds/wlan-ap/opensync/src/vendor/ap2220/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
26
feeds/wlan-ap/opensync/src/vendor/ap2220/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIENDCCAhygAwIBAgIRAJ4QsQE9nHsbpnVHhkAKw2MwDQYJKoZIhvcNAQELBQAw
|
||||
eDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRowGAYDVQQKDBFQbHVtZSBEZXNp
|
||||
Z24gSW5jLjEnMCUGA1UECwweT3BlblN5bmMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
||||
MRcwFQYDVQQDDA5PcGVuU3luYyBDQSBBMTAeFw03MDAxMDEwMDAwMDBaFw0yOTAz
|
||||
MjYxMzI5MTNaMIGEMRIwEAYDVQQDDAlQUDMwMlgtRVgxCzAJBgNVBAYTAlVTMRow
|
||||
GAYDVQQKDBFQbHVtZSBEZXNpZ24gSW5jLjESMBAGA1UEBwwJUGFsbyBBbHRvMQsw
|
||||
CQYDVQQIDAJDQTEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29t
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE9nFC6TPcsnh0+fscQaYEKevb0uR95nao
|
||||
mDehTalGMwqt9BcOlDBahODfFhMu5SVw1ZmmmHo+ZIJ3ujK1VdrAgRRSh91k7dQv
|
||||
MVgeXT2se1rc1L8oKvTnIPF2UwsSo3+5o1owWDAfBgNVHSMEGDAWgBTcmLoZuBu+
|
||||
J7yAWBYQk13U7NTfVDAdBgNVHQ4EFgQUxecQdoP09CyFbUJUdeLj/R3Ah2AwFgYD
|
||||
VR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBAH23KQlxb2Du
|
||||
9XvHlq+AC5bF3cEFHxXS181qX+v61hMJm8VjugCzWuLuzc2bXEYFB+ZIVIPyTdAJ
|
||||
tP7EizrUxWUgBbbsgHRFdy/jPXj5XF6PE7GhSgRi3FbYwxrzuIasEaAziagHr7ep
|
||||
Hn3rJiNAo/KYhGyBpFYU7tJRmkpx1xaX8C5pTunR7jbyqOXM/h+rLlZJj2OHObN6
|
||||
xsFpcIJdT24pGTo9q5hhJUgxPlDnhrSB6yHoweO1FVgztsdjZKGou3RuKldVgunG
|
||||
m/KyYP9oAQYRX0QRvRrDTOzVb2ezPd/KUwNMprLanXu0lu2T++H8xiQt41BdgMsl
|
||||
63lkFDkFmeRgmaQUuiGMjU/Sac+kFhnkd/hoGigHYrgETd0FuqlWVE2VBsyv3/Pw
|
||||
3126SXL1spbl+/apVioH9Nl24fUQKbv5Bnyhd5IIjzgG8SMzPQ4CbSHAWqUqkdUZ
|
||||
bprS3nwLnE29zPULCg7Q1JfDsbf1+xe+r5xXVpUuca2kb4VnnNQ/z/jJCdP/3gy9
|
||||
jawfPNl0fwIHywLzaec1jtBmPFEPul7baRPCQdB3JF/WeuRuV3zakSs8XB8YyJaq
|
||||
Lq3KtNBJDcSEKn/Tc5wLRaEOCiRoQtVhtX7Cer9JUYcRWsLvO1e/N3z7LxFcv8/w
|
||||
glSwr3kI080u6Fx4QjxQWVWZiYL+3v01
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
7
feeds/wlan-ap/opensync/src/vendor/ap2220/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
7
feeds/wlan-ap/opensync/src/vendor/ap2220/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MIGkAgEBBDCyrVlkcE5QLYWpNyRTSo8zhjZ3ksrLzhdFgfIPDDO0HGTk/08aTGGM
|
||||
VrEvui9yLBmgBwYFK4EEACKhZANiAAT2cULpM9yyeHT5+xxBpgQp69vS5H3mdqiY
|
||||
N6FNqUYzCq30Fw6UMFqE4N8WEy7lJXDVmaaYej5kgne6MrVV2sCBFFKH3WTt1C8x
|
||||
WB5dPax7WtzUvygq9Ocg8XZTCxKjf7k=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
||||
66
feeds/wlan-ap/opensync/src/vendor/ap2220/src/lib/target/inc/target_AP2220.h
vendored
Normal file
66
feeds/wlan-ap/opensync/src/vendor/ap2220/src/lib/target/inc/target_AP2220.h
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef TARGET_AP2220_H_INCLUDED
|
||||
#define TARGET_AP2220_H_INCLUDED
|
||||
|
||||
#include "dpp_client.h"
|
||||
#include "dpp_survey.h"
|
||||
|
||||
#define TARGET_CERT_PATH "/var/run/openvswitch/certs"
|
||||
#define TARGET_MANAGERS_PID_PATH "/tmp/dmpid"
|
||||
#define TARGET_OVSDB_SOCK_PATH "/var/run/openvswitch/db.sock"
|
||||
#define TARGET_LOGREAD_FILENAME "messages"
|
||||
|
||||
void target_ifname_map_init();
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length);
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_CLIENT_RECORD_COMMON_STRUCT;
|
||||
dpp_client_stats_t stats;
|
||||
} target_client_record_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_SURVEY_RECORD_COMMON_STRUCT;
|
||||
} target_survey_record_t;
|
||||
|
||||
typedef void target_capacity_data_t;
|
||||
|
||||
/******************************************************************************
|
||||
* MANAGERS definitions
|
||||
*****************************************************************************/
|
||||
#if !defined(CONFIG_TARGET_MANAGER)
|
||||
#define TARGET_MANAGER_PATH(X) "/usr/plume/bin/"X
|
||||
#endif
|
||||
|
||||
#define TARGET_TOOLS_PATH "/usr/plume/tools"
|
||||
|
||||
#include "target_common.h"
|
||||
|
||||
#endif /* TARGET_AP2220_H_INCLUDED */
|
||||
3
feeds/wlan-ap/opensync/src/vendor/ap2220/src/lib/target/override.mk
vendored
Normal file
3
feeds/wlan-ap/opensync/src/vendor/ap2220/src/lib/target/override.mk
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/entity.c
|
||||
UNIT_CFLAGS += -I$(OVERRIDE_DIR)/inc
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
203
feeds/wlan-ap/opensync/src/vendor/ap2220/src/lib/target/src/entity.c
vendored
Normal file
203
feeds/wlan-ap/opensync/src/vendor/ap2220/src/lib/target/src/entity.c
vendored
Normal file
@ -0,0 +1,203 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <target.h>
|
||||
#include <os_types.h>
|
||||
#include <os_nif.h>
|
||||
#include "log.h"
|
||||
|
||||
/* devinfo is /dev/mtd9 for AP2220*/
|
||||
static char devInfoFileName[] = "/dev/mtd9";
|
||||
#define DEV_INFO_RECORD_SZ 40
|
||||
static char devInfoModelNumber[DEV_INFO_RECORD_SZ];
|
||||
static char devInfoSerialNumber[DEV_INFO_RECORD_SZ];
|
||||
static bool devInfoModelNumber_saved = false;
|
||||
static bool devInfoSerialNumber_saved = false;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *cloud_ifname;
|
||||
char *iw_ifname;
|
||||
char *iw_phyname;
|
||||
} ifmap_t;
|
||||
|
||||
ifmap_t stats_ifmap[] = {
|
||||
{ "home-ap-24", "wlan1", "phy1" },
|
||||
{ "home-ap-u50", "wlan0", "phy0" },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
void target_ifname_map_init()
|
||||
{
|
||||
target_map_init();
|
||||
|
||||
//Radio mappings
|
||||
target_map_insert("wifi0", "radio1");
|
||||
target_map_insert("wifi1", "radio2");
|
||||
target_map_insert("wifi2", "radio0");
|
||||
|
||||
//VIF mappings
|
||||
target_map_insert("home-ap-u50", "default_radio0");
|
||||
target_map_insert("home-ap-24", "default_radio1");
|
||||
target_map_insert("home-ap-l50", "default_radio2");
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(iw_name, mp->iw_ifname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(phy_name, mp->iw_phyname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
char *get_devinfo_record( char * tag, char * payload, size_t payloadsz )
|
||||
{
|
||||
FILE *devInfoFn = NULL;
|
||||
char buffer[80];
|
||||
char *tagPtr, *payloadPtr;
|
||||
int bytesRead = 0;
|
||||
bool record_found = false;
|
||||
|
||||
if (tag == NULL) return NULL;
|
||||
|
||||
devInfoFn = fopen(devInfoFileName, "r");
|
||||
if (devInfoFn == NULL) {
|
||||
LOGE("File open failed %s %s", devInfoFileName, tag );
|
||||
return NULL;
|
||||
}
|
||||
memset(buffer, 0, 80);
|
||||
payload[0] = 0;
|
||||
|
||||
while ( bytesRead < 0x300 && !feof(devInfoFn)) {
|
||||
fgets( buffer, 80, devInfoFn);
|
||||
tagPtr = strstr(buffer, tag);
|
||||
if (tagPtr != NULL) {
|
||||
strtok(tagPtr,"=");
|
||||
payloadPtr = strtok(NULL, " \n\r");
|
||||
LOGN ("devInfo %s %s", tag, payloadPtr);
|
||||
strncpy(payload, payloadPtr, payloadsz);
|
||||
record_found = true;
|
||||
break;
|
||||
} else {
|
||||
bytesRead += strlen(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(devInfoFn);
|
||||
if (record_found) {
|
||||
return payload;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool target_model_get(void *buff, size_t buffsz)
|
||||
{
|
||||
if (!devInfoModelNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "modelNumber=", devInfoModelNumber, DEV_INFO_RECORD_SZ))
|
||||
snprintf(devInfoModelNumber, DEV_INFO_RECORD_SZ, "%s", "AP2220");
|
||||
devInfoModelNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoModelNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_serial_get(void *buff, size_t buffsz)
|
||||
{
|
||||
os_macaddr_t mac;
|
||||
char mac_buff[TARGET_BUFF_SZ];
|
||||
int n;
|
||||
|
||||
if (!devInfoSerialNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "serial_number=", devInfoSerialNumber, DEV_INFO_RECORD_SZ))
|
||||
{
|
||||
if (true == os_nif_macaddr("br-lan", &mac))
|
||||
{
|
||||
memset(mac_buff, 0, sizeof(mac_buff));
|
||||
n = snprintf(mac_buff, sizeof(mac_buff), PRI(os_macaddr_plain_t), FMT(os_macaddr_t, mac));
|
||||
if (n == OS_MACSTR_PLAIN_SZ) {
|
||||
LOG(ERR, "buffer not large enough");
|
||||
return false;
|
||||
}
|
||||
strncpy(devInfoSerialNumber, mac_buff, buffsz);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(devInfoSerialNumber, DEV_INFO_RECORD_SZ, "%s", "AP2220-TIP-01");
|
||||
}
|
||||
|
||||
devInfoSerialNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoSerialNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_sw_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "0.1.0");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_platform_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "OPENWRT_AP2220");
|
||||
|
||||
return true;
|
||||
}
|
||||
1
feeds/wlan-ap/opensync/src/vendor/ecw5211/.version
vendored
Normal file
1
feeds/wlan-ap/opensync/src/vendor/ecw5211/.version
vendored
Normal file
@ -0,0 +1 @@
|
||||
0.1.0
|
||||
23
feeds/wlan-ap/opensync/src/vendor/ecw5211/LICENSE
vendored
Normal file
23
feeds/wlan-ap/opensync/src/vendor/ecw5211/LICENSE
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
2
feeds/wlan-ap/opensync/src/vendor/ecw5211/NOTICE
vendored
Normal file
2
feeds/wlan-ap/opensync/src/vendor/ecw5211/NOTICE
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
Copyright 2019, Plume Design Inc. All rights reserved.
|
||||
Licensed under the "3-Clause BSD License" also known as "Revised BSD License"
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ecw5211/README.md
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ecw5211/README.md
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OpenSync vendor layer example for armvirt
|
||||
-----------------------------------------
|
||||
|
||||
This is an example vendor layer for the OpenWrt `armvirt` target.
|
||||
It can be used as a template for other targets.
|
||||
|
||||
This repository is a part of the `opensync-openwrt` project.
|
||||
|
||||
For more info please visit: https://opensync.io
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ecw5211/build/vendor-arch.mk
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ecw5211/build/vendor-arch.mk
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OS_TARGETS +=ECW5211
|
||||
|
||||
ifeq ($(TARGET),ECW5211)
|
||||
PLATFORM=openwrt
|
||||
VENDOR=ecw5211
|
||||
PLATFORM_DIR := platform/$(PLATFORM)
|
||||
KCONFIG_TARGET ?= $(PLATFORM_DIR)/kconfig/openwrt_generic
|
||||
ARCH_MK := $(PLATFORM_DIR)/build/$(PLATFORM).mk
|
||||
endif
|
||||
104
feeds/wlan-ap/opensync/src/vendor/ecw5211/ovsdb/static_configuration.json
vendored
Normal file
104
feeds/wlan-ap/opensync/src/vendor/ecw5211/ovsdb/static_configuration.json
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
[
|
||||
"Open_vSwitch",
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "eth0",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "eth",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": true
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "eth0",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "eth",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
}
|
||||
]
|
||||
179
feeds/wlan-ap/opensync/src/vendor/ecw5211/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
179
feeds/wlan-ap/opensync/src/vendor/ecw5211/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGSTCCBDGgAwIBAgIEEAAABDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJV
|
||||
UzEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4xKzApBgNVBAsMIlBsdW1lIERl
|
||||
c2lnbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHTAbBgNVBAMMFFBsdW1lIERlc2ln
|
||||
biBSb290IENBMB4XDTE4MDEyMjIzMjMzOVoXDTI4MDEyMjIzMjMzOVowbTELMAkG
|
||||
A1UEBhMCVVMxGjAYBgNVBAoMEVBsdW1lIERlc2lnbiBJbmMuMSswKQYDVQQLDCJQ
|
||||
bHVtZSBEZXNpZ24gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRUwEwYDVQQDDAxQbHVt
|
||||
ZSBUTFMgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSDVhBzdBE
|
||||
OM7oi7YzRevbzmM5dJhYKC+l44lFnltTIObbFk4QGN/sGQmgtZybEHtBnFgbamb5
|
||||
sIJsBVCkNFojFjg/HQwDc7TpwWN339t3Ih7iXmReiEfp8h1msWQRBpP3+d3E56ZP
|
||||
PlJwivbw3ywfXSv7QlxSZ5iJeC6amPohvj3/VJeqM5c8hiiDuuZsZMAaW2Yl9gm/
|
||||
keM//Z7AfIGjbidUmJ9nfDftNPexqzx82RROATONIglk3PXjZxAyKSEuYS0djuPK
|
||||
XXu5j8w222efdS6ARufpEZAO5LH/MVPdZpT1Emzh+uKjTQYlL0Flu8PyP30Do/cK
|
||||
KBGMwZYAV4op8or8ntK7ndDTu3Xr6tq6g6KduxUjVukXpAmQhbwoGRUzJj4zC3oM
|
||||
QkIYLlM1JOUrIlSw0s/E2ONNaWhL89bNFw3/LOhG6yAjbeJvjsebB/iQEvVJQfmV
|
||||
i73QNwQQ93kCj+/unIkc+hi1/Vjuhkx3Q+LV4wjG4iaUoPlf49K1SqV9xDcc+2KF
|
||||
0K8sVQ4Tqb2UQYp63C44HEZzRS3fhBp7xmEBTncCOckttqz1zCZQ0dcuyYm3bovf
|
||||
NO5ur7OvvNL7ALJz9ah56v5KUDDqeH+aRm8i/rYdDSpcNm5kA9Ct2Q7/RSCCqFlO
|
||||
bk+1yEkgAm9Jkebvi5L05dJryhXw31cXVwIDAQABo4HoMIHlMA4GA1UdDwEB/wQE
|
||||
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTKifKsuPwRxf+47Nsr
|
||||
UHqivPBIkTAfBgNVHSMEGDAWgBQivhNIgc2MBY9u64p9MYFvWmDNOTBEBggrBgEF
|
||||
BQcBAQQ4MDYwNAYIKwYBBQUHMAKGKGh0dHBzOi8vd3d3LnBsdW1ld2lmaS5jb20v
|
||||
Y2Evcm9vdC1jYS5jZXIwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly93d3cucGx1
|
||||
bWV3aWZpLmNvbS9jYS9yb290LWNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAjG4R
|
||||
nkcVdO4oQqjJeWLIdNu48V3T7CB08t3sqjQaxu4gAXfYm8a+tdubff6Dg0PuTFzh
|
||||
edogXQchaEiYeEFTPNrz4hf5NhS+9t2PKcEpAKCbY6vjpfT9F5gUDrXmfUZnLIUV
|
||||
SVXZ6NC+/jI56cAykbCv5ytYxSE0LxSgA3OLZyd4QESJdSJIkCw7s3nDx7rv05Np
|
||||
UjQuFu1+WbXxUkrKYZBCTwczuKsDc2syiscC2sBUydDbK1jySV1og3nY6JXojNSa
|
||||
V8OtnsnAUdD8Gbg38UNFb3SN7VmE1RIYgXgj7tVEKW/Rhyf49LCchAl+CO2m9TKW
|
||||
ZPA2NcQ94b++VoreAdkpH3eOkko12RofWQo+wHT/g6qm668L7exONawjmU+Or2Wj
|
||||
TXJFz5xb57kEnZjyXX4GgCxVSr8hHPA0+gFRPS4mkUZAQaH5XkODvcLAJ6CCSYIp
|
||||
78B89VI8lkSji0wanlGcrSbUVHg6bVNw++gW//N4DRfqURRqYwDLQt6BXi11vgSu
|
||||
l8NrrzBLU7leb1+IcY5p8g+z9HE4PM7uxd9fcP/P3Rldq7EW9V1NIXTn0kPHJd2C
|
||||
zDReVg7t/tCFWM6wyXL1KKuXd36Py1XxATsgEwkmfXJn4QjOn60NK/SxTDKIBfvZ
|
||||
9iWfWz/J3JLDRMk5Y/5CFuC6lm+6cHkbT4WR3wA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGxzCCBK+gAwIBAgIJAIyLecDrnpzeMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTAeFw0xNjAzMDMyMjQwMTRaFw0yMTAzMDIyMjQwMTRaMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALo0cr8ZyiLs
|
||||
CUyp4P4JFXkU6Ymx6QhN1DZ1SCuDgiMkX8A7/QCDMKz7Q70qqM022NwYW3Ff5VJG
|
||||
El/epXmcaPx7vzfXpsy023mtyaLcwovCwr+IRDM5LgKlW9v3wcaWBWLEXbbv8are
|
||||
a9q1eXW5jJjAyDMPdkrUqCwdJy3Gjnwy16mRiBnaY6A2+wVr5mTzkrtNGzJiEzhX
|
||||
MECnal7T16sOC8HeaJZ4BVYJzxAnyU+wlf0ygzQeF4WaYXTDgcRs8g1D62LHcr7f
|
||||
ioAT2Z69V5CVHFX7VJoE1PJeU867GwZDtM+osZ0WJFkeMA8cJgrs7ujKTl9nmiVp
|
||||
Q2qt6BDABrd9ibZkjHj5XcXQz7o+z3zwL9v9x/1bilmY/yBz2rlozR+xbNwTM6Ra
|
||||
D+FXpcv2caj2851Ci59eh+5eCJJkMNzGKdZZ9wyMaPqk2bynGDf6glhJc2cML9L3
|
||||
+L/iLq63yiYDOmDwKXiAjPVCPPgMPxp+Y4gwfiZdop2ou8W7xzFxOEwKuS8qK6Qp
|
||||
9j8Mq1ritAFa4WIiVsuHjrEkmykCzHvb9z5ujsrZ4hJzBDNqfjXkazpR2wb4o895
|
||||
YfBQIHdoQy2H+wsOEaNatUkFuSE5uw2nMS+SDf8J2ouAG0U51n/SnWKd636WC4s+
|
||||
Mn5Bd8nwNP1H1DXCUf8TS7iow+Bt0A+VAgMBAAGjggEGMIIBAjAdBgNVHQ4EFgQU
|
||||
CBK8rxUUByBBgsU0VXsOLjVIWiEwgdIGA1UdIwSByjCBx4AUCBK8rxUUByBBgsU0
|
||||
VXsOLjVIWiGhgaOkgaAwgZ0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
|
||||
bmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xGzAZBgNVBAoTElBsdW1lIERlc2lnbiwg
|
||||
SW5jLjEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29tMSIwIAYD
|
||||
VQQDExlQbHVtZSBEZXNpZ24gQXV0aG9yaXR5IEExggkAjIt5wOuenN4wDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAsTLMCgl/1rSf/+/14y0FWyj2yvOq
|
||||
X5hgd/+kIRfIp/5Ib1wWdpWGY5sTV3Vy1rQvWHF/PijP9qMWE5QKfxHh/l2+HKv0
|
||||
gyRPW3I4QgK3Qr/u75nNFizYhI2L2n1+2MQmoejcu6TI9Kk5n7oVo3dGn2KxkrKC
|
||||
WiB0QZmJgD6iIrJQt6oXB/oG4gSHqTIaTawflIvFgr5S94rKjVm+ZBtz6nOO184s
|
||||
fDGXNOfw8zOXkGB5gAtxF5oX+XQ9s/2y0nrDbT/Oup3MzzrZ2zAEXqIUvb6cP8z6
|
||||
IqYGiwtzzhD8F/4jA6dUI/pnlPMnT670sy4YO7GsJaZi/Af/pvdRh342FFUpV3HF
|
||||
+jJJxuejI+yehI2y0S1M4idmJLaCS5EldJF1GB3DU5CjSOhCeZKpIrkWEAIEXf4f
|
||||
VTffDmOn/5SAcdKwe9v7tzJ2knNME0BPhVei/cSmU3VI6sAY04HzPtC498BLyaUJ
|
||||
Nj+70iQ3tvNjegwfRI4CIgn0/Y90W6NcEd9Ihg/MTImH5uQag7ftupFqp7wP882N
|
||||
SJGjWsd/oMDbB8kcyLKZ8z05nYhxG8v0/D6esu51SAXhnC2G2jybjuk3QHvMRTBo
|
||||
jMnFwM/u3cRLzWwsHP3dSkY1NsnfMKA+ivUEXslq+8R0EH02Js4OUTrscDKPJSWo
|
||||
YDLIkv5E8HWLVoc=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFyDCCA7CgAwIBAgIJAJ78fVrF1kYwMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNV
|
||||
BAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4x
|
||||
JzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UE
|
||||
AwwOT3BlblN5bmMgQ0EgQTEwIBcNMTkwMzI4MTI0ODIwWhgPMjA2OTAzMTUxMjQ4
|
||||
MjBaMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUg
|
||||
RGVzaWduIEluYy4xJzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhv
|
||||
cml0eTEXMBUGA1UEAwwOT3BlblN5bmMgQ0EgQTEwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQDZOu6RWVfAJy10izzsgcSVTPqkIK84Jhy02ZxEx+XUOLJg
|
||||
G6d75a2X2Qdb0xyu4vIr/zAnsFcm8L/w9J5MZh+IRvW1c9f5P7ROjzivM9vfub2I
|
||||
CJ+4acoN0ErWX5qqNPx1FvL5gM7TzsgbvmUMYKcRxRUKmo9CCO1uJy/zjvr8jDNZ
|
||||
ZvrI2cPA70UHjwzP3LPANH8gnQTZMdFM3W/K6vyRIJdIYGmsGRYdzrqI2jP7z5Ex
|
||||
5tiqthZQPlXhwj8QFk8vONbuUEdWq/dPlY4LKDgg4qE0t9eV3kLwC8WPTcly2KwZ
|
||||
FaFdrQFpeLQh3H3CcaN8O++lv5BlCNEbOkEE9CUaUHbAVSNDv4tePpHp0pFJGkl4
|
||||
io6OkJ20hywjyJ71RY+qxgw/oyTii5mDTcqIVYJ3nkblrHKlQihnZ7+uHSJzhioO
|
||||
JEv0t/eBetG62N4GzuiUH6MUARsDf7sd8anFf+pk4zUEwTVkdkYb2j/tp+g0WV08
|
||||
kvnNJ/wRuT9mYO+PKS9HXHwG1brBEwAepN524FgncopTwm+VglsHqrH9c91c5bbC
|
||||
GwHKlEUEhRy45+2OACIhqhaoPqolFXNLSXGJFAkA7hYzbXrCs7kc8tzrqFj7kUQn
|
||||
uMQj8TtVM1+gFOfy0J0nGOV7hs/ya30obLGYa8MHXD2cR3GK6Xpl8ZDHeCmQvwID
|
||||
AQABo1MwUTAdBgNVHQ4EFgQU3Ji6Gbgbvie8gFgWEJNd1OzU31QwHwYDVR0jBBgw
|
||||
FoAU3Ji6Gbgbvie8gFgWEJNd1OzU31QwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
||||
9w0BAQsFAAOCAgEAkjs7a0eHLLRuzt6+WKA/Q0/MD01H0r9ZaY9LC4WfyY49qsF+
|
||||
CYK/7pYPJVc7YbO8hlnxKfCkJlCxP7i4lNN91BW+Lw4keI0J/VKa0GdSnPy88Ps/
|
||||
5QtSXn+Yix1VHXfu7q45ORra2ZpuESNxXOCobbLBE6ow8lKNapCYkuex9wE2iMlA
|
||||
Z72Wul8K8X7oX1yIzNrnBc89b7vbMAc6F0iseE9eINmQpp5sqhk347/dLKOMVVNX
|
||||
lDqrw1bOgbDLW4aQdkws4fUnH8m7DjeOxSiJhR9jZRimtFdQ9VVv5wuQswGPOXue
|
||||
7vBDeHP8td3pZrsQygFzprOUvREKSJcle3xgiYxhbtVUfi/nBBgxLPM7+ga4jol6
|
||||
AByOCa6nPcMGbWikFTbO+bQgwka7V54RBXjKhBx1XBtpZHAooRm8PPDmesLbUWc1
|
||||
SB21o+8Kfm9+kVxup2udDrXo0cQpLskHKNCQOZbiIW/TCF+6cnQGSCCzgcMazgGS
|
||||
pm5oJskK3/z30xvKphU4o6CZzJocdIX5xS7lX+iQIYZNT42U31juEbhOpGUmg3xO
|
||||
lBGhysfYkR2AzDifN11uuy8uWca+4JDA6qutieEoNqY2gBMkyBe7qsvlsYphvnCM
|
||||
gIOXqPD3c4IGS6uxP+hzqn0na/b5Ai4I3iSAh5IvXr5pm+ZaQISq0WFBPIk=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
26
feeds/wlan-ap/opensync/src/vendor/ecw5211/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
26
feeds/wlan-ap/opensync/src/vendor/ecw5211/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIENDCCAhygAwIBAgIRAJ4QsQE9nHsbpnVHhkAKw2MwDQYJKoZIhvcNAQELBQAw
|
||||
eDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRowGAYDVQQKDBFQbHVtZSBEZXNp
|
||||
Z24gSW5jLjEnMCUGA1UECwweT3BlblN5bmMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
||||
MRcwFQYDVQQDDA5PcGVuU3luYyBDQSBBMTAeFw03MDAxMDEwMDAwMDBaFw0yOTAz
|
||||
MjYxMzI5MTNaMIGEMRIwEAYDVQQDDAlQUDMwMlgtRVgxCzAJBgNVBAYTAlVTMRow
|
||||
GAYDVQQKDBFQbHVtZSBEZXNpZ24gSW5jLjESMBAGA1UEBwwJUGFsbyBBbHRvMQsw
|
||||
CQYDVQQIDAJDQTEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29t
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE9nFC6TPcsnh0+fscQaYEKevb0uR95nao
|
||||
mDehTalGMwqt9BcOlDBahODfFhMu5SVw1ZmmmHo+ZIJ3ujK1VdrAgRRSh91k7dQv
|
||||
MVgeXT2se1rc1L8oKvTnIPF2UwsSo3+5o1owWDAfBgNVHSMEGDAWgBTcmLoZuBu+
|
||||
J7yAWBYQk13U7NTfVDAdBgNVHQ4EFgQUxecQdoP09CyFbUJUdeLj/R3Ah2AwFgYD
|
||||
VR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBAH23KQlxb2Du
|
||||
9XvHlq+AC5bF3cEFHxXS181qX+v61hMJm8VjugCzWuLuzc2bXEYFB+ZIVIPyTdAJ
|
||||
tP7EizrUxWUgBbbsgHRFdy/jPXj5XF6PE7GhSgRi3FbYwxrzuIasEaAziagHr7ep
|
||||
Hn3rJiNAo/KYhGyBpFYU7tJRmkpx1xaX8C5pTunR7jbyqOXM/h+rLlZJj2OHObN6
|
||||
xsFpcIJdT24pGTo9q5hhJUgxPlDnhrSB6yHoweO1FVgztsdjZKGou3RuKldVgunG
|
||||
m/KyYP9oAQYRX0QRvRrDTOzVb2ezPd/KUwNMprLanXu0lu2T++H8xiQt41BdgMsl
|
||||
63lkFDkFmeRgmaQUuiGMjU/Sac+kFhnkd/hoGigHYrgETd0FuqlWVE2VBsyv3/Pw
|
||||
3126SXL1spbl+/apVioH9Nl24fUQKbv5Bnyhd5IIjzgG8SMzPQ4CbSHAWqUqkdUZ
|
||||
bprS3nwLnE29zPULCg7Q1JfDsbf1+xe+r5xXVpUuca2kb4VnnNQ/z/jJCdP/3gy9
|
||||
jawfPNl0fwIHywLzaec1jtBmPFEPul7baRPCQdB3JF/WeuRuV3zakSs8XB8YyJaq
|
||||
Lq3KtNBJDcSEKn/Tc5wLRaEOCiRoQtVhtX7Cer9JUYcRWsLvO1e/N3z7LxFcv8/w
|
||||
glSwr3kI080u6Fx4QjxQWVWZiYL+3v01
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
7
feeds/wlan-ap/opensync/src/vendor/ecw5211/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
7
feeds/wlan-ap/opensync/src/vendor/ecw5211/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MIGkAgEBBDCyrVlkcE5QLYWpNyRTSo8zhjZ3ksrLzhdFgfIPDDO0HGTk/08aTGGM
|
||||
VrEvui9yLBmgBwYFK4EEACKhZANiAAT2cULpM9yyeHT5+xxBpgQp69vS5H3mdqiY
|
||||
N6FNqUYzCq30Fw6UMFqE4N8WEy7lJXDVmaaYej5kgne6MrVV2sCBFFKH3WTt1C8x
|
||||
WB5dPax7WtzUvygq9Ocg8XZTCxKjf7k=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
||||
66
feeds/wlan-ap/opensync/src/vendor/ecw5211/src/lib/target/inc/target_ECW5211.h
vendored
Normal file
66
feeds/wlan-ap/opensync/src/vendor/ecw5211/src/lib/target/inc/target_ECW5211.h
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef TARGET_ECW5211_H_INCLUDED
|
||||
#define TARGET_ECW5211_H_INCLUDED
|
||||
|
||||
#include "dpp_client.h"
|
||||
#include "dpp_survey.h"
|
||||
|
||||
#define TARGET_CERT_PATH "/var/run/openvswitch/certs"
|
||||
#define TARGET_MANAGERS_PID_PATH "/tmp/dmpid"
|
||||
#define TARGET_OVSDB_SOCK_PATH "/var/run/openvswitch/db.sock"
|
||||
#define TARGET_LOGREAD_FILENAME "messages"
|
||||
|
||||
void target_ifname_map_init();
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length);
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_CLIENT_RECORD_COMMON_STRUCT;
|
||||
dpp_client_stats_t stats;
|
||||
} target_client_record_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_SURVEY_RECORD_COMMON_STRUCT;
|
||||
} target_survey_record_t;
|
||||
|
||||
typedef void target_capacity_data_t;
|
||||
|
||||
/******************************************************************************
|
||||
* MANAGERS definitions
|
||||
*****************************************************************************/
|
||||
#if !defined(CONFIG_TARGET_MANAGER)
|
||||
#define TARGET_MANAGER_PATH(X) "/usr/plume/bin/"X
|
||||
#endif
|
||||
|
||||
#define TARGET_TOOLS_PATH "/usr/plume/tools"
|
||||
|
||||
#include "target_common.h"
|
||||
|
||||
#endif /* TARGET_ECW5211_H_INCLUDED */
|
||||
3
feeds/wlan-ap/opensync/src/vendor/ecw5211/src/lib/target/override.mk
vendored
Normal file
3
feeds/wlan-ap/opensync/src/vendor/ecw5211/src/lib/target/override.mk
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/entity.c
|
||||
UNIT_CFLAGS += -I$(OVERRIDE_DIR)/inc
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
204
feeds/wlan-ap/opensync/src/vendor/ecw5211/src/lib/target/src/entity.c
vendored
Normal file
204
feeds/wlan-ap/opensync/src/vendor/ecw5211/src/lib/target/src/entity.c
vendored
Normal file
@ -0,0 +1,204 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <target.h>
|
||||
#include <os_types.h>
|
||||
#include <os_nif.h>
|
||||
#include "log.h"
|
||||
|
||||
/* devinfo is /dev/mtd9 for ECW5211 */
|
||||
static char devInfoFileName[] = "/dev/mtd9";
|
||||
#define DEV_INFO_RECORD_SZ 40
|
||||
static char devInfoModelNumber[DEV_INFO_RECORD_SZ];
|
||||
static char devInfoSerialNumber[DEV_INFO_RECORD_SZ];
|
||||
static bool devInfoModelNumber_saved = false;
|
||||
static bool devInfoSerialNumber_saved = false;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *cloud_ifname;
|
||||
char *iw_ifname;
|
||||
char *iw_phyname;
|
||||
} ifmap_t;
|
||||
|
||||
ifmap_t stats_ifmap[] = {
|
||||
{ "home-ap-24", "wlan0", "phy0" },
|
||||
{ "home-ap-u50", "wlan1", "phy1" },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
void target_ifname_map_init()
|
||||
{
|
||||
target_map_init();
|
||||
|
||||
//Radio mappings
|
||||
target_map_insert("wifi0", "radio0");
|
||||
target_map_insert("wifi1", "radio2");
|
||||
target_map_insert("wifi2", "radio1");
|
||||
|
||||
//VIF mappings
|
||||
target_map_insert("home-ap-u50", "default_radio1");
|
||||
target_map_insert("home-ap-24", "default_radio0");
|
||||
target_map_insert("home-ap-l50", "default_radio2");
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(iw_name, mp->iw_ifname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(phy_name, mp->iw_phyname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
char *get_devinfo_record( char * tag, char * payload, size_t payloadsz )
|
||||
{
|
||||
FILE *devInfoFn = NULL;
|
||||
char buffer[80];
|
||||
char *tagPtr, *payloadPtr;
|
||||
int bytesRead = 0;
|
||||
bool record_found = false;
|
||||
|
||||
if (tag == NULL) return NULL;
|
||||
|
||||
devInfoFn = fopen(devInfoFileName, "r");
|
||||
if (devInfoFn == NULL) {
|
||||
LOGE("File open failed %s %s", devInfoFileName, tag );
|
||||
return NULL;
|
||||
}
|
||||
memset(buffer, 0, 80);
|
||||
payload[0] = 0;
|
||||
|
||||
while ( bytesRead < 0x300 && !feof(devInfoFn)) {
|
||||
fgets( buffer, 80, devInfoFn);
|
||||
tagPtr = strstr(buffer, tag);
|
||||
if (tagPtr != NULL) {
|
||||
strtok(tagPtr,"=");
|
||||
payloadPtr = strtok(NULL, " \n\r");
|
||||
LOGN ("devInfo %s %s", tag, payloadPtr);
|
||||
strncpy(payload, payloadPtr, payloadsz);
|
||||
record_found = true;
|
||||
break;
|
||||
} else {
|
||||
bytesRead += strlen(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(devInfoFn);
|
||||
if (record_found) {
|
||||
return payload;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool target_model_get(void *buff, size_t buffsz)
|
||||
{
|
||||
if (!devInfoModelNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "modelNumber=", devInfoModelNumber, DEV_INFO_RECORD_SZ))
|
||||
snprintf(devInfoModelNumber, DEV_INFO_RECORD_SZ, "%s", "ECW5211");
|
||||
devInfoModelNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoModelNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_serial_get(void *buff, size_t buffsz)
|
||||
{
|
||||
os_macaddr_t mac;
|
||||
char mac_buff[TARGET_BUFF_SZ];
|
||||
int n;
|
||||
|
||||
if (!devInfoSerialNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "serial_number=", devInfoSerialNumber, DEV_INFO_RECORD_SZ))
|
||||
{
|
||||
if (true == os_nif_macaddr("eth0", &mac))
|
||||
{
|
||||
memset(mac_buff, 0, sizeof(mac_buff));
|
||||
n = snprintf(mac_buff, sizeof(mac_buff), PRI(os_macaddr_plain_t), FMT(os_macaddr_t, mac));
|
||||
if (n == OS_MACSTR_PLAIN_SZ) {
|
||||
LOG(ERR, "buffer not large enough");
|
||||
return false;
|
||||
}
|
||||
strncpy(devInfoSerialNumber, mac_buff, buffsz);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(devInfoSerialNumber, DEV_INFO_RECORD_SZ, "%s", "ECW5211-TIP-01");
|
||||
}
|
||||
|
||||
devInfoSerialNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoSerialNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_sw_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "0.1.0");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_platform_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "OPENWRT_ECW5211");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
1
feeds/wlan-ap/opensync/src/vendor/ecw5410/.version
vendored
Normal file
1
feeds/wlan-ap/opensync/src/vendor/ecw5410/.version
vendored
Normal file
@ -0,0 +1 @@
|
||||
0.1.0
|
||||
23
feeds/wlan-ap/opensync/src/vendor/ecw5410/LICENSE
vendored
Normal file
23
feeds/wlan-ap/opensync/src/vendor/ecw5410/LICENSE
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
2
feeds/wlan-ap/opensync/src/vendor/ecw5410/NOTICE
vendored
Normal file
2
feeds/wlan-ap/opensync/src/vendor/ecw5410/NOTICE
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
Copyright 2019, Plume Design Inc. All rights reserved.
|
||||
Licensed under the "3-Clause BSD License" also known as "Revised BSD License"
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ecw5410/README.md
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ecw5410/README.md
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OpenSync vendor layer example for armvirt
|
||||
-----------------------------------------
|
||||
|
||||
This is an example vendor layer for the OpenWrt `armvirt` target.
|
||||
It can be used as a template for other targets.
|
||||
|
||||
This repository is a part of the `opensync-openwrt` project.
|
||||
|
||||
For more info please visit: https://opensync.io
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ecw5410/build/vendor-arch.mk
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ecw5410/build/vendor-arch.mk
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OS_TARGETS +=ECW5410
|
||||
|
||||
ifeq ($(TARGET),ECW5410)
|
||||
PLATFORM=openwrt
|
||||
VENDOR=ecw5410
|
||||
PLATFORM_DIR := platform/$(PLATFORM)
|
||||
KCONFIG_TARGET ?= $(PLATFORM_DIR)/kconfig/openwrt_generic
|
||||
ARCH_MK := $(PLATFORM_DIR)/build/$(PLATFORM).mk
|
||||
endif
|
||||
104
feeds/wlan-ap/opensync/src/vendor/ecw5410/ovsdb/static_configuration.json
vendored
Normal file
104
feeds/wlan-ap/opensync/src/vendor/ecw5410/ovsdb/static_configuration.json
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
[
|
||||
"Open_vSwitch",
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "eth0",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "eth",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": true
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "eth0",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "eth",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
}
|
||||
]
|
||||
179
feeds/wlan-ap/opensync/src/vendor/ecw5410/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
179
feeds/wlan-ap/opensync/src/vendor/ecw5410/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGSTCCBDGgAwIBAgIEEAAABDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJV
|
||||
UzEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4xKzApBgNVBAsMIlBsdW1lIERl
|
||||
c2lnbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHTAbBgNVBAMMFFBsdW1lIERlc2ln
|
||||
biBSb290IENBMB4XDTE4MDEyMjIzMjMzOVoXDTI4MDEyMjIzMjMzOVowbTELMAkG
|
||||
A1UEBhMCVVMxGjAYBgNVBAoMEVBsdW1lIERlc2lnbiBJbmMuMSswKQYDVQQLDCJQ
|
||||
bHVtZSBEZXNpZ24gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRUwEwYDVQQDDAxQbHVt
|
||||
ZSBUTFMgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSDVhBzdBE
|
||||
OM7oi7YzRevbzmM5dJhYKC+l44lFnltTIObbFk4QGN/sGQmgtZybEHtBnFgbamb5
|
||||
sIJsBVCkNFojFjg/HQwDc7TpwWN339t3Ih7iXmReiEfp8h1msWQRBpP3+d3E56ZP
|
||||
PlJwivbw3ywfXSv7QlxSZ5iJeC6amPohvj3/VJeqM5c8hiiDuuZsZMAaW2Yl9gm/
|
||||
keM//Z7AfIGjbidUmJ9nfDftNPexqzx82RROATONIglk3PXjZxAyKSEuYS0djuPK
|
||||
XXu5j8w222efdS6ARufpEZAO5LH/MVPdZpT1Emzh+uKjTQYlL0Flu8PyP30Do/cK
|
||||
KBGMwZYAV4op8or8ntK7ndDTu3Xr6tq6g6KduxUjVukXpAmQhbwoGRUzJj4zC3oM
|
||||
QkIYLlM1JOUrIlSw0s/E2ONNaWhL89bNFw3/LOhG6yAjbeJvjsebB/iQEvVJQfmV
|
||||
i73QNwQQ93kCj+/unIkc+hi1/Vjuhkx3Q+LV4wjG4iaUoPlf49K1SqV9xDcc+2KF
|
||||
0K8sVQ4Tqb2UQYp63C44HEZzRS3fhBp7xmEBTncCOckttqz1zCZQ0dcuyYm3bovf
|
||||
NO5ur7OvvNL7ALJz9ah56v5KUDDqeH+aRm8i/rYdDSpcNm5kA9Ct2Q7/RSCCqFlO
|
||||
bk+1yEkgAm9Jkebvi5L05dJryhXw31cXVwIDAQABo4HoMIHlMA4GA1UdDwEB/wQE
|
||||
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTKifKsuPwRxf+47Nsr
|
||||
UHqivPBIkTAfBgNVHSMEGDAWgBQivhNIgc2MBY9u64p9MYFvWmDNOTBEBggrBgEF
|
||||
BQcBAQQ4MDYwNAYIKwYBBQUHMAKGKGh0dHBzOi8vd3d3LnBsdW1ld2lmaS5jb20v
|
||||
Y2Evcm9vdC1jYS5jZXIwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly93d3cucGx1
|
||||
bWV3aWZpLmNvbS9jYS9yb290LWNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAjG4R
|
||||
nkcVdO4oQqjJeWLIdNu48V3T7CB08t3sqjQaxu4gAXfYm8a+tdubff6Dg0PuTFzh
|
||||
edogXQchaEiYeEFTPNrz4hf5NhS+9t2PKcEpAKCbY6vjpfT9F5gUDrXmfUZnLIUV
|
||||
SVXZ6NC+/jI56cAykbCv5ytYxSE0LxSgA3OLZyd4QESJdSJIkCw7s3nDx7rv05Np
|
||||
UjQuFu1+WbXxUkrKYZBCTwczuKsDc2syiscC2sBUydDbK1jySV1og3nY6JXojNSa
|
||||
V8OtnsnAUdD8Gbg38UNFb3SN7VmE1RIYgXgj7tVEKW/Rhyf49LCchAl+CO2m9TKW
|
||||
ZPA2NcQ94b++VoreAdkpH3eOkko12RofWQo+wHT/g6qm668L7exONawjmU+Or2Wj
|
||||
TXJFz5xb57kEnZjyXX4GgCxVSr8hHPA0+gFRPS4mkUZAQaH5XkODvcLAJ6CCSYIp
|
||||
78B89VI8lkSji0wanlGcrSbUVHg6bVNw++gW//N4DRfqURRqYwDLQt6BXi11vgSu
|
||||
l8NrrzBLU7leb1+IcY5p8g+z9HE4PM7uxd9fcP/P3Rldq7EW9V1NIXTn0kPHJd2C
|
||||
zDReVg7t/tCFWM6wyXL1KKuXd36Py1XxATsgEwkmfXJn4QjOn60NK/SxTDKIBfvZ
|
||||
9iWfWz/J3JLDRMk5Y/5CFuC6lm+6cHkbT4WR3wA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGxzCCBK+gAwIBAgIJAIyLecDrnpzeMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTAeFw0xNjAzMDMyMjQwMTRaFw0yMTAzMDIyMjQwMTRaMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALo0cr8ZyiLs
|
||||
CUyp4P4JFXkU6Ymx6QhN1DZ1SCuDgiMkX8A7/QCDMKz7Q70qqM022NwYW3Ff5VJG
|
||||
El/epXmcaPx7vzfXpsy023mtyaLcwovCwr+IRDM5LgKlW9v3wcaWBWLEXbbv8are
|
||||
a9q1eXW5jJjAyDMPdkrUqCwdJy3Gjnwy16mRiBnaY6A2+wVr5mTzkrtNGzJiEzhX
|
||||
MECnal7T16sOC8HeaJZ4BVYJzxAnyU+wlf0ygzQeF4WaYXTDgcRs8g1D62LHcr7f
|
||||
ioAT2Z69V5CVHFX7VJoE1PJeU867GwZDtM+osZ0WJFkeMA8cJgrs7ujKTl9nmiVp
|
||||
Q2qt6BDABrd9ibZkjHj5XcXQz7o+z3zwL9v9x/1bilmY/yBz2rlozR+xbNwTM6Ra
|
||||
D+FXpcv2caj2851Ci59eh+5eCJJkMNzGKdZZ9wyMaPqk2bynGDf6glhJc2cML9L3
|
||||
+L/iLq63yiYDOmDwKXiAjPVCPPgMPxp+Y4gwfiZdop2ou8W7xzFxOEwKuS8qK6Qp
|
||||
9j8Mq1ritAFa4WIiVsuHjrEkmykCzHvb9z5ujsrZ4hJzBDNqfjXkazpR2wb4o895
|
||||
YfBQIHdoQy2H+wsOEaNatUkFuSE5uw2nMS+SDf8J2ouAG0U51n/SnWKd636WC4s+
|
||||
Mn5Bd8nwNP1H1DXCUf8TS7iow+Bt0A+VAgMBAAGjggEGMIIBAjAdBgNVHQ4EFgQU
|
||||
CBK8rxUUByBBgsU0VXsOLjVIWiEwgdIGA1UdIwSByjCBx4AUCBK8rxUUByBBgsU0
|
||||
VXsOLjVIWiGhgaOkgaAwgZ0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
|
||||
bmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xGzAZBgNVBAoTElBsdW1lIERlc2lnbiwg
|
||||
SW5jLjEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29tMSIwIAYD
|
||||
VQQDExlQbHVtZSBEZXNpZ24gQXV0aG9yaXR5IEExggkAjIt5wOuenN4wDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAsTLMCgl/1rSf/+/14y0FWyj2yvOq
|
||||
X5hgd/+kIRfIp/5Ib1wWdpWGY5sTV3Vy1rQvWHF/PijP9qMWE5QKfxHh/l2+HKv0
|
||||
gyRPW3I4QgK3Qr/u75nNFizYhI2L2n1+2MQmoejcu6TI9Kk5n7oVo3dGn2KxkrKC
|
||||
WiB0QZmJgD6iIrJQt6oXB/oG4gSHqTIaTawflIvFgr5S94rKjVm+ZBtz6nOO184s
|
||||
fDGXNOfw8zOXkGB5gAtxF5oX+XQ9s/2y0nrDbT/Oup3MzzrZ2zAEXqIUvb6cP8z6
|
||||
IqYGiwtzzhD8F/4jA6dUI/pnlPMnT670sy4YO7GsJaZi/Af/pvdRh342FFUpV3HF
|
||||
+jJJxuejI+yehI2y0S1M4idmJLaCS5EldJF1GB3DU5CjSOhCeZKpIrkWEAIEXf4f
|
||||
VTffDmOn/5SAcdKwe9v7tzJ2knNME0BPhVei/cSmU3VI6sAY04HzPtC498BLyaUJ
|
||||
Nj+70iQ3tvNjegwfRI4CIgn0/Y90W6NcEd9Ihg/MTImH5uQag7ftupFqp7wP882N
|
||||
SJGjWsd/oMDbB8kcyLKZ8z05nYhxG8v0/D6esu51SAXhnC2G2jybjuk3QHvMRTBo
|
||||
jMnFwM/u3cRLzWwsHP3dSkY1NsnfMKA+ivUEXslq+8R0EH02Js4OUTrscDKPJSWo
|
||||
YDLIkv5E8HWLVoc=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFyDCCA7CgAwIBAgIJAJ78fVrF1kYwMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNV
|
||||
BAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4x
|
||||
JzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UE
|
||||
AwwOT3BlblN5bmMgQ0EgQTEwIBcNMTkwMzI4MTI0ODIwWhgPMjA2OTAzMTUxMjQ4
|
||||
MjBaMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUg
|
||||
RGVzaWduIEluYy4xJzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhv
|
||||
cml0eTEXMBUGA1UEAwwOT3BlblN5bmMgQ0EgQTEwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQDZOu6RWVfAJy10izzsgcSVTPqkIK84Jhy02ZxEx+XUOLJg
|
||||
G6d75a2X2Qdb0xyu4vIr/zAnsFcm8L/w9J5MZh+IRvW1c9f5P7ROjzivM9vfub2I
|
||||
CJ+4acoN0ErWX5qqNPx1FvL5gM7TzsgbvmUMYKcRxRUKmo9CCO1uJy/zjvr8jDNZ
|
||||
ZvrI2cPA70UHjwzP3LPANH8gnQTZMdFM3W/K6vyRIJdIYGmsGRYdzrqI2jP7z5Ex
|
||||
5tiqthZQPlXhwj8QFk8vONbuUEdWq/dPlY4LKDgg4qE0t9eV3kLwC8WPTcly2KwZ
|
||||
FaFdrQFpeLQh3H3CcaN8O++lv5BlCNEbOkEE9CUaUHbAVSNDv4tePpHp0pFJGkl4
|
||||
io6OkJ20hywjyJ71RY+qxgw/oyTii5mDTcqIVYJ3nkblrHKlQihnZ7+uHSJzhioO
|
||||
JEv0t/eBetG62N4GzuiUH6MUARsDf7sd8anFf+pk4zUEwTVkdkYb2j/tp+g0WV08
|
||||
kvnNJ/wRuT9mYO+PKS9HXHwG1brBEwAepN524FgncopTwm+VglsHqrH9c91c5bbC
|
||||
GwHKlEUEhRy45+2OACIhqhaoPqolFXNLSXGJFAkA7hYzbXrCs7kc8tzrqFj7kUQn
|
||||
uMQj8TtVM1+gFOfy0J0nGOV7hs/ya30obLGYa8MHXD2cR3GK6Xpl8ZDHeCmQvwID
|
||||
AQABo1MwUTAdBgNVHQ4EFgQU3Ji6Gbgbvie8gFgWEJNd1OzU31QwHwYDVR0jBBgw
|
||||
FoAU3Ji6Gbgbvie8gFgWEJNd1OzU31QwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
||||
9w0BAQsFAAOCAgEAkjs7a0eHLLRuzt6+WKA/Q0/MD01H0r9ZaY9LC4WfyY49qsF+
|
||||
CYK/7pYPJVc7YbO8hlnxKfCkJlCxP7i4lNN91BW+Lw4keI0J/VKa0GdSnPy88Ps/
|
||||
5QtSXn+Yix1VHXfu7q45ORra2ZpuESNxXOCobbLBE6ow8lKNapCYkuex9wE2iMlA
|
||||
Z72Wul8K8X7oX1yIzNrnBc89b7vbMAc6F0iseE9eINmQpp5sqhk347/dLKOMVVNX
|
||||
lDqrw1bOgbDLW4aQdkws4fUnH8m7DjeOxSiJhR9jZRimtFdQ9VVv5wuQswGPOXue
|
||||
7vBDeHP8td3pZrsQygFzprOUvREKSJcle3xgiYxhbtVUfi/nBBgxLPM7+ga4jol6
|
||||
AByOCa6nPcMGbWikFTbO+bQgwka7V54RBXjKhBx1XBtpZHAooRm8PPDmesLbUWc1
|
||||
SB21o+8Kfm9+kVxup2udDrXo0cQpLskHKNCQOZbiIW/TCF+6cnQGSCCzgcMazgGS
|
||||
pm5oJskK3/z30xvKphU4o6CZzJocdIX5xS7lX+iQIYZNT42U31juEbhOpGUmg3xO
|
||||
lBGhysfYkR2AzDifN11uuy8uWca+4JDA6qutieEoNqY2gBMkyBe7qsvlsYphvnCM
|
||||
gIOXqPD3c4IGS6uxP+hzqn0na/b5Ai4I3iSAh5IvXr5pm+ZaQISq0WFBPIk=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
26
feeds/wlan-ap/opensync/src/vendor/ecw5410/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
26
feeds/wlan-ap/opensync/src/vendor/ecw5410/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIENDCCAhygAwIBAgIRAJ4QsQE9nHsbpnVHhkAKw2MwDQYJKoZIhvcNAQELBQAw
|
||||
eDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRowGAYDVQQKDBFQbHVtZSBEZXNp
|
||||
Z24gSW5jLjEnMCUGA1UECwweT3BlblN5bmMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
||||
MRcwFQYDVQQDDA5PcGVuU3luYyBDQSBBMTAeFw03MDAxMDEwMDAwMDBaFw0yOTAz
|
||||
MjYxMzI5MTNaMIGEMRIwEAYDVQQDDAlQUDMwMlgtRVgxCzAJBgNVBAYTAlVTMRow
|
||||
GAYDVQQKDBFQbHVtZSBEZXNpZ24gSW5jLjESMBAGA1UEBwwJUGFsbyBBbHRvMQsw
|
||||
CQYDVQQIDAJDQTEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29t
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE9nFC6TPcsnh0+fscQaYEKevb0uR95nao
|
||||
mDehTalGMwqt9BcOlDBahODfFhMu5SVw1ZmmmHo+ZIJ3ujK1VdrAgRRSh91k7dQv
|
||||
MVgeXT2se1rc1L8oKvTnIPF2UwsSo3+5o1owWDAfBgNVHSMEGDAWgBTcmLoZuBu+
|
||||
J7yAWBYQk13U7NTfVDAdBgNVHQ4EFgQUxecQdoP09CyFbUJUdeLj/R3Ah2AwFgYD
|
||||
VR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBAH23KQlxb2Du
|
||||
9XvHlq+AC5bF3cEFHxXS181qX+v61hMJm8VjugCzWuLuzc2bXEYFB+ZIVIPyTdAJ
|
||||
tP7EizrUxWUgBbbsgHRFdy/jPXj5XF6PE7GhSgRi3FbYwxrzuIasEaAziagHr7ep
|
||||
Hn3rJiNAo/KYhGyBpFYU7tJRmkpx1xaX8C5pTunR7jbyqOXM/h+rLlZJj2OHObN6
|
||||
xsFpcIJdT24pGTo9q5hhJUgxPlDnhrSB6yHoweO1FVgztsdjZKGou3RuKldVgunG
|
||||
m/KyYP9oAQYRX0QRvRrDTOzVb2ezPd/KUwNMprLanXu0lu2T++H8xiQt41BdgMsl
|
||||
63lkFDkFmeRgmaQUuiGMjU/Sac+kFhnkd/hoGigHYrgETd0FuqlWVE2VBsyv3/Pw
|
||||
3126SXL1spbl+/apVioH9Nl24fUQKbv5Bnyhd5IIjzgG8SMzPQ4CbSHAWqUqkdUZ
|
||||
bprS3nwLnE29zPULCg7Q1JfDsbf1+xe+r5xXVpUuca2kb4VnnNQ/z/jJCdP/3gy9
|
||||
jawfPNl0fwIHywLzaec1jtBmPFEPul7baRPCQdB3JF/WeuRuV3zakSs8XB8YyJaq
|
||||
Lq3KtNBJDcSEKn/Tc5wLRaEOCiRoQtVhtX7Cer9JUYcRWsLvO1e/N3z7LxFcv8/w
|
||||
glSwr3kI080u6Fx4QjxQWVWZiYL+3v01
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
7
feeds/wlan-ap/opensync/src/vendor/ecw5410/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
7
feeds/wlan-ap/opensync/src/vendor/ecw5410/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MIGkAgEBBDCyrVlkcE5QLYWpNyRTSo8zhjZ3ksrLzhdFgfIPDDO0HGTk/08aTGGM
|
||||
VrEvui9yLBmgBwYFK4EEACKhZANiAAT2cULpM9yyeHT5+xxBpgQp69vS5H3mdqiY
|
||||
N6FNqUYzCq30Fw6UMFqE4N8WEy7lJXDVmaaYej5kgne6MrVV2sCBFFKH3WTt1C8x
|
||||
WB5dPax7WtzUvygq9Ocg8XZTCxKjf7k=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
||||
66
feeds/wlan-ap/opensync/src/vendor/ecw5410/src/lib/target/inc/target_ECW5410.h
vendored
Normal file
66
feeds/wlan-ap/opensync/src/vendor/ecw5410/src/lib/target/inc/target_ECW5410.h
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef TARGET_ECW5410_H_INCLUDED
|
||||
#define TARGET_ECW5410_H_INCLUDED
|
||||
|
||||
#include "dpp_client.h"
|
||||
#include "dpp_survey.h"
|
||||
|
||||
#define TARGET_CERT_PATH "/var/run/openvswitch/certs"
|
||||
#define TARGET_MANAGERS_PID_PATH "/tmp/dmpid"
|
||||
#define TARGET_OVSDB_SOCK_PATH "/var/run/openvswitch/db.sock"
|
||||
#define TARGET_LOGREAD_FILENAME "messages"
|
||||
|
||||
void target_ifname_map_init();
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length);
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_CLIENT_RECORD_COMMON_STRUCT;
|
||||
dpp_client_stats_t stats;
|
||||
} target_client_record_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_SURVEY_RECORD_COMMON_STRUCT;
|
||||
} target_survey_record_t;
|
||||
|
||||
typedef void target_capacity_data_t;
|
||||
|
||||
/******************************************************************************
|
||||
* MANAGERS definitions
|
||||
*****************************************************************************/
|
||||
#if !defined(CONFIG_TARGET_MANAGER)
|
||||
#define TARGET_MANAGER_PATH(X) "/usr/plume/bin/"X
|
||||
#endif
|
||||
|
||||
#define TARGET_TOOLS_PATH "/usr/plume/tools"
|
||||
|
||||
#include "target_common.h"
|
||||
|
||||
#endif /* TARGET_ECW5410_H_INCLUDED */
|
||||
3
feeds/wlan-ap/opensync/src/vendor/ecw5410/src/lib/target/override.mk
vendored
Normal file
3
feeds/wlan-ap/opensync/src/vendor/ecw5410/src/lib/target/override.mk
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/entity.c
|
||||
UNIT_CFLAGS += -I$(OVERRIDE_DIR)/inc
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
204
feeds/wlan-ap/opensync/src/vendor/ecw5410/src/lib/target/src/entity.c
vendored
Normal file
204
feeds/wlan-ap/opensync/src/vendor/ecw5410/src/lib/target/src/entity.c
vendored
Normal file
@ -0,0 +1,204 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <target.h>
|
||||
#include <os_types.h>
|
||||
#include <os_nif.h>
|
||||
#include "log.h"
|
||||
|
||||
/* devinfo is /dev/mtd9 for ECW5410*/
|
||||
static char devInfoFileName[] = "/dev/mtd9";
|
||||
#define DEV_INFO_RECORD_SZ 40
|
||||
static char devInfoModelNumber[DEV_INFO_RECORD_SZ];
|
||||
static char devInfoSerialNumber[DEV_INFO_RECORD_SZ];
|
||||
static bool devInfoModelNumber_saved = false;
|
||||
static bool devInfoSerialNumber_saved = false;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *cloud_ifname;
|
||||
char *iw_ifname;
|
||||
char *iw_phyname;
|
||||
} ifmap_t;
|
||||
|
||||
ifmap_t stats_ifmap[] = {
|
||||
{ "home-ap-24", "wlan1", "phy1" },
|
||||
{ "home-ap-u50", "wlan0", "phy0" },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
void target_ifname_map_init()
|
||||
{
|
||||
target_map_init();
|
||||
|
||||
//Radio mappings
|
||||
target_map_insert("wifi0", "radio1");
|
||||
target_map_insert("wifi1", "radio2");
|
||||
target_map_insert("wifi2", "radio0");
|
||||
|
||||
//VIF mappings
|
||||
target_map_insert("home-ap-u50", "default_radio0");
|
||||
target_map_insert("home-ap-24", "default_radio1");
|
||||
target_map_insert("home-ap-l50", "default_radio2");
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(iw_name, mp->iw_ifname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(phy_name, mp->iw_phyname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
char *get_devinfo_record( char * tag, char * payload, size_t payloadsz )
|
||||
{
|
||||
FILE *devInfoFn = NULL;
|
||||
char buffer[80];
|
||||
char *tagPtr, *payloadPtr;
|
||||
int bytesRead = 0;
|
||||
bool record_found = false;
|
||||
|
||||
if (tag == NULL) return NULL;
|
||||
|
||||
devInfoFn = fopen(devInfoFileName, "r");
|
||||
if (devInfoFn == NULL) {
|
||||
LOGE("File open failed %s %s", devInfoFileName, tag );
|
||||
return NULL;
|
||||
}
|
||||
memset(buffer, 0, 80);
|
||||
payload[0] = 0;
|
||||
|
||||
while ( bytesRead < 0x300 && !feof(devInfoFn)) {
|
||||
fgets( buffer, 80, devInfoFn);
|
||||
tagPtr = strstr(buffer, tag);
|
||||
if (tagPtr != NULL) {
|
||||
strtok(tagPtr,"=");
|
||||
payloadPtr = strtok(NULL, " \n\r");
|
||||
LOGN ("devInfo %s %s", tag, payloadPtr);
|
||||
strncpy(payload, payloadPtr, payloadsz);
|
||||
record_found = true;
|
||||
break;
|
||||
} else {
|
||||
bytesRead += strlen(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(devInfoFn);
|
||||
if (record_found) {
|
||||
return payload;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool target_model_get(void *buff, size_t buffsz)
|
||||
{
|
||||
if (!devInfoModelNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "modelNumber=", devInfoModelNumber, DEV_INFO_RECORD_SZ))
|
||||
snprintf(devInfoModelNumber, DEV_INFO_RECORD_SZ, "%s", "ECW5410");
|
||||
devInfoModelNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoModelNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_serial_get(void *buff, size_t buffsz)
|
||||
{
|
||||
os_macaddr_t mac;
|
||||
char mac_buff[TARGET_BUFF_SZ];
|
||||
int n;
|
||||
|
||||
if (!devInfoSerialNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "serial_number=", devInfoSerialNumber, DEV_INFO_RECORD_SZ))
|
||||
{
|
||||
if (true == os_nif_macaddr("eth0", &mac))
|
||||
{
|
||||
memset(mac_buff, 0, sizeof(mac_buff));
|
||||
n = snprintf(mac_buff, sizeof(mac_buff), PRI(os_macaddr_plain_t), FMT(os_macaddr_t, mac));
|
||||
if (n == OS_MACSTR_PLAIN_SZ) {
|
||||
LOG(ERR, "buffer not large enough");
|
||||
return false;
|
||||
}
|
||||
strncpy(devInfoSerialNumber, mac_buff, buffsz);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(devInfoSerialNumber, DEV_INFO_RECORD_SZ, "%s", "ECW5410-TIP-01");
|
||||
}
|
||||
|
||||
devInfoSerialNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoSerialNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_sw_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "0.1.0");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_platform_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "OPENWRT_ECW5410");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
1
feeds/wlan-ap/opensync/src/vendor/ipq40xx/.version
vendored
Normal file
1
feeds/wlan-ap/opensync/src/vendor/ipq40xx/.version
vendored
Normal file
@ -0,0 +1 @@
|
||||
0.1.0
|
||||
23
feeds/wlan-ap/opensync/src/vendor/ipq40xx/LICENSE
vendored
Normal file
23
feeds/wlan-ap/opensync/src/vendor/ipq40xx/LICENSE
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
2
feeds/wlan-ap/opensync/src/vendor/ipq40xx/NOTICE
vendored
Normal file
2
feeds/wlan-ap/opensync/src/vendor/ipq40xx/NOTICE
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
Copyright 2019, Plume Design Inc. All rights reserved.
|
||||
Licensed under the "3-Clause BSD License" also known as "Revised BSD License"
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ipq40xx/README.md
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ipq40xx/README.md
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OpenSync vendor layer example for armvirt
|
||||
-----------------------------------------
|
||||
|
||||
This is an example vendor layer for the OpenWrt `armvirt` target.
|
||||
It can be used as a template for other targets.
|
||||
|
||||
This repository is a part of the `opensync-openwrt` project.
|
||||
|
||||
For more info please visit: https://opensync.io
|
||||
9
feeds/wlan-ap/opensync/src/vendor/ipq40xx/build/vendor-arch.mk
vendored
Normal file
9
feeds/wlan-ap/opensync/src/vendor/ipq40xx/build/vendor-arch.mk
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
OS_TARGETS +=IPQ40XX
|
||||
|
||||
ifeq ($(TARGET),IPQ40XX)
|
||||
PLATFORM=openwrt
|
||||
VENDOR=ipq40xx
|
||||
PLATFORM_DIR := platform/$(PLATFORM)
|
||||
KCONFIG_TARGET ?= $(PLATFORM_DIR)/kconfig/openwrt_generic
|
||||
ARCH_MK := $(PLATFORM_DIR)/build/$(PLATFORM).mk
|
||||
endif
|
||||
104
feeds/wlan-ap/opensync/src/vendor/ipq40xx/ovsdb/static_configuration.json
vendored
Normal file
104
feeds/wlan-ap/opensync/src/vendor/ipq40xx/ovsdb/static_configuration.json
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
[
|
||||
"Open_vSwitch",
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_State",
|
||||
"row": {
|
||||
"if_name": "eth1",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "eth",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": true
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "br-lan",
|
||||
"ip_assign_scheme": "static",
|
||||
"inet_addr": "192.168.1.1",
|
||||
"netmask": "255.255.255.0",
|
||||
"if_type": "bridge",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"op":"insert",
|
||||
"table":"Wifi_Inet_Config",
|
||||
"row": {
|
||||
"if_name": "eth1",
|
||||
"ip_assign_scheme": "dhcp",
|
||||
"if_type": "eth",
|
||||
"enabled": true,
|
||||
"network": true,
|
||||
"mtu": 1500,
|
||||
"NAT": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_Config",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan0",
|
||||
"freq_band": "2.4G",
|
||||
"hw_type": "AR9382",
|
||||
"hw_mode": "11n",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
},
|
||||
{
|
||||
"op": "insert",
|
||||
"table": "Wifi_Radio_State",
|
||||
"row": {
|
||||
"if_name": "wlan1",
|
||||
"freq_band": "5G",
|
||||
"hw_type": "qca9880",
|
||||
"hw_mode": "11ac",
|
||||
"channel_mode": "cloud"
|
||||
}
|
||||
}
|
||||
]
|
||||
179
feeds/wlan-ap/opensync/src/vendor/ipq40xx/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
179
feeds/wlan-ap/opensync/src/vendor/ipq40xx/rootfs/common/usr/plume/certs/ca.pem
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGSTCCBDGgAwIBAgIEEAAABDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJV
|
||||
UzEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4xKzApBgNVBAsMIlBsdW1lIERl
|
||||
c2lnbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHTAbBgNVBAMMFFBsdW1lIERlc2ln
|
||||
biBSb290IENBMB4XDTE4MDEyMjIzMjMzOVoXDTI4MDEyMjIzMjMzOVowbTELMAkG
|
||||
A1UEBhMCVVMxGjAYBgNVBAoMEVBsdW1lIERlc2lnbiBJbmMuMSswKQYDVQQLDCJQ
|
||||
bHVtZSBEZXNpZ24gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRUwEwYDVQQDDAxQbHVt
|
||||
ZSBUTFMgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSDVhBzdBE
|
||||
OM7oi7YzRevbzmM5dJhYKC+l44lFnltTIObbFk4QGN/sGQmgtZybEHtBnFgbamb5
|
||||
sIJsBVCkNFojFjg/HQwDc7TpwWN339t3Ih7iXmReiEfp8h1msWQRBpP3+d3E56ZP
|
||||
PlJwivbw3ywfXSv7QlxSZ5iJeC6amPohvj3/VJeqM5c8hiiDuuZsZMAaW2Yl9gm/
|
||||
keM//Z7AfIGjbidUmJ9nfDftNPexqzx82RROATONIglk3PXjZxAyKSEuYS0djuPK
|
||||
XXu5j8w222efdS6ARufpEZAO5LH/MVPdZpT1Emzh+uKjTQYlL0Flu8PyP30Do/cK
|
||||
KBGMwZYAV4op8or8ntK7ndDTu3Xr6tq6g6KduxUjVukXpAmQhbwoGRUzJj4zC3oM
|
||||
QkIYLlM1JOUrIlSw0s/E2ONNaWhL89bNFw3/LOhG6yAjbeJvjsebB/iQEvVJQfmV
|
||||
i73QNwQQ93kCj+/unIkc+hi1/Vjuhkx3Q+LV4wjG4iaUoPlf49K1SqV9xDcc+2KF
|
||||
0K8sVQ4Tqb2UQYp63C44HEZzRS3fhBp7xmEBTncCOckttqz1zCZQ0dcuyYm3bovf
|
||||
NO5ur7OvvNL7ALJz9ah56v5KUDDqeH+aRm8i/rYdDSpcNm5kA9Ct2Q7/RSCCqFlO
|
||||
bk+1yEkgAm9Jkebvi5L05dJryhXw31cXVwIDAQABo4HoMIHlMA4GA1UdDwEB/wQE
|
||||
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTKifKsuPwRxf+47Nsr
|
||||
UHqivPBIkTAfBgNVHSMEGDAWgBQivhNIgc2MBY9u64p9MYFvWmDNOTBEBggrBgEF
|
||||
BQcBAQQ4MDYwNAYIKwYBBQUHMAKGKGh0dHBzOi8vd3d3LnBsdW1ld2lmaS5jb20v
|
||||
Y2Evcm9vdC1jYS5jZXIwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly93d3cucGx1
|
||||
bWV3aWZpLmNvbS9jYS9yb290LWNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAjG4R
|
||||
nkcVdO4oQqjJeWLIdNu48V3T7CB08t3sqjQaxu4gAXfYm8a+tdubff6Dg0PuTFzh
|
||||
edogXQchaEiYeEFTPNrz4hf5NhS+9t2PKcEpAKCbY6vjpfT9F5gUDrXmfUZnLIUV
|
||||
SVXZ6NC+/jI56cAykbCv5ytYxSE0LxSgA3OLZyd4QESJdSJIkCw7s3nDx7rv05Np
|
||||
UjQuFu1+WbXxUkrKYZBCTwczuKsDc2syiscC2sBUydDbK1jySV1og3nY6JXojNSa
|
||||
V8OtnsnAUdD8Gbg38UNFb3SN7VmE1RIYgXgj7tVEKW/Rhyf49LCchAl+CO2m9TKW
|
||||
ZPA2NcQ94b++VoreAdkpH3eOkko12RofWQo+wHT/g6qm668L7exONawjmU+Or2Wj
|
||||
TXJFz5xb57kEnZjyXX4GgCxVSr8hHPA0+gFRPS4mkUZAQaH5XkODvcLAJ6CCSYIp
|
||||
78B89VI8lkSji0wanlGcrSbUVHg6bVNw++gW//N4DRfqURRqYwDLQt6BXi11vgSu
|
||||
l8NrrzBLU7leb1+IcY5p8g+z9HE4PM7uxd9fcP/P3Rldq7EW9V1NIXTn0kPHJd2C
|
||||
zDReVg7t/tCFWM6wyXL1KKuXd36Py1XxATsgEwkmfXJn4QjOn60NK/SxTDKIBfvZ
|
||||
9iWfWz/J3JLDRMk5Y/5CFuC6lm+6cHkbT4WR3wA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGxzCCBK+gAwIBAgIJAIyLecDrnpzeMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTAeFw0xNjAzMDMyMjQwMTRaFw0yMTAzMDIyMjQwMTRaMIGdMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
|
||||
MRswGQYDVQQKExJQbHVtZSBEZXNpZ24sIEluYy4xJDAiBgkqhkiG9w0BCQEWFXN1
|
||||
cHBvcnRAcGx1bWV3aWZpLmNvbTEiMCAGA1UEAxMZUGx1bWUgRGVzaWduIEF1dGhv
|
||||
cml0eSBBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALo0cr8ZyiLs
|
||||
CUyp4P4JFXkU6Ymx6QhN1DZ1SCuDgiMkX8A7/QCDMKz7Q70qqM022NwYW3Ff5VJG
|
||||
El/epXmcaPx7vzfXpsy023mtyaLcwovCwr+IRDM5LgKlW9v3wcaWBWLEXbbv8are
|
||||
a9q1eXW5jJjAyDMPdkrUqCwdJy3Gjnwy16mRiBnaY6A2+wVr5mTzkrtNGzJiEzhX
|
||||
MECnal7T16sOC8HeaJZ4BVYJzxAnyU+wlf0ygzQeF4WaYXTDgcRs8g1D62LHcr7f
|
||||
ioAT2Z69V5CVHFX7VJoE1PJeU867GwZDtM+osZ0WJFkeMA8cJgrs7ujKTl9nmiVp
|
||||
Q2qt6BDABrd9ibZkjHj5XcXQz7o+z3zwL9v9x/1bilmY/yBz2rlozR+xbNwTM6Ra
|
||||
D+FXpcv2caj2851Ci59eh+5eCJJkMNzGKdZZ9wyMaPqk2bynGDf6glhJc2cML9L3
|
||||
+L/iLq63yiYDOmDwKXiAjPVCPPgMPxp+Y4gwfiZdop2ou8W7xzFxOEwKuS8qK6Qp
|
||||
9j8Mq1ritAFa4WIiVsuHjrEkmykCzHvb9z5ujsrZ4hJzBDNqfjXkazpR2wb4o895
|
||||
YfBQIHdoQy2H+wsOEaNatUkFuSE5uw2nMS+SDf8J2ouAG0U51n/SnWKd636WC4s+
|
||||
Mn5Bd8nwNP1H1DXCUf8TS7iow+Bt0A+VAgMBAAGjggEGMIIBAjAdBgNVHQ4EFgQU
|
||||
CBK8rxUUByBBgsU0VXsOLjVIWiEwgdIGA1UdIwSByjCBx4AUCBK8rxUUByBBgsU0
|
||||
VXsOLjVIWiGhgaOkgaAwgZ0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
|
||||
bmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xGzAZBgNVBAoTElBsdW1lIERlc2lnbiwg
|
||||
SW5jLjEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29tMSIwIAYD
|
||||
VQQDExlQbHVtZSBEZXNpZ24gQXV0aG9yaXR5IEExggkAjIt5wOuenN4wDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAsTLMCgl/1rSf/+/14y0FWyj2yvOq
|
||||
X5hgd/+kIRfIp/5Ib1wWdpWGY5sTV3Vy1rQvWHF/PijP9qMWE5QKfxHh/l2+HKv0
|
||||
gyRPW3I4QgK3Qr/u75nNFizYhI2L2n1+2MQmoejcu6TI9Kk5n7oVo3dGn2KxkrKC
|
||||
WiB0QZmJgD6iIrJQt6oXB/oG4gSHqTIaTawflIvFgr5S94rKjVm+ZBtz6nOO184s
|
||||
fDGXNOfw8zOXkGB5gAtxF5oX+XQ9s/2y0nrDbT/Oup3MzzrZ2zAEXqIUvb6cP8z6
|
||||
IqYGiwtzzhD8F/4jA6dUI/pnlPMnT670sy4YO7GsJaZi/Af/pvdRh342FFUpV3HF
|
||||
+jJJxuejI+yehI2y0S1M4idmJLaCS5EldJF1GB3DU5CjSOhCeZKpIrkWEAIEXf4f
|
||||
VTffDmOn/5SAcdKwe9v7tzJ2knNME0BPhVei/cSmU3VI6sAY04HzPtC498BLyaUJ
|
||||
Nj+70iQ3tvNjegwfRI4CIgn0/Y90W6NcEd9Ihg/MTImH5uQag7ftupFqp7wP882N
|
||||
SJGjWsd/oMDbB8kcyLKZ8z05nYhxG8v0/D6esu51SAXhnC2G2jybjuk3QHvMRTBo
|
||||
jMnFwM/u3cRLzWwsHP3dSkY1NsnfMKA+ivUEXslq+8R0EH02Js4OUTrscDKPJSWo
|
||||
YDLIkv5E8HWLVoc=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFyDCCA7CgAwIBAgIJAJ78fVrF1kYwMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNV
|
||||
BAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUgRGVzaWduIEluYy4x
|
||||
JzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UE
|
||||
AwwOT3BlblN5bmMgQ0EgQTEwIBcNMTkwMzI4MTI0ODIwWhgPMjA2OTAzMTUxMjQ4
|
||||
MjBaMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEaMBgGA1UECgwRUGx1bWUg
|
||||
RGVzaWduIEluYy4xJzAlBgNVBAsMHk9wZW5TeW5jIENlcnRpZmljYXRlIEF1dGhv
|
||||
cml0eTEXMBUGA1UEAwwOT3BlblN5bmMgQ0EgQTEwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQDZOu6RWVfAJy10izzsgcSVTPqkIK84Jhy02ZxEx+XUOLJg
|
||||
G6d75a2X2Qdb0xyu4vIr/zAnsFcm8L/w9J5MZh+IRvW1c9f5P7ROjzivM9vfub2I
|
||||
CJ+4acoN0ErWX5qqNPx1FvL5gM7TzsgbvmUMYKcRxRUKmo9CCO1uJy/zjvr8jDNZ
|
||||
ZvrI2cPA70UHjwzP3LPANH8gnQTZMdFM3W/K6vyRIJdIYGmsGRYdzrqI2jP7z5Ex
|
||||
5tiqthZQPlXhwj8QFk8vONbuUEdWq/dPlY4LKDgg4qE0t9eV3kLwC8WPTcly2KwZ
|
||||
FaFdrQFpeLQh3H3CcaN8O++lv5BlCNEbOkEE9CUaUHbAVSNDv4tePpHp0pFJGkl4
|
||||
io6OkJ20hywjyJ71RY+qxgw/oyTii5mDTcqIVYJ3nkblrHKlQihnZ7+uHSJzhioO
|
||||
JEv0t/eBetG62N4GzuiUH6MUARsDf7sd8anFf+pk4zUEwTVkdkYb2j/tp+g0WV08
|
||||
kvnNJ/wRuT9mYO+PKS9HXHwG1brBEwAepN524FgncopTwm+VglsHqrH9c91c5bbC
|
||||
GwHKlEUEhRy45+2OACIhqhaoPqolFXNLSXGJFAkA7hYzbXrCs7kc8tzrqFj7kUQn
|
||||
uMQj8TtVM1+gFOfy0J0nGOV7hs/ya30obLGYa8MHXD2cR3GK6Xpl8ZDHeCmQvwID
|
||||
AQABo1MwUTAdBgNVHQ4EFgQU3Ji6Gbgbvie8gFgWEJNd1OzU31QwHwYDVR0jBBgw
|
||||
FoAU3Ji6Gbgbvie8gFgWEJNd1OzU31QwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
||||
9w0BAQsFAAOCAgEAkjs7a0eHLLRuzt6+WKA/Q0/MD01H0r9ZaY9LC4WfyY49qsF+
|
||||
CYK/7pYPJVc7YbO8hlnxKfCkJlCxP7i4lNN91BW+Lw4keI0J/VKa0GdSnPy88Ps/
|
||||
5QtSXn+Yix1VHXfu7q45ORra2ZpuESNxXOCobbLBE6ow8lKNapCYkuex9wE2iMlA
|
||||
Z72Wul8K8X7oX1yIzNrnBc89b7vbMAc6F0iseE9eINmQpp5sqhk347/dLKOMVVNX
|
||||
lDqrw1bOgbDLW4aQdkws4fUnH8m7DjeOxSiJhR9jZRimtFdQ9VVv5wuQswGPOXue
|
||||
7vBDeHP8td3pZrsQygFzprOUvREKSJcle3xgiYxhbtVUfi/nBBgxLPM7+ga4jol6
|
||||
AByOCa6nPcMGbWikFTbO+bQgwka7V54RBXjKhBx1XBtpZHAooRm8PPDmesLbUWc1
|
||||
SB21o+8Kfm9+kVxup2udDrXo0cQpLskHKNCQOZbiIW/TCF+6cnQGSCCzgcMazgGS
|
||||
pm5oJskK3/z30xvKphU4o6CZzJocdIX5xS7lX+iQIYZNT42U31juEbhOpGUmg3xO
|
||||
lBGhysfYkR2AzDifN11uuy8uWca+4JDA6qutieEoNqY2gBMkyBe7qsvlsYphvnCM
|
||||
gIOXqPD3c4IGS6uxP+hzqn0na/b5Ai4I3iSAh5IvXr5pm+ZaQISq0WFBPIk=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
26
feeds/wlan-ap/opensync/src/vendor/ipq40xx/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
26
feeds/wlan-ap/opensync/src/vendor/ipq40xx/rootfs/common/usr/plume/certs/client.pem
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIENDCCAhygAwIBAgIRAJ4QsQE9nHsbpnVHhkAKw2MwDQYJKoZIhvcNAQELBQAw
|
||||
eDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRowGAYDVQQKDBFQbHVtZSBEZXNp
|
||||
Z24gSW5jLjEnMCUGA1UECwweT3BlblN5bmMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
||||
MRcwFQYDVQQDDA5PcGVuU3luYyBDQSBBMTAeFw03MDAxMDEwMDAwMDBaFw0yOTAz
|
||||
MjYxMzI5MTNaMIGEMRIwEAYDVQQDDAlQUDMwMlgtRVgxCzAJBgNVBAYTAlVTMRow
|
||||
GAYDVQQKDBFQbHVtZSBEZXNpZ24gSW5jLjESMBAGA1UEBwwJUGFsbyBBbHRvMQsw
|
||||
CQYDVQQIDAJDQTEkMCIGCSqGSIb3DQEJARYVc3VwcG9ydEBwbHVtZXdpZmkuY29t
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE9nFC6TPcsnh0+fscQaYEKevb0uR95nao
|
||||
mDehTalGMwqt9BcOlDBahODfFhMu5SVw1ZmmmHo+ZIJ3ujK1VdrAgRRSh91k7dQv
|
||||
MVgeXT2se1rc1L8oKvTnIPF2UwsSo3+5o1owWDAfBgNVHSMEGDAWgBTcmLoZuBu+
|
||||
J7yAWBYQk13U7NTfVDAdBgNVHQ4EFgQUxecQdoP09CyFbUJUdeLj/R3Ah2AwFgYD
|
||||
VR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBAH23KQlxb2Du
|
||||
9XvHlq+AC5bF3cEFHxXS181qX+v61hMJm8VjugCzWuLuzc2bXEYFB+ZIVIPyTdAJ
|
||||
tP7EizrUxWUgBbbsgHRFdy/jPXj5XF6PE7GhSgRi3FbYwxrzuIasEaAziagHr7ep
|
||||
Hn3rJiNAo/KYhGyBpFYU7tJRmkpx1xaX8C5pTunR7jbyqOXM/h+rLlZJj2OHObN6
|
||||
xsFpcIJdT24pGTo9q5hhJUgxPlDnhrSB6yHoweO1FVgztsdjZKGou3RuKldVgunG
|
||||
m/KyYP9oAQYRX0QRvRrDTOzVb2ezPd/KUwNMprLanXu0lu2T++H8xiQt41BdgMsl
|
||||
63lkFDkFmeRgmaQUuiGMjU/Sac+kFhnkd/hoGigHYrgETd0FuqlWVE2VBsyv3/Pw
|
||||
3126SXL1spbl+/apVioH9Nl24fUQKbv5Bnyhd5IIjzgG8SMzPQ4CbSHAWqUqkdUZ
|
||||
bprS3nwLnE29zPULCg7Q1JfDsbf1+xe+r5xXVpUuca2kb4VnnNQ/z/jJCdP/3gy9
|
||||
jawfPNl0fwIHywLzaec1jtBmPFEPul7baRPCQdB3JF/WeuRuV3zakSs8XB8YyJaq
|
||||
Lq3KtNBJDcSEKn/Tc5wLRaEOCiRoQtVhtX7Cer9JUYcRWsLvO1e/N3z7LxFcv8/w
|
||||
glSwr3kI080u6Fx4QjxQWVWZiYL+3v01
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
7
feeds/wlan-ap/opensync/src/vendor/ipq40xx/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
7
feeds/wlan-ap/opensync/src/vendor/ipq40xx/rootfs/common/usr/plume/certs/client_dec.key
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MIGkAgEBBDCyrVlkcE5QLYWpNyRTSo8zhjZ3ksrLzhdFgfIPDDO0HGTk/08aTGGM
|
||||
VrEvui9yLBmgBwYFK4EEACKhZANiAAT2cULpM9yyeHT5+xxBpgQp69vS5H3mdqiY
|
||||
N6FNqUYzCq30Fw6UMFqE4N8WEy7lJXDVmaaYej5kgne6MrVV2sCBFFKH3WTt1C8x
|
||||
WB5dPax7WtzUvygq9Ocg8XZTCxKjf7k=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
||||
66
feeds/wlan-ap/opensync/src/vendor/ipq40xx/src/lib/target/inc/target_IPQ40XX.h
vendored
Normal file
66
feeds/wlan-ap/opensync/src/vendor/ipq40xx/src/lib/target/inc/target_IPQ40XX.h
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef TARGET_IPQ40XX_H_INCLUDED
|
||||
#define TARGET_IPQ40XX_H_INCLUDED
|
||||
|
||||
#include "dpp_client.h"
|
||||
#include "dpp_survey.h"
|
||||
|
||||
#define TARGET_CERT_PATH "/var/run/openvswitch/certs"
|
||||
#define TARGET_MANAGERS_PID_PATH "/tmp/dmpid"
|
||||
#define TARGET_OVSDB_SOCK_PATH "/var/run/openvswitch/db.sock"
|
||||
#define TARGET_LOGREAD_FILENAME "messages"
|
||||
|
||||
void target_ifname_map_init();
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length);
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_CLIENT_RECORD_COMMON_STRUCT;
|
||||
dpp_client_stats_t stats;
|
||||
} target_client_record_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DPP_TARGET_SURVEY_RECORD_COMMON_STRUCT;
|
||||
} target_survey_record_t;
|
||||
|
||||
typedef void target_capacity_data_t;
|
||||
|
||||
/******************************************************************************
|
||||
* MANAGERS definitions
|
||||
*****************************************************************************/
|
||||
#if !defined(CONFIG_TARGET_MANAGER)
|
||||
#define TARGET_MANAGER_PATH(X) "/usr/plume/bin/"X
|
||||
#endif
|
||||
|
||||
#define TARGET_TOOLS_PATH "/usr/plume/tools"
|
||||
|
||||
#include "target_common.h"
|
||||
|
||||
#endif /* TARGET_IPQ40XX_H_INCLUDED */
|
||||
3
feeds/wlan-ap/opensync/src/vendor/ipq40xx/src/lib/target/override.mk
vendored
Normal file
3
feeds/wlan-ap/opensync/src/vendor/ipq40xx/src/lib/target/override.mk
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
UNIT_SRC_TOP += $(OVERRIDE_DIR)/src/entity.c
|
||||
UNIT_CFLAGS += -I$(OVERRIDE_DIR)/inc
|
||||
UNIT_EXPORT_CFLAGS := $(UNIT_CFLAGS)
|
||||
183
feeds/wlan-ap/opensync/src/vendor/ipq40xx/src/lib/target/src/entity.c
vendored
Normal file
183
feeds/wlan-ap/opensync/src/vendor/ipq40xx/src/lib/target/src/entity.c
vendored
Normal file
@ -0,0 +1,183 @@
|
||||
/*
|
||||
Copyright (c) 2019, Plume Design Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the Plume Design Inc. nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <target.h>
|
||||
#include "log.h"
|
||||
|
||||
/* devinfo is /dev/mtd9 for IPQ40xx */
|
||||
static char devInfoFileName[] = "/dev/mtd9";
|
||||
#define DEV_INFO_RECORD_SZ 40
|
||||
static char devInfoModelNumber[DEV_INFO_RECORD_SZ];
|
||||
static char devInfoSerialNumber[DEV_INFO_RECORD_SZ];
|
||||
static bool devInfoModelNumber_saved = false;
|
||||
static bool devInfoSerialNumber_saved = false;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *cloud_ifname;
|
||||
char *iw_ifname;
|
||||
char *iw_phyname;
|
||||
} ifmap_t;
|
||||
|
||||
ifmap_t stats_ifmap[] = {
|
||||
{ "home-ap-24", "wlan1", "phy1" },
|
||||
{ "home-ap-u50", "wlan0", "phy0" },
|
||||
{ "home-ap-l50", "wlan2", "phy2" },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
void target_ifname_map_init()
|
||||
{
|
||||
target_map_init();
|
||||
|
||||
//Radio mappings
|
||||
target_map_insert("wifi0", "radio1");
|
||||
target_map_insert("wifi1", "radio2");
|
||||
target_map_insert("wifi2", "radio0");
|
||||
|
||||
//VIF mappings
|
||||
target_map_insert("home-ap-u50", "default_radio0");
|
||||
target_map_insert("home-ap-24", "default_radio1");
|
||||
target_map_insert("home-ap-l50", "default_radio2");
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_iw(const char *ifname, char *iw_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(iw_name, mp->iw_ifname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool target_map_cloud_to_phy(const char *ifname, char *phy_name, size_t length)
|
||||
{
|
||||
ifmap_t *mp;
|
||||
|
||||
mp = stats_ifmap;
|
||||
while (mp->cloud_ifname)
|
||||
{
|
||||
if (!strcmp(mp->cloud_ifname, ifname))
|
||||
{
|
||||
strscpy(phy_name, mp->iw_phyname, length);
|
||||
return true;
|
||||
}
|
||||
|
||||
mp++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
char *get_devinfo_record( char * tag, char * payload, size_t payloadsz )
|
||||
{
|
||||
FILE *devInfoFn = NULL;
|
||||
char buffer[80];
|
||||
char *tagPtr, *payloadPtr;
|
||||
int bytesRead = 0;
|
||||
bool record_found = false;
|
||||
|
||||
if (tag == NULL) return NULL;
|
||||
|
||||
devInfoFn = fopen(devInfoFileName, "r");
|
||||
if (devInfoFn == NULL) {
|
||||
LOGE("File open failed %s %s", devInfoFileName, tag );
|
||||
return NULL;
|
||||
}
|
||||
memset(buffer, 0, 80);
|
||||
payload[0] = 0;
|
||||
|
||||
while ( bytesRead < 0x300 && !feof(devInfoFn)) {
|
||||
fgets( buffer, 80, devInfoFn);
|
||||
tagPtr = strstr(buffer, tag);
|
||||
if (tagPtr != NULL) {
|
||||
strtok(tagPtr,"=");
|
||||
payloadPtr = strtok(NULL, " \n\r");
|
||||
LOGN ("devInfo %s %s", tag, payloadPtr);
|
||||
strncpy(payload, payloadPtr, payloadsz);
|
||||
record_found = true;
|
||||
break;
|
||||
} else {
|
||||
bytesRead += strlen(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(devInfoFn);
|
||||
if (record_found) {
|
||||
return payload;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool target_model_get(void *buff, size_t buffsz)
|
||||
{
|
||||
if (!devInfoModelNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "modelNumber=", devInfoModelNumber, DEV_INFO_RECORD_SZ))
|
||||
snprintf(devInfoModelNumber, DEV_INFO_RECORD_SZ, "%s", "TIP_AP");
|
||||
devInfoModelNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoModelNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_serial_get(void *buff, size_t buffsz)
|
||||
{
|
||||
if (!devInfoSerialNumber_saved) {
|
||||
if ( NULL == get_devinfo_record( "serial_number=", devInfoSerialNumber, DEV_INFO_RECORD_SZ))
|
||||
snprintf(devInfoSerialNumber, DEV_INFO_RECORD_SZ, "%s", "LinkSys-TIP-01");
|
||||
devInfoSerialNumber_saved = true;
|
||||
}
|
||||
strncpy(buff, devInfoSerialNumber, buffsz);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_sw_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "0.1.0");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool target_platform_version_get(void *buff, size_t buffsz)
|
||||
{
|
||||
snprintf(buff, buffsz, "%s", "OPENWRT_EA8300");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
41
feeds/wlan-ap/python3-kconfiglib/Makefile
Normal file
41
feeds/wlan-ap/python3-kconfiglib/Makefile
Normal file
@ -0,0 +1,41 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=python3-kconfiglib
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=13.1.1
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/ulfalizer/Kconfiglib.git
|
||||
PKG_SOURCE_VERSION:=bf01114a0ce09b891ed04609ea7e9cc6f3ef3df2
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/python3-kconfiglib-$(PKG_VERSION)
|
||||
HOST_BUILD_DEPENDS:=python3/host
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/python/python3-package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/python/python3-host.mk
|
||||
|
||||
define Package/python3-kconfiglib
|
||||
SECTION:=language-python
|
||||
CATEGORY:=Languages
|
||||
SUBMENU:=Python
|
||||
TITLE:=kconfiglib
|
||||
URL:=https://github.com/ulfalizer/Kconfiglib
|
||||
endef
|
||||
|
||||
define Package/python3-kconfiglib/description
|
||||
Kconfiglib is a Kconfig implementation in Python 2/3.
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
$(call Build/Compile/HostPy3Mod,,\
|
||||
install --prefix="" --root="$(STAGING_DIR_HOSTPKG)" \
|
||||
)
|
||||
endef
|
||||
|
||||
Host/Install:=
|
||||
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
|
||||
$(eval $(call Py3Package,python3-kconfiglib))
|
||||
$(eval $(call BuildPackage,python3-kconfiglib))
|
||||
206
patches/pending/0001-pending-scripts-add-gen_config.py.patch
Normal file
206
patches/pending/0001-pending-scripts-add-gen_config.py.patch
Normal file
@ -0,0 +1,206 @@
|
||||
From 4c6e17ce63c1da986237cc368a3085e19c7947c6 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Fri, 19 Jun 2020 10:45:22 +0200
|
||||
Subject: [PATCH 1/3] pending: scripts: add gen_config.py
|
||||
|
||||
This script is used to setup the tree based on the profiles/.
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
scripts/gen_config.py | 185 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 185 insertions(+)
|
||||
create mode 100755 scripts/gen_config.py
|
||||
|
||||
diff --git a/scripts/gen_config.py b/scripts/gen_config.py
|
||||
new file mode 100755
|
||||
index 0000000000..f55787ee1a
|
||||
--- /dev/null
|
||||
+++ b/scripts/gen_config.py
|
||||
@@ -0,0 +1,184 @@
|
||||
+#!/usr/bin/env python3
|
||||
+
|
||||
+from os import getenv
|
||||
+from pathlib import Path
|
||||
+from shutil import rmtree
|
||||
+from subprocess import run
|
||||
+import sys
|
||||
+import yaml
|
||||
+
|
||||
+profile_folder = Path(getenv("PROFILES", "./profiles")).absolute()
|
||||
+
|
||||
+
|
||||
+def die(msg: str):
|
||||
+ """Quit script with error message
|
||||
+
|
||||
+ msg (str): Error message to print
|
||||
+ """
|
||||
+ print(msg)
|
||||
+ sys.exit(1)
|
||||
+
|
||||
+
|
||||
+def usage(code: int = 0):
|
||||
+ """Print script usage
|
||||
+
|
||||
+ Args:
|
||||
+ code (int): exit code
|
||||
+ """
|
||||
+ print(
|
||||
+ f"""Usage: {sys.argv[0]} <profile> [options...]
|
||||
+
|
||||
+ clean Remove feeds before setup
|
||||
+ list List available profiles
|
||||
+ help Print this message
|
||||
+ """
|
||||
+ )
|
||||
+ sys.exit(code)
|
||||
+
|
||||
+
|
||||
+def load_yaml(fname: str, profile: dict):
|
||||
+ profile_file = (profile_folder / fname).with_suffix(".yml")
|
||||
+
|
||||
+ if not profile_file.is_file():
|
||||
+ die(f"Profile {fname} not found")
|
||||
+
|
||||
+ new = yaml.safe_load(profile_file.read_text())
|
||||
+ for n in new:
|
||||
+ if n in {"profile", "target", "subtarget", "external_target"}:
|
||||
+ if profile.get(n):
|
||||
+ die(f"Duplicate tag found {n}")
|
||||
+ profile.update({n: new.get(n)})
|
||||
+ elif n in {"description"}:
|
||||
+ profile["description"].append(new.get(n))
|
||||
+ elif n in {"packages"}:
|
||||
+ profile["packages"].extend(new.get(n))
|
||||
+ elif n in {"diffconfig"}:
|
||||
+ profile["diffconfig"] += new.get(n)
|
||||
+ elif n in {"feeds"}:
|
||||
+ for f in new.get(n):
|
||||
+ if f.get("name", "") == "" or (f.get("uri", "") == "" and f.get("path", "") == ""):
|
||||
+ die(f"Found bad feed {f}")
|
||||
+ profile["feeds"][f.get("name")] = f
|
||||
+ return profile
|
||||
+
|
||||
+
|
||||
+def clean_tree():
|
||||
+ print("Cleaning tree")
|
||||
+ rmtree("./tmp", ignore_errors=True)
|
||||
+ rmtree("./packages/feeds/", ignore_errors=True)
|
||||
+ rmtree("./tmp/", ignore_errors=True)
|
||||
+ rmtree(".git/rebase-apply/", ignore_errors=True)
|
||||
+ if Path("./feeds.conf").is_file():
|
||||
+ Path("./feeds.conf").unlink()
|
||||
+ if Path("./.config").is_file():
|
||||
+ Path("./.config").unlink()
|
||||
+
|
||||
+
|
||||
+def merge_profiles(profiles):
|
||||
+ profile = {"packages": [], "description": [], "diffconfig": "", "feeds": {}}
|
||||
+
|
||||
+ for p in profiles:
|
||||
+ profile = load_yaml(p, profile)
|
||||
+
|
||||
+ return profile
|
||||
+
|
||||
+
|
||||
+def setup_feeds(profile):
|
||||
+ feeds_conf = Path("feeds.conf")
|
||||
+ if feeds_conf.is_file():
|
||||
+ feeds_conf.unlink()
|
||||
+
|
||||
+ feeds = []
|
||||
+ for p in profile.get("feeds", []):
|
||||
+ try:
|
||||
+ f = profile["feeds"].get(p)
|
||||
+ if all(k in f for k in ("branch", "revision", "path")):
|
||||
+ die(f"Please specify either a branch, a revision or a path: {f}")
|
||||
+ if "path" in f:
|
||||
+ feeds.append(
|
||||
+ f'{f.get("method", "src-link")},{f["name"]},{f["path"]}'
|
||||
+ )
|
||||
+ elif "revision" in f:
|
||||
+ feeds.append(
|
||||
+ f'{f.get("method", "src-git")},{f["name"]},{f["uri"]}^{f.get("revision")}'
|
||||
+ )
|
||||
+ else:
|
||||
+ feeds.append(
|
||||
+ f'{f.get("method", "src-git")},{f["name"]},{f["uri"]};{f.get("branch", "master")}'
|
||||
+ )
|
||||
+
|
||||
+ except:
|
||||
+ print(f"Badly configured feed: {f}")
|
||||
+
|
||||
+ if run(["./scripts/feeds", "setup", "-b", *feeds]).returncode:
|
||||
+ die(f"Error setting up feeds")
|
||||
+
|
||||
+ if run(["./scripts/feeds", "update"]).returncode:
|
||||
+ die(f"Error updating feeds")
|
||||
+
|
||||
+ for p in profile.get("feeds", []):
|
||||
+ f = profile["feeds"].get(p)
|
||||
+ if run(
|
||||
+ ["./scripts/feeds", "install", "-a", "-f", "-p", f.get("name")]
|
||||
+ ).returncode:
|
||||
+ die(f"Error installing {feed}")
|
||||
+
|
||||
+ packages = ["./scripts/feeds", "install" ]
|
||||
+ for package in profile.get("packages", []):
|
||||
+ packages.append(package)
|
||||
+ if len(packages) > 2:
|
||||
+ if run(packages).returncode:
|
||||
+ die(f"Error installing packages")
|
||||
+
|
||||
+ if profile.get("external_target", False):
|
||||
+ if run(["./scripts/feeds", "install", profile["target"]]).returncode:
|
||||
+ die(f"Error installing external target {profile['target']}")
|
||||
+
|
||||
+
|
||||
+def generate_config(profile):
|
||||
+ config_output = f"""CONFIG_TARGET_{profile["target"]}=y
|
||||
+CONFIG_TARGET_{profile["target"]}_{profile["subtarget"]}=y
|
||||
+CONFIG_TARGET_{profile["target"]}_{profile["subtarget"]}_DEVICE_{profile["profile"]}=y
|
||||
+"""
|
||||
+
|
||||
+ config_output += f"{profile.get('diffconfig', '')}"
|
||||
+
|
||||
+ for package in profile.get("packages", []):
|
||||
+ print(f"Add package to .config: {package}")
|
||||
+ config_output += f"CONFIG_PACKAGE_{package}=y\n"
|
||||
+
|
||||
+ Path(".config").write_text(config_output)
|
||||
+ print("Configuration written to .config")
|
||||
+
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ if "list" in sys.argv:
|
||||
+ print(f"Profiles in {profile_folder}")
|
||||
+
|
||||
+ print("\n".join(map(lambda p: str(p.stem), profile_folder.glob("*.yml"))))
|
||||
+ quit(0)
|
||||
+
|
||||
+ if "help" in sys.argv:
|
||||
+ usage()
|
||||
+
|
||||
+ if len(sys.argv) < 2:
|
||||
+ usage(1)
|
||||
+
|
||||
+ if "clean" in sys.argv:
|
||||
+ clean_tree()
|
||||
+ print("Tree is now clean")
|
||||
+ quit(0)
|
||||
+
|
||||
+ profile = merge_profiles(sys.argv[1:])
|
||||
+
|
||||
+ print("Using the following profiles:")
|
||||
+ for d in profile.get("description"):
|
||||
+ print(f" - {d}")
|
||||
+
|
||||
+ clean_tree()
|
||||
+ setup_feeds(profile)
|
||||
+ generate_config(profile)
|
||||
+
|
||||
+ print("Running make defconfig")
|
||||
+ if run(["make", "defconfig"]).returncode:
|
||||
+ die(f"Error running make defconfig")
|
||||
--
|
||||
2.25.1
|
||||
|
||||
131
patches/pending/0002-scripts-update-feed-script.patch
Normal file
131
patches/pending/0002-scripts-update-feed-script.patch
Normal file
@ -0,0 +1,131 @@
|
||||
From 732f0992ad36a6d9f6aa459ce0899891422b65f0 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Fri, 19 Jun 2020 13:25:27 +0200
|
||||
Subject: [PATCH 2/3] scripts: update feed script
|
||||
|
||||
gen_config.py requires the latest version of the feeds script.
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
scripts/feeds | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 77 insertions(+)
|
||||
|
||||
diff --git a/scripts/feeds b/scripts/feeds
|
||||
index 69ab60278a..46c5f5cb9f 100755
|
||||
--- a/scripts/feeds
|
||||
+++ b/scripts/feeds
|
||||
@@ -644,6 +644,35 @@ sub refresh_config {
|
||||
}
|
||||
}
|
||||
|
||||
+sub install_profiles {
|
||||
+ my $feed = shift;
|
||||
+ my $dir = sprintf('feeds/%s/', $feed->[1]);
|
||||
+
|
||||
+ -d "./feeds/profiles" or mkdir "./feeds/profiles" or return 1;
|
||||
+
|
||||
+ opendir (DIR, $dir) or return 0;
|
||||
+ while (my $file = readdir(DIR)) {
|
||||
+ next unless (-f "$dir/$file");
|
||||
+ next unless ($file =~ m/\.profile$/);
|
||||
+ -e "./feeds/profiles/$file" or system("ln -s ../$feed->[1]/$file ./feeds/profiles/");
|
||||
+ }
|
||||
+ closedir(DIR);
|
||||
+}
|
||||
+
|
||||
+sub install_dl {
|
||||
+ my $feed = shift;
|
||||
+ my $dir = sprintf('feeds/%s/dl/', $feed->[1]);
|
||||
+
|
||||
+ -d "./dl" or mkdir "./dl" or return 1;
|
||||
+
|
||||
+ opendir (DIR, $dir) or return 0;
|
||||
+ while (my $file = readdir(DIR)) {
|
||||
+ next unless (-f "$dir/$file");
|
||||
+ -e "./dl/$file" or system("ln -s ../feeds/$feed->[1]/dl/$file ./dl/");
|
||||
+ }
|
||||
+ closedir(DIR);
|
||||
+}
|
||||
+
|
||||
sub install {
|
||||
my $name;
|
||||
my %opts;
|
||||
@@ -676,6 +705,8 @@ sub install {
|
||||
install_src($feed, $name, exists($opts{f})) == 0 or $ret = 1;
|
||||
get_feed($f->[1]);
|
||||
}
|
||||
+ install_profiles($f);
|
||||
+ install_dl($f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -846,6 +877,47 @@ sub update {
|
||||
return $failed;
|
||||
}
|
||||
|
||||
+sub setup {
|
||||
+ my %opts;
|
||||
+
|
||||
+ getopts('bh', \%opts);
|
||||
+
|
||||
+ if ($opts{h}) {
|
||||
+ usage();
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ if (-e "feeds.conf") {
|
||||
+ warn "The file feeds.conf already exists.\n";
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ open(my $fd, ">>feeds.conf");
|
||||
+
|
||||
+ if ($opts{b}) {
|
||||
+ printf $fd "src-include defaults feeds.conf.default\n";
|
||||
+ }
|
||||
+
|
||||
+ while (my $entry = shift @ARGV) {
|
||||
+ my ($type, $name, $src) = split /,/, $entry;
|
||||
+
|
||||
+ $update_method{$type} or do {
|
||||
+ warn "Unknown type '$type' in parameter $entry\n";
|
||||
+ unlink "feeds.conf";
|
||||
+ return 1;
|
||||
+ };
|
||||
+
|
||||
+ if ($name =~ /[\s-]/) {
|
||||
+ warn "Feed names or sources may not contain whitespace or - characters in parameter $entry\n";
|
||||
+ unlink "feeds.conf";
|
||||
+ return 1;
|
||||
+ }
|
||||
+ printf $fd "%s %s %s\n", $type, $name, $src;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
sub feed_config() {
|
||||
foreach my $feed (@feeds) {
|
||||
my $installed = (-f "feeds/$feed->[1].index");
|
||||
@@ -897,6 +969,10 @@ Commands:
|
||||
-i : Recreate the index only. No feed update from repository is performed.
|
||||
-f : Force updating feeds even if there are changed, uncommitted files.
|
||||
|
||||
+ setup [options] <type,name,link> <type,name,link> ...: generate feeds.conf
|
||||
+ Options:
|
||||
+ -b : Use feeds.conf.default as base for new feeds.conf.
|
||||
+
|
||||
clean: Remove downloaded/generated files.
|
||||
|
||||
EOF
|
||||
@@ -910,6 +986,7 @@ my %commands = (
|
||||
'search' => \&search,
|
||||
'uninstall' => \&uninstall,
|
||||
'feed_config' => \&feed_config,
|
||||
+ 'setup' => \&setup,
|
||||
'clean' => sub {
|
||||
system("rm -rf ./feeds ./package/feeds");
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@ -0,0 +1,163 @@
|
||||
From 93a25b8fd76b7868e82d8d88036541da46081052 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Fri, 19 Jun 2020 13:26:05 +0200
|
||||
Subject: [PATCH 3/3] profiles: add the wlan-ap board profiles
|
||||
|
||||
These are the profiles describing the boards and feature sets that we need
|
||||
to build wlan-ap packages.
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
profiles/ap2220.yml | 7 ++++
|
||||
profiles/ea8300.yml | 7 ++++
|
||||
profiles/ecw5211.yml | 7 ++++
|
||||
profiles/ecw5410.yml | 7 ++++
|
||||
profiles/wlan-ap.yml | 80 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 108 insertions(+)
|
||||
create mode 100644 profiles/ap2220.yml
|
||||
create mode 100644 profiles/ea8300.yml
|
||||
create mode 100644 profiles/ecw5211.yml
|
||||
create mode 100644 profiles/ecw5410.yml
|
||||
create mode 100644 profiles/wlan-ap.yml
|
||||
|
||||
diff --git a/profiles/ap2220.yml b/profiles/ap2220.yml
|
||||
new file mode 100644
|
||||
index 0000000000..3c2608b113
|
||||
--- /dev/null
|
||||
+++ b/profiles/ap2220.yml
|
||||
@@ -0,0 +1,7 @@
|
||||
+---
|
||||
+profile: tp-link_ap2220
|
||||
+target: ipq40xx
|
||||
+subtarget: generic
|
||||
+description: Build image for the TP-Link AP2220
|
||||
+packages:
|
||||
+ - opensync-ap2220
|
||||
diff --git a/profiles/ea8300.yml b/profiles/ea8300.yml
|
||||
new file mode 100644
|
||||
index 0000000000..0c42881e3d
|
||||
--- /dev/null
|
||||
+++ b/profiles/ea8300.yml
|
||||
@@ -0,0 +1,7 @@
|
||||
+---
|
||||
+profile: linksys_ea8300
|
||||
+target: ipq40xx
|
||||
+subtarget: generic
|
||||
+description: Build image for the Linksys EA8300
|
||||
+packages:
|
||||
+ - opensync-ea8300
|
||||
diff --git a/profiles/ecw5211.yml b/profiles/ecw5211.yml
|
||||
new file mode 100644
|
||||
index 0000000000..02c72f02a1
|
||||
--- /dev/null
|
||||
+++ b/profiles/ecw5211.yml
|
||||
@@ -0,0 +1,7 @@
|
||||
+---
|
||||
+profile: edgecore_ecw5211
|
||||
+target: ipq40xx
|
||||
+subtarget: generic
|
||||
+description: Build image for the Edgecore ECW5211
|
||||
+packages:
|
||||
+ - opensync-ecw5211
|
||||
diff --git a/profiles/ecw5410.yml b/profiles/ecw5410.yml
|
||||
new file mode 100644
|
||||
index 0000000000..f1f0327bb3
|
||||
--- /dev/null
|
||||
+++ b/profiles/ecw5410.yml
|
||||
@@ -0,0 +1,7 @@
|
||||
+---
|
||||
+profile: edgecore_ecw5410
|
||||
+target: ipq806x
|
||||
+subtarget: generic
|
||||
+description: Build image for the Edgecore ECW5410
|
||||
+packages:
|
||||
+ - opensync-ecw5410
|
||||
diff --git a/profiles/wlan-ap.yml b/profiles/wlan-ap.yml
|
||||
new file mode 100644
|
||||
index 0000000000..b3668bec5d
|
||||
--- /dev/null
|
||||
+++ b/profiles/wlan-ap.yml
|
||||
@@ -0,0 +1,80 @@
|
||||
+---
|
||||
+description: Add the wlan-ap dependencies
|
||||
+feeds:
|
||||
+ - name: wlan_ap
|
||||
+ path: ../../feeds/wlan-ap
|
||||
+
|
||||
+packages:
|
||||
+ - cgi-io
|
||||
+ - coreutils
|
||||
+ - coreutils-sleep
|
||||
+ - jansson
|
||||
+ - kmod-crypto-crc32c
|
||||
+ - kmod-crypto-hash
|
||||
+ - kmod-lib-crc32c
|
||||
+ - kmod-mpls
|
||||
+ - kmod-nf-nat6
|
||||
+ - kmod-openvswitch
|
||||
+ - libatomic
|
||||
+ - libcares
|
||||
+ - libev
|
||||
+ - libiwinfo-lua
|
||||
+ - liblua
|
||||
+ - liblucihttp
|
||||
+ - liblucihttp-lua
|
||||
+ - libmosquitto-ssl
|
||||
+ - libopenssl
|
||||
+ - libpcap
|
||||
+ - libprotobuf-c
|
||||
+ - librt
|
||||
+ - libstdcpp
|
||||
+ - libubus-lua
|
||||
+ - libunbound-light
|
||||
+ - libuuid
|
||||
+ - lua
|
||||
+ - luci
|
||||
+ - luci-app-firewall
|
||||
+ - luci-app-opkg
|
||||
+ - luci-base
|
||||
+ - luci-lib-ip
|
||||
+ - luci-lib-jsonc
|
||||
+ - luci-lib-nixio
|
||||
+ - luci-mod-admin-full
|
||||
+ - luci-mod-network
|
||||
+ - luci-mod-status
|
||||
+ - luci-mod-system
|
||||
+ - luci-proto-ipv6
|
||||
+ - luci-proto-ppp
|
||||
+ - luci-theme-bootstrap
|
||||
+ - openvswitch
|
||||
+ - openvswitch-common
|
||||
+ - openvswitch-libofproto
|
||||
+ - openvswitch-libopenvswitch
|
||||
+ - openvswitch-libovsdb
|
||||
+ - openvswitch-ovsdb
|
||||
+ - openvswitch-vswitchd
|
||||
+ - protobuf
|
||||
+ - protobuf-lite
|
||||
+ - rpcd
|
||||
+ - rpcd-mod-file
|
||||
+ - rpcd-mod-iwinfo
|
||||
+ - rpcd-mod-luci
|
||||
+ - rpcd-mod-rrdns
|
||||
+ - uhttpd
|
||||
+ - uuidgen
|
||||
+ - zlib
|
||||
+ - opensync
|
||||
+ - wpad-openssl
|
||||
+
|
||||
+diffconfig: |
|
||||
+ CONFIG_OPENSSL_ENGINE=y
|
||||
+ CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM=y
|
||||
+ CONFIG_OPENSSL_WITH_ASM=y
|
||||
+ CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y
|
||||
+ CONFIG_OPENSSL_WITH_CMS=y
|
||||
+ CONFIG_OPENSSL_WITH_DEPRECATED=y
|
||||
+ CONFIG_OPENSSL_WITH_ERROR_MESSAGES=y
|
||||
+ CONFIG_OPENSSL_WITH_PSK=y
|
||||
+ CONFIG_OPENSSL_WITH_SRP=y
|
||||
+ CONFIG_OPENSSL_WITH_TLS13=y
|
||||
+
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
From f46ac3c1bc7e84ba3f09d79c4ba1ddd49122d306 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 18 May 2020 12:34:06 +0200
|
||||
Subject: [PATCH 1/7] firmware: ipq-wifi: enable use on IPQ806x
|
||||
|
||||
This enables the ipq-wifi package to be used on IPQ806x target.
|
||||
Its needed for boards using a different BDF than one shipped in the upstream board-2.bin.
|
||||
|
||||
Currently needed for Edgecore ECW5410.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
package/firmware/ipq-wifi/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
|
||||
index eb7c2df1aa..4b90a3397f 100644
|
||||
--- a/package/firmware/ipq-wifi/Makefile
|
||||
+++ b/package/firmware/ipq-wifi/Makefile
|
||||
@@ -41,7 +41,7 @@ define Package/ipq-wifi-default
|
||||
SUBMENU:=ath10k Board-Specific Overrides
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
- DEPENDS:=@TARGET_ipq40xx
|
||||
+ DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x)
|
||||
TITLE:=Custom Board
|
||||
endef
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
28
patches/wlan-ap/0002-ipq806x-4.14-enable-AT803X-driver.patch
Normal file
28
patches/wlan-ap/0002-ipq806x-4.14-enable-AT803X-driver.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From cb0b442df7dd7b03bbda6344ecfe8799595e81db Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 18 May 2020 12:25:20 +0200
|
||||
Subject: [PATCH 2/7] ipq806x: 4.14: enable AT803X driver
|
||||
|
||||
Its needed for Edgecore ECW5410 which does not use QCA8337 switch,
|
||||
but rather 2x AR8033 PHY-s directly connected to GMAC-s.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
target/linux/ipq806x/config-4.14 | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/target/linux/ipq806x/config-4.14 b/target/linux/ipq806x/config-4.14
|
||||
index 38f5c94507..2a89ad8778 100644
|
||||
--- a/target/linux/ipq806x/config-4.14
|
||||
+++ b/target/linux/ipq806x/config-4.14
|
||||
@@ -58,6 +58,7 @@ CONFIG_ARM_THUMB=y
|
||||
# CONFIG_ARM_THUMBEE is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
+CONFIG_AT803X_PHY=y
|
||||
# CONFIG_BINFMT_FLAT is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
--
|
||||
2.25.1
|
||||
|
||||
63
patches/wlan-ap/0003-ipq806x-add-GSBI1-node-to-DTSI.patch
Normal file
63
patches/wlan-ap/0003-ipq806x-add-GSBI1-node-to-DTSI.patch
Normal file
@ -0,0 +1,63 @@
|
||||
From 18b22a37bf37e661824ff8fe9bf4d3ab9df2d940 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 18 May 2020 12:28:37 +0200
|
||||
Subject: [PATCH 3/7] ipq806x: add GSBI1 node to DTSI
|
||||
|
||||
IPQ806x series also has a GSBI1 with UART and I2C peripherals, so lets add the node for it.
|
||||
|
||||
Its needed for Edgecore ECW5410 which uses the UART from GSBI1 as second UART for Bluetooth.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
.../arch/arm/boot/dts/qcom-ipq8064.dtsi | 35 +++++++++++++++++++
|
||||
1 file changed, 35 insertions(+)
|
||||
|
||||
diff --git a/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064.dtsi b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
||||
index d850553000..1af6353ee4 100644
|
||||
--- a/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
||||
+++ b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
||||
@@ -721,6 +721,41 @@
|
||||
reg = <0x12100000 0x10000>;
|
||||
};
|
||||
|
||||
+ gsbi1: gsbi@12440000 {
|
||||
+ compatible = "qcom,gsbi-v1.0.0";
|
||||
+ cell-index = <1>;
|
||||
+ reg = <0x12440000 0x100>;
|
||||
+ clocks = <&gcc GSBI1_H_CLK>;
|
||||
+ clock-names = "iface";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ syscon-tcsr = <&tcsr>;
|
||||
+
|
||||
+ gsbi1_serial: serial@12450000 {
|
||||
+ compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
||||
+ reg = <0x12450000 0x100>,
|
||||
+ <0x12400000 0x03>;
|
||||
+ interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&gcc GSBI1_UART_CLK>, <&gcc GSBI1_H_CLK>;
|
||||
+ clock-names = "core", "iface";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ gsbi1_i2c: i2c@12460000 {
|
||||
+ compatible = "qcom,i2c-qup-v1.1.1";
|
||||
+ reg = <0x12460000 0x1000>;
|
||||
+ interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
|
||||
+ clock-names = "core", "iface";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
gsbi2: gsbi@12480000 {
|
||||
compatible = "qcom,gsbi-v1.0.0";
|
||||
cell-index = <2>;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
From a7dd83202c73e8dec2963d97d1a0580dcd4add7a Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 18 May 2020 12:35:15 +0200
|
||||
Subject: [PATCH 4/7] ipq806x: import bootargs-append from IPQ40xx
|
||||
|
||||
This imports the patch that adds bootargs-append support from IPQ40xx.
|
||||
|
||||
This way we can append additional boot arguments from DTS instead of only being able to overwrite them.
|
||||
|
||||
This way dual firmware devices can use the rootfs number that bootloader passes to decide from what to boot.
|
||||
But we still need to append console info and ubi root info.
|
||||
|
||||
This is used by Edgecore ECW5410.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
.../patches-4.14/997-device_tree_cmdline.patch | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
create mode 100644 target/linux/ipq806x/patches-4.14/997-device_tree_cmdline.patch
|
||||
|
||||
diff --git a/target/linux/ipq806x/patches-4.14/997-device_tree_cmdline.patch b/target/linux/ipq806x/patches-4.14/997-device_tree_cmdline.patch
|
||||
new file mode 100644
|
||||
index 0000000000..8b5e64a2d4
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ipq806x/patches-4.14/997-device_tree_cmdline.patch
|
||||
@@ -0,0 +1,12 @@
|
||||
+--- a/drivers/of/fdt.c
|
||||
++++ b/drivers/of/fdt.c
|
||||
+@@ -1130,6 +1130,9 @@ int __init early_init_dt_scan_chosen(uns
|
||||
+ p = of_get_flat_dt_prop(node, "bootargs", &l);
|
||||
+ if (p != NULL && l > 0)
|
||||
+ strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
|
||||
++ p = of_get_flat_dt_prop(node, "bootargs-append", &l);
|
||||
++ if (p != NULL && l > 0)
|
||||
++ strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
|
||||
+
|
||||
+ /*
|
||||
+ * CONFIG_CMDLINE is meant to be a default in case nothing else
|
||||
--
|
||||
2.25.1
|
||||
|
||||
725
patches/wlan-ap/0005-ipq806x-add-Edgecore-ECW5410-support.patch
Normal file
725
patches/wlan-ap/0005-ipq806x-add-Edgecore-ECW5410-support.patch
Normal file
@ -0,0 +1,725 @@
|
||||
From 85b302d3f5423d54378a178602a8097dac50d9d0 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 18 May 2020 12:45:47 +0200
|
||||
Subject: [PATCH 5/7] ipq806x: add Edgecore ECW5410 support
|
||||
|
||||
This patch adds support for the Edgecore ECW5410 indoor AP.
|
||||
|
||||
Specification:
|
||||
- SoC: Qualcomm Atheros IPQ8068 ARMv7 2x Cortex A-15
|
||||
- RAM: 256MB(225 usable) DDR3
|
||||
- NOR Flash: 16MB SPI NOR
|
||||
- NAND Flash: 128MB S34MS01G2 Parallel NAND
|
||||
- Ethernet: 2 x 1G via 2x AR8033 PHY-s connected directly to GMAC2 and GMAC3 via SGMII (802.3af POE IN on eth0)
|
||||
- USB: 1 x USB 3.0 SuperSpeed
|
||||
- WLAN: 2x QCA9994 AC Wawe 2 (1x 2GHz bgn, 1x 5GHz acn)
|
||||
- CC2540 BLE
|
||||
- UART console on RJ45 next to ethernet ports exposed.
|
||||
Its Cisco pin compatible, 115200 8n1 baud.
|
||||
|
||||
Installation instructions:
|
||||
Through stock firmware or initramfs.
|
||||
|
||||
1.Connect to console
|
||||
2. Login with root account, if password is unknown then interrupt the boot with f and reset it in failsafe.
|
||||
3. Transfer factory image
|
||||
4. Flash the image with ubiformat /dev/mtd1 -y -f <your factory image path>
|
||||
|
||||
This will replace the rootfs2 with OpenWrt, if you are currently running from rootfs2 then simply change /dev/mtd1 to /dev/mtd0
|
||||
|
||||
Note
|
||||
|
||||
Initramfs:
|
||||
1. Connect to console
|
||||
2. Transfer the image from TFTP server with tftpboot,
|
||||
or by using DHCP advertised image with dhcp command.
|
||||
3. bootm
|
||||
4. Run ubiformat /dev/mtd1
|
||||
|
||||
You need to interrupt the bootloader after rebooting and run:
|
||||
run altbootcmd
|
||||
|
||||
This will switch your active rootfs partition to one you wrote to and boot from it.
|
||||
|
||||
So if rootfs1 is active, then it will change it to rootfs2.
|
||||
|
||||
This will format the rootfs2 partition, if your active partition is 2 then simply change /dev/mtd1 with /dev/mtd0
|
||||
If you dont format the partition you will be writing too, then sysupgrade will find existing UBI rootfs and kernel volumes and update those.
|
||||
This will result in wrong ordering and OpenWrt will panic on boot.
|
||||
|
||||
5. Transfer sysupgrade image
|
||||
6. Flash with sysupgrade -n.
|
||||
|
||||
Note that sysupgrade will write the image to rootfs partition that is not currently in use.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
package/boot/uboot-envtools/files/ipq806x | 3 +
|
||||
package/firmware/ipq-wifi/Makefile | 2 +
|
||||
.../ipq-wifi/board-edgecore_ecw5410.qca9984 | Bin 0 -> 24324 bytes
|
||||
.../ipq806x/base-files/etc/board.d/01_leds | 4 +
|
||||
.../ipq806x/base-files/etc/board.d/02_network | 5 +
|
||||
.../etc/hotplug.d/firmware/11-ath10k-caldata | 10 +
|
||||
.../ipq806x/base-files/etc/init.d/bootcount | 3 +
|
||||
.../base-files/lib/upgrade/platform.sh | 11 +
|
||||
.../arm/boot/dts/qcom-ipq8068-ecw5410.dts | 400 ++++++++++++++++++
|
||||
target/linux/ipq806x/image/Makefile | 12 +
|
||||
.../0069-arm-boot-add-dts-files.patch | 3 +-
|
||||
11 files changed, 452 insertions(+), 1 deletion(-)
|
||||
create mode 100644 package/firmware/ipq-wifi/board-edgecore_ecw5410.qca9984
|
||||
create mode 100644 target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts
|
||||
|
||||
diff --git a/package/boot/uboot-envtools/files/ipq806x b/package/boot/uboot-envtools/files/ipq806x
|
||||
index c27bea71c1..9da2b5b6bd 100644
|
||||
--- a/package/boot/uboot-envtools/files/ipq806x
|
||||
+++ b/package/boot/uboot-envtools/files/ipq806x
|
||||
@@ -31,6 +31,9 @@ ubootenv_mtdinfo () {
|
||||
}
|
||||
|
||||
case "$board" in
|
||||
+edgecore,ecw5410)
|
||||
+ ubootenv_add_uci_config "/dev/mtd11" "0x0" "0x10000" "0x10000"
|
||||
+ ;;
|
||||
linksys,ea8500)
|
||||
ubootenv_add_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000"
|
||||
;;
|
||||
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
|
||||
index 4b90a3397f..25731ddc56 100644
|
||||
--- a/package/firmware/ipq-wifi/Makefile
|
||||
+++ b/package/firmware/ipq-wifi/Makefile
|
||||
@@ -29,6 +29,7 @@ ALLWIFIBOARDS:= \
|
||||
avm_fritzbox-7530 \
|
||||
avm_fritzrepeater-1200 \
|
||||
avm_fritzrepeater-3000 \
|
||||
+ edgecore_ecw5410 \
|
||||
engenius_eap1300 \
|
||||
engenius_ens620ext \
|
||||
linksys_ea6350v3 \
|
||||
@@ -101,6 +102,7 @@ $(eval $(call generate-ipq-wifi-package,asus_map-ac2200,ASUS MAP-AC2200))
|
||||
$(eval $(call generate-ipq-wifi-package,avm_fritzbox-7530,AVM FRITZ!Box 7530))
|
||||
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-1200,AVM FRITZRepeater 1200))
|
||||
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-3000,AVM FRITZ!Repeater 3000))
|
||||
+$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
||||
$(eval $(call generate-ipq-wifi-package,engenius_eap1300,EnGenius EAP1300))
|
||||
$(eval $(call generate-ipq-wifi-package,engenius_ens620ext,EnGenius ENS620EXT))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,Linksys EA6350v3))
|
||||
diff --git a/package/firmware/ipq-wifi/board-edgecore_ecw5410.qca9984 b/package/firmware/ipq-wifi/board-edgecore_ecw5410.qca9984
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..2c1992001d86268e0483b9e53ed4b563e224ada4
|
||||
GIT binary patch
|
||||
literal 24324
|
||||
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
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/target/linux/ipq806x/base-files/etc/board.d/01_leds b/target/linux/ipq806x/base-files/etc/board.d/01_leds
|
||||
index f8b6c32358..ffefb9e01c 100755
|
||||
--- a/target/linux/ipq806x/base-files/etc/board.d/01_leds
|
||||
+++ b/target/linux/ipq806x/base-files/etc/board.d/01_leds
|
||||
@@ -19,6 +19,10 @@ compex,wpq864)
|
||||
ucidef_set_led_usbport "usb" "USB" "wpq864:green:usb" "usb1-port1" "usb2-port1"
|
||||
ucidef_set_led_usbport "pcie-usb" "PCIe USB" "wpq864:green:usb-pcie" "usb3-port1"
|
||||
;;
|
||||
+edgecore,ecw5410)
|
||||
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" "phy1tpt"
|
||||
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" "phy0tpt"
|
||||
+ ;;
|
||||
nec,wg2600hp)
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" "phy1tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" "phy0tpt"
|
||||
diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network b/target/linux/ipq806x/base-files/etc/board.d/02_network
|
||||
index a3aa0fce70..d6958cadac 100755
|
||||
--- a/target/linux/ipq806x/base-files/etc/board.d/02_network
|
||||
+++ b/target/linux/ipq806x/base-files/etc/board.d/02_network
|
||||
@@ -22,6 +22,11 @@ tplink,vr2600v)
|
||||
ucidef_add_switch "switch0" \
|
||||
"1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0"
|
||||
;;
|
||||
+edgecore,ecw5410)
|
||||
+ ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||
+ ucidef_set_interface_macaddr "lan" "$(mtd_get_mac_binary "0:ART" 0x6)"
|
||||
+ ucidef_set_interface_macaddr "wan" "$(mtd_get_mac_binary "0:ART" 0x0)"
|
||||
+ ;;
|
||||
qcom,ipq8064-ap161)
|
||||
ucidef_set_interface_lan "eth1 eth2"
|
||||
ucidef_add_switch "switch0" \
|
||||
diff --git a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
index e05f2b2c7b..71bc906acd 100644
|
||||
--- a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
+++ b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
@@ -117,6 +117,9 @@ case "$FIRMWARE" in
|
||||
ath10kcal_extract "ART" 20480 12064
|
||||
ath10kcal_patch_mac_crc $(mtd_get_mac_binary ART 24)
|
||||
;;
|
||||
+ edgecore,ecw5410)
|
||||
+ ath10kcal_extract "0:ART" 4096 12064
|
||||
+ ;;
|
||||
linksys,ea8500)
|
||||
ath10kcal_extract "art" 20480 12064
|
||||
ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) +2)
|
||||
@@ -145,6 +148,13 @@ case "$FIRMWARE" in
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
+"ath10k/pre-cal-pci-0002:01:00.0.bin")
|
||||
+ case $board in
|
||||
+ edgecore,ecw5410)
|
||||
+ ath10kcal_extract "0:ART" 20480 12064
|
||||
+ ;;
|
||||
+ esac
|
||||
+ ;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
diff --git a/target/linux/ipq806x/base-files/etc/init.d/bootcount b/target/linux/ipq806x/base-files/etc/init.d/bootcount
|
||||
index 6a5a6d52ad..307cb12b9f 100755
|
||||
--- a/target/linux/ipq806x/base-files/etc/init.d/bootcount
|
||||
+++ b/target/linux/ipq806x/base-files/etc/init.d/bootcount
|
||||
@@ -6,6 +6,9 @@ start() {
|
||||
. /lib/functions.sh
|
||||
|
||||
case $(board_name) in
|
||||
+ edgecore,ecw5410)
|
||||
+ fw_setenv bootcount 0
|
||||
+ ;;
|
||||
linksys,ea8500)
|
||||
mtd resetbc s_env || true
|
||||
;;
|
||||
diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
|
||||
index 5919613cb9..032e71981e 100644
|
||||
--- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
|
||||
+++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
|
||||
@@ -25,6 +25,17 @@ platform_do_upgrade() {
|
||||
zyxel,nbg6817)
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
+ edgecore,ecw5410)
|
||||
+ part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
|
||||
+ if [ "$part" = "rootfs1" ]; then
|
||||
+ fw_setenv active 2 || exit 1
|
||||
+ CI_UBIPART="rootfs2"
|
||||
+ else
|
||||
+ fw_setenv active 1 || exit 1
|
||||
+ CI_UBIPART="rootfs1"
|
||||
+ fi
|
||||
+ nand_do_upgrade "$1"
|
||||
+ ;;
|
||||
linksys,ea8500)
|
||||
platform_do_upgrade_linksys "$1"
|
||||
;;
|
||||
diff --git a/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts
|
||||
new file mode 100644
|
||||
index 0000000000..6bddc5e288
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts
|
||||
@@ -0,0 +1,400 @@
|
||||
+#include "qcom-ipq8064-v2.0.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/soc/qcom,tcsr.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "Edgecore ECW5410";
|
||||
+ compatible = "edgecore,ecw5410", "qcom,ipq8064";
|
||||
+
|
||||
+ reserved-memory {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges;
|
||||
+
|
||||
+ nss@40000000 {
|
||||
+ reg = <0x40000000 0x1000000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ smem: smem@41000000 {
|
||||
+ reg = <0x41000000 0x200000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ wifi_dump@44000000 {
|
||||
+ reg = <0x44000000 0x600000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ rsvd@41200000 {
|
||||
+ reg = <0x41200000 0x300000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ cpus {
|
||||
+ idle-states {
|
||||
+ CPU_SPC: spc {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &gsbi4_serial;
|
||||
+ serial1 = &gsbi1_serial;
|
||||
+ mdio-gpio0 = &mdio0;
|
||||
+ ethernet0 = &gmac3;
|
||||
+ ethernet1 = &gmac2;
|
||||
+
|
||||
+ led-boot = &power_green;
|
||||
+ led-failsafe = &power_red;
|
||||
+ led-running = &power_green;
|
||||
+ led-upgrade = &power_green;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs-append = " console=ttyMSM0,115200n8 root=/dev/ubiblock0_1";
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+ pinctrl-0 = <&button_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ reset {
|
||||
+ label = "reset";
|
||||
+ gpios = <&qcom_pinmux 25 GPIO_ACTIVE_LOW>;
|
||||
+ linux,code = <KEY_RESTART>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ pinctrl-0 = <&led_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ power_green: power_green {
|
||||
+ label = "ecw5410:green:power";
|
||||
+ gpios = <&qcom_pinmux 16 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ wlan2g_green {
|
||||
+ label = "ecw5410:green:wlan2g";
|
||||
+ gpios = <&qcom_pinmux 23 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wlan2g_yellow {
|
||||
+ label = "ecw5410:yellow:wlan2g";
|
||||
+ gpios = <&qcom_pinmux 24 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wlan5g_green {
|
||||
+ label = "ecw5410:green:wlan5g";
|
||||
+ gpios = <&qcom_pinmux 26 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ power_red: power_red {
|
||||
+ label = "ecw5410:red:power";
|
||||
+ gpios = <&qcom_pinmux 28 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wlan5g_yellow {
|
||||
+ label = "ecw5410:yellow:wlan5g";
|
||||
+ gpios = <&qcom_pinmux 59 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+
|
||||
+&qcom_pinmux {
|
||||
+ spi_pins: spi_pins {
|
||||
+ mux {
|
||||
+ pins = "gpio18", "gpio19";
|
||||
+ function = "gsbi5";
|
||||
+ drive-strength = <10>;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+
|
||||
+ clk {
|
||||
+ pins = "gpio21";
|
||||
+ function = "gsbi5";
|
||||
+ drive-strength = <12>;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+
|
||||
+ cs {
|
||||
+ pins = "gpio20";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <10>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ nand_pins: nand_pins {
|
||||
+ disable {
|
||||
+ pins = "gpio34", "gpio35", "gpio36", "gpio37",
|
||||
+ "gpio38";
|
||||
+ function = "nand";
|
||||
+ drive-strength = <10>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+
|
||||
+ pullups {
|
||||
+ pins = "gpio39";
|
||||
+ function = "nand";
|
||||
+ drive-strength = <10>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ hold {
|
||||
+ pins = "gpio40", "gpio41", "gpio42", "gpio43",
|
||||
+ "gpio44", "gpio45", "gpio46", "gpio47";
|
||||
+ function = "nand";
|
||||
+ drive-strength = <10>;
|
||||
+ bias-bus-hold;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ mdio0_pins: mdio0_pins {
|
||||
+ mux {
|
||||
+ pins = "gpio0", "gpio1";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <8>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ led_pins: led_pins {
|
||||
+ mux {
|
||||
+ pins = "gpio16", "gpio23", "gpio24", "gpio26",
|
||||
+ "gpio28", "gpio59";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ button_pins: button_pins {
|
||||
+ mux {
|
||||
+ pins = "gpio25";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ uart1_pins: uart1_pins {
|
||||
+ mux {
|
||||
+ pins = "gpio51", "gpio52", "gpio53", "gpio54";
|
||||
+ function = "gsbi1";
|
||||
+ drive-strength = <12>;
|
||||
+ bias-none;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gsbi1 {
|
||||
+ qcom,mode = <GSBI_PROT_UART_W_FC>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ serial@12450000 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&uart1_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gsbi4 {
|
||||
+ qcom,mode = <GSBI_PROT_I2C_UART>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ serial@16340000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ * The i2c device on gsbi4 should not be enabled.
|
||||
+ * On ipq806x designs gsbi4 i2c is meant for exclusive
|
||||
+ * RPM usage. Turning this on in kernel manifests as
|
||||
+ * i2c failure for the RPM.
|
||||
+ */
|
||||
+};
|
||||
+
|
||||
+&gsbi5 {
|
||||
+ qcom,mode = <GSBI_PROT_SPI>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ spi4: spi@1a280000 {
|
||||
+ status = "okay";
|
||||
+ spi-max-frequency = <50000000>;
|
||||
+
|
||||
+ pinctrl-0 = <&spi_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
|
||||
+
|
||||
+ m25p80@0 {
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ spi-max-frequency = <50000000>;
|
||||
+ reg = <0>;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "qcom,smem";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&hs_phy_0 { /* USB3 port 0 HS phy */
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hs_phy_1 { /* USB3 port 1 HS phy */
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ss_phy_0 { /* USB3 port 0 SS phy */
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ss_phy_1 { /* USB3 port 1 SS phy */
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb3_0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb3_1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ /delete-property/ pinctrl-0;
|
||||
+ /delete-property/ pinctrl-names;
|
||||
+ /delete-property/ perst-gpios;
|
||||
+
|
||||
+ bridge@0,0 {
|
||||
+ reg = <0x00000000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ wifi@1,0 {
|
||||
+ compatible = "qcom,ath10k";
|
||||
+ status = "okay";
|
||||
+ reg = <0x00010000 0 0 0 0>;
|
||||
+ qcom,ath10k-calibration-variant = "Edgecore-ECW5410-L";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pcie2 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ /delete-property/ pinctrl-0;
|
||||
+ /delete-property/ pinctrl-names;
|
||||
+ /delete-property/ perst-gpios;
|
||||
+
|
||||
+ bridge@0,0 {
|
||||
+ reg = <0x00000000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ wifi@1,0 {
|
||||
+ compatible = "qcom,ath10k";
|
||||
+ status = "okay";
|
||||
+ reg = <0x00010000 0 0 0 0>;
|
||||
+ qcom,ath10k-calibration-variant = "Edgecore-ECW5410-L";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&soc {
|
||||
+ nand@1ac00000 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&nand_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ nand@0 {
|
||||
+ compatible = "qcom,nandcs";
|
||||
+
|
||||
+ reg = <0>;
|
||||
+
|
||||
+ nand-ecc-strength = <4>;
|
||||
+ nand-bus-width = <8>;
|
||||
+ nand-ecc-step-size = <512>;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ rootfs1@0 {
|
||||
+ label = "rootfs1";
|
||||
+ reg = <0x0000000 0x4000000>;
|
||||
+ };
|
||||
+
|
||||
+ rootfs2@4000000 {
|
||||
+ label = "rootfs2";
|
||||
+ reg = <0x4000000 0x4000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ mdio0: mdio {
|
||||
+ compatible = "virtual,mdio-gpio";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&mdio0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH &qcom_pinmux 0 GPIO_ACTIVE_HIGH>;
|
||||
+
|
||||
+ phy0: ethernet-phy@0 {
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ phy1: ethernet-phy@1 {
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gmac2 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ qcom,id = <2>;
|
||||
+ mdiobus = <&mdio0>;
|
||||
+
|
||||
+ phy-mode = "sgmii";
|
||||
+ phy-handle = <&phy1>;
|
||||
+};
|
||||
+
|
||||
+&gmac3 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ qcom,id = <3>;
|
||||
+ mdiobus = <&mdio0>;
|
||||
+
|
||||
+ phy-mode = "sgmii";
|
||||
+ phy-handle = <&phy0>;
|
||||
+};
|
||||
+
|
||||
+&adm_dma {
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile
|
||||
index e1eb090de3..45f1c7f49c 100644
|
||||
--- a/target/linux/ipq806x/image/Makefile
|
||||
+++ b/target/linux/ipq806x/image/Makefile
|
||||
@@ -105,6 +105,18 @@ define Device/compex_wpq864
|
||||
endef
|
||||
TARGET_DEVICES += compex_wpq864
|
||||
|
||||
+define Device/edgecore_ecw5410
|
||||
+ $(call Device/FitImage)
|
||||
+ $(call Device/UbiFit)
|
||||
+ DEVICE_TITLE := Edgecore ECW5410
|
||||
+ BLOCKSIZE := 128k
|
||||
+ PAGESIZE := 2048
|
||||
+ DEVICE_DTS := qcom-ipq8068-ecw5410
|
||||
+ DEVICE_DTS_CONFIG := config@v2.0-ap160
|
||||
+ DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-edgecore_ecw5410
|
||||
+endef
|
||||
+TARGET_DEVICES += edgecore_ecw5410
|
||||
+
|
||||
define Device/linksys_ea8500
|
||||
$(call Device/LegacyImage)
|
||||
DEVICE_DTS := qcom-ipq8064-ea8500
|
||||
diff --git a/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch b/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch
|
||||
index e11378b42a..5c88c46e4f 100644
|
||||
--- a/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch
|
||||
+++ b/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
-@@ -699,6 +699,18 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
+@@ -699,6 +699,19 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
qcom-apq8084-mtp.dtb \
|
||||
qcom-ipq4019-ap.dk01.1-c1.dtb \
|
||||
qcom-ipq8064-ap148.dtb \
|
||||
@@ -26,6 +26,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+ qcom-ipq8064-wxr-2533dhp.dtb \
|
||||
+ qcom-ipq8065-nbg6817.dtb \
|
||||
+ qcom-ipq8065-r7800.dtb \
|
||||
++ qcom-ipq8068-ecw5410.dtb \
|
||||
qcom-msm8660-surf.dtb \
|
||||
qcom-msm8960-cdp.dtb \
|
||||
qcom-msm8974-lge-nexus5-hammerhead.dtb \
|
||||
--
|
||||
2.25.1
|
||||
|
||||
550
patches/wlan-ap/0006-ipq40xx-add-Edgecore-ECW5211-support.patch
Normal file
550
patches/wlan-ap/0006-ipq40xx-add-Edgecore-ECW5211-support.patch
Normal file
@ -0,0 +1,550 @@
|
||||
From 373d74c5d6aba0baca1c2bc6d3b7df1a35eb90a7 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Fri, 19 Jun 2020 14:01:58 +0200
|
||||
Subject: [PATCH 6/7] ipq40xx: add Edgecore ECW5211 support
|
||||
|
||||
This patch adds support for the Edgecore ECW5211 indoor AP.
|
||||
|
||||
Specification:
|
||||
- SoC: Qualcomm Atheros IPQ4018 ARMv7-A 4x Cortex A-7
|
||||
- RAM: 256MB DDR3
|
||||
- NOR Flash: 16MB SPI NOR
|
||||
- NAND Flash: 128MB MX35LFxGE4AB SPI-NAND
|
||||
- Ethernet: 2 x 1G via Q8075 PHY connected to ethernet adapter via PSGMII (802.3af POE IN on eth0)
|
||||
- USB: 1 x USB 3.0 SuperSpeed
|
||||
- WLAN: Built-in IPQ4018 (2x2 802.11bng, 2x2 802.11 acn)
|
||||
- CC2540 BLE connected to USB 2.0 port
|
||||
- Atmel AT97SC3205T I2C TPM
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
package/firmware/ipq-wifi/Makefile | 2 +
|
||||
.../ipq-wifi/board-edgecore_ecw5211.qca4019 | Bin 0 -> 24324 bytes
|
||||
.../ipq40xx/base-files/etc/board.d/01_leds | 1 +
|
||||
.../ipq40xx/base-files/etc/board.d/02_network | 1 +
|
||||
.../etc/hotplug.d/firmware/11-ath10k-caldata | 2 +
|
||||
.../base-files/lib/upgrade/platform.sh | 1 +
|
||||
.../arm/boot/dts/qcom-ipq4018-ecw5211.dts | 325 ++++++++++++++++++
|
||||
target/linux/ipq40xx/image/Makefile | 12 +
|
||||
.../901-arm-boot-add-dts-files.patch | 3 +-
|
||||
9 files changed, 346 insertions(+), 1 deletion(-)
|
||||
create mode 100644 package/firmware/ipq-wifi/board-edgecore_ecw5211.qca4019
|
||||
create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ecw5211.dts
|
||||
|
||||
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
|
||||
index 25731ddc56..1609d7a42d 100644
|
||||
--- a/package/firmware/ipq-wifi/Makefile
|
||||
+++ b/package/firmware/ipq-wifi/Makefile
|
||||
@@ -29,6 +29,7 @@ ALLWIFIBOARDS:= \
|
||||
avm_fritzbox-7530 \
|
||||
avm_fritzrepeater-1200 \
|
||||
avm_fritzrepeater-3000 \
|
||||
+ edgecore_ecw5211 \
|
||||
edgecore_ecw5410 \
|
||||
engenius_eap1300 \
|
||||
engenius_ens620ext \
|
||||
@@ -102,6 +103,7 @@ $(eval $(call generate-ipq-wifi-package,asus_map-ac2200,ASUS MAP-AC2200))
|
||||
$(eval $(call generate-ipq-wifi-package,avm_fritzbox-7530,AVM FRITZ!Box 7530))
|
||||
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-1200,AVM FRITZRepeater 1200))
|
||||
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-3000,AVM FRITZ!Repeater 3000))
|
||||
+$(eval $(call generate-ipq-wifi-package,edgecore_ecw5211,Edgecore ECW5211))
|
||||
$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
||||
$(eval $(call generate-ipq-wifi-package,engenius_eap1300,EnGenius EAP1300))
|
||||
$(eval $(call generate-ipq-wifi-package,engenius_ens620ext,EnGenius ENS620EXT))
|
||||
diff --git a/package/firmware/ipq-wifi/board-edgecore_ecw5211.qca4019 b/package/firmware/ipq-wifi/board-edgecore_ecw5211.qca4019
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..340cfcc7a20cb88ed6fca7369b380a3d341f76ee
|
||||
GIT binary patch
|
||||
literal 24324
|
||||
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
|
||||
H5%T{5!-kmb
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
|
||||
index 9cd51e5de0..6bc21a67e9 100755
|
||||
--- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
|
||||
@@ -55,6 +55,7 @@ zyxel,nbg6617)
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2G" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5G" "phy1tpt"
|
||||
;;
|
||||
+edgecore,ecw5211 |\
|
||||
zyxel,wre6606)
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" "phy1tpt"
|
||||
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
index 01825b8bac..6e0fb52ab4 100755
|
||||
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
@@ -18,6 +18,7 @@ ipq40xx_setup_interfaces()
|
||||
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||
;;
|
||||
asus,map-ac2200|\
|
||||
+ edgecore,ecw5211|\
|
||||
openmesh,a42|\
|
||||
openmesh,a62)
|
||||
ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
index b0035ce8a3..7d2e173e1a 100644
|
||||
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
@@ -158,6 +158,7 @@ case "$FIRMWARE" in
|
||||
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
||||
;;
|
||||
compex,wpj428 |\
|
||||
+ edgecore,ecw5211 |\
|
||||
engenius,eap1300 |\
|
||||
openmesh,a42 |\
|
||||
openmesh,a62 |\
|
||||
@@ -220,6 +221,7 @@ case "$FIRMWARE" in
|
||||
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
||||
;;
|
||||
compex,wpj428 |\
|
||||
+ edgecore,ecw5211 |\
|
||||
engenius,eap1300 |\
|
||||
openmesh,a42 |\
|
||||
openmesh,a62 |\
|
||||
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
|
||||
index a7b7da1bf3..e0a9301fe0 100644
|
||||
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
|
||||
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
|
||||
@@ -51,6 +51,7 @@ platform_do_upgrade() {
|
||||
avm,fritzbox-7530 |\
|
||||
avm,fritzrepeater-1200 |\
|
||||
avm,fritzrepeater-3000 |\
|
||||
+ edgecore,ecw5211 |\
|
||||
qxwlan,e2600ac-c2)
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ecw5211.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ecw5211.dts
|
||||
new file mode 100644
|
||||
index 0000000000..6c9b31b99d
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ecw5211.dts
|
||||
@@ -0,0 +1,325 @@
|
||||
+#include "qcom-ipq4019.dtsi"
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/soc/qcom,tcsr.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "Edgecore ECW5211";
|
||||
+ compatible = "edgecore,ecw5211";
|
||||
+
|
||||
+ aliases {
|
||||
+ led-boot = &led_power;
|
||||
+ led-failsafe = &led_power;
|
||||
+ led-running = &led_power;
|
||||
+ led-upgrade = &led_power;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs-append = " root=/dev/ubiblock0_1";
|
||||
+ };
|
||||
+
|
||||
+ keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ reset {
|
||||
+ label = "reset";
|
||||
+ gpios = <&tlmm 63 GPIO_ACTIVE_LOW>;
|
||||
+ linux,code = <KEY_RESTART>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led_power: power {
|
||||
+ label = "ecw5211:yellow:power";
|
||||
+ gpios = <&tlmm 5 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wlan2g {
|
||||
+ label = "ecw5211:green:wlan2g";
|
||||
+ gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ wlan5g {
|
||||
+ label = "ecw5211:green:wlan5g";
|
||||
+ gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ soc {
|
||||
+ rng@22000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ mdio@90000 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&mdio_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ };
|
||||
+
|
||||
+ ess-psgmii@98000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ counter@4a1000 {
|
||||
+ compatible = "qcom,qca-gcnt";
|
||||
+ reg = <0x4a1000 0x4>;
|
||||
+ };
|
||||
+
|
||||
+ tcsr@1949000 {
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x1949000 0x100>;
|
||||
+ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||
+ };
|
||||
+
|
||||
+ tcsr@194b000 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x194b000 0x100>;
|
||||
+ qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
|
||||
+ };
|
||||
+
|
||||
+ ess_tcsr@1953000 {
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x1953000 0x1000>;
|
||||
+ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||
+ };
|
||||
+
|
||||
+ tcsr@1957000 {
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x1957000 0x100>;
|
||||
+ qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||
+ };
|
||||
+
|
||||
+ usb2: usb2@60f8800 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ usb3: usb3@8af8800 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ crypto@8e3a000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ watchdog@b017000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ ess-switch@c000000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ edma@c080000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&tlmm {
|
||||
+ mdio_pins: mdio_pinmux {
|
||||
+ mux_mdio {
|
||||
+ pins = "gpio53";
|
||||
+ function = "mdio";
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ mux_mdc {
|
||||
+ pins = "gpio52";
|
||||
+ function = "mdc";
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ serial_pins: serial_pinmux {
|
||||
+ mux {
|
||||
+ pins = "gpio60", "gpio61";
|
||||
+ function = "blsp_uart0";
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spi0_pins: spi0_pinmux {
|
||||
+ pin {
|
||||
+ function = "blsp_spi0";
|
||||
+ pins = "gpio55", "gpio56", "gpio57";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+
|
||||
+ pin_cs {
|
||||
+ function = "gpio";
|
||||
+ pins = "gpio54", "gpio4";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-disable;
|
||||
+ output-high;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ i2c0_pins: i2c0_pinmux {
|
||||
+ mux_i2c {
|
||||
+ function = "blsp_i2c0";
|
||||
+ pins = "gpio58", "gpio59";
|
||||
+ drive-strength = <16>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&blsp_dma {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&blsp1_spi1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&spi0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>, <&tlmm 4 GPIO_ACTIVE_HIGH>;
|
||||
+
|
||||
+ flash@0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <24000000>;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "0:SBL1";
|
||||
+ reg = <0x00000000 0x00040000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@40000 {
|
||||
+ label = "0:MIBIB";
|
||||
+ reg = <0x00040000 0x00020000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@60000 {
|
||||
+ label = "0:QSEE";
|
||||
+ reg = <0x00060000 0x00060000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@c0000 {
|
||||
+ label = "0:CDT";
|
||||
+ reg = <0x000c0000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@d0000 {
|
||||
+ label = "0:DDRPARAMS";
|
||||
+ reg = <0x000d0000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@e0000 {
|
||||
+ label = "0:APPSBLENV"; /* uboot env*/
|
||||
+ reg = <0x000e0000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@f0000 {
|
||||
+ label = "0:APPSBL"; /* uboot */
|
||||
+ reg = <0x000f0000 0x00080000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@170000 {
|
||||
+ label = "0:ART";
|
||||
+ reg = <0x00170000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spi-nand@1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ compatible = "spinand,mt29f";
|
||||
+ reg = <1>;
|
||||
+ spi-max-frequency = <24000000>;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "rootfs";
|
||||
+ reg = <0x00000000 0x08000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&blsp1_i2c3 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&i2c0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ tpm@29 {
|
||||
+ compatible = "atmel,at97sc3204t";
|
||||
+ reg = <0x29>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&blsp1_uart1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pinctrl-0 = <&serial_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+};
|
||||
+
|
||||
+&cryptobam {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gmac0 {
|
||||
+ qcom,poll_required = <1>;
|
||||
+ qcom,poll_required_dynamic = <1>;
|
||||
+ qcom,phy_mdio_addr = <4>;
|
||||
+ vlan_tag = <2 0x20>;
|
||||
+};
|
||||
+
|
||||
+&gmac1 {
|
||||
+ qcom,poll_required = <1>;
|
||||
+ qcom,poll_required_dynamic = <1>;
|
||||
+ qcom,phy_mdio_addr = <3>;
|
||||
+ vlan_tag = <1 0x10>;
|
||||
+};
|
||||
+
|
||||
+&wifi0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ qcom,ath10k-calibration-variant = "Edgecore-ECW5211";
|
||||
+};
|
||||
+
|
||||
+&wifi1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ qcom,ath10k-calibration-variant = "Edgecore-ECW5211";
|
||||
+};
|
||||
+
|
||||
+&usb3_ss_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb3_hs_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2_hs_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
|
||||
index 98c81726d9..921d412382 100644
|
||||
--- a/target/linux/ipq40xx/image/Makefile
|
||||
+++ b/target/linux/ipq40xx/image/Makefile
|
||||
@@ -171,6 +171,18 @@ define Device/compex_wpj428
|
||||
endef
|
||||
TARGET_DEVICES += compex_wpj428
|
||||
|
||||
+define Device/edgecore_ecw5211
|
||||
+ $(call Device/FitImage)
|
||||
+ $(call Device/UbiFit)
|
||||
+ DEVICE_TITLE := Edgecore ECW5211
|
||||
+ BLOCKSIZE := 128k
|
||||
+ PAGESIZE := 2048
|
||||
+ DEVICE_DTS_CONFIG := config@ap.dk01.1-c2
|
||||
+ DEVICE_DTS := qcom-ipq4018-ecw5211
|
||||
+ DEVICE_PACKAGES := ipq-wifi-edgecore_ecw5211 kmod-tpm-i2c-atmel kmod-usb-acm
|
||||
+endef
|
||||
+TARGET_DEVICES += edgecore_ecw5211
|
||||
+
|
||||
define Device/engenius_eap1300
|
||||
$(call Device/FitImage)
|
||||
DEVICE_TITLE := EnGenius EAP1300
|
||||
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
|
||||
index f7efd415f1..9b1d825be1 100644
|
||||
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
|
||||
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
-@@ -697,7 +697,31 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
+@@ -697,7 +697,32 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
qcom-apq8074-dragonboard.dtb \
|
||||
qcom-apq8084-ifc6540.dtb \
|
||||
qcom-apq8084-mtp.dtb \
|
||||
@@ -18,6 +18,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+ qcom-ipq4018-ap120c-ac.dtb \
|
||||
+ qcom-ipq4018-ea6350v3.dtb \
|
||||
+ qcom-ipq4018-eap1300.dtb \
|
||||
++ qcom-ipq4018-ecw5211.dtb \
|
||||
+ qcom-ipq4018-ens620ext.dtb \
|
||||
+ qcom-ipq4018-ex6100v2.dtb \
|
||||
+ qcom-ipq4018-ex6150v2.dtb \
|
||||
--
|
||||
2.25.1
|
||||
|
||||
534
patches/wlan-ap/0007-ipq40xx-TP-Link-AP2220-support.patch
Normal file
534
patches/wlan-ap/0007-ipq40xx-TP-Link-AP2220-support.patch
Normal file
@ -0,0 +1,534 @@
|
||||
From 7352a63c754c84a294eda639f391609deefaf87d Mon Sep 17 00:00:00 2001
|
||||
From: Arif Alam <arif.alam@connectus.ai>
|
||||
Date: Fri, 19 Jun 2020 14:02:32 +0200
|
||||
Subject: [PATCH 7/7] ipq40xx: TP-Link AP2220 support
|
||||
|
||||
Signed-off-by: Arif Alam <arif.alam@connectus.ai>
|
||||
---
|
||||
package/firmware/ipq-wifi/Makefile | 4 +-
|
||||
.../ipq-wifi/board-tp-link_ap2220.bin | Bin 0 -> 65536 bytes
|
||||
.../ipq40xx/base-files/etc/board.d/02_network | 1 +
|
||||
.../etc/hotplug.d/firmware/11-ath10k-caldata | 6 +-
|
||||
.../boot/dts/qcom-ipq4019-tp-link-ap2220.dts | 277 ++++++++++++++++++
|
||||
target/linux/ipq40xx/image/Makefile | 13 +
|
||||
.../patches-4.14/998-tp-link-ap2220.patch | 12 +
|
||||
.../patches-4.14/999-mtd-gd25q256.patch | 28 ++
|
||||
8 files changed, 338 insertions(+), 3 deletions(-)
|
||||
create mode 100755 package/firmware/ipq-wifi/board-tp-link_ap2220.bin
|
||||
create mode 100755 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-tp-link-ap2220.dts
|
||||
create mode 100755 target/linux/ipq40xx/patches-4.14/998-tp-link-ap2220.patch
|
||||
create mode 100755 target/linux/ipq40xx/patches-4.14/999-mtd-gd25q256.patch
|
||||
|
||||
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
|
||||
index 1609d7a42d..4ca6adf324 100644
|
||||
--- a/package/firmware/ipq-wifi/Makefile
|
||||
+++ b/package/firmware/ipq-wifi/Makefile
|
||||
@@ -35,7 +35,8 @@ ALLWIFIBOARDS:= \
|
||||
engenius_ens620ext \
|
||||
linksys_ea6350v3 \
|
||||
linksys_ea8300 \
|
||||
- qxwlan_e2600ac
|
||||
+ qxwlan_e2600ac \
|
||||
+ tp-link_ap2220
|
||||
|
||||
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
|
||||
|
||||
@@ -110,5 +111,6 @@ $(eval $(call generate-ipq-wifi-package,engenius_ens620ext,EnGenius ENS620EXT))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,Linksys EA6350v3))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
|
||||
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC))
|
||||
+$(eval $(call generate-ipq-wifi-package,tp-link_ap2220,tp-link AP2220))
|
||||
|
||||
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
|
||||
diff --git a/package/firmware/ipq-wifi/board-tp-link_ap2220.bin b/package/firmware/ipq-wifi/board-tp-link_ap2220.bin
|
||||
new file mode 100755
|
||||
index 0000000000000000000000000000000000000000..cfe31877d8c96f07faeb7fc80454017ca693b5c2
|
||||
GIT binary patch
|
||||
literal 65536
|
||||
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
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
index 6e0fb52ab4..c191812191 100755
|
||||
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
@@ -45,6 +45,7 @@ ipq40xx_setup_interfaces()
|
||||
meraki,mr33|\
|
||||
netgear,ex6100v2|\
|
||||
netgear,ex6150v2|\
|
||||
+ tp-link,ap2220|\
|
||||
zyxel,wre6606)
|
||||
ucidef_set_interface_lan "eth0"
|
||||
;;
|
||||
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
index 7d2e173e1a..9b11674b02 100644
|
||||
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||
@@ -123,7 +123,8 @@ case "$FIRMWARE" in
|
||||
# OEM assigns 4 sequential MACs
|
||||
ath10kcal_patch_mac_crc $(macaddr_setbit_la $(macaddr_add "$(cat /sys/class/net/eth0/address)" 4))
|
||||
;;
|
||||
- openmesh,a62)
|
||||
+ openmesh,a62 |\
|
||||
+ tp-link,ap2220)
|
||||
ath10kcal_extract "0:ART" 36864 12064
|
||||
;;
|
||||
esac
|
||||
@@ -163,7 +164,8 @@ case "$FIRMWARE" in
|
||||
openmesh,a42 |\
|
||||
openmesh,a62 |\
|
||||
qxwlan,e2600ac-c1 |\
|
||||
- qxwlan,e2600ac-c2)
|
||||
+ qxwlan,e2600ac-c2 |\
|
||||
+ tp-link,ap2220)
|
||||
ath10kcal_extract "0:ART" 4096 12064
|
||||
;;
|
||||
engenius,ens620ext)
|
||||
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-tp-link-ap2220.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-tp-link-ap2220.dts
|
||||
new file mode 100755
|
||||
index 0000000000..fc35bcacbd
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-tp-link-ap2220.dts
|
||||
@@ -0,0 +1,277 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+
|
||||
+#include "qcom-ipq4019.dtsi"
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/soc/qcom,tcsr.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "tp-link AP2220";
|
||||
+ compatible = "tp-link,ap2220";
|
||||
+
|
||||
+ aliases {
|
||||
+ led-boot = &led_green;
|
||||
+ led-failsafe = &led_green;
|
||||
+ led-running = &led_green;
|
||||
+ led-upgrade = &led_green;
|
||||
+ };
|
||||
+
|
||||
+ soc {
|
||||
+ mdio@90000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ ess-psgmii@98000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ tcsr@1949000 {
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x1949000 0x100>;
|
||||
+ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||
+ };
|
||||
+
|
||||
+ ess_tcsr@1953000 {
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x1953000 0x1000>;
|
||||
+ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||
+ };
|
||||
+
|
||||
+ tcsr@1957000 {
|
||||
+ compatible = "qcom,tcsr";
|
||||
+ reg = <0x1957000 0x100>;
|
||||
+ qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||
+ };
|
||||
+
|
||||
+ crypto@8e3a000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ watchdog@b017000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ ess-switch@c000000 {
|
||||
+ status = "okay";
|
||||
+ switch_mac_mode = <0x0>; /* mac mode for RGMII RMII */
|
||||
+ switch_initvlas = <0x0007c 0x54>; /* port0 status */
|
||||
+ switch_lan_bmp = <0x10>;
|
||||
+ };
|
||||
+
|
||||
+ edma@c080000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ key {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ button@1 {
|
||||
+ label = "reset";
|
||||
+ linux,code = <KEY_RESTART>;
|
||||
+ gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
|
||||
+ linux,input-type = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led_red {
|
||||
+ label = "red";
|
||||
+ gpios = <&tlmm 20 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ led_green: power {
|
||||
+ label = "green";
|
||||
+ gpios = <&tlmm 21 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ led_blue {
|
||||
+ label = "blue";
|
||||
+ gpios = <&tlmm 24 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&tlmm {
|
||||
+ serial_0_pins: serial_pinmux {
|
||||
+ mux {
|
||||
+ pins = "gpio16", "gpio17";
|
||||
+ function = "blsp_uart0";
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spi_0_pins: spi_0_pinmux {
|
||||
+ pinmux {
|
||||
+ function = "blsp_spi0";
|
||||
+ pins = "gpio13", "gpio14", "gpio15";
|
||||
+ drive-strength = <12>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+
|
||||
+ pinmux_cs {
|
||||
+ function = "gpio";
|
||||
+ pins = "gpio12";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-disable;
|
||||
+ output-high;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ nand_pins: nand_pins {
|
||||
+ pullups {
|
||||
+ pins = "gpio53", "gpio58", "gpio59";
|
||||
+ function = "qpic";
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ pulldowns {
|
||||
+ pins = "gpio54", "gpio55", "gpio56",
|
||||
+ "gpio57", "gpio60", "gpio61",
|
||||
+ "gpio62", "gpio63", "gpio64",
|
||||
+ "gpio65", "gpio66", "gpio67",
|
||||
+ "gpio68", "gpio69";
|
||||
+ function = "qpic";
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cryptobam {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&blsp1_spi1 {
|
||||
+ pinctrl-0 = <&spi_0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+ cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
|
||||
+
|
||||
+ flash@0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ reg = <0>;
|
||||
+ linux,modalias = "m25p80", "gd25q256";
|
||||
+ spi-max-frequency = <24000000>;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ partition0@0 {
|
||||
+ label = "0:SBL1";
|
||||
+ reg = <0x00000000 0x00040000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition1@40000 {
|
||||
+ label = "0:MIBIB";
|
||||
+ reg = <0x00040000 0x00020000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition2@60000 {
|
||||
+ label = "0:QSEE";
|
||||
+ reg = <0x00060000 0x00060000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition3@c0000 {
|
||||
+ label = "0:CDT";
|
||||
+ reg = <0x000c0000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition4@d0000 {
|
||||
+ label = "0:DDRPARAMS";
|
||||
+ reg = <0x000d0000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition5@e0000 {
|
||||
+ label = "0:APPSBLENV";
|
||||
+ reg = <0x000e0000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition6@f0000 {
|
||||
+ label = "0:APPSBL";
|
||||
+ reg = <0x000f0000 0x00080000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition7@170000 {
|
||||
+ label = "0:ART";
|
||||
+ reg = <0x00170000 0x00010000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+ partition8@180000 {
|
||||
+ compatible = "denx,fit";
|
||||
+ label = "firmware";
|
||||
+ //32M
|
||||
+ reg = <0x00180000 0x01e80000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&nand {
|
||||
+ pinctrl-0 = <&nand_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nand@0 {
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "rootfs1";
|
||||
+ reg = <0x00000000 0x10000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&blsp_dma {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&blsp1_uart1 {
|
||||
+ pinctrl-0 = <&serial_0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qpic_bam {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&wifi0 {
|
||||
+ status = "okay";
|
||||
+ qcom,ath10k-calibration-variant = "tp-link AP2220";
|
||||
+};
|
||||
+
|
||||
+&wifi1 {
|
||||
+ status = "disabled";
|
||||
+ qcom,ath10k-calibration-variant = "tp-link AP2220";
|
||||
+};
|
||||
+
|
||||
+&pcie0 {
|
||||
+ status = "okay";
|
||||
+ perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
+ wake-gpio = <&tlmm 40 GPIO_ACTIVE_LOW>;
|
||||
+
|
||||
+ bridge@0,0 {
|
||||
+ reg = <0x00000000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ wifi2: wifi@1,0 {
|
||||
+ compatible = "qcom,ath10k";
|
||||
+ status = "okay";
|
||||
+ reg = <0x00010000 0 0 0 0>;
|
||||
+ qcom,ath10k-calibration-variant = "tp-link AP2220";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
|
||||
index 921d412382..b54a287377 100644
|
||||
--- a/target/linux/ipq40xx/image/Makefile
|
||||
+++ b/target/linux/ipq40xx/image/Makefile
|
||||
@@ -399,6 +399,19 @@ define Device/qxwlan_e2600ac-c2
|
||||
endef
|
||||
TARGET_DEVICES += qxwlan_e2600ac-c2
|
||||
|
||||
+define Device/tp-link_ap2220
|
||||
+ $(call Device/FitImage)
|
||||
+ DEVICE_TITLE := tp-link AP2220
|
||||
+ BOARD_NAME := ap2220
|
||||
+ DEVICE_DTS := qcom-ipq4019-tp-link-ap2220
|
||||
+ KERNEL_SIZE := 4096k
|
||||
+ IMAGE_SIZE := 26624k
|
||||
+ IMAGES := sysupgrade.bin
|
||||
+ IMAGE/sysupgrade.bin := append-kernel |append-rootfs | pad-rootfs | append-metadata
|
||||
+ DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-tp-link_ap2220
|
||||
+endef
|
||||
+TARGET_DEVICES += tp-link_ap2220
|
||||
+
|
||||
define Device/zyxel_nbg6617
|
||||
$(call Device/FitImageLzma)
|
||||
DEVICE_DTS := qcom-ipq4018-nbg6617
|
||||
diff --git a/target/linux/ipq40xx/patches-4.14/998-tp-link-ap2220.patch b/target/linux/ipq40xx/patches-4.14/998-tp-link-ap2220.patch
|
||||
new file mode 100755
|
||||
index 0000000000..4bb0566493
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ipq40xx/patches-4.14/998-tp-link-ap2220.patch
|
||||
@@ -0,0 +1,12 @@
|
||||
+Index: linux-4.14.171/arch/arm/boot/dts/Makefile
|
||||
+===================================================================
|
||||
+--- linux-4.14.171.orig/arch/arm/boot/dts/Makefile
|
||||
++++ linux-4.14.171/arch/arm/boot/dts/Makefile
|
||||
+@@ -715,6 +715,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
+ qcom-ipq4019-fritzbox-7530.dtb \
|
||||
+ qcom-ipq4019-fritzrepeater-1200.dtb \
|
||||
+ qcom-ipq4019-fritzrepeater-3000.dtb \
|
||||
++ qcom-ipq4019-tp-link-ap2220.dtb \
|
||||
+ qcom-ipq4019-linksys_ea8300.dtb \
|
||||
+ qcom-ipq4019-map-ac2200.dtb \
|
||||
+ qcom-ipq4019-qxwlan-e2600ac-c1.dtb \
|
||||
diff --git a/target/linux/ipq40xx/patches-4.14/999-mtd-gd25q256.patch b/target/linux/ipq40xx/patches-4.14/999-mtd-gd25q256.patch
|
||||
new file mode 100755
|
||||
index 0000000000..0baa38ad29
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ipq40xx/patches-4.14/999-mtd-gd25q256.patch
|
||||
@@ -0,0 +1,28 @@
|
||||
+Index: linux-4.14.171/drivers/mtd/devices/m25p80.c
|
||||
+===================================================================
|
||||
+--- linux-4.14.171.orig/drivers/mtd/devices/m25p80.c
|
||||
++++ linux-4.14.171/drivers/mtd/devices/m25p80.c
|
||||
+@@ -354,6 +354,7 @@ static const struct spi_device_id m25p_i
|
||||
+ {"m25p64"}, {"m25p128"},
|
||||
+ {"w25x80"}, {"w25x32"}, {"w25q32"}, {"w25q32dw"},
|
||||
+ {"w25q80bl"}, {"w25q128"}, {"w25q256"},
|
||||
++ {"gd25q256"},
|
||||
+
|
||||
+ /* Flashes that can't be detected using JEDEC */
|
||||
+ {"m25p05-nonjedec"}, {"m25p10-nonjedec"}, {"m25p20-nonjedec"},
|
||||
+Index: linux-4.14.171/drivers/mtd/spi-nor/spi-nor.c
|
||||
+===================================================================
|
||||
+--- linux-4.14.171.orig/drivers/mtd/spi-nor/spi-nor.c
|
||||
++++ linux-4.14.171/drivers/mtd/spi-nor/spi-nor.c
|
||||
+@@ -1005,6 +1005,11 @@ static const struct flash_info spi_nor_i
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
+ },
|
||||
++ {
|
||||
++ "gd25q256", INFO(0xc84019, 0, 64 * 1024, 512,
|
||||
++ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
++ SPI_NOR_4B_OPCODES | SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
++ },
|
||||
+
|
||||
+ /* Intel/Numonyx -- xxxs33b */
|
||||
+ { "160s33b", INFO(0x898911, 0, 64 * 1024, 32, 0) },
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
From 678ee2539ee25894b7f44cb971e121ab07e5e9d9 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Thu, 25 Jun 2020 09:03:16 +0200
|
||||
Subject: [PATCH] include/prereq-build.mk: add ovsdb-tool dependency
|
||||
|
||||
OpenSync requires a host installation of ovsdb-tool. Add this to the
|
||||
required commands.
|
||||
|
||||
If the tool is missing, users will be presented witht he following line.
|
||||
|
||||
-> Build dependency: Please install the 'ovsdb-tool' package
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
include/prereq-build.mk | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/include/prereq-build.mk b/include/prereq-build.mk
|
||||
index 501739968c..ea22510bfd 100644
|
||||
--- a/include/prereq-build.mk
|
||||
+++ b/include/prereq-build.mk
|
||||
@@ -140,6 +140,9 @@ $(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
|
||||
$(eval $(call SetupHostCommand,file,Please install the 'file' package, \
|
||||
file --version 2>&1 | grep file))
|
||||
|
||||
+$(eval $(call SetupHostCommand,ovsdb-tool,Please install the 'ovsdb-tool' package, \
|
||||
+ ovsdb-tool -V 2>&1 | grep vSwitch))
|
||||
+
|
||||
$(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c
|
||||
mkdir -p $(dir $@)
|
||||
$(CC) -O2 -I$(TOPDIR)/tools/include -o $@ $<
|
||||
--
|
||||
2.25.1
|
||||
|
||||
129
setup.py
Normal file
129
setup.py
Normal file
@ -0,0 +1,129 @@
|
||||
from pathlib import Path
|
||||
from subprocess import run
|
||||
import os
|
||||
import sys
|
||||
import yaml
|
||||
import getopt
|
||||
|
||||
git_am = "am"
|
||||
|
||||
def clone_tree():
|
||||
try:
|
||||
makefile = openwrt +"/Makefile"
|
||||
if Path(makefile).is_file():
|
||||
print("### OpenWrt checkout is already present. Please run --rebase")
|
||||
sys.exit(-1)
|
||||
|
||||
print("### Cloning tree")
|
||||
Path(openwrt).mkdir(exist_ok=True, parents=True)
|
||||
run(["git", "clone", config["repo"], openwrt], check=True)
|
||||
print("### Clone done")
|
||||
except:
|
||||
print("### Cloning the tree failed")
|
||||
sys.exit(1)
|
||||
|
||||
def fetch_tree():
|
||||
try:
|
||||
makefile = openwrt +"/Makefile"
|
||||
if not Path(makefile).is_file():
|
||||
print("### OpenWrt checkout is not present. Please run --setup")
|
||||
sys.exit(-1)
|
||||
|
||||
print("### Fetch tree")
|
||||
os.chdir(openwrt)
|
||||
run(["git", "fetch"], check=True)
|
||||
print("### Fetch done")
|
||||
except:
|
||||
print("### Fetching the tree failed")
|
||||
sys.exit(1)
|
||||
finally:
|
||||
os.chdir(base_dir)
|
||||
|
||||
def reset_tree():
|
||||
try:
|
||||
print("### Resetting tree")
|
||||
os.chdir(openwrt)
|
||||
run(
|
||||
["git", "checkout", config["branch"]], check=True,
|
||||
)
|
||||
run(
|
||||
["git", "reset", "--hard", config.get("revision", config["branch"])],
|
||||
check=True,
|
||||
)
|
||||
print("### Reset done")
|
||||
except:
|
||||
print("### Resetting tree failed")
|
||||
sys.exit(1)
|
||||
finally:
|
||||
os.chdir(base_dir)
|
||||
|
||||
def setup_tree():
|
||||
try:
|
||||
print("### Applying patches")
|
||||
|
||||
patches = []
|
||||
for folder in config.get("patch_folders", []):
|
||||
patch_folder = base_dir / folder
|
||||
if not patch_folder.is_dir():
|
||||
print(f"Patch folder {patch_folder} not found")
|
||||
sys.exit(-1)
|
||||
|
||||
print(f"Adding patches from {patch_folder}")
|
||||
|
||||
patches.extend(
|
||||
sorted(list((base_dir / folder).glob("*.patch")), key=os.path.basename)
|
||||
)
|
||||
|
||||
print(f"Found {len(patches)} patches")
|
||||
|
||||
os.chdir(openwrt)
|
||||
|
||||
for patch in patches:
|
||||
run(["git", git_am, "-3", str(base_dir / patch)], check=True)
|
||||
|
||||
print("### Patches done")
|
||||
except:
|
||||
print("### Setting up the tree failed")
|
||||
sys.exit(1)
|
||||
finally:
|
||||
os.chdir(base_dir)
|
||||
|
||||
|
||||
base_dir = Path.cwd().absolute()
|
||||
setup = False
|
||||
rebase = False
|
||||
config = "config.yml"
|
||||
openwrt = "openwrt"
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "srdc:f:", ["setup", "rebase", "docker", "config=", "folder="])
|
||||
except getopt.GetoptError as err:
|
||||
print(err)
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
for o, a in opts:
|
||||
if o in ("-s", "--setup"):
|
||||
setup = True
|
||||
elif o in ("-r", "--rebase"):
|
||||
rebase = True
|
||||
elif o in ("-c", "--config"):
|
||||
config = a
|
||||
elif o in ("-d", "--docker"):
|
||||
git_am = "apply"
|
||||
else:
|
||||
assert False, "unhandled option"
|
||||
|
||||
if not Path(config).is_file():
|
||||
print(f"Missing {config}")
|
||||
sys.exit(1)
|
||||
config = yaml.safe_load(open(config))
|
||||
|
||||
if setup:
|
||||
clone_tree()
|
||||
reset_tree()
|
||||
setup_tree()
|
||||
elif rebase:
|
||||
fetch_tree()
|
||||
reset_tree()
|
||||
setup_tree()
|
||||
Loading…
Reference in New Issue
Block a user