From 56abd19ae3073f5ded31f6f852f2da5bfff41a5f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 8 Mar 2022 21:11:07 +0100 Subject: [PATCH] Some fixes for RUTX --- config-rutx | 2 +- root/package/utils/mnfinfo/Makefile | 58 +++++ root/package/utils/mnfinfo/src/Makefile | 35 +++ root/package/utils/mnfinfo/src/README.md | 25 ++ root/package/utils/mnfinfo/src/libmnfinfo.so | Bin 0 -> 13488 bytes root/package/utils/mnfinfo/src/mnf_info | Bin 0 -> 15516 bytes root/package/utils/mnfinfo/src/mnfinfo.so | Bin 0 -> 8864 bytes .../utils/mnfinfo/src/src/include/mnfinfo.h | 115 +++++++++ .../utils/mnfinfo/src/src/include/rut2.h | 21 ++ .../utils/mnfinfo/src/src/include/rut3.h | 21 ++ .../utils/mnfinfo/src/src/include/rutx.h | 21 ++ .../utils/mnfinfo/src/src/include/trb1.h | 17 ++ .../utils/mnfinfo/src/src/include/trb2.h | 21 ++ .../utils/mnfinfo/src/src/libmnfinfo.o | Bin 0 -> 5376 bytes root/package/utils/mnfinfo/src/src/mnf_info.o | Bin 0 -> 6468 bytes root/package/utils/mnfinfo/src/src/mnf_rpc.o | Bin 0 -> 2976 bytes .../ipq40xx/base-files/bin/config_generate | 9 +- .../base-files/lib/upgrade/platform.sh | 231 +++++++++++++++--- 18 files changed, 536 insertions(+), 40 deletions(-) create mode 100644 root/package/utils/mnfinfo/Makefile create mode 100644 root/package/utils/mnfinfo/src/Makefile create mode 100644 root/package/utils/mnfinfo/src/README.md create mode 100755 root/package/utils/mnfinfo/src/libmnfinfo.so create mode 100755 root/package/utils/mnfinfo/src/mnf_info create mode 100755 root/package/utils/mnfinfo/src/mnfinfo.so create mode 100644 root/package/utils/mnfinfo/src/src/include/mnfinfo.h create mode 100644 root/package/utils/mnfinfo/src/src/include/rut2.h create mode 100644 root/package/utils/mnfinfo/src/src/include/rut3.h create mode 100644 root/package/utils/mnfinfo/src/src/include/rutx.h create mode 100644 root/package/utils/mnfinfo/src/src/include/trb1.h create mode 100644 root/package/utils/mnfinfo/src/src/include/trb2.h create mode 100644 root/package/utils/mnfinfo/src/src/libmnfinfo.o create mode 100644 root/package/utils/mnfinfo/src/src/mnf_info.o create mode 100644 root/package/utils/mnfinfo/src/src/mnf_rpc.o diff --git a/config-rutx b/config-rutx index ea04c4ee..b2907bc2 100644 --- a/config-rutx +++ b/config-rutx @@ -15,4 +15,4 @@ CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=64 CONFIG_KERNEL_SWAP=y CONFIG_PREINITOPT=y CONFIG_PACKAGE_kmod-r2ec=y -CONFIG_PACKAGE_uboot-ipq40xx=y +CONFIG_PACKAGE_mnfinfo=y diff --git a/root/package/utils/mnfinfo/Makefile b/root/package/utils/mnfinfo/Makefile new file mode 100644 index 00000000..e5e300d3 --- /dev/null +++ b/root/package/utils/mnfinfo/Makefile @@ -0,0 +1,58 @@ +# +# Copyright (C) 2020 Teltonika +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/download.mk + +PKG_NAME:=mnfinfo +PKG_VERSION:=1 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/mnfinfo + SECTION:=net + CATEGORY:=Network + TITLE:=Device mnf-info command line interface + DEPENDS:=+libpthread +libmnfinfo +endef + +define Package/libmnfinfo + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Device mnf-info API library +endef + +define Package/rpcd-mod-mnfinfo + SECTION:=libs + CATEGORY:=Libraries + TITLE:=mnfinfo rpcd module + DEPENDS:=+rpcd +libmnfinfo +endef + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include/libmnfinfo + $(CP) $(PKG_BUILD_DIR)/*.so $(STAGING_DIR)/usr/lib/ + $(CP) $(PKG_BUILD_DIR)/src/include/*.h $(STAGING_DIR)/usr/include/libmnfinfo/ +endef + +define Package/mnfinfo/install + $(INSTALL_DIR) $(1)/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/mnf_info $(1)/sbin/mnf_info +endef + +define Package/libmnfinfo/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/libmnfinfo.so $(1)/usr/lib/ +endef + +define Package/rpcd-mod-mnfinfo/install + $(INSTALL_DIR) $(1)/usr/lib/rpcd + $(INSTALL_BIN) $(PKG_BUILD_DIR)/mnfinfo.so $(1)/usr/lib/rpcd/ +endef + +$(eval $(call BuildPackage,mnfinfo)) +$(eval $(call BuildPackage,libmnfinfo)) +$(eval $(call BuildPackage,rpcd-mod-mnfinfo)) diff --git a/root/package/utils/mnfinfo/src/Makefile b/root/package/utils/mnfinfo/src/Makefile new file mode 100644 index 00000000..ec79416d --- /dev/null +++ b/root/package/utils/mnfinfo/src/Makefile @@ -0,0 +1,35 @@ +MNF_SOURCES = src/mnf_info.c +MNF_OBJS = $(MNF_SOURCES:.c=.o) +MNF_TARGET = mnf_info + +MNF_RPC_SOURCES = src/mnf_rpc.c +MNF_RPC_OBJS = $(MNF_RPC_SOURCES:.c=.o) +MNF_RPC_TARGET = mnfinfo.so + +LIB_SOURCES = src/libmnfinfo.c +LIB_OBJS = $(LIB_SOURCES:.c=.o) +LIB_TARGET = libmnfinfo.so + +CFLAGS += -Wall -Wextra -Wpedantic -Werror -Wno-missing-braces -Wno-unused-function -Wno-unused-parameter -fPIC -I src/include +LDFLAGS += -L. + +MNF_LDFLAGS = +MNF_RPC_LDFLAGS = -lmnfinfo + +RM = rm -f + +all: $(LIB_TARGET) $(MNF_RPC_TARGET) $(MNF_TARGET) + +$(LIB_TARGET): $(LIB_OBJS) + $(CC) $(LDFLAGS) -shared -o $@ $^ + +$(MNF_RPC_TARGET): $(MNF_RPC_OBJS) $(LIB_TARGET) + $(CC) $(LDFLAGS) $(MNF_RPC_LDFLAGS) -shared -o $@ $^ + +$(MNF_TARGET): $(MNF_OBJS) $(LIB_OBJS) + $(CC) $(LDFLAGS) $(MNF_LDFLAGS) -o $@ $^ + +clean: + $(RM) $(LIB_OBJS) $(LIB_TARGET) + $(RM) $(MNF_RPC_OBJS) $(MNF_RPC_TARGET) + $(RM) $(MNF_OBJS) $(MNF_TARGET) diff --git a/root/package/utils/mnfinfo/src/README.md b/root/package/utils/mnfinfo/src/README.md new file mode 100644 index 00000000..af13c115 --- /dev/null +++ b/root/package/utils/mnfinfo/src/README.md @@ -0,0 +1,25 @@ +# libmnfinfo + +How it works: depending on the platform, selected in the menuconfig, a different platform flag is defined during compilation. Depending on that flag, a header file with platform-specific MTD field defines is included. Here are all the defines, (currently) used for these headers: + +* `MAX_SIM_ID` - maximum allowed SIM index on the platform. +* `MTD_CONFIG_RO` - absolute path of a read-only MTD partition. Used for most field reads. +* `MTD_CONFIG_RW` - absolute path of a read/write MTD partition. Used for SIM PIN value reads/writes. +* `MAC_OFFSET` - MAC field offset in the `MTD_CONFIG_RO` partition. +* `MAC_LENGTH` - MAC field length in the `MTD_CONFIG_RO` partition. +* `NAME_OFFSET` - product name field offset in the `MTD_CONFIG_RO` partition. +* `NAME_LENGTH` - product name field length in the `MTD_CONFIG_RO` partition. +* `WPS_OFFSET` - WPS field offset in the `MTD_CONFIG_RO` partition. +* `WPS_LENGTH` - WPS field length in the `MTD_CONFIG_RO` partition. +* `SERIAL_OFFSET` - product serial code field offset in the `MTD_CONFIG_RO` partition. +* `SERIAL_LENGTH` - product serial code field length in the `MTD_CONFIG_RO` partition. +* `BATCH_OFFSET` - batch index field offset in the `MTD_CONFIG_RO` partition. +* `BATCH_LENGTH` - batch index field length in the `MTD_CONFIG_RO` partition. +* `HWVER_OFFSET` - hardware version index field offset in the `MTD_CONFIG_RO` partition. +* `HWVER_LENGTH` - hardware version index field length in the `MTD_CONFIG_RO` partition. +* `SIMPIN_OFFSET` - SIM card PIN code field offset in the `MTD_CONFIG_RW` partition. +* `SIMPIN_LENGTH` - SIM card PIN code field length in the `MTD_CONFIG_RW` partition. +* `WIFI_OFFSET` - Wi-Fi password field offset in the `MTD_CONFIG_RO` partition. +* `WIFI_LENGTH` - Wi-Fi password field length in the `MTD_CONFIG_RO` partition. + +Only defines with actual values should be written. All other defines should be removed from the platform-specific header file. diff --git a/root/package/utils/mnfinfo/src/libmnfinfo.so b/root/package/utils/mnfinfo/src/libmnfinfo.so new file mode 100755 index 0000000000000000000000000000000000000000..8e7ab9af8895f8dbc828fc61d17a3f58afa0c681 GIT binary patch literal 13488 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

Q)S3CKqm&~K*nSrlc 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

+FsR>>^A)!rhjwR^y5juswg=7 z+xd6^xA4grXK#PIwJVA}o?dmtv!?KmT1^1Vt40nPp16c$sVk5{W&gc z!Invp?CvC<0i=?t?(8M`?cK>Jcb$H`3}8r_SR@zGVep9J8HAPbXCpfm*K`7Vg7!{w z&G@5uOW;V8j~JkCDhGzCjKBsWD)>wREAO1B>r8c7bymD9o~?^TGHsD~U8Xy?E6gVh zb#2}8L@XSOXX()d%pmoXxS$ zX_DZSnc#f`G}|fBAcLrEe5~N6R&!BcF_`F?Y))(zXW(&d&frBhago{6#|Wo*kHGN4 zfkQfC_rtry*znG@C*j>9?dfBLq=slw9LmYz8aenVHVjEd0m`w>GR{82#?9`*X04pc zXCCKW<{j7a6`mgQjT@cY?tpTwVZ-)}z%_>rb47u*3f3HSZf6ANTEvDqd2 zP=w%G!-jD<0!Q8H+|G_oRvD=!7(0gUF{ za^*Fa;FhZ{9p*}K%(=(Cl%xJ!A&xn>oV9iMy-p3A`PuPe_YL%{}M^5;Imc3y!AX%trc8@2o?XqvpQ9=Sw^G|6o z>Cb8~^F!6+=|8N&%s;Kcr2m-)Gk^Qc@$@kbW`6HzfANYm?0XmX100DAjAtJMd;l;< zGQ#)K{-{42w%Ze7+f|FtAo@ow|1e&ReW>|_FOrGhFgpHBmhE+!22Zo6G|7&mJuX8;9_@7@M9e_@ zUjUfxZ!hu)FD=1eqrtS%R={j8y$*f_HaQz$FFGIWchTPTNSN~C8a?4OVD_gSh*Ms# zmQVio0#@@8`8@=f<0bB0Bz~UwXb*JLT{Fa^8a??xRsx>{%<-IRakP7`B>#sc@QWqz ze`>G^9=`|7{}%<*fll#%y~rq9oHe@`aoPsEemyX3bD*c8dN zyjW2ASH0xYai&^J16XpPjbYcM}UNufMTjVkG%4JsinoBD=%5*vae`_IvhNcURYLk!t%W z_H86z4stC=K4c$9HttxOkJ5pj>XL`voz|{!8x+N3c^rdt{}qU0Z<)ikFdbNgqx4-i zCyKxZG#m~r4K7_KNP^h%#iOyMPOLsyKN?eb_4PNZv_*?XW6M=+@e&nlpe5F|G;M4S zH*Z=S4vX;G4{mDOc@J8;nNTn*?+ zxE(;w=o@_f^?rwZrmrL0*9JYfVvt`G=vlmZa9-kv!)@8DbJh?R^5cN8ymdfjXH(%$ zoCzeX(TDzWqdoSufc>F?^O)cMbU=My@TWdr(AD6Dhb`Yq#%Ln2$A`)dOo)4mPS zz9!JrX3OP0g)|!O3d6X&8=Y>DLNS zh@Vz)KpCZA)!A1#R2N@D*dIPj{LzN}6^8tDLj6{gia>0466kiA%ZNb6N-)ii;Fv@N&9fIO1y7z5?kDk`h3Eo1Fe zh!}b;6_@>80VuJG@)H<`*kLQ@lFRwwZj~!Fu14%{>Fj$3MXOeE*CBz^67hJ?!L`>D zh^wiLA^kP*zr&pb@pvY2?oZ(Pk@px9jHSr1H+G}2$7uVZ2!gKjTJf2}}fDqoJ zD5s)4?d5uycs$$K4o2L6>H2ZqxelIqtKoU(kp|u|#EHkX0z=|$h9_?B_DaqDcV=i9`1kyowWE z54=$#z|@KE6ugf21n_<*bL=0LceVuYYx9Ko<^*^@FTt~}5#ogj@P1u_w`@MnFf=@6 z7aq1y2W6KXz?;Oz<2dHgvkx*0&8Hd_5|u3WWgRcH1Y?uR)bRcbwbDyQ literal 0 HcmV?d00001 diff --git a/root/package/utils/mnfinfo/src/mnfinfo.so b/root/package/utils/mnfinfo/src/mnfinfo.so new file mode 100755 index 0000000000000000000000000000000000000000..176d5fe8911c7830af20a42f52aa9bbe9569b735 GIT binary patch literal 8864 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 WtOQdQsx8ON*!>!VhT&_1VgC!D=U`p{ literal 0 HcmV?d00001 diff --git a/root/package/utils/mnfinfo/src/src/include/mnfinfo.h b/root/package/utils/mnfinfo/src/src/include/mnfinfo.h new file mode 100644 index 00000000..ad2700bd --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/mnfinfo.h @@ -0,0 +1,115 @@ +#include +#include + +#define STRING_NA(a) do { (a)[0] = 'N'; (a)[1] = '/'; (a)[2] = 'A'; (a)[3] = 0; } while(0) +#define STRING_NA_LENGTH 3 + +#define PARTITION_SIZE 0xA0 +#define SECTION_SIZE 0x10 + +#if defined(RUTX_PLATFORM) +#include "rutx.h" +#elif defined(TRB1_PLATFORM) +#include "trb1.h" +#elif defined(TRB2_PLATFORM) +#include "trb2.h" +#elif defined(RUT2_PLATFORM) +#include "rut2.h" +#elif defined(RUT300_PLATFORM) || defined(RUT360_PLATFORM) +#include "rut3.h" +#else +#error Platform not recognized! +#endif + +#if !(defined(MAC_OFFSET) && defined(MAC_LENGTH)) +#undef MAC_OFFSET +#undef MAC_LENGTH +#define MAC_OFFSET 0 +#define MAC_LENGTH STRING_NA_LENGTH +#else +#define MAC_ENABLED +#endif + +#if !(defined(NAME_OFFSET) && defined(NAME_LENGTH)) +#undef NAME_OFFSET +#undef NAME_LENGTH +#define NAME_OFFSET 0 +#define NAME_LENGTH STRING_NA_LENGTH +#else +#define NAME_ENABLED +#endif + +#if !(defined(WPS_OFFSET) && defined(WPS_LENGTH)) +#undef WPS_OFFSET +#undef WPS_LENGTH +#define WPS_OFFSET 0 +#define WPS_LENGTH STRING_NA_LENGTH +#else +#define WPS_ENABLED +#endif + +#if !(defined(SERIAL_OFFSET) && defined(SERIAL_LENGTH)) +#undef SERIAL_OFFSET +#undef SERIAL_LENGTH +#define SERIAL_OFFSET 0 +#define SERIAL_LENGTH STRING_NA_LENGTH +#else +#define SERIAL_ENABLED +#endif + +#if !(defined(BATCH_OFFSET) && defined(BATCH_LENGTH)) +#undef BATCH_OFFSET +#undef BATCH_LENGTH +#define BATCH_OFFSET 0 +#define BATCH_LENGTH STRING_NA_LENGTH +#else +#define BATCH_ENABLED +#endif + +#if !(defined(HWVER_OFFSET) && defined(HWVER_LENGTH)) +#undef HWVER_OFFSET +#undef HWVER_LENGTH +#define HWVER_OFFSET 0 +#define HWVER_LENGTH STRING_NA_LENGTH +#else +#define HWVER_ENABLED +#endif + +#if !(defined(SIMPIN_OFFSET) && defined(SIMPIN_LENGTH)) +#undef SIMPIN_OFFSET +#undef SIMPIN_LENGTH +#define SIMPIN_OFFSET 0 +#define SIMPIN_LENGTH STRING_NA_LENGTH +#else +#define SIMPIN_ENABLED +#endif + +#if !(defined(WIFI_OFFSET) && defined(WIFI_LENGTH)) +#undef WIFI_OFFSET +#undef WIFI_LENGTH +#define WIFI_OFFSET 0 +#define WIFI_LENGTH STRING_NA_LENGTH +#else +#define WIFI_ENABLED +#endif + +/* + * mnfinfo_get_*() functions return ptr to static memory, which is not to be free()d! + * the returned memory ptr is safely accessible throughout the using program's runtime + * bad: free(mnfinfo_get_mac()); + * + * returns NULL on /dev/mtdX reading failure, "N/A" if the particular device + * doesn't support the field, or a dummy string if the mtdblock space contains garbage +*/ +char* mnfinfo_get_mac(void); +char* mnfinfo_get_name(void); +char* mnfinfo_get_maceth(void); +char* mnfinfo_get_sn(void); +char* mnfinfo_get_hwver(void); +char* mnfinfo_get_batch(void); +char* mnfinfo_get_wps(void); +char* mnfinfo_get_wifi_pw(void); +char* mnfinfo_get_sim_pin(uint8_t sim_id); + +// returns true on success +bool mnfinfo_set_sim_pin(uint8_t sim_id, const char *pin); diff --git a/root/package/utils/mnfinfo/src/src/include/rut2.h b/root/package/utils/mnfinfo/src/src/include/rut2.h new file mode 100644 index 00000000..b4a12414 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/rut2.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 1 + +#define MTD_CONFIG_RO "/dev/mtd1" +#define MTD_CONFIG_RW "/dev/mtd1" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x70 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/include/rut3.h b/root/package/utils/mnfinfo/src/src/include/rut3.h new file mode 100644 index 00000000..b4a12414 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/rut3.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 1 + +#define MTD_CONFIG_RO "/dev/mtd1" +#define MTD_CONFIG_RW "/dev/mtd1" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x70 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/include/rutx.h b/root/package/utils/mnfinfo/src/src/include/rutx.h new file mode 100644 index 00000000..4976a3b6 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/rutx.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 4 + +#define MTD_CONFIG_RO "/dev/mtd13" +#define MTD_CONFIG_RW "/dev/mtd14" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x00 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/include/trb1.h b/root/package/utils/mnfinfo/src/src/include/trb1.h new file mode 100644 index 00000000..6003e6bb --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/trb1.h @@ -0,0 +1,17 @@ +#define MAX_SIM_ID 1 + +#define MTD_CONFIG_RO "/dev/mtd7" +#define MTD_CONFIG_RW "/dev/mtd7" + +#define MAC_OFFSET 0x50 +#define MAC_LENGTH 12 +#define NAME_OFFSET 0x20 +#define NAME_LENGTH 12 +#define SERIAL_OFFSET 0x10 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 3 +#define HWVER_OFFSET 0x30 +#define HWVER_LENGTH 4 +#define SIMPIN_LENGTH 4 +#define SIMPIN_OFFSET 0x70 diff --git a/root/package/utils/mnfinfo/src/src/include/trb2.h b/root/package/utils/mnfinfo/src/src/include/trb2.h new file mode 100644 index 00000000..bbb281f9 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/trb2.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 2 + +#define MTD_CONFIG_RO "/dev/mtd1" +#define MTD_CONFIG_RW "/dev/mtd1" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x70 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/libmnfinfo.o b/root/package/utils/mnfinfo/src/src/libmnfinfo.o new file mode 100644 index 0000000000000000000000000000000000000000..7ead455f305bc1983afdeb99bc6f146ca612e71c GIT binary patch literal 5376 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 S{H@@ZJBj~e){Owqllu?yTPLId literal 0 HcmV?d00001 diff --git a/root/package/utils/mnfinfo/src/src/mnf_info.o b/root/package/utils/mnfinfo/src/src/mnf_info.o new file mode 100644 index 0000000000000000000000000000000000000000..c782f07300083105c15197e14dc0ea4219f9b121 GIT binary patch literal 6468 zcmb7IYit}>6+Yu#C-&BqP2wc3aobC9S|`}cZsI(NsGY=)E1YEIb#Q+mt!H<~@zQ;1 zXPiwDD*53)gqkMmLy8b(S16z&Qc^BU9++?3;(m)s74MXX>LTrs{}(2fO!- zp33YtqIaWo_QRK7ELVf!<1?q9C|7B;GF|y$xoQ+D)AtAVTx+=N{QHe3;UD%5$4*QI zDkr9zdX86{VBa7r(-b~lT^_7VH-;*4l>XE&j}N$5^`+7s~OfMbL!v&+FRp?n(rRpIkhtm(U~4{{mf`YFb| z0_FcgvVJAXAFFaR%Kt)n4f^&Giad=cY{&DNvO0jwj>7jt-SDLmy{2feHFLx*+)lW6yp@7DQF!=Dk} zJL3yZ&KTmOYFO-^X~g<}I6wa#gJRSF!F;p_kIx9~9fO9aNmRaIh{|SPt^7Q}){k*9 z_7QFLi^-Wf@UWFP&e7Zz3cpYVw@R3^cFfaH&|aI`V{@CzPc*D5KY_J+3j6EW7}^x! zzhZ1dydGHQ*z9M}_j8-d)ys7^_x)!)54AaHeHr!VJoP`8^~1A~`T0PwhkXu9Ukmfp zQ(4u3HZtJy`aa{~v)#9#<8#X86|!HkS)9>;>x227ia)#vf3L=0c^m%KNUi<0Mfgn` zf7NaHXB7Xkar69eA1^}Z_P_Zy{EXtCS%m*RjlcRf{7%Jp7U8Ef{+iqHuOc?`{O?+X z->LD}-iCih@%@YNuOZgD<8PstP>#wyP@sSQU0=g-<>MUeYjNsEJbGR8(WZR->67_@ zz?snf{Na=NRslcHczmqKKKw;J(bLG2D&uU>0Lq-M;qW|->_h z9z^azZboiEzJ%a(0r@oYDdY_DC~`M)2l92enL|E{{2KBk@-J0;C{h;r*BW+!f2-jf z@b5KT0)9)wHt-)coB)1X!vnz6!03uhF+AVV>c@fK*YF7Nzcu?Pa2}KMQM8I8og2#+v!;{I=K?~Au5731>dKl)ly6P@EJy6`-6PCYs%Y7^ zBshv-Ipd2H`cUB|<(QN+v(~K?A-I*4btIj%1e?fKN=zsf?8WRQVI&%phBh18xkc@y zp=}k@W=7;DvI(mwDG8<|OeeX>03=1$Nz(x~9WNch#NC>>-{WR6RWgf~fQjwSX-xJh zoh_tuVpr_p{qX~b_V4Z+`igYHEL0@(DNE$XZmO3}MkU#D;`SmAVxK}TFj+PmefU7F zy&L`3$xdGEViRui|EJNeg0PCFZH)?$WJx&VmH=D!cU(@9l_@OdCN`cgiE&g0i28y)6a}-0^>#41*ptF69-hcrIY)HGLNsjC>!?__KDADm zN6d7_Ok^yu)I8i|R4C?;q*Is_o(P^@8w;H;peKA#Zy}+1@u?J?!JT3Z?ZPcqu4p;M zv~|SdCbA;yq!O8Y@=FiN&*3|xmKy1cDEPJd zFz`vOehctJTK!JoQyP8<_`HVufH7>98tJPjozVR8`~N|${%gP^8vZ))lN#plk5@Fz z-xq(=Fn`aiSeTDS;_sb)4Sy53q~T-0KhQAXLh{jaIll`E;3pNh0BHd0$w%Jxx=XLd zZotb!OFpb7E>$vh;<*wYzppThAo6Js{<#PLO5sQF4Yd;c<2RoAw>4}RQ(pYz}!c`#*jV{!ge3?-@Er1lhr2KR*d zv5g;F__3WIoB7erk4^m8%8woVh)C;5M3&`48bl-^A{i0sCL%cz={F*MMx=vHVanul zhvWGIzXEM46w^5;E`!}zVZyN~zHjj0?%u)p!T$bO-*9}mclTgloNOm$6^jU+h<%4G z2kbbzp)tuHLw(W7XILchO_R(PxR|kWJYpVj9Hh7mzBgkI#JY(L%DRFBw2l$1byy4B zx~3MybxkdZmu})A$j3R3yLKwPOC1J>k0#zp9Ix(uuoe^V=^$zcZry;p4x|sqt%Yq6 zwD?@NAy`#d;_&c2s0}c^utP@Vu|3%_dn@h=})u7%julb zUsU?bEb#-d0kKK?XUYCqZm-=bSwF1w<1BX&J;M_EQ%e6TO9W|tNAP_98PbQJX_r_c zJWa90OX)Hs&okfMeE1P_l`($o%`v_kcUP8pS$)hB2mLzB6_{_t9k%zg#LKIJU)%oDmkiTLCIrEo>a1;(xj}9-VOxVK2?<6;2JIaJ9mv6bA z8YBm6El|c5kbJglKwhsfj)_d8O1gsE;)EkC?LW~A@;J6`^7VSfk}GChsT zWm^BZj9(E6h3c$3av#3ED^NIh^PhW%M|(}#ziMBU}Di~BoZ|l-pstVgY%d7UR4Z< zB(h)u0V4|+5XOWB3l=O`5EBy?E?AJ*r3)6c&;&)3YFxN5;`iP6Zs*QhsAqESx!?KD zJ@?#u-@WtszN!6|Wr-F`2BeKdvfYYF4=Xbu8Ceg$wV29WTDCH0@BaPh(a)s(@xh;D zy0w@9XB~kZZ!Lm*XvvACRIarsa%Q}$mL=P|M}IW;LurPbWT%%NWG|%?*|TyVwdt52F%Rb= zzYy`a4SvDkZ$$icgTH0)t%$#1@HY+qRK%Y&_!|b_jQFa-Ujx4;6RtI^^Wt(Bu-+rR z59H|U!=9~R&;G=o--q6T-iCe;y$-z!y#PHAJqbMytwPJte-rb}UyB8j%Nag1mhN2! z*U_!jXDaoXhSZ&!E57ShoT}8E5_MlNCq*YH&B@#+AG@B+x`9;ZOO-*dSsK*iM-dq;PKgyhFjfa5yFidduQrY9O+ z;C?!oACs=0HTktxccLfVo7kA@vo={zCO2DKtfvzF*0ZT?)=q0zVlvrLKY+Q`l>GL{ z|ry^W`xZs zn=xq=kJ@|p43DS@gJVsXXjq||8_YGzJ{@~xzBuozxiG*j1%fH7ZoQ+5nTlHt>narI zXTm~tl?}WNg}UnpZkf6H+!Rn|K|ML9!>@Pn>KQWPfl*aQNccRNIl`xkQ>!TpZoM4V z@1s}n+-CKdDqNL0QF=R^WpT=-M8&x@R+ z-7a#C_63mzT3ogj+Lw?AXWNe?Iocf}hiP|)Z$tmf$VZIFneRgqAHXTvbt0!}ap})R z_&n`;k*_0sfi@%3ituIH4I)<}e3f=1>Wc7n+9xm<>PkEvt}B7{4HM(>;Qgkb>m+`c zwhIj{{3%*qP1`?K3!EZs;DvTh_dK_1;~~fQS9StN?4s|BO(&u1R2wDyy>$A#hOONV z6^L|0Hoo6dqgHe4$X0Izu6^LmLxX8Yx(=dVj|WAXPkJcVTfXYCPlCLUG&*>wlDAj9j1;M~h=t@&6UavtSA{?l7vT;n*=iR9mimNS}Gr3Z@u0R&}Y8g zP|AnMmk+zDB}Y9PS=L0kh&VllSjX|`*w^v{;!M%p7jR-vnwn!=UISPiM{B0YV9;GS n_}|I1=Q_A9u2t_by0U^z`%EVR)?Hkuj=0m /dev/null ); then - json_select io_expander - json_get_values io_exp_values - - for val in $io_exp_values; do - regex_value=$(echo "$io_expander" | grep -e "$val") - [ "$io_expander" = "$regex_value" ] && found=1 - done - - [ $found -eq 0 ] && return 1 - json_select .. - else - # fail if not default/initial type - [ "$io_expander" != "stm32" ] && return 1 - fi -# ... - } +platform_copy_config() { + case "$(board_name)" in + glinet,gl-b2200) + emmc_copy_config + ;; + esac return 0; }